@resolveio/server-lib 20.3.16 → 20.3.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var __extends=this&&this.__extends||function(){var o=function(e,n){return(o=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(e,n){e.__proto__=n}:function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}))(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function __(){this.constructor=e}o(e,n),e.prototype=null===n?Object.create(n):(__.prototype=n.prototype,new __)}}(),__awaiter=this&&this.__awaiter||function(e,t,i,r){return new(i=i||Promise)(function(o,n){function fulfilled(e){try{step(r.next(e))}catch(e){n(e)}}function rejected(e){try{step(r.throw(e))}catch(e){n(e)}}function step(e){var n;e.done?o(e.value):((n=e.value)instanceof i?n:new i(function(e){e(n)})).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})},__generator=this&&this.__generator||function(t,i){var r,a,c,l={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]},s={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function verb(o){return function(e){var n=[o,e];if(r)throw new TypeError("Generator is already executing.");for(;l=s&&n[s=0]?0:l;)try{if(r=1,a&&(c=2&n[0]?a.return:n[0]?a.throw||((c=a.return)&&c.call(a),0):a.next)&&!(c=c.call(a,n[1])).done)return c;switch(a=0,(n=c?[2&n[0],c.value]:n)[0]){case 0:case 1:c=n;break;case 4:return l.label++,{value:n[1],done:!1};case 5:l.label++,a=n[1],n=[0];continue;case 7:n=l.ops.pop(),l.trys.pop();continue;default:if(!(c=0<(c=l.trys).length&&c[c.length-1])&&(6===n[0]||2===n[0])){l=0;continue}if(3===n[0]&&(!c||n[1]>c[0]&&n[1]<c[3]))l.label=n[1];else if(6===n[0]&&l.label<c[1])l.label=c[1],c=n;else{if(!(c&&l.label<c[2])){c[2]&&l.ops.pop(),l.trys.pop();continue}l.label=c[2],l.ops.push(n)}}n=i.call(t,l)}catch(e){n=[6,e],a=0}finally{r=c=0}if(5&n[0])throw n[1];return{value:n[0]?n[1]:void 0,done:!0}}}},__spreadArray=this&&this.__spreadArray||function(e,n,o){if(o||2===arguments.length)for(var t,i=0,r=n.length;i<r;i++)!t&&i in n||((t=t||Array.prototype.slice.call(n,0,i))[i]=n[i]);return e.concat(t||Array.prototype.slice.call(n))},simpl_schema_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.objectIdHexString=exports.MongoManagerUserCollection=exports.MongoManagerCollection=exports.MongoManagerModel=exports.MongoManager=void 0,require("simpl-schema")),mongodb_1=require("mongodb"),index_1=require("../index"),user_collection_1=require("../collections/user.collection"),common_1=require("../util/common"),log_collection_1=require("../collections/log.collection"),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(){var e=this;this._collections=[],this._mongoQueue=[],this._mongoQueueId=0,this._mongoQueueRunning=!1,this._mongoQueueCacheId=1,this._heapStats=v8.getHeapStatistics(),this._heapLimit=this._heapStats.heap_size_limit/numCPUs/8,this._serverCollections=[],this._debugMongoQueueHits=0,this._debugRemoveCacheHits=0,this._debugMongoQueueCollections=[],this._nodeCache=new NodeCache({stdTTL:0,checkperiod:0}),setInterval(function(){index_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&index_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&(console.log(new Date,"Mongo Manager","Collections",e._collections.length),console.log(new Date,"Mongo Manager","Mongo Queue",e._mongoQueue.length,JSON.stringify(e._mongoQueue.sort(function(e,n){return e.name_collection.localeCompare(n.name_collection)}),null,2)),console.log(new Date,"Mongo Manager","Server Collections",e._serverCollections.length),console.log(new Date,"Mongo Manager","Mongo Queue Hits",e._debugMongoQueueHits),console.log(new Date,"Mongo Manager","Mongo Queue Collections",e._debugMongoQueueCollections.sort(function(e,n){return e.collection.localeCompare(n.collection)||e.function.localeCompare(n.function)})),console.log(new Date,"Mongo Manager","Cache Cleanup Hits",JSON.stringify(e._debugRemoveCacheHits,null,2))),e._debugMongoQueueHits=0,e._debugRemoveCacheHits=0,e._debugMongoQueueCollections=[]},6e4),this.initServerCollections(),this.runQueue()}return MongoManager.prototype.initServerCollections=function(){return __awaiter(this,void 0,void 0,function(){var n;return __generator(this,function(e){switch(e.label){case 0:return[4,index_1.ResolveIOServer.getMainDB().listCollections().toArray()];case 1:return n=e.sent(),this._serverCollections=n,[2]}})})},MongoManager.prototype.getServerCollections=function(){return this._serverCollections},MongoManager.prototype.registerCollection=function(n){var e=this;n.collectionOptions&&n.collectionOptions.timeseries&&n.collectionOptions.timeseries.timeField&&this._serverCollections.some(function(e){return e.name===n.collectionName&&"collection"===e.type})&&index_1.ResolveIOServer.getMainDB().dropCollection(n.collectionName).then(function(){e.createCollection(n)}),this._collections.push(n)},MongoManager.prototype.createCollection=function(e){index_1.ResolveIOServer.getMainDB().createCollection(e.collectionName,e.collectionOptions)},MongoManager.prototype.collections=function(){return this._collections},MongoManager.prototype.collection=function(n){return this._collections.filter(function(e){return e.collectionName===n})[0]},MongoManager.prototype.addToQueue=function(n){var e=this._mongoQueue.filter(function(e){return e.name_collection===n.name_collection&&e.name_function===n.name_function&&e.name_function_addt===n.name_function_addt&&JSON.stringify(e.data_function)===JSON.stringify(n.data_function)&&JSON.stringify(e.data_function_addt)===JSON.stringify(n.data_function_addt)})[0];e?(e.running?e.cbs_next:e.cbs).push(n.cbs[0]):(n._id=this._mongoQueueId,this._mongoQueueId+=1,this._mongoQueue.splice(0,0,n))},MongoManager.prototype.runQueue=function(){return __awaiter(this,void 0,void 0,function(){var a=this;return __generator(this,function(e){return setInterval(function(){if(!a._mongoQueueRunning){var o=a._mongoQueue.filter(function(e){return!e.running&&e.cbs.length});if(o.length){a._mongoQueueRunning=!0;for(var e=o.length-1;0<=e;e--)!function(e){a._debugMongoQueueHits+=1;var t,i,r=o[e];if(a._debugMongoQueueCollections.some(function(e){return e.collection===r.name_collection&&e.function===r.name_function})?a._debugMongoQueueCollections.filter(function(e){return e.collection===r.name_collection&&e.function===r.name_function})[0].hits+=1:a._debugMongoQueueCollections.push({collection:r.name_collection,function:r.name_function,hits:1}),r.running=!0,r.invalidateFlag=!1,r.cacheId)try{var n=JSON.parse(a._nodeCache.get(r.cacheId),common_1.dateReviver);r.cbs.forEach(function(e){e(null,n,!0)}),r.cbs=[],r.running=!1}catch(e){r.cacheId=0}r.cacheId||(r.name_function_addt?(t=new monitor_manager_1.MonitorMongo(r.name_function,r.name_collection,JSON.stringify(__spreadArray(__spreadArray(__spreadArray([],r.data_function,!0),[r.name_function_addt],!1),r.data_function_addt,!0))),(e=(e=index_1.ResolveIOServer.getMainDB().collection(r.name_collection))[r.name_function].apply(e,r.data_function))[r.name_function_addt].apply(e,r.data_function_addt).then(function(n){if(t.finish(),r.invalidateFlag)5<=r.invalidateCount&&(r.invalidateCount=0,r.cbs.forEach(function(e){e(null,n,!1)})),r.cbs=r.cbs.concat(r.cbs_next),r.cbs_next=[];else{var e=r.invalidateCount=0,o=!1;try{e=JSON.stringify(n).replace(/[\[\]\,\"]/g,"").length}catch(e){o=!0}!o&&null!=n&&(!Array.isArray(n)||n.length)&&e<1e7?(r.cacheId=a._mongoQueueCacheId,a._mongoQueueCacheId+=1,a.addToCache(r.cacheId,n)):r.cacheId=0,r.cbs.forEach(function(e){e(null,n,!1)}),r.cbs_next.length?(r.cbs=r.cbs_next,r.cbs_next=[]):r.cbs=[]}r.running=!1},function(n){t.finish(),r.cbs.forEach(function(e){e(n,null,!1)}),r.cbs_next.forEach(function(e){e(n,null,!1)}),0<=a._mongoQueue.map(function(e){return e._id}).indexOf(r._id)&&a._mongoQueue.splice(a._mongoQueue.map(function(e){return e._id}).indexOf(r._id),1)})):(i=new monitor_manager_1.MonitorMongo(r.name_function,r.name_collection,JSON.stringify(r.data_function)),(e=index_1.ResolveIOServer.getMainDB().collection(r.name_collection))[r.name_function].apply(e,r.data_function).then(function(n){if(i.finish(),r.invalidateFlag)5<=r.invalidateCount&&(r.invalidateCount=0,r.cbs.forEach(function(e){e(null,n,!1)})),r.cbs=r.cbs.concat(r.cbs_next),r.cbs_next=[];else{var e=r.invalidateCount=0,o=!1;try{e=JSON.stringify(n).replace(/[\[\]\,\"]/g,"").length}catch(e){o=!0}!o&&null!=n&&(!Array.isArray(n)||n.length)&&e<1e7?(r.cacheId=a._mongoQueueCacheId,a._mongoQueueCacheId+=1,a.addToCache(r.cacheId,n)):r.cacheId=0,r.cbs.forEach(function(e){e(null,n,!1)}),r.cbs_next.length?(r.cbs=r.cbs_next,r.cbs_next=[]):r.cbs=[]}r.running=!1},function(n){i.finish(),console.log.apply(console,__spreadArray(__spreadArray([new Date,"Error "+r.name_function,r.name_collection],r.data_function,!1),[n],!1)),r.cbs.forEach(function(e){e(n,null,!1)}),r.cbs_next.forEach(function(e){e(n,null,!1)}),0<=a._mongoQueue.map(function(e){return e._id}).indexOf(r._id)&&a._mongoQueue.splice(a._mongoQueue.map(function(e){return e._id}).indexOf(r._id),1)})))}(e);a._mongoQueueRunning=!1}}},25),[2]})})},MongoManager.prototype.addToCache=function(e,n){var o=this._nodeCache.getStats().vsize;if(o>this._heapLimit){for(var t=0,i=this._mongoQueue.filter(function(e){return e.cacheId&&!e.running&&!e.cbs.length}),r=i.length-1;0<=r;r--){this._debugRemoveCacheHits+=1;var a=i[r];if(this._nodeCache.del(a.cacheId),(a.cacheId=0)<=this._mongoQueue.map(function(e){return e._id}).indexOf(a._id)&&this._mongoQueue.splice(this._mongoQueue.map(function(e){return e._id}).indexOf(a._id),1),t+=1,(o=this._nodeCache.getStats().vsize)<.75*this._heapLimit)break}console.log("Query Cache: Too Big, - Deleted: "+t+" - "+o)}this._nodeCache.set(e,JSON.stringify(n))},MongoManager.prototype.invalidateQueryCache=function(n){for(var e=this._mongoQueue.filter(function(e){return e.name_collection===n||e.lookup_collections.includes(n)}),o=e.length-1;0<=o;o--){var t=e[o];t.cacheId&&(this._nodeCache.del(t.cacheId),t.cacheId=0),t.running?(t.invalidateFlag=!0,t.invalidateCount+=1):t.cbs.length||0<=this._mongoQueue.map(function(e){return e._id}).indexOf(t._id)&&this._mongoQueue.splice(this._mongoQueue.map(function(e){return e._id}).indexOf(t._id),1)}},MongoManager}(),MongoManagerModel=(exports.MongoManager=MongoManager,function(e){var n;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,(n=(0,common_1.deepCopy)(e.schema))._id.type="Object",n._id.blackbox=!0,n={collectionName:e.collectionName+".versions",schema:n,useVersionCollection:!1,useReportBuilder:!1,reportBuilderLookupTables:[],timestamps:!0,createLogs:!1,checkSchema:!1,collectionOptions:null},"users"===e.collectionName?this.collection_version=new MongoManagerUserCollection(n):this.collection_version=new MongoManagerCollection(n),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 n,o=this,t=(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,n=(0,common_1.deepCopy)(e.schema),e=(0,common_1.buildRbLookups)(e.reportBuilderLookupTables,n,[]),this.rbSchema=(0,common_1.buildRbSchema)(e)),setInterval(function(){index_1.ResolveIOServer&&index_1.ResolveIOServer.getMainServer()&&index_1.ResolveIOServer.getMongoManager()&&index_1.ResolveIOServer.getMongoManager().getServerCollections().length&&(index_1.ResolveIOServer.getMongoManager().registerCollection(o),clearInterval(t))},1))}var e;return MongoManagerCollection.prototype.extractIndexNameFromError=function(e){var n=e.match(/Index already exists with a different name: (\S+)/);return(n=!n||n.length<=1?e.match(/existing index:.*name: "([^"]+)"/):n)&&1<n.length?n[1]:null},MongoManagerCollection.prototype.aggregate=function(i,r,e){var a=this;return void 0===e&&(e=!1),new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("aggregate",a.collectionName,JSON.stringify([i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).aggregate(i,r).toArray().then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Aggregate",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.aggregateCount=function(e,n){var o=this;return new Promise(function(t,i){index_1.ResolveIOServer.getMongoManager().addToQueue({_id:0,name_collection:o.collectionName,name_function:"aggregate",name_function_addt:"count",data_function:[e,n],data_function_addt:[],cbs:[function(e,n,o){e?i(e):t(n)}],cbs_next:[],running:!1,cacheId:0,lookup_collections:e.filter(function(e){return e.$lookup&&e.$lookup.from}).map(function(e){return e.$lookup.from}).filter(function(e,n,o){return n===o.indexOf(e)}),invalidateFlag:!1,invalidateCount:0})})},MongoManagerCollection.prototype.aggregateCursor=function(e,n){var o=new monitor_manager_1.MonitorMongo("aggregateCursor",this.collectionName,JSON.stringify([e,n])),e=index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(e,n);return e.on("close",function(e){return o.finish(),e}),e},MongoManagerCollection.prototype.aggregateStream=function(e,n,o){var t=new monitor_manager_1.MonitorMongo("aggregateStream",this.collectionName,JSON.stringify([e,n,o])),e=index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(e,n).stream(o);return e.on("end",function(e){return t.finish(),e}).on("error",function(e){return t.finish(),e}).on("close",function(e){return t.finish(),e}),e},MongoManagerCollection.prototype.bulkWrite=function(x,w,C,b){var e=this;return void 0===C&&(C=!1),void 0===b&&(b=!1),new Promise(function(N,I){return __awaiter(e,void 0,void 0,function(){var m,h,f,v,o,t,i,r,n,a,p,c,l,s,M,d,u,_,g,O,y,S=this;return __generator(this,function(e){switch(e.label){case 0:return x.length?(m=[],h=[],f=[],v=[],o=[],t=[],i=[],x.forEach(function(e){var n=Object.keys(e)[0];"updateOne"===n||"deleteOne"===n||"replaceOne"===n?o.push(e[n].filter):"updateMany"===n?t.push(e[n].filter):"deleteMany"===n&&i.push(e[n].filter)}),o.length||t.length||i.length?[4,this.find({$or:__spreadArray(__spreadArray(__spreadArray([],o,!0),t,!0),i,!0)})]:[3,2]):(N(null),[2]);case 1:return n=e.sent(),[3,3];case 2:n=[],e.label=3;case 3:for(r=n,a=function(e,n){return n.split(".").reduce(function(e,n){return Array.isArray(e)?e.map(function(e){return e[n]}).filter(function(e){return void 0!==e}):e&&e[n]},e)},p=function(n){return r.filter(function(e){return c(n,e)})},c=function(t,i){return Object.keys(t).every(function(e){var n=t[e],o=a(i,e);return"$and"===e?n.every(function(e){return c(e,i)}):"$or"===e?n.some(function(e){return c(e,i)}):Array.isArray(o)?o.some(function(e){return l(n,e)}):l(n,o)})},l=function(e,n){if(e instanceof Object){if("$in"in e)return e.$in.includes(n);if("$nin"in e)return!e.$nin.includes(n);if("$ne"in e)return n!==e.$ne;if("$gt"in e)return n>e.$gt;if("$gte"in e)return n>=e.$gte;if("$lt"in e)return n<e.$lt;if("$lte"in e)return n<=e.$lte;if("$exists"in e)return void 0!==n===e.$exists;if("$regex"in e)return new RegExp(e.$regex,e.$options||"").test(n)}return n===e},s=function(o){var e,t=Object.keys(o)[0],n=o[t];if("insertOne"===t){if(n.document._id||(n.document._id=objectIdHexString()),M.useVersions&&!n.document.hasOwnProperty("__v")&&(n.document.__v=0),M.timestamps&&(e=new Date,n.document.createdAt=e,n.document.updatedAt=e),M.checkSchema&&!b)if(!(_=M.simplschema.newContext()).validate(n.document))return console.log(new Date,M.collectionName,"Schema Errors - bulkWrite - insertOne",_.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on bulkWrite insertOne - "+M.collectionName,[_.validationErrors(),n.document]),I(_.validationErrors()),"continue";!C&&M.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:M.collectionName,id_document:n.document._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w]))<2e5?JSON.stringify([o,w],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)}else if("updateOne"===t){if((s=p(n.filter)).length)for(var i=0,r=s;i<r.length;i++){var a=r[i];if(M.timestamps&&(n.update.$set?n.update.$set.updatedAt=new Date:n.update.$set={updatedAt:new Date}),M.checkSchema&&!b)if(!(_=M.simplschema.newContext()).validate(n.update,{modifier:!0})){console.log(new Date,M.collectionName,"Schema Errors - bulkWrite - updateOne",_.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on bulkWrite updateOne - "+M.collectionName,[_.validationErrors(),n.update,a]),I(_.validationErrors());continue}M.useVersions&&((g=(0,common_1.deepCopy)(a))._id={_id:g._id,__v:g.__v},h.push({insertOne:{document:g}}),objectContainsPropertyDeep(n.update,"__v")||(n.update.$inc?n.update.$inc.__v=1:n.update.$inc={__v:1}),4<=g.__v)&&f.push({deleteMany:{filter:{"_id._id":g._id._id,"_id.__v":{$lt:g.__v-4}}}}),!C&&M.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:M.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w,a]))<2e5?JSON.stringify([o,w,a],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)}else if(n.upsert){if(M.checkSchema&&!b)if(!(_=M.simplschema.newContext()).validate(n.update,{modifier:!0}))return console.log(new Date,M.collectionName,"Schema Errors - bulkWrite - updateOne",_.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on bulkWrite updateOne - "+M.collectionName,[_.validationErrors(),n.update]),I(_.validationErrors()),"continue";objectContainsPropertyDeep(n.update,"_id")||(n.update.$setOnInsert._id=objectIdHexString()),!M.useVersions||objectContainsPropertyDeep(n.update,"__v")||(n.update.$setOnInsert.__v=0),M.timestamps&&(objectContainsPropertyDeep(n.update,"createdAt")||(n.update.$setOnInsert.createdAt=new Date),objectContainsPropertyDeep(n.update,"updatedAt")||(n.update.$setOnInsert.updatedAt=new Date)),!C&&M.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:M.collectionName,id_document:n.update.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w,n.update]))<2e5?JSON.stringify([o,w,n.update],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)}}else if("replaceOne"===t){if(M.timestamps&&(n.replacement.updatedAt=new Date),(s=p(n.filter)).length)for(var c=0,l=s;c<l.length;c++){a=l[c];if(M.checkSchema&&!b)if(!(_=M.simplschema.newContext()).validate(n.replacement)){console.log(new Date,M.collectionName,"Schema Errors - bulkWrite - insertOne",_.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on bulkWrite replaceOne - "+M.collectionName,[_.validationErrors(),n.replacement]),I(_.validationErrors());continue}M.useVersions&&((g=(0,common_1.deepCopy)(a))._id={_id:g._id,__v:g.__v},h.push({insertOne:{document:g}}),n.replacement.__v=g.__v+1,4<=g.__v)&&f.push({deleteMany:{filter:{"_id._id":g._id._id,"_id.__v":{$lt:g.__v-4}}}}),!C&&M.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:M.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w,a]))<2e5?JSON.stringify([o,w,a],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)}else if(n.upsert){if(M.checkSchema&&!b)if(!(_=M.simplschema.newContext()).validate(n.replacement))return console.log(new Date,M.collectionName,"Schema Errors - bulkWrite - replaceOne",_.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on bulkWrite replaceOne - "+M.collectionName,[_.validationErrors(),n.replacement]),I(_.validationErrors()),"continue";objectContainsPropertyDeep(n.replacement,"_id")||(n.replacement._id=objectIdHexString()),!M.useVersions||objectContainsPropertyDeep(n.replacement,"__v")||(n.replacement.__v=0),M.timestamps&&(objectContainsPropertyDeep(n.replacement,"createdAt")||(n.replacement.createdAt=new Date),objectContainsPropertyDeep(n.replacement,"updatedAt")||(n.replacement.updatedAt=new Date)),!C&&M.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:M.collectionName,id_document:n.replacement._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w,n.replacement]))<2e5?JSON.stringify([o,w,n.replacement],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)}}else if("deleteOne"===t)(s=p(n.filter)).forEach(function(e){var n;S.useVersions&&((n=(0,common_1.deepCopy)(e))._id={_id:n._id,__v:n.__v},h.push({insertOne:{document:n}}),4<=n.__v)&&f.push({deleteMany:{filter:{"_id._id":n._id._id,"_id.__v":{$lt:n.__v-4}}}}),!C&&S.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:S.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w,e]))<2e5?JSON.stringify([o,w,e],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)});else if("updateMany"===t){M.timestamps&&(n.update.$set?n.update.$set.updatedAt=new Date:n.update.$set={updatedAt:new Date}),!M.useVersions||objectContainsPropertyDeep(n.update,"__v")||(n.update.$inc?n.update.$inc.__v=1:n.update.$inc={__v:1});for(var s,d=0,u=s=p(n.filter);d<u.length;d++){var _,g,a=u[d];if(M.checkSchema&&!b)if(!(_=M.simplschema.newContext()).validate(n.update,{modifier:!0})){console.log(new Date,M.collectionName,"Schema Errors - bulkWrite - insertOne",_.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on bulkWrite updateMany - "+M.collectionName,[_.validationErrors(),n.update]),I(_.validationErrors());continue}M.useVersions&&((g=(0,common_1.deepCopy)(a))._id={_id:g._id,__v:g.__v},h.push({insertOne:{document:g}}),4<=g.__v)&&f.push({deleteMany:{filter:{"_id._id":g._id._id,"_id.__v":{$lt:g.__v-4}}}}),!C&&M.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:M.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w]))<2e5?JSON.stringify([o,w],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)}}else"deleteMany"===t&&(s=p(n.filter)).forEach(function(e){var n;S.useVersions&&((n=(0,common_1.deepCopy)(e))._id={_id:n._id,__v:n.__v},h.push({insertOne:{document:n}}),4<=n.__v)&&f.push({deleteMany:{filter:{"_id._id":n._id._id,"_id.__v":{$lt:n.__v-4}}}}),!C&&S.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:S.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w]))<2e5?JSON.stringify([o,w],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)})},M=this,d=0,u=x;d<u.length;d++)_=u[d],s(_);e.label=4;case 4:return(e.trys.push([4,12,,13]),v.length)?(g=new monitor_manager_1.MonitorMongo("bulkWrite",this.collectionName,JSON.stringify([v.slice(-100),w])),[4,index_1.ResolveIOServer.getMainDB().collection(this.collectionName).bulkWrite(v,w)]):[3,10];case 5:return(O=e.sent(),h.length||f.length)?[4,index_1.ResolveIOServer.getMainDB().collection(this.versionCollection).bulkWrite(__spreadArray(__spreadArray([],h,!0),f,!0))]:[3,7];case 6:e.sent(),e.label=7;case 7:return C||!m.length?[3,9]:[4,log_collection_1.Logs.bulkWrite(m)];case 8:e.sent(),e.label=9;case 9:return g.finish(),N(O),[3,11];case 10:N(null),e.label=11;case 11:return[3,13];case 12:return y=e.sent(),console.log(new Date,"Error Bulk Write",this.collectionName,v.slice(-100),w,y),I(y),[3,13];case 13:return[2]}})})})},MongoManagerCollection.prototype.countDocuments=function(i,r){var a=this;return void 0===i&&(i={}),new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("countDocuments",a.collectionName,JSON.stringify([i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).countDocuments(i,r).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Count Documents",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.create=function(e,n){return Array.isArray(e)?1===e.length?this.insertOne(e[0],n):this.insertMany(e,n):this.insertOne(e,n)},MongoManagerCollection.prototype.createIndex=function(e,n){var i=this;return new Promise(function(o,t){MongoManagerCollection.indexQueue.push({action:"createIndex",collection:i,specs:[e],options:n},function(e,n){e?t(e):o(n)})})},MongoManagerCollection.prototype.createIndexes=function(e,n){var i=this;return new Promise(function(o,t){MongoManagerCollection.indexQueue.push({action:"createIndexes",collection:i,specs:[e],options:n},function(e,n){e?t(e):o(n)})})},MongoManagerCollection.prototype.deleteMany=function(s,d,u){var e=this;return void 0===s&&(s={}),void 0===u&&(u=!1),new Promise(function(c,l){return __awaiter(e,void 0,void 0,function(){var n,o,t,i,r,a=this;return __generator(this,function(e){switch(e.label){case 0:return!this.createLogs||u?[3,2]:[4,this.find(s)];case 1:for(n=e.sent(),o=0;o<n.length;o++)t=n[o],log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:t._id,payload:(0,common_1.getBinarySize)(JSON.stringify([t,s,d]))<2e5?JSON.stringify([t,s,d],null,2):"Too Big",method:"deleteMany",id_user:"",user:"",messageId:0,route:""}),this.useVersions&&((i=(0,common_1.deepCopy)(t))._id={_id:t._id,__v:t.__v},index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:t._id,__v:t.__v}},i,{upsert:!0}),index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":t._id},{"_id.__v":{$lt:t.__v-1}}]}));e.label=2;case 2:return r=new monitor_manager_1.MonitorMongo("deleteMany",this.collectionName,JSON.stringify([s,d])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).deleteMany(s,d).then(function(e){r.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),c(e.deletedCount)):l(e.acknowledged)},function(e){r.finish(),console.log(new Date,"Error Delete Many",a.collectionName,s,d,e),l(e)}),[2]}})})})},MongoManagerCollection.prototype.deleteOne=function(a,c,l){var e=this;return void 0===a&&(a={}),void 0===l&&(l=!1),new Promise(function(r,t){return __awaiter(e,void 0,void 0,function(){var i,n,o=this;return __generator(this,function(e){return this.createLogs&&!l?(i=new monitor_manager_1.MonitorMongo("findOneAndDelete",this.collectionName,JSON.stringify([a,c])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndDelete(a,c).then(function(t){return __awaiter(o,void 0,void 0,function(){var n,o;return __generator(this,function(e){return i.finish(),(n=t)?(this.createLogs&&!l&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:n._id,payload:(0,common_1.getBinarySize)(JSON.stringify([n,a,c]))<2e5?JSON.stringify([n,a,c],null,2):"Too Big",method:"deleteOne",id_user:"",user:"",messageId:0,route:""}),this.useVersions&&((o=(0,common_1.deepCopy)(n))._id={_id:n._id,__v:n.__v},index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:n._id,__v:n.__v}},o,{upsert:!0}),index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":n._id},{"_id.__v":{$lt:n.__v-1}}]})),index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),r(1)):r(0),[2]})})},function(e){i.finish(),console.log(new Date,"Error Find One And Delete",o.collectionName,a,c,e),t(e)})):(n=new monitor_manager_1.MonitorMongo("deleteOne",this.collectionName,JSON.stringify([a,c])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).deleteOne(a,c).then(function(e){n.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(o.collectionName),r(e.deletedCount)):t(e.acknowledged)},function(e){n.finish(),console.log(new Date,"Error Delete One",o.collectionName,a,c,e),t(e)})),[2]})})})},MongoManagerCollection.prototype.distinct=function(e,i,r){var a=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("distinct",a.collectionName,JSON.stringify([e,i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).distinct(e,i,r).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Distinct",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.drop=function(i){var r=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("drop",r.collectionName,JSON.stringify([i]));index_1.ResolveIOServer.getMainDB().collection(r.collectionName,r.collectionOptions).drop(i).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Count Documents",r.collectionName,i,e),o(e)})})},MongoManagerCollection.prototype.dropIndex=function(i,r){var a=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("dropIndex",a.collectionName,JSON.stringify([i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).dropIndex(i,r).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Drop Index",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.dropIndexes=function(i){var r=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("dropIndexes",r.collectionName,JSON.stringify([i]));index_1.ResolveIOServer.getMainDB().collection(r.collectionName,r.collectionOptions).dropIndexes(i).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Drop Indexes",r.collectionName,i,e),o(e)})})},MongoManagerCollection.prototype.find=function(r,a,c){var e=this;return void 0===r&&(r={}),void 0===c&&(c=!1),new Promise(function(t,i){return __awaiter(e,void 0,void 0,function(){var n,o=this;return __generator(this,function(e){return c?(n=new monitor_manager_1.MonitorMongo("find",this.collectionName,JSON.stringify([r,a])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(r,a).toArray().then(function(e){n.finish(),t(e)},function(e){n.finish(),console.log(new Date,"Error Find",o.collectionName,r,a,e),i(e)})):index_1.ResolveIOServer.getMongoManager().addToQueue({_id:0,name_collection:this.collectionName,name_function:"find",name_function_addt:"toArray",data_function:[r,a],data_function_addt:[],cbs:[function(e,n,o){e?i(e):t(n)}],cbs_next:[],running:!1,cacheId:0,lookup_collections:[],invalidateFlag:!1,invalidateCount:0}),[2]})})})},MongoManagerCollection.prototype.findById=function(i,r){var a=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("findById",a.collectionName,JSON.stringify([{_id:i},r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).findOne({_id:i},r).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Find By Id",a.collectionName,{_id:i},r,e),o(e)})})},MongoManagerCollection.prototype.findCount=function(i,r){var a=this;return void 0===i&&(i={}),new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("findCount",a.collectionName,JSON.stringify([i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).find(i,r).count().then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Find Count",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.findCursor=function(e,n){void 0===e&&(e={});var o=new monitor_manager_1.MonitorMongo("findCursor",this.collectionName,JSON.stringify([e,n])),t=index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(e,n);return t.on("close",function(e){return o.finish(),t.removeAllListeners(),e}),t},MongoManagerCollection.prototype.findStream=function(e,n,o){void 0===e&&(e={});var t=new monitor_manager_1.MonitorMongo("findStream",this.collectionName,JSON.stringify([e,n,o])),e=index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(e,n).stream(o);return e.on("end",function(e){return t.finish(),e}).on("error",function(e){return t.finish(),e}).on("close",function(e){return t.finish(),e}),e},MongoManagerCollection.prototype.findOne=function(o,r,e){var a=this;return void 0===o&&(o={}),void 0===e&&(e=!1),new Promise(function(t,i){var n;e?(n=new monitor_manager_1.MonitorMongo("findOne",a.collectionName,JSON.stringify([o,r])),index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).findOne(o,r).then(function(e){n.finish(),t(e)},function(e){n.finish(),console.log(new Date,"Error Find One",a.collectionName,o,r,e),i(e)})):index_1.ResolveIOServer.getMongoManager().addToQueue({_id:0,name_collection:a.collectionName,name_function:"findOne",name_function_addt:"",data_function:[o,r],data_function_addt:[],cbs:[function(e,n,o){e?i(e):t(n)}],cbs_next:[],running:!1,cacheId:0,lookup_collections:[],invalidateFlag:!1,invalidateCount:0})})},MongoManagerCollection.prototype.findOneAndDelete=function(r,a,c){var e=this;return void 0===r&&(r={}),void 0===c&&(c=!1),new Promise(function(i,n){return __awaiter(e,void 0,void 0,function(){var o,t=this;return __generator(this,function(e){return o=new monitor_manager_1.MonitorMongo("findOneAndDelete",this.collectionName,JSON.stringify([r,a])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndDelete(r,a).then(function(e){o.finish();var n;e?(t.createLogs&&!c&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:t.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,r,a]))<2e5?JSON.stringify([e,r,a],null,2):"Too Big",method:"findOneAndDelete",id_user:"",user:"",messageId:0,route:""}),t.useVersions&&((n=(0,common_1.deepCopy)(e))._id={_id:e._id,__v:e.__v},index_1.ResolveIOServer.getMongoManager().collection(t.versionCollection).replaceOne({_id:{_id:e._id,__v:e.__v}},n,{upsert:!0})),index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(t.collectionName),i(e)):i(null)},function(e){o.finish(),console.log(new Date,"Error Find One And Delete",t.collectionName,r,a,e),n(e)}),[2]})})})},MongoManagerCollection.prototype.findOneAndReplace=function(c,l,s,d,u){var e=this;return void 0===c&&(c={}),void 0===d&&(d=!1),void 0===u&&(u=!1),new Promise(function(r,a){return __awaiter(e,void 0,void 0,function(){var n,o,t,i=this;return __generator(this,function(e){return!this.checkSchema||u||(n=this.simplschema.newContext(),n.validate(l))?(o=new Date,this.timestamps&&(l.updatedAt=o),s&&s.upsert&&(l._id||(l._id=objectIdHexString()),this.useVersions&&(l.__v=0),this.timestamps)&&!l.createdAt&&(l.createdAt=o),t=new monitor_manager_1.MonitorMongo("findOneAndReplace",this.collectionName,JSON.stringify([c,l,s])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndReplace(c,l,s).then(function(e){t.finish();var n;e?(i.createLogs&&!d&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:i.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,c,l,s]))<2e5?JSON.stringify([e,c,l,s],null,2):"Too Big",method:"findOneAndReplace",id_user:"",user:"",messageId:0,route:""}),i.useVersions&&((n=(0,common_1.deepCopy)(e))._id={_id:e._id,__v:e.__v},index_1.ResolveIOServer.getMongoManager().collection(i.versionCollection).replaceOne({_id:{_id:e._id,__v:e.__v}},n,{upsert:!0})),index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(i.collectionName),r(e)):r(null)},function(e){t.finish(),console.log(new Date,"Error Find One And Replace",i.collectionName,c,s,e),a(e)})):(console.log(new Date,this.collectionName,"Schema Errors - findOneAndReplace",n.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on findOneAndReplace - "+this.collectionName,[n.validationErrors(),l]),a(n.validationErrors())),[2]})})})},MongoManagerCollection.prototype.findOneAndUpdate=function(c,l,s,d,u){var e=this;return void 0===c&&(c={}),void 0===d&&(d=!1),void 0===u&&(u=!1),new Promise(function(r,a){return __awaiter(e,void 0,void 0,function(){var n,o,t,i=this;return __generator(this,function(e){return!this.checkSchema||u||(n=this.simplschema.newContext(),n.validate(l,{modifier:!0}))?(this.timestamps&&(o=new Date,l.$set?l.$set.updatedAt=o:l.$set={updatedAt:o}),s&&s.upsert&&(l.$setOnInsert?(l.$setOnInsert._id||(l.$setOnInsert._id=objectIdHexString()),this.timestamps&&(l.$setOnInsert.createdAt=new Date)):this.timestamps?l.$setOnInsert={_id:objectIdHexString(),createdAt:new Date}:l.$setOnInsert={_id:objectIdHexString()}),t=new monitor_manager_1.MonitorMongo("findOneAndUpdate",this.collectionName,JSON.stringify([c,l,s])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndUpdate(c,l,s).then(function(e){t.finish();var n;e?(i.createLogs&&!d&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:i.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,c,l,s]))<2e5?JSON.stringify([e,c,l,s],null,2):"Too Big",method:"findOneAndUpdate",id_user:"",user:"",messageId:0,route:""}),i.useVersions&&((n=(0,common_1.deepCopy)(e))._id={_id:e._id,__v:e.__v},index_1.ResolveIOServer.getMongoManager().collection(i.versionCollection).replaceOne({_id:{_id:e._id,__v:e.__v}},n,{upsert:!0})),index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(i.collectionName),r(e)):r(null)},function(e){t.finish(),console.log(new Date,"Error Find One And Update",i.collectionName,c,s,e),a(e)})):(console.log(new Date,this.collectionName,"Schema Errors - findOneAndUpdate",n.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on findOneAndUpdate - "+this.collectionName,[n.validationErrors(),l]),a(n.validationErrors())),[2]})})})},MongoManagerCollection.prototype.indexes=function(i){var r=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("indexes",r.collectionName,JSON.stringify([i]));index_1.ResolveIOServer.getMainDB().collection(r.collectionName,r.collectionOptions).indexes(i).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Indexes",r.collectionName,i,e),o(e)})})},MongoManagerCollection.prototype.indexExists=function(i,r){var a=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("indexExists",a.collectionName,JSON.stringify([i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).indexExists(i,r).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Index Exists",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.insertMany=function(d,u,_,g,m){var e=this;return void 0===_&&(_=!1),void 0===g&&(g=!1),void 0===m&&(m=!1),new Promise(function(l,s){return __awaiter(e,void 0,void 0,function(){var o,n,t,i,r,a,c=this;return __generator(this,function(e){if(d.length){for(o=[],this.checkSchema&&!g&&d.forEach(function(e){var n=c.simplschema.newContext();n.validate(e)?o.push(!0):(console.log(new Date,c.collectionName,"Schema Errors - insertMany",n.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on insertMany - "+c.collectionName,[n.validationErrors(),e]),o.push(!1))}),n=this.checkSchema?d.filter(function(e,n){return o[n]}):d,t=0;t<n.length;t++)(i=n[t])._id||(i._id=objectIdHexString()),this.timestamps&&(r=new Date,i.createdAt=r,i.updatedAt=r),this.useVersions&&!i.hasOwnProperty("__v")&&(i.__v=0),this.createLogs&&!_&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,u]))<2e5?JSON.stringify([i,u],null,2):"Too Big",method:"insertMany",id_user:"",user:"",messageId:0,route:""});n.length&&(a=null,m||(a=new monitor_manager_1.MonitorMongo("insertMany",this.collectionName,JSON.stringify([n,u]))),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).insertMany(n,u).then(function(e){a&&a.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c.collectionName),l(n)):s(e.acknowledged)},function(e){a&&a.finish(),console.log(new Date,"Error Insert Many",c.collectionName,n,u,e),s(e)}))}else l([]);return[2]})})})},MongoManagerCollection.prototype.insertOne=function(c,l,s,d){var e=this;return void 0===s&&(s=!1),void 0===d&&(d=!1),new Promise(function(r,a){return __awaiter(e,void 0,void 0,function(){var n,o,t,i=this;return __generator(this,function(e){return c._id||(c._id=objectIdHexString()),!this.checkSchema||d||(n=this.simplschema.newContext(),n.validate(c))?(this.timestamps&&(o=new Date,c.createdAt=o,c.updatedAt=o),this.createLogs&&!s&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:c._id,payload:(0,common_1.getBinarySize)(JSON.stringify([c,l]))<2e5?JSON.stringify([c,l],null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:""}),this.useVersions&&!c.hasOwnProperty("__v")&&(c.__v=0),t=new monitor_manager_1.MonitorMongo("insertOne",this.collectionName,JSON.stringify([c,l])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).insertOne(c,l).then(function(e){t.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(i.collectionName),r(c)):a(e.acknowledged)},function(e){t.finish(),console.log(new Date,"Error Insert One",i.collectionName,c,l,e),a(e)})):(console.log(new Date,this.collectionName,"Schema Errors - insertOne",n.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on insertOne - "+this.collectionName,[n.validationErrors(),c]),a(n.validationErrors())),[2]})})})},MongoManagerCollection.prototype.listIndexes=function(e){var n=new monitor_manager_1.MonitorMongo("listIndexes",this.collectionName,JSON.stringify([e])),e=index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).listIndexes(e);return e.on("close",function(e){return n.finish(),e}),e},MongoManagerCollection.prototype.rename=function(i,r){var a=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("rename",a.collectionName,JSON.stringify([i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).rename(i,r).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Rename",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.replaceOne=function(h,f,v,p,M,O){var e=this;return void 0===p&&(p=!1),void 0===M&&(M=!1),void 0===O&&(O=null),new Promise(function(g,m){return __awaiter(e,void 0,void 0,function(){var n,o,t,i,r,a,c,l,s,d,u,_=this;return __generator(this,function(e){switch(e.label){case 0:return!this.checkSchema||M||(o=this.simplschema.newContext(),o.validate(f))?(n=new Date,this.timestamps&&(f.updatedAt=n),this.useVersions?O?[3,2]:[4,this.findOne(h,null,!0)]:[3,8]):(console.log(new Date,this.collectionName,"Schema Errors - replaceOne",o.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on replaceOne - "+this.collectionName,[o.validationErrors(),f]),m(o.validationErrors()),[2]);case 1:O=e.sent(),e.label=2;case 2:return O?(this.timestamps&&!f.createdAt&&O.createdAt&&(f.createdAt=O.createdAt),O.__v!==f.__v?[3,3]:(f.__v+=1,(o=(0,common_1.deepCopy)(O))._id={_id:O._id,__v:O.__v},index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:O._id,__v:O.__v}},o,{upsert:!0}),4<=O.__v&&index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":O._id},{"_id.__v":{$lt:O.__v-4}}]}),this.createLogs&&!p&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:O._id,payload:(0,common_1.getBinarySize)(JSON.stringify([O,h,f,v]))<2e5?JSON.stringify([O,h,f,v],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:""}),t=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([h,f,v])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(h,f,v).then(function(e){t.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(_.collectionName),g(e.modifiedCount)):m(e.acknowledged)},function(e){t.finish(),console.log(new Date,"Error Replace One",_.collectionName,h,f,v,e),m(e)}),[3,5])):[3,6];case 3:return console.log("invalid version - "+this.collectionName,O.__v,f.__v),[4,index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).findOne({_id:{_id:O._id,__v:f.__v}},null,!0)];case 4:(i=e.sent())?(r=O._id,a=O.__v,(c=(0,common_1.getMongoMergeUpdatedDoc)(f,O,i))._id=r,c.__v=a+1,this.createLogs&&!p&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:r,payload:(0,common_1.getBinarySize)(JSON.stringify(["invalidVersion - merge",O,h,c,v]))<2e5?JSON.stringify(["invalidVersion - merge",O,h,c,v],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:""}),l=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([h,c,v])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(h,c,v).then(function(e){l.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(_.collectionName),g(e.modifiedCount)):m(e.acknowledged)},function(e){l.finish(),console.log(new Date,"Error Replace One",_.collectionName,h,c,v,e),m(e)})):m("Invalid Version And Could Not Find History - DB: "+O.__v+", Trying to update with :"+f.__v),e.label=5;case 5:return[3,7];case 6:v&&v.upsert?(this.timestamps&&(f.createdAt=n),f._id||(f._id=objectIdHexString()),f.__v=0,this.createLogs&&!p&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:f._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",h,f,v]))<2e5?JSON.stringify(["upsert",h,f,v],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:""}),s=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([h,f,v])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(h,f,v).then(function(e){s.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(_.collectionName),g(e.modifiedCount)):m(e.acknowledged)},function(e){s.finish(),console.log(new Date,"Error Replace One",_.collectionName,h,f,v,e),m(e)})):m("No Document"),e.label=7;case 7:return[3,9];case 8:v&&v.upsert&&(this.timestamps&&!f.createdAt&&(f.createdAt=n),f._id||(f._id=objectIdHexString()),f.__v=0),this.createLogs&&!p?(v?v.returnDocument="before":v={returnDocument:"before"},d=new monitor_manager_1.MonitorMongo("findOneAndReplace",this.collectionName,JSON.stringify([h,f,v])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndReplace(h,f,v).then(function(e){d.finish();e?log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:_.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,h,f,v]))<2e5?JSON.stringify([e,h,f,v],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:""}):log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:_.collectionName,id_document:f._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",h,f,v]))<2e5?JSON.stringify(["upsert",h,f,v],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:""}),index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(_.collectionName),g(1)},function(e){d.finish(),console.log(new Date,"Error Find One And Replace",_.collectionName,h,f,v,e),m(e)})):(u=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([h,f,v])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(h,f,v).then(function(e){u.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(_.collectionName),g(e.modifiedCount)):m(e.acknowledged)},function(e){u.finish(),console.log(new Date,"Error Replace One",_.collectionName,h,f,v,e),m(e)})),e.label=9;case 9:return[2]}})})})},MongoManagerCollection.prototype.updateMany=function(d,u,_,g,m,h){var e=this;return void 0===g&&(g=!1),void 0===m&&(m=!1),void 0===h&&(h=!1),new Promise(function(l,s){return __awaiter(e,void 0,void 0,function(){var n,o,t,i,r,a,c=this;return __generator(this,function(e){switch(e.label){case 0:return u.$inc&&"{}"!==JSON.stringify(u.$inc)||u.$set&&"{}"!==JSON.stringify(u.$set)||u.$setOnInsert&&"{}"!==JSON.stringify(u.$setOnInsert)||u.$unset&&"{}"!==JSON.stringify(u.$unset)?(this.timestamps&&(n=new Date,u.$set?u.$set.updatedAt=n:u.$set={updatedAt:n}),!this.checkSchema||m||(n=this.simplschema.newContext(),n.validate(u,{modifier:!0}))?this.useVersions&&!h||this.createLogs&&!g?[4,this.find(d)]:[3,2]:(console.log(new Date,this.collectionName,"Schema Errors - updateMany",n.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on updateMany - "+this.collectionName,[n.validationErrors(),u]),s(n.validationErrors()),[2])):(l(1),[2]);case 1:for(o=e.sent(),t=0;t<o.length;t++)i=o[t],this.createLogs&&!g&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,d,u,_]))<2e5?JSON.stringify([i,d,u,_],null,2):"Too Big",method:"updateMany",id_user:"",user:"",messageId:0,route:""}),this.useVersions&&((r=(0,common_1.deepCopy)(i))._id={_id:i._id,__v:i.__v},index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:i._id,__v:i.__v}},r,{upsert:!0}),4<=i.__v&&index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":i._id},{"_id.__v":{$lt:i.__v-4}}]}),objectContainsPropertyDeep(u,"__v")||(u.$inc?u.$inc.__v||(u.$inc.__v=1):u.$inc={__v:1}));e.label=2;case 2:return a=new monitor_manager_1.MonitorMongo("updateMany",this.collectionName,JSON.stringify([d,u,_])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateMany(d,u,_).then(function(e){a.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c.collectionName),l(e.modifiedCount)):s(e.acknowledged)},function(e){a.finish(),console.log(new Date,"Error Update Many",c.collectionName,d,u,_,e),s(e)}),[2]}})})})},MongoManagerCollection.prototype.updateOne=function(d,u,_,g,m){var e=this;return void 0===g&&(g=!1),void 0===m&&(m=!1),new Promise(function(l,s){return __awaiter(e,void 0,void 0,function(){var n,o,t,i,r,a,c=this;return __generator(this,function(e){switch(e.label){case 0:return!this.checkSchema||m||(o=this.simplschema.newContext(),o.validate(u,{modifier:!0}))?u.$inc&&"{}"!==JSON.stringify(u.$inc)||u.$set&&"{}"!==JSON.stringify(u.$set)||u.$setOnInsert&&"{}"!==JSON.stringify(u.$setOnInsert)||u.$unset&&"{}"!==JSON.stringify(u.$unset)?(n=new Date,this.timestamps&&(u.$set?u.$set.updatedAt=n:u.$set={updatedAt:n}),this.useVersions?[4,this.findOne(d,null,!0)]:[3,2]):(l(1),[2]):(console.log(new Date,this.collectionName,"Schema Errors - updateOne",o.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on updateOne - "+this.collectionName,[o.validationErrors(),u]),s(o.validationErrors()),[2]);case 1:return(n=e.sent())?(this.createLogs&&!g&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:n._id,payload:(0,common_1.getBinarySize)(JSON.stringify([n,d,u,_]))<2e5?JSON.stringify([n,d,u,_],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:""}),(o=(0,common_1.deepCopy)(n))._id={_id:n._id,__v:n.__v},index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:n._id,__v:n.__v}},o,{upsert:!0}),4<=n.__v&&index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":n._id},{"_id.__v":{$lt:n.__v-4}}]}),objectContainsPropertyDeep(u,"__v")||(u.$inc?u.$inc.__v||(u.$inc.__v=1):u.$inc={__v:1}),t=new monitor_manager_1.MonitorMongo("updateOne",this.collectionName,JSON.stringify([d,u,_])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(d,u,_).then(function(e){t.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c.collectionName),l(e.modifiedCount)):s(e.acknowledged)},function(e){t.finish(),console.log(new Date,"Error Update One",c.collectionName,d,u,_,e),s(e)})):_&&_.upsert?(u.$setOnInsert?(u.$setOnInsert._id||(u.$setOnInsert._id=objectIdHexString()),this.timestamps&&(u.$setOnInsert.createdAt=new Date)):this.timestamps?u.$setOnInsert={_id:objectIdHexString(),__v:0,createdAt:new Date}:u.$setOnInsert={_id:objectIdHexString(),__v:0},this.createLogs&&!g&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:u.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",d,u,_]))<2e5?JSON.stringify(["upsert",d,u,_],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:""}),i=new monitor_manager_1.MonitorMongo("updateOne",this.collectionName,JSON.stringify([d,u,_])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(d,u,_).then(function(e){i.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c.collectionName),l(e.modifiedCount)):s(e.acknowledged)},function(e){i.finish(),console.log(new Date,"Error Update One",c.collectionName,d,u,_,e),s(e)})):s("No Document"),[3,3];case 2:_&&_.upsert&&(u.$setOnInsert?(u.$setOnInsert._id||(u.$setOnInsert._id=objectIdHexString()),this.timestamps&&(u.$setOnInsert.createdAt=new Date)):this.timestamps?u.$setOnInsert={_id:objectIdHexString(),createdAt:new Date}:u.$setOnInsert={_id:objectIdHexString()}),this.createLogs&&!g?(_?_.returnDocument="before":_={returnDocument:"before"},r=new monitor_manager_1.MonitorMongo("findOneAndUpdate",this.collectionName,JSON.stringify([d,u,_])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndUpdate(d,u,_).then(function(e){r.finish();var n=e.value;n?(log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:c.collectionName,id_document:n._id,payload:(0,common_1.getBinarySize)(JSON.stringify([n,d,u,_]))<2e5?JSON.stringify([n,d,u,_],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:""}),l(e.ok)):u.$setOnInsert?(log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:c.collectionName,id_document:u.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",d,u,_]))<2e5?JSON.stringify(["upsert",d,u,_],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:""}),index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c.collectionName),l(e.ok)):l(0)},function(e){r.finish(),console.log(new Date,"Error Find One And Update",c.collectionName,d,u,_,e),s(e)})):(a=new monitor_manager_1.MonitorMongo("updateOne",this.collectionName,JSON.stringify([d,u,_])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(d,u,_).then(function(e){a.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c.collectionName),l(e.modifiedCount)):s(e.acknowledged)},function(e){a.finish(),console.log(new Date,"Error Update One",c.collectionName,d,u,_,e),s(e)})),e.label=3;case 3:return[2]}})})})},MongoManagerCollection.prototype.watchCollection=function(e,n){return void 0===e&&(e=[]),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).watch(e,n)},(e=MongoManagerCollection).indexQueue=async_1.default.queue(function(n,u){return __awaiter(void 0,void 0,void 0,function(){var i,r,a,c,l,s,d;return __generator(e,function(e){switch(e.label){case 0:return(i=n.action,r=n.collection,a=n.specs,c=n.options,l=index_1.ResolveIOServer.getMainDB().collection(r.collectionName,r.collectionOptions))?(s=new monitor_manager_1.MonitorMongo(i,r.collectionName,JSON.stringify([a,c])),[4,(d=function(){return __awaiter(void 0,void 0,void 0,function(){var n,o,t;return __generator(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,9]),[4,l[i].apply(l,__spreadArray(__spreadArray([],a,!1),[c],!1))];case 1:return o=e.sent(),s.finish(),u(null,o),[3,9];case 2:if(85!==(n=e.sent()).code&&!n.message.includes("IndexOptionsConflict"))return[3,8];e.label=3;case 3:return(e.trys.push([3,7,,8]),o=r.extractIndexNameFromError(n.message))?[4,l.dropIndex(o)]:[3,6];case 4:return e.sent(),[4,d()];case 5:return[2,e.sent()];case 6:return[3,8];case 7:return t=e.sent(),u(t),[3,8];case 8:return s.finish(),u(n),[3,9];case 9:return[2]}})})})()]):[2,u(new Error("Collection ".concat(r.collectionName," not found")))];case 1:return e.sent(),[2]}})})},1),MongoManagerCollection}()),MongoManagerUserCollection=function(e){function MongoManagerUserCollection(){return null!==e&&e.apply(this,arguments)||this}return __extends(MongoManagerUserCollection,e),MongoManagerUserCollection.prototype.authenticate=function(a,o){var e=this;return new Promise(function(i,r){return __awaiter(e,void 0,void 0,function(){var n,t=this;return __generator(this,function(e){switch(e.label){case 0:return(n=Math.pow(100,Math.log(a.attempts+1)),n=n<3e5?n:3e5,a.last)?Date.now()-a.last.getTime()<n?(a.last=new Date,[4,user_collection_1.Users.updateOne({_id:a._id},{$set:{last:a.last}})]):[3,2]:[3,3];case 1:return e.sent(),i({data:null,error:"Attempt Too Soon"}),[2];case 2:return[3,4];case 3:a.last=new Date,e.label=4;case 4:return 5<=a.attempts?i({data:null,error:"Too Many Attempts"}):a.salt?pbkdf2(o,a.salt,{iterations:25e3,keylen:512,digestAlgorithm:"sha256"},function(n,o){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return n?[2,r(n)]:scmp(o,Buffer.from(a.hash,"hex"))?(a.last=new Date,a.attempts=0,[4,user_collection_1.Users.updateOne({_id:a._id},{$set:{last:a.last,attempts:a.attempts}})]):[3,2];case 1:return e.sent(),i({data:a,error:""}),[3,4];case 2:return a.last=new Date,a.attempts=a.attempts+1,[4,user_collection_1.Users.updateOne({_id:a._id},{$set:{last:a.last,attempts:a.attempts}})];case 3:e.sent(),5<=a.attempts?i({data:null,error:"Too Many Attempts"}):i({data:null,error:"Invalid Username And Password"}),e.label=4;case 4:return[2]}})})}):i({data:null,error:"No Salt Value Stored"}),[2]}})})})},MongoManagerUserCollection.prototype.serializeUser=function(){return function(e,n){n(null,e.username)}},MongoManagerUserCollection.prototype.deserializeUser=function(){return function(e,n){user_collection_1.Users.findOne({username:e}).then(function(e){n(null,e)},function(e){n(e,null)})}},MongoManagerUserCollection.prototype.setPassword=function(r,a){var e=this;return new Promise(function(t,i){return __awaiter(e,void 0,void 0,function(){var n,o;return __generator(this,function(e){switch(e.label){case 0:return r?[3,1]:(i("No User"),[3,5]);case 1:return a?[3,2]:(i("No Password"),[3,5]);case 2:return[4,randomBytes(32)];case 3:return n=e.sent(),n=n.toString("hex"),[4,pbkdf2Promisified(a,n,{iterations:25e3,keylen:512,digestAlgorithm:"sha256"})];case 4:o=e.sent(),o=Buffer.from(o,"binary").toString("hex"),user_collection_1.Users.updateOne({_id:r._id},{$set:{hash:o,salt:n,services:{},attempts:0}}).then(function(e){return t(e)},function(e){return i(e)}),e.label=5;case 5:return[2]}})})})},MongoManagerUserCollection.prototype.changePassword=function(i,r,a){var e=this;return new Promise(function(o,t){return __awaiter(e,void 0,void 0,function(){var n;return __generator(this,function(e){switch(e.label){case 0:return i?[3,1]:(t("Missing User"),[3,4]);case 1:return r&&a?[3,2]:(t("Missing Password"),[3,4]);case 2:return[4,this.authenticate(i,r)];case 3:(n=e.sent()).data?this.setPassword(i,a).then(function(e){return o(e)},function(e){return t(e)}):t(n.error),e.label=4;case 4:return[2]}})})})},MongoManagerUserCollection.prototype.register=function(t,i){var e=this;return new Promise(function(n,o){return __awaiter(e,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return t.username?[3,1]:(o("Missing Username"),[3,5]);case 1:return[4,user_collection_1.Users.findOne({username:t.username})];case 2:return e.sent()?(o("Username Exists"),[3,5]):[3,3];case 3:return[4,user_collection_1.Users.findOne({email:t.email})];case 4:e.sent()?o("Email Exists"):(t.setPassword(i),n(t)),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 objectIdHexString(){return(new mongodb_1.ObjectId).toHexString()}function pbkdf2(e,n,o,t){crypto.pbkdf2(e,n,o.iterations,o.keylen,o.digestAlgorithm,t)}function pbkdf2Promisified(e,n,i){return new Promise(function(o,t){return pbkdf2(e,n,i,function(e,n){return e?t(e):o(n)})})}function randomBytes(e){return new Promise(function(o,t){return crypto.randomBytes(e,function(e,n){return e?t(e):o(n)})})}function objectContainsPropertyDeep(e,n){var o=Object.keys(e);if(o.some(function(e){return e===n}))return!0;for(var t=0;t<o.length;t++){var i=o[t];if(e[i]&&"object"==typeof e[i]&&objectContainsPropertyDeep(e[i],n))return!0}return!1}exports.MongoManagerUserCollection=MongoManagerUserCollection,exports.objectIdHexString=objectIdHexString;
|
|
1
|
+
"use strict";var __extends=this&&this.__extends||function(){var o=function(e,n){return(o=Object.setPrototypeOf||({__proto__:[]}instanceof Array?function(e,n){e.__proto__=n}:function(e,n){for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}))(e,n)};return function(e,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function __(){this.constructor=e}o(e,n),e.prototype=null===n?Object.create(n):(__.prototype=n.prototype,new __)}}(),__awaiter=this&&this.__awaiter||function(e,t,i,r){return new(i=i||Promise)(function(o,n){function fulfilled(e){try{step(r.next(e))}catch(e){n(e)}}function rejected(e){try{step(r.throw(e))}catch(e){n(e)}}function step(e){var n;e.done?o(e.value):((n=e.value)instanceof i?n:new i(function(e){e(n)})).then(fulfilled,rejected)}step((r=r.apply(e,t||[])).next())})},__generator=this&&this.__generator||function(t,i){var r,a,c,l={label:0,sent:function(){if(1&c[0])throw c[1];return c[1]},trys:[],ops:[]},s={next:verb(0),throw:verb(1),return:verb(2)};return"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function verb(o){return function(e){var n=[o,e];if(r)throw new TypeError("Generator is already executing.");for(;l=s&&n[s=0]?0:l;)try{if(r=1,a&&(c=2&n[0]?a.return:n[0]?a.throw||((c=a.return)&&c.call(a),0):a.next)&&!(c=c.call(a,n[1])).done)return c;switch(a=0,(n=c?[2&n[0],c.value]:n)[0]){case 0:case 1:c=n;break;case 4:return l.label++,{value:n[1],done:!1};case 5:l.label++,a=n[1],n=[0];continue;case 7:n=l.ops.pop(),l.trys.pop();continue;default:if(!(c=0<(c=l.trys).length&&c[c.length-1])&&(6===n[0]||2===n[0])){l=0;continue}if(3===n[0]&&(!c||n[1]>c[0]&&n[1]<c[3]))l.label=n[1];else if(6===n[0]&&l.label<c[1])l.label=c[1],c=n;else{if(!(c&&l.label<c[2])){c[2]&&l.ops.pop(),l.trys.pop();continue}l.label=c[2],l.ops.push(n)}}n=i.call(t,l)}catch(e){n=[6,e],a=0}finally{r=c=0}if(5&n[0])throw n[1];return{value:n[0]?n[1]:void 0,done:!0}}}},__spreadArray=this&&this.__spreadArray||function(e,n,o){if(o||2===arguments.length)for(var t,i=0,r=n.length;i<r;i++)!t&&i in n||((t=t||Array.prototype.slice.call(n,0,i))[i]=n[i]);return e.concat(t||Array.prototype.slice.call(n))},simpl_schema_1=(Object.defineProperty(exports,"__esModule",{value:!0}),exports.objectIdHexString=exports.MongoManagerUserCollection=exports.MongoManagerCollection=exports.MongoManagerModel=exports.MongoManager=void 0,require("simpl-schema")),mongodb_1=require("mongodb"),index_1=require("../index"),user_collection_1=require("../collections/user.collection"),common_1=require("../util/common"),log_collection_1=require("../collections/log.collection"),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(){var e=this;this._collections=[],this._mongoQueue=[],this._mongoQueueId=0,this._mongoQueueRunning=!1,this._mongoQueueCacheId=1,this._heapStats=v8.getHeapStatistics(),this._heapLimit=this._heapStats.heap_size_limit/numCPUs/8,this._serverCollections=[],this._debugMongoQueueHits=0,this._debugRemoveCacheHits=0,this._debugMongoQueueCollections=[],this._nodeCache=new NodeCache({stdTTL:0,checkperiod:0}),setInterval(function(){index_1.ResolveIOServer.getMainServer().getSubscriptionManager()&&index_1.ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()&&(console.log(new Date,"Mongo Manager","Collections",e._collections.length),console.log(new Date,"Mongo Manager","Mongo Queue",e._mongoQueue.length,JSON.stringify(e._mongoQueue.sort(function(e,n){return e.name_collection.localeCompare(n.name_collection)}),null,2)),console.log(new Date,"Mongo Manager","Server Collections",e._serverCollections.length),console.log(new Date,"Mongo Manager","Mongo Queue Hits",e._debugMongoQueueHits),console.log(new Date,"Mongo Manager","Mongo Queue Collections",e._debugMongoQueueCollections.sort(function(e,n){return e.collection.localeCompare(n.collection)||e.function.localeCompare(n.function)})),console.log(new Date,"Mongo Manager","Cache Cleanup Hits",JSON.stringify(e._debugRemoveCacheHits,null,2))),e._debugMongoQueueHits=0,e._debugRemoveCacheHits=0,e._debugMongoQueueCollections=[]},6e4),this.initServerCollections(),this.runQueue()}return MongoManager.prototype.initServerCollections=function(){return __awaiter(this,void 0,void 0,function(){var n;return __generator(this,function(e){switch(e.label){case 0:return[4,index_1.ResolveIOServer.getMainDB().listCollections().toArray()];case 1:return n=e.sent(),this._serverCollections=n,[2]}})})},MongoManager.prototype.getServerCollections=function(){return this._serverCollections},MongoManager.prototype.registerCollection=function(n){var e=this;n.collectionOptions&&n.collectionOptions.timeseries&&n.collectionOptions.timeseries.timeField&&this._serverCollections.some(function(e){return e.name===n.collectionName&&"collection"===e.type})&&index_1.ResolveIOServer.getMainDB().dropCollection(n.collectionName).then(function(){e.createCollection(n)}),this._collections.push(n)},MongoManager.prototype.createCollection=function(e){index_1.ResolveIOServer.getMainDB().createCollection(e.collectionName,e.collectionOptions)},MongoManager.prototype.collections=function(){return this._collections},MongoManager.prototype.collection=function(n){return this._collections.filter(function(e){return e.collectionName===n})[0]},MongoManager.prototype.addToQueue=function(n){var e=this._mongoQueue.filter(function(e){return e.name_collection===n.name_collection&&e.name_function===n.name_function&&e.name_function_addt===n.name_function_addt&&JSON.stringify(e.data_function)===JSON.stringify(n.data_function)&&JSON.stringify(e.data_function_addt)===JSON.stringify(n.data_function_addt)})[0];e?(e.running?e.cbs_next:e.cbs).push(n.cbs[0]):(n._id=this._mongoQueueId,this._mongoQueueId+=1,this._mongoQueue.splice(0,0,n))},MongoManager.prototype.runQueue=function(){return __awaiter(this,void 0,void 0,function(){var a=this;return __generator(this,function(e){return setInterval(function(){if(!a._mongoQueueRunning){var o=a._mongoQueue.filter(function(e){return!e.running&&e.cbs.length});if(o.length){a._mongoQueueRunning=!0;for(var e=o.length-1;0<=e;e--)!function(e){a._debugMongoQueueHits+=1;var t,i,r=o[e];if(a._debugMongoQueueCollections.some(function(e){return e.collection===r.name_collection&&e.function===r.name_function})?a._debugMongoQueueCollections.filter(function(e){return e.collection===r.name_collection&&e.function===r.name_function})[0].hits+=1:a._debugMongoQueueCollections.push({collection:r.name_collection,function:r.name_function,hits:1}),r.running=!0,r.invalidateFlag=!1,r.cacheId)try{var n=JSON.parse(a._nodeCache.get(r.cacheId),common_1.dateReviver);r.cbs.forEach(function(e){e(null,n,!0)}),r.cbs=[],r.running=!1}catch(e){r.cacheId=0}r.cacheId||(r.name_function_addt?(t=new monitor_manager_1.MonitorMongo(r.name_function,r.name_collection,JSON.stringify(__spreadArray(__spreadArray(__spreadArray([],r.data_function,!0),[r.name_function_addt],!1),r.data_function_addt,!0))),(e=(e=index_1.ResolveIOServer.getMainDB().collection(r.name_collection))[r.name_function].apply(e,r.data_function))[r.name_function_addt].apply(e,r.data_function_addt).then(function(n){if(t.finish(),r.invalidateFlag)5<=r.invalidateCount&&(r.invalidateCount=0,r.cbs.forEach(function(e){e(null,n,!1)})),r.cbs=r.cbs.concat(r.cbs_next),r.cbs_next=[];else{var e=r.invalidateCount=0,o=!1;try{e=JSON.stringify(n).replace(/[\[\]\,\"]/g,"").length}catch(e){o=!0}!o&&null!=n&&(!Array.isArray(n)||n.length)&&e<1e7?(r.cacheId=a._mongoQueueCacheId,a._mongoQueueCacheId+=1,a.addToCache(r.cacheId,n)):r.cacheId=0,r.cbs.forEach(function(e){e(null,n,!1)}),r.cbs_next.length?(r.cbs=r.cbs_next,r.cbs_next=[]):r.cbs=[]}r.running=!1},function(n){t.finish(),r.cbs.forEach(function(e){e(n,null,!1)}),r.cbs_next.forEach(function(e){e(n,null,!1)}),0<=a._mongoQueue.map(function(e){return e._id}).indexOf(r._id)&&a._mongoQueue.splice(a._mongoQueue.map(function(e){return e._id}).indexOf(r._id),1)})):(i=new monitor_manager_1.MonitorMongo(r.name_function,r.name_collection,JSON.stringify(r.data_function)),(e=index_1.ResolveIOServer.getMainDB().collection(r.name_collection))[r.name_function].apply(e,r.data_function).then(function(n){if(i.finish(),r.invalidateFlag)5<=r.invalidateCount&&(r.invalidateCount=0,r.cbs.forEach(function(e){e(null,n,!1)})),r.cbs=r.cbs.concat(r.cbs_next),r.cbs_next=[];else{var e=r.invalidateCount=0,o=!1;try{e=JSON.stringify(n).replace(/[\[\]\,\"]/g,"").length}catch(e){o=!0}!o&&null!=n&&(!Array.isArray(n)||n.length)&&e<1e7?(r.cacheId=a._mongoQueueCacheId,a._mongoQueueCacheId+=1,a.addToCache(r.cacheId,n)):r.cacheId=0,r.cbs.forEach(function(e){e(null,n,!1)}),r.cbs_next.length?(r.cbs=r.cbs_next,r.cbs_next=[]):r.cbs=[]}r.running=!1},function(n){i.finish(),console.log.apply(console,__spreadArray(__spreadArray([new Date,"Error "+r.name_function,r.name_collection],r.data_function,!1),[n],!1)),r.cbs.forEach(function(e){e(n,null,!1)}),r.cbs_next.forEach(function(e){e(n,null,!1)}),0<=a._mongoQueue.map(function(e){return e._id}).indexOf(r._id)&&a._mongoQueue.splice(a._mongoQueue.map(function(e){return e._id}).indexOf(r._id),1)})))}(e);a._mongoQueueRunning=!1}}},25),[2]})})},MongoManager.prototype.addToCache=function(e,n){var o=this._nodeCache.getStats().vsize;if(o>this._heapLimit){for(var t=0,i=this._mongoQueue.filter(function(e){return e.cacheId&&!e.running&&!e.cbs.length}),r=i.length-1;0<=r;r--){this._debugRemoveCacheHits+=1;var a=i[r];if(this._nodeCache.del(a.cacheId),(a.cacheId=0)<=this._mongoQueue.map(function(e){return e._id}).indexOf(a._id)&&this._mongoQueue.splice(this._mongoQueue.map(function(e){return e._id}).indexOf(a._id),1),t+=1,(o=this._nodeCache.getStats().vsize)<.75*this._heapLimit)break}console.log("Query Cache: Too Big, - Deleted: "+t+" - "+o)}this._nodeCache.set(e,JSON.stringify(n))},MongoManager.prototype.invalidateQueryCache=function(n){for(var e=this._mongoQueue.filter(function(e){return e.name_collection===n||e.lookup_collections.includes(n)}),o=e.length-1;0<=o;o--){var t=e[o];t.cacheId&&(this._nodeCache.del(t.cacheId),t.cacheId=0),t.running?(t.invalidateFlag=!0,t.invalidateCount+=1):t.cbs.length||0<=this._mongoQueue.map(function(e){return e._id}).indexOf(t._id)&&this._mongoQueue.splice(this._mongoQueue.map(function(e){return e._id}).indexOf(t._id),1)}},MongoManager}(),MongoManagerModel=(exports.MongoManager=MongoManager,function(e){var n;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,(n=(0,common_1.deepCopy)(e.schema))._id.type="Object",n._id.blackbox=!0,n={collectionName:e.collectionName+".versions",schema:n,useVersionCollection:!1,useReportBuilder:!1,reportBuilderLookupTables:[],timestamps:!0,createLogs:!1,checkSchema:!1,collectionOptions:null},"users"===e.collectionName?this.collection_version=new MongoManagerUserCollection(n):this.collection_version=new MongoManagerCollection(n),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 n,o=this,t=(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,n=(0,common_1.deepCopy)(e.schema),e=(0,common_1.buildRbLookups)(e.reportBuilderLookupTables,n,[]),this.rbSchema=(0,common_1.buildRbSchema)(e)),setInterval(function(){index_1.ResolveIOServer&&index_1.ResolveIOServer.getMainServer()&&index_1.ResolveIOServer.getMongoManager()&&index_1.ResolveIOServer.getMongoManager().getServerCollections().length&&(index_1.ResolveIOServer.getMongoManager().registerCollection(o),clearInterval(t))},1))}var e;return MongoManagerCollection.prototype.extractIndexNameFromError=function(e){var n=e.match(/Index already exists with a different name: (\S+)/);return(n=!n||n.length<=1?e.match(/existing index:.*name: "([^"]+)"/):n)&&1<n.length?n[1]:null},MongoManagerCollection.prototype.aggregate=function(i,r,e){var a=this;return void 0===e&&(e=!1),new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("aggregate",a.collectionName,JSON.stringify([i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).aggregate(i,r).toArray().then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Aggregate",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.aggregateCount=function(e,n){var o=this;return new Promise(function(t,i){index_1.ResolveIOServer.getMongoManager().addToQueue({_id:0,name_collection:o.collectionName,name_function:"aggregate",name_function_addt:"count",data_function:[e,n],data_function_addt:[],cbs:[function(e,n,o){e?i(e):t(n)}],cbs_next:[],running:!1,cacheId:0,lookup_collections:e.filter(function(e){return e.$lookup&&e.$lookup.from}).map(function(e){return e.$lookup.from}).filter(function(e,n,o){return n===o.indexOf(e)}),invalidateFlag:!1,invalidateCount:0})})},MongoManagerCollection.prototype.aggregateCursor=function(e,n){var o=new monitor_manager_1.MonitorMongo("aggregateCursor",this.collectionName,JSON.stringify([e,n])),e=index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(e,n);return e.on("close",function(e){return o.finish(),e}),e},MongoManagerCollection.prototype.aggregateStream=function(e,n,o){var t=new monitor_manager_1.MonitorMongo("aggregateStream",this.collectionName,JSON.stringify([e,n,o])),e=index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).aggregate(e,n).stream(o);return e.on("end",function(e){return t.finish(),e}).on("error",function(e){return t.finish(),e}).on("close",function(e){return t.finish(),e}),e},MongoManagerCollection.prototype.bulkWrite=function(x,w,C,b){var e=this;return void 0===C&&(C=!1),void 0===b&&(b=!1),new Promise(function(N,I){return __awaiter(e,void 0,void 0,function(){var m,h,f,v,o,t,i,r,n,a,p,c,l,s,M,d,u,g,_,O,y,S=this;return __generator(this,function(e){switch(e.label){case 0:return x.length?(m=[],h=[],f=[],v=[],o=[],t=[],i=[],x.forEach(function(e){var n=Object.keys(e)[0];"updateOne"===n||"deleteOne"===n||"replaceOne"===n?o.push(e[n].filter):"updateMany"===n?t.push(e[n].filter):"deleteMany"===n&&i.push(e[n].filter)}),o.length||t.length||i.length?[4,this.find({$or:__spreadArray(__spreadArray(__spreadArray([],o,!0),t,!0),i,!0)})]:[3,2]):(N(null),[2]);case 1:return n=e.sent(),[3,3];case 2:n=[],e.label=3;case 3:for(r=n,a=function(e,n){return n.split(".").reduce(function(e,n){return Array.isArray(e)?e.map(function(e){return e[n]}).filter(function(e){return void 0!==e}):e&&e[n]},e)},p=function(n){return r.filter(function(e){return c(n,e)})},c=function(t,i){return Object.keys(t).every(function(e){var n=t[e],o=a(i,e);return"$and"===e?n.every(function(e){return c(e,i)}):"$or"===e?n.some(function(e){return c(e,i)}):Array.isArray(o)?o.some(function(e){return l(n,e)}):l(n,o)})},l=function(e,n){if(e instanceof Object){if("$in"in e)return e.$in.includes(n);if("$nin"in e)return!e.$nin.includes(n);if("$ne"in e)return n!==e.$ne;if("$gt"in e)return n>e.$gt;if("$gte"in e)return n>=e.$gte;if("$lt"in e)return n<e.$lt;if("$lte"in e)return n<=e.$lte;if("$exists"in e)return void 0!==n===e.$exists;if("$regex"in e)return new RegExp(e.$regex,e.$options||"").test(n)}return n===e},s=function(o){var e,t=Object.keys(o)[0],n=o[t];if("insertOne"===t){if(n.document._id||(n.document._id=objectIdHexString()),M.useVersions&&!n.document.hasOwnProperty("__v")&&(n.document.__v=0),M.timestamps&&(e=new Date,n.document.createdAt=e,n.document.updatedAt=e),M.checkSchema&&!b)if(!(g=M.simplschema.newContext()).validate(n.document))return console.log(new Date,M.collectionName,"Schema Errors - bulkWrite - insertOne",g.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on bulkWrite insertOne - "+M.collectionName,[g.validationErrors(),n.document]),I(g.validationErrors()),"continue";!C&&M.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:M.collectionName,id_document:n.document._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w]))<2e5?JSON.stringify([o,w],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)}else if("updateOne"===t){if((s=p(n.filter)).length)for(var i=0,r=s;i<r.length;i++){var a=r[i];if(M.timestamps&&(n.update.$set?n.update.$set.updatedAt=new Date:n.update.$set={updatedAt:new Date}),M.checkSchema&&!b)if(!(g=M.simplschema.newContext()).validate(n.update,{modifier:!0})){console.log(new Date,M.collectionName,"Schema Errors - bulkWrite - updateOne",g.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on bulkWrite updateOne - "+M.collectionName,[g.validationErrors(),n.update,a]),I(g.validationErrors());continue}M.useVersions&&((_=(0,common_1.deepCopy)(a))._id={_id:_._id,__v:_.__v},h.push({insertOne:{document:_}}),objectContainsPropertyDeep(n.update,"__v")||(n.update.$inc?n.update.$inc.__v=1:n.update.$inc={__v:1}),4<=_.__v)&&f.push({deleteMany:{filter:{"_id._id":_._id._id,"_id.__v":{$lt:_.__v-4}}}}),!C&&M.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:M.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w,a]))<2e5?JSON.stringify([o,w,a],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)}else if(n.upsert){if(M.checkSchema&&!b)if(!(g=M.simplschema.newContext()).validate(n.update,{modifier:!0}))return console.log(new Date,M.collectionName,"Schema Errors - bulkWrite - updateOne",g.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on bulkWrite updateOne - "+M.collectionName,[g.validationErrors(),n.update]),I(g.validationErrors()),"continue";objectContainsPropertyDeep(n.update,"_id")||(n.update.$setOnInsert._id=objectIdHexString()),!M.useVersions||objectContainsPropertyDeep(n.update,"__v")||(n.update.$setOnInsert.__v=0),M.timestamps&&(objectContainsPropertyDeep(n.update,"createdAt")||(n.update.$setOnInsert.createdAt=new Date),objectContainsPropertyDeep(n.update,"updatedAt")||(n.update.$setOnInsert.updatedAt=new Date)),!C&&M.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:M.collectionName,id_document:n.update.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w,n.update]))<2e5?JSON.stringify([o,w,n.update],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)}}else if("replaceOne"===t){if(M.timestamps&&(n.replacement.updatedAt=new Date),(s=p(n.filter)).length)for(var c=0,l=s;c<l.length;c++){a=l[c];if(M.checkSchema&&!b)if(!(g=M.simplschema.newContext()).validate(n.replacement)){console.log(new Date,M.collectionName,"Schema Errors - bulkWrite - insertOne",g.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on bulkWrite replaceOne - "+M.collectionName,[g.validationErrors(),n.replacement]),I(g.validationErrors());continue}M.useVersions&&((_=(0,common_1.deepCopy)(a))._id={_id:_._id,__v:_.__v},h.push({insertOne:{document:_}}),n.replacement.__v=_.__v+1,4<=_.__v)&&f.push({deleteMany:{filter:{"_id._id":_._id._id,"_id.__v":{$lt:_.__v-4}}}}),!C&&M.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:M.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w,a]))<2e5?JSON.stringify([o,w,a],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)}else if(n.upsert){if(M.checkSchema&&!b)if(!(g=M.simplschema.newContext()).validate(n.replacement))return console.log(new Date,M.collectionName,"Schema Errors - bulkWrite - replaceOne",g.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on bulkWrite replaceOne - "+M.collectionName,[g.validationErrors(),n.replacement]),I(g.validationErrors()),"continue";objectContainsPropertyDeep(n.replacement,"_id")||(n.replacement._id=objectIdHexString()),!M.useVersions||objectContainsPropertyDeep(n.replacement,"__v")||(n.replacement.__v=0),M.timestamps&&(objectContainsPropertyDeep(n.replacement,"createdAt")||(n.replacement.createdAt=new Date),objectContainsPropertyDeep(n.replacement,"updatedAt")||(n.replacement.updatedAt=new Date)),!C&&M.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:M.collectionName,id_document:n.replacement._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w,n.replacement]))<2e5?JSON.stringify([o,w,n.replacement],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)}}else if("deleteOne"===t)(s=p(n.filter)).forEach(function(e){var n;S.useVersions&&((n=(0,common_1.deepCopy)(e))._id={_id:n._id,__v:n.__v},h.push({insertOne:{document:n}}),4<=n.__v)&&f.push({deleteMany:{filter:{"_id._id":n._id._id,"_id.__v":{$lt:n.__v-4}}}}),!C&&S.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:S.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w,e]))<2e5?JSON.stringify([o,w,e],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)});else if("updateMany"===t){M.timestamps&&(n.update.$set?n.update.$set.updatedAt=new Date:n.update.$set={updatedAt:new Date}),!M.useVersions||objectContainsPropertyDeep(n.update,"__v")||(n.update.$inc?n.update.$inc.__v=1:n.update.$inc={__v:1});for(var s,d=0,u=s=p(n.filter);d<u.length;d++){var g,_,a=u[d];if(M.checkSchema&&!b)if(!(g=M.simplschema.newContext()).validate(n.update,{modifier:!0})){console.log(new Date,M.collectionName,"Schema Errors - bulkWrite - insertOne",g.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on bulkWrite updateMany - "+M.collectionName,[g.validationErrors(),n.update]),I(g.validationErrors());continue}M.useVersions&&((_=(0,common_1.deepCopy)(a))._id={_id:_._id,__v:_.__v},h.push({insertOne:{document:_}}),4<=_.__v)&&f.push({deleteMany:{filter:{"_id._id":_._id._id,"_id.__v":{$lt:_.__v-4}}}}),!C&&M.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:M.collectionName,id_document:a._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w]))<2e5?JSON.stringify([o,w],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)}}else"deleteMany"===t&&(s=p(n.filter)).forEach(function(e){var n;S.useVersions&&((n=(0,common_1.deepCopy)(e))._id={_id:n._id,__v:n.__v},h.push({insertOne:{document:n}}),4<=n.__v)&&f.push({deleteMany:{filter:{"_id._id":n._id._id,"_id.__v":{$lt:n.__v-4}}}}),!C&&S.createLogs&&m.push({insertOne:{document:{_id:objectIdHexString(),type:"document",collection:S.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([o,w]))<2e5?JSON.stringify([o,w],null,2):"Too Big",method:t,id_user:"",user:"",messageId:0,route:""}}}),v.push(o)})},M=this,d=0,u=x;d<u.length;d++)g=u[d],s(g);e.label=4;case 4:return(e.trys.push([4,12,,13]),v.length)?(_=new monitor_manager_1.MonitorMongo("bulkWrite",this.collectionName,JSON.stringify([v.slice(-100),w])),[4,index_1.ResolveIOServer.getMainDB().collection(this.collectionName).bulkWrite(v,w)]):[3,10];case 5:return(O=e.sent(),index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),h.length||f.length)?[4,index_1.ResolveIOServer.getMainDB().collection(this.versionCollection).bulkWrite(__spreadArray(__spreadArray([],h,!0),f,!0))]:[3,7];case 6:e.sent(),e.label=7;case 7:return C||!m.length?[3,9]:[4,log_collection_1.Logs.bulkWrite(m)];case 8:e.sent(),e.label=9;case 9:return _.finish(),N(O),[3,11];case 10:N(null),e.label=11;case 11:return[3,13];case 12:return y=e.sent(),console.log(new Date,"Error Bulk Write",this.collectionName,v.slice(-100),w,y),I(y),[3,13];case 13:return[2]}})})})},MongoManagerCollection.prototype.countDocuments=function(i,r){var a=this;return void 0===i&&(i={}),new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("countDocuments",a.collectionName,JSON.stringify([i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).countDocuments(i,r).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Count Documents",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.create=function(e,n){return Array.isArray(e)?1===e.length?this.insertOne(e[0],n):this.insertMany(e,n):this.insertOne(e,n)},MongoManagerCollection.prototype.createIndex=function(e,n){var i=this;return new Promise(function(o,t){MongoManagerCollection.indexQueue.push({action:"createIndex",collection:i,specs:[e],options:n},function(e,n){e?t(e):o(n)})})},MongoManagerCollection.prototype.createIndexes=function(e,n){var i=this;return new Promise(function(o,t){MongoManagerCollection.indexQueue.push({action:"createIndexes",collection:i,specs:[e],options:n},function(e,n){e?t(e):o(n)})})},MongoManagerCollection.prototype.deleteMany=function(s,d,u){var e=this;return void 0===s&&(s={}),void 0===u&&(u=!1),new Promise(function(c,l){return __awaiter(e,void 0,void 0,function(){var n,o,t,i,r,a=this;return __generator(this,function(e){switch(e.label){case 0:return!this.createLogs||u?[3,2]:[4,this.find(s)];case 1:for(n=e.sent(),o=0;o<n.length;o++)t=n[o],log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:t._id,payload:(0,common_1.getBinarySize)(JSON.stringify([t,s,d]))<2e5?JSON.stringify([t,s,d],null,2):"Too Big",method:"deleteMany",id_user:"",user:"",messageId:0,route:""}),this.useVersions&&((i=(0,common_1.deepCopy)(t))._id={_id:t._id,__v:t.__v},index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:t._id,__v:t.__v}},i,{upsert:!0}),index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":t._id},{"_id.__v":{$lt:t.__v-1}}]}));e.label=2;case 2:return r=new monitor_manager_1.MonitorMongo("deleteMany",this.collectionName,JSON.stringify([s,d])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).deleteMany(s,d).then(function(e){r.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(a.collectionName),c(e.deletedCount)):l(e.acknowledged)},function(e){r.finish(),console.log(new Date,"Error Delete Many",a.collectionName,s,d,e),l(e)}),[2]}})})})},MongoManagerCollection.prototype.deleteOne=function(a,c,l){var e=this;return void 0===a&&(a={}),void 0===l&&(l=!1),new Promise(function(r,t){return __awaiter(e,void 0,void 0,function(){var i,n,o=this;return __generator(this,function(e){return this.createLogs&&!l?(i=new monitor_manager_1.MonitorMongo("findOneAndDelete",this.collectionName,JSON.stringify([a,c])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndDelete(a,c).then(function(t){return __awaiter(o,void 0,void 0,function(){var n,o;return __generator(this,function(e){return i.finish(),(n=t)?(this.createLogs&&!l&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:n._id,payload:(0,common_1.getBinarySize)(JSON.stringify([n,a,c]))<2e5?JSON.stringify([n,a,c],null,2):"Too Big",method:"deleteOne",id_user:"",user:"",messageId:0,route:""}),this.useVersions&&((o=(0,common_1.deepCopy)(n))._id={_id:n._id,__v:n.__v},index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:n._id,__v:n.__v}},o,{upsert:!0}),index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":n._id},{"_id.__v":{$lt:n.__v-1}}]})),index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName),r(1)):r(0),[2]})})},function(e){i.finish(),console.log(new Date,"Error Find One And Delete",o.collectionName,a,c,e),t(e)})):(n=new monitor_manager_1.MonitorMongo("deleteOne",this.collectionName,JSON.stringify([a,c])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).deleteOne(a,c).then(function(e){n.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(o.collectionName),r(e.deletedCount)):t(e.acknowledged)},function(e){n.finish(),console.log(new Date,"Error Delete One",o.collectionName,a,c,e),t(e)})),[2]})})})},MongoManagerCollection.prototype.distinct=function(e,i,r){var a=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("distinct",a.collectionName,JSON.stringify([e,i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).distinct(e,i,r).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Distinct",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.drop=function(i){var r=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("drop",r.collectionName,JSON.stringify([i]));index_1.ResolveIOServer.getMainDB().collection(r.collectionName,r.collectionOptions).drop(i).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Count Documents",r.collectionName,i,e),o(e)})})},MongoManagerCollection.prototype.dropIndex=function(i,r){var a=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("dropIndex",a.collectionName,JSON.stringify([i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).dropIndex(i,r).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Drop Index",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.dropIndexes=function(i){var r=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("dropIndexes",r.collectionName,JSON.stringify([i]));index_1.ResolveIOServer.getMainDB().collection(r.collectionName,r.collectionOptions).dropIndexes(i).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Drop Indexes",r.collectionName,i,e),o(e)})})},MongoManagerCollection.prototype.find=function(r,a,c){var e=this;return void 0===r&&(r={}),void 0===c&&(c=!1),new Promise(function(t,i){return __awaiter(e,void 0,void 0,function(){var n,o=this;return __generator(this,function(e){return c?(n=new monitor_manager_1.MonitorMongo("find",this.collectionName,JSON.stringify([r,a])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(r,a).toArray().then(function(e){n.finish(),t(e)},function(e){n.finish(),console.log(new Date,"Error Find",o.collectionName,r,a,e),i(e)})):index_1.ResolveIOServer.getMongoManager().addToQueue({_id:0,name_collection:this.collectionName,name_function:"find",name_function_addt:"toArray",data_function:[r,a],data_function_addt:[],cbs:[function(e,n,o){e?i(e):t(n)}],cbs_next:[],running:!1,cacheId:0,lookup_collections:[],invalidateFlag:!1,invalidateCount:0}),[2]})})})},MongoManagerCollection.prototype.findById=function(i,r){var a=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("findById",a.collectionName,JSON.stringify([{_id:i},r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).findOne({_id:i},r).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Find By Id",a.collectionName,{_id:i},r,e),o(e)})})},MongoManagerCollection.prototype.findCount=function(i,r){var a=this;return void 0===i&&(i={}),new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("findCount",a.collectionName,JSON.stringify([i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).find(i,r).count().then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Find Count",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.findCursor=function(e,n){void 0===e&&(e={});var o=new monitor_manager_1.MonitorMongo("findCursor",this.collectionName,JSON.stringify([e,n])),t=index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(e,n);return t.on("close",function(e){return o.finish(),t.removeAllListeners(),e}),t},MongoManagerCollection.prototype.findStream=function(e,n,o){void 0===e&&(e={});var t=new monitor_manager_1.MonitorMongo("findStream",this.collectionName,JSON.stringify([e,n,o])),e=index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).find(e,n).stream(o);return e.on("end",function(e){return t.finish(),e}).on("error",function(e){return t.finish(),e}).on("close",function(e){return t.finish(),e}),e},MongoManagerCollection.prototype.findOne=function(o,r,e){var a=this;return void 0===o&&(o={}),void 0===e&&(e=!1),new Promise(function(t,i){var n;e?(n=new monitor_manager_1.MonitorMongo("findOne",a.collectionName,JSON.stringify([o,r])),index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).findOne(o,r).then(function(e){n.finish(),t(e)},function(e){n.finish(),console.log(new Date,"Error Find One",a.collectionName,o,r,e),i(e)})):index_1.ResolveIOServer.getMongoManager().addToQueue({_id:0,name_collection:a.collectionName,name_function:"findOne",name_function_addt:"",data_function:[o,r],data_function_addt:[],cbs:[function(e,n,o){e?i(e):t(n)}],cbs_next:[],running:!1,cacheId:0,lookup_collections:[],invalidateFlag:!1,invalidateCount:0})})},MongoManagerCollection.prototype.findOneAndDelete=function(r,a,c){var e=this;return void 0===r&&(r={}),void 0===c&&(c=!1),new Promise(function(i,n){return __awaiter(e,void 0,void 0,function(){var o,t=this;return __generator(this,function(e){return o=new monitor_manager_1.MonitorMongo("findOneAndDelete",this.collectionName,JSON.stringify([r,a])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndDelete(r,a).then(function(e){o.finish();var n;e?(t.createLogs&&!c&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:t.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,r,a]))<2e5?JSON.stringify([e,r,a],null,2):"Too Big",method:"findOneAndDelete",id_user:"",user:"",messageId:0,route:""}),t.useVersions&&((n=(0,common_1.deepCopy)(e))._id={_id:e._id,__v:e.__v},index_1.ResolveIOServer.getMongoManager().collection(t.versionCollection).replaceOne({_id:{_id:e._id,__v:e.__v}},n,{upsert:!0})),index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(t.collectionName),i(e)):i(null)},function(e){o.finish(),console.log(new Date,"Error Find One And Delete",t.collectionName,r,a,e),n(e)}),[2]})})})},MongoManagerCollection.prototype.findOneAndReplace=function(c,l,s,d,u){var e=this;return void 0===c&&(c={}),void 0===d&&(d=!1),void 0===u&&(u=!1),new Promise(function(r,a){return __awaiter(e,void 0,void 0,function(){var n,o,t,i=this;return __generator(this,function(e){return!this.checkSchema||u||(n=this.simplschema.newContext(),n.validate(l))?(o=new Date,this.timestamps&&(l.updatedAt=o),s&&s.upsert&&(l._id||(l._id=objectIdHexString()),this.useVersions&&(l.__v=0),this.timestamps)&&!l.createdAt&&(l.createdAt=o),t=new monitor_manager_1.MonitorMongo("findOneAndReplace",this.collectionName,JSON.stringify([c,l,s])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndReplace(c,l,s).then(function(e){t.finish();var n;e?(i.createLogs&&!d&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:i.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,c,l,s]))<2e5?JSON.stringify([e,c,l,s],null,2):"Too Big",method:"findOneAndReplace",id_user:"",user:"",messageId:0,route:""}),i.useVersions&&((n=(0,common_1.deepCopy)(e))._id={_id:e._id,__v:e.__v},index_1.ResolveIOServer.getMongoManager().collection(i.versionCollection).replaceOne({_id:{_id:e._id,__v:e.__v}},n,{upsert:!0})),index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(i.collectionName),r(e)):r(null)},function(e){t.finish(),console.log(new Date,"Error Find One And Replace",i.collectionName,c,s,e),a(e)})):(console.log(new Date,this.collectionName,"Schema Errors - findOneAndReplace",n.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on findOneAndReplace - "+this.collectionName,[n.validationErrors(),l]),a(n.validationErrors())),[2]})})})},MongoManagerCollection.prototype.findOneAndUpdate=function(c,l,s,d,u){var e=this;return void 0===c&&(c={}),void 0===d&&(d=!1),void 0===u&&(u=!1),new Promise(function(r,a){return __awaiter(e,void 0,void 0,function(){var n,o,t,i=this;return __generator(this,function(e){return!this.checkSchema||u||(n=this.simplschema.newContext(),n.validate(l,{modifier:!0}))?(this.timestamps&&(o=new Date,l.$set?l.$set.updatedAt=o:l.$set={updatedAt:o}),s&&s.upsert&&(l.$setOnInsert?(l.$setOnInsert._id||(l.$setOnInsert._id=objectIdHexString()),this.timestamps&&(l.$setOnInsert.createdAt=new Date)):this.timestamps?l.$setOnInsert={_id:objectIdHexString(),createdAt:new Date}:l.$setOnInsert={_id:objectIdHexString()}),t=new monitor_manager_1.MonitorMongo("findOneAndUpdate",this.collectionName,JSON.stringify([c,l,s])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndUpdate(c,l,s).then(function(e){t.finish();var n;e?(i.createLogs&&!d&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:i.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,c,l,s]))<2e5?JSON.stringify([e,c,l,s],null,2):"Too Big",method:"findOneAndUpdate",id_user:"",user:"",messageId:0,route:""}),i.useVersions&&((n=(0,common_1.deepCopy)(e))._id={_id:e._id,__v:e.__v},index_1.ResolveIOServer.getMongoManager().collection(i.versionCollection).replaceOne({_id:{_id:e._id,__v:e.__v}},n,{upsert:!0})),index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(i.collectionName),r(e)):r(null)},function(e){t.finish(),console.log(new Date,"Error Find One And Update",i.collectionName,c,s,e),a(e)})):(console.log(new Date,this.collectionName,"Schema Errors - findOneAndUpdate",n.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on findOneAndUpdate - "+this.collectionName,[n.validationErrors(),l]),a(n.validationErrors())),[2]})})})},MongoManagerCollection.prototype.indexes=function(i){var r=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("indexes",r.collectionName,JSON.stringify([i]));index_1.ResolveIOServer.getMainDB().collection(r.collectionName,r.collectionOptions).indexes(i).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Indexes",r.collectionName,i,e),o(e)})})},MongoManagerCollection.prototype.indexExists=function(i,r){var a=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("indexExists",a.collectionName,JSON.stringify([i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).indexExists(i,r).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Index Exists",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.insertMany=function(d,u,g,_,m){var e=this;return void 0===g&&(g=!1),void 0===_&&(_=!1),void 0===m&&(m=!1),new Promise(function(l,s){return __awaiter(e,void 0,void 0,function(){var o,n,t,i,r,a,c=this;return __generator(this,function(e){if(d.length){for(o=[],this.checkSchema&&!_&&d.forEach(function(e){var n=c.simplschema.newContext();n.validate(e)?o.push(!0):(console.log(new Date,c.collectionName,"Schema Errors - insertMany",n.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on insertMany - "+c.collectionName,[n.validationErrors(),e]),o.push(!1))}),n=this.checkSchema?d.filter(function(e,n){return o[n]}):d,t=0;t<n.length;t++)(i=n[t])._id||(i._id=objectIdHexString()),this.timestamps&&(r=new Date,i.createdAt=r,i.updatedAt=r),this.useVersions&&!i.hasOwnProperty("__v")&&(i.__v=0),this.createLogs&&!g&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,u]))<2e5?JSON.stringify([i,u],null,2):"Too Big",method:"insertMany",id_user:"",user:"",messageId:0,route:""});n.length&&(a=null,m||(a=new monitor_manager_1.MonitorMongo("insertMany",this.collectionName,JSON.stringify([n,u]))),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).insertMany(n,u).then(function(e){a&&a.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c.collectionName),l(n)):s(e.acknowledged)},function(e){a&&a.finish(),console.log(new Date,"Error Insert Many",c.collectionName,n,u,e),s(e)}))}else l([]);return[2]})})})},MongoManagerCollection.prototype.insertOne=function(c,l,s,d){var e=this;return void 0===s&&(s=!1),void 0===d&&(d=!1),new Promise(function(r,a){return __awaiter(e,void 0,void 0,function(){var n,o,t,i=this;return __generator(this,function(e){return c._id||(c._id=objectIdHexString()),!this.checkSchema||d||(n=this.simplschema.newContext(),n.validate(c))?(this.timestamps&&(o=new Date,c.createdAt=o,c.updatedAt=o),this.createLogs&&!s&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:c._id,payload:(0,common_1.getBinarySize)(JSON.stringify([c,l]))<2e5?JSON.stringify([c,l],null,2):"Too Big",method:"insertOne",id_user:"",user:"",messageId:0,route:""}),this.useVersions&&!c.hasOwnProperty("__v")&&(c.__v=0),t=new monitor_manager_1.MonitorMongo("insertOne",this.collectionName,JSON.stringify([c,l])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).insertOne(c,l).then(function(e){t.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(i.collectionName),r(c)):a(e.acknowledged)},function(e){t.finish(),console.log(new Date,"Error Insert One",i.collectionName,c,l,e),a(e)})):(console.log(new Date,this.collectionName,"Schema Errors - insertOne",n.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on insertOne - "+this.collectionName,[n.validationErrors(),c]),a(n.validationErrors())),[2]})})})},MongoManagerCollection.prototype.listIndexes=function(e){var n=new monitor_manager_1.MonitorMongo("listIndexes",this.collectionName,JSON.stringify([e])),e=index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).listIndexes(e);return e.on("close",function(e){return n.finish(),e}),e},MongoManagerCollection.prototype.rename=function(i,r){var a=this;return new Promise(function(n,o){var t=new monitor_manager_1.MonitorMongo("rename",a.collectionName,JSON.stringify([i,r]));index_1.ResolveIOServer.getMainDB().collection(a.collectionName,a.collectionOptions).rename(i,r).then(function(e){t.finish(),n(e)},function(e){t.finish(),console.log(new Date,"Error Rename",a.collectionName,i,r,e),o(e)})})},MongoManagerCollection.prototype.replaceOne=function(h,f,v,p,M,O){var e=this;return void 0===p&&(p=!1),void 0===M&&(M=!1),void 0===O&&(O=null),new Promise(function(_,m){return __awaiter(e,void 0,void 0,function(){var n,o,t,i,r,a,c,l,s,d,u,g=this;return __generator(this,function(e){switch(e.label){case 0:return!this.checkSchema||M||(o=this.simplschema.newContext(),o.validate(f))?(n=new Date,this.timestamps&&(f.updatedAt=n),this.useVersions?O?[3,2]:[4,this.findOne(h,null,!0)]:[3,8]):(console.log(new Date,this.collectionName,"Schema Errors - replaceOne",o.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on replaceOne - "+this.collectionName,[o.validationErrors(),f]),m(o.validationErrors()),[2]);case 1:O=e.sent(),e.label=2;case 2:return O?(this.timestamps&&!f.createdAt&&O.createdAt&&(f.createdAt=O.createdAt),O.__v!==f.__v?[3,3]:(f.__v+=1,(o=(0,common_1.deepCopy)(O))._id={_id:O._id,__v:O.__v},index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:O._id,__v:O.__v}},o,{upsert:!0}),4<=O.__v&&index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":O._id},{"_id.__v":{$lt:O.__v-4}}]}),this.createLogs&&!p&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:O._id,payload:(0,common_1.getBinarySize)(JSON.stringify([O,h,f,v]))<2e5?JSON.stringify([O,h,f,v],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:""}),t=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([h,f,v])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(h,f,v).then(function(e){t.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(g.collectionName),_(e.modifiedCount)):m(e.acknowledged)},function(e){t.finish(),console.log(new Date,"Error Replace One",g.collectionName,h,f,v,e),m(e)}),[3,5])):[3,6];case 3:return console.log("invalid version - "+this.collectionName,O.__v,f.__v),[4,index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).findOne({_id:{_id:O._id,__v:f.__v}},null,!0)];case 4:(i=e.sent())?(r=O._id,a=O.__v,(c=(0,common_1.getMongoMergeUpdatedDoc)(f,O,i))._id=r,c.__v=a+1,this.createLogs&&!p&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:r,payload:(0,common_1.getBinarySize)(JSON.stringify(["invalidVersion - merge",O,h,c,v]))<2e5?JSON.stringify(["invalidVersion - merge",O,h,c,v],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:""}),l=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([h,c,v])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(h,c,v).then(function(e){l.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(g.collectionName),_(e.modifiedCount)):m(e.acknowledged)},function(e){l.finish(),console.log(new Date,"Error Replace One",g.collectionName,h,c,v,e),m(e)})):m("Invalid Version And Could Not Find History - DB: "+O.__v+", Trying to update with :"+f.__v),e.label=5;case 5:return[3,7];case 6:v&&v.upsert?(this.timestamps&&(f.createdAt=n),f._id||(f._id=objectIdHexString()),f.__v=0,this.createLogs&&!p&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:f._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",h,f,v]))<2e5?JSON.stringify(["upsert",h,f,v],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:""}),s=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([h,f,v])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(h,f,v).then(function(e){s.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(g.collectionName),_(e.modifiedCount)):m(e.acknowledged)},function(e){s.finish(),console.log(new Date,"Error Replace One",g.collectionName,h,f,v,e),m(e)})):m("No Document"),e.label=7;case 7:return[3,9];case 8:v&&v.upsert&&(this.timestamps&&!f.createdAt&&(f.createdAt=n),f._id||(f._id=objectIdHexString()),f.__v=0),this.createLogs&&!p?(v?v.returnDocument="before":v={returnDocument:"before"},d=new monitor_manager_1.MonitorMongo("findOneAndReplace",this.collectionName,JSON.stringify([h,f,v])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndReplace(h,f,v).then(function(e){d.finish();e?log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:g.collectionName,id_document:e._id,payload:(0,common_1.getBinarySize)(JSON.stringify([e,h,f,v]))<2e5?JSON.stringify([e,h,f,v],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:""}):log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:g.collectionName,id_document:f._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",h,f,v]))<2e5?JSON.stringify(["upsert",h,f,v],null,2):"Too Big",method:"replaceOne",id_user:"",user:"",messageId:0,route:""}),index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(g.collectionName),_(1)},function(e){d.finish(),console.log(new Date,"Error Find One And Replace",g.collectionName,h,f,v,e),m(e)})):(u=new monitor_manager_1.MonitorMongo("replaceOne",this.collectionName,JSON.stringify([h,f,v])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).replaceOne(h,f,v).then(function(e){u.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(g.collectionName),_(e.modifiedCount)):m(e.acknowledged)},function(e){u.finish(),console.log(new Date,"Error Replace One",g.collectionName,h,f,v,e),m(e)})),e.label=9;case 9:return[2]}})})})},MongoManagerCollection.prototype.updateMany=function(d,u,g,_,m,h){var e=this;return void 0===_&&(_=!1),void 0===m&&(m=!1),void 0===h&&(h=!1),new Promise(function(l,s){return __awaiter(e,void 0,void 0,function(){var n,o,t,i,r,a,c=this;return __generator(this,function(e){switch(e.label){case 0:return u.$inc&&"{}"!==JSON.stringify(u.$inc)||u.$set&&"{}"!==JSON.stringify(u.$set)||u.$setOnInsert&&"{}"!==JSON.stringify(u.$setOnInsert)||u.$unset&&"{}"!==JSON.stringify(u.$unset)?(this.timestamps&&(n=new Date,u.$set?u.$set.updatedAt=n:u.$set={updatedAt:n}),!this.checkSchema||m||(n=this.simplschema.newContext(),n.validate(u,{modifier:!0}))?this.useVersions&&!h||this.createLogs&&!_?[4,this.find(d)]:[3,2]:(console.log(new Date,this.collectionName,"Schema Errors - updateMany",n.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on updateMany - "+this.collectionName,[n.validationErrors(),u]),s(n.validationErrors()),[2])):(l(1),[2]);case 1:for(o=e.sent(),t=0;t<o.length;t++)i=o[t],this.createLogs&&!_&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:i._id,payload:(0,common_1.getBinarySize)(JSON.stringify([i,d,u,g]))<2e5?JSON.stringify([i,d,u,g],null,2):"Too Big",method:"updateMany",id_user:"",user:"",messageId:0,route:""}),this.useVersions&&((r=(0,common_1.deepCopy)(i))._id={_id:i._id,__v:i.__v},index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:i._id,__v:i.__v}},r,{upsert:!0}),4<=i.__v&&index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":i._id},{"_id.__v":{$lt:i.__v-4}}]}),objectContainsPropertyDeep(u,"__v")||(u.$inc?u.$inc.__v||(u.$inc.__v=1):u.$inc={__v:1}));e.label=2;case 2:return a=new monitor_manager_1.MonitorMongo("updateMany",this.collectionName,JSON.stringify([d,u,g])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateMany(d,u,g).then(function(e){a.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c.collectionName),l(e.modifiedCount)):s(e.acknowledged)},function(e){a.finish(),console.log(new Date,"Error Update Many",c.collectionName,d,u,g,e),s(e)}),[2]}})})})},MongoManagerCollection.prototype.updateOne=function(d,u,g,_,m){var e=this;return void 0===_&&(_=!1),void 0===m&&(m=!1),new Promise(function(l,s){return __awaiter(e,void 0,void 0,function(){var n,o,t,i,r,a,c=this;return __generator(this,function(e){switch(e.label){case 0:return!this.checkSchema||m||(o=this.simplschema.newContext(),o.validate(u,{modifier:!0}))?u.$inc&&"{}"!==JSON.stringify(u.$inc)||u.$set&&"{}"!==JSON.stringify(u.$set)||u.$setOnInsert&&"{}"!==JSON.stringify(u.$setOnInsert)||u.$unset&&"{}"!==JSON.stringify(u.$unset)?(n=new Date,this.timestamps&&(u.$set?u.$set.updatedAt=n:u.$set={updatedAt:n}),this.useVersions?[4,this.findOne(d,null,!0)]:[3,2]):(l(1),[2]):(console.log(new Date,this.collectionName,"Schema Errors - updateOne",o.validationErrors()),index_1.ResolveIOServer.getMainServer().getMethodManager().callMethodInternal.call(index_1.ResolveIOServer.getMainServer().getMethodManager(),"insertErrorLog","Schema Failed on updateOne - "+this.collectionName,[o.validationErrors(),u]),s(o.validationErrors()),[2]);case 1:return(n=e.sent())?(this.createLogs&&!_&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:n._id,payload:(0,common_1.getBinarySize)(JSON.stringify([n,d,u,g]))<2e5?JSON.stringify([n,d,u,g],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:""}),(o=(0,common_1.deepCopy)(n))._id={_id:n._id,__v:n.__v},index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id:{_id:n._id,__v:n.__v}},o,{upsert:!0}),4<=n.__v&&index_1.ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({$and:[{"_id._id":n._id},{"_id.__v":{$lt:n.__v-4}}]}),objectContainsPropertyDeep(u,"__v")||(u.$inc?u.$inc.__v||(u.$inc.__v=1):u.$inc={__v:1}),t=new monitor_manager_1.MonitorMongo("updateOne",this.collectionName,JSON.stringify([d,u,g])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(d,u,g).then(function(e){t.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c.collectionName),l(e.modifiedCount)):s(e.acknowledged)},function(e){t.finish(),console.log(new Date,"Error Update One",c.collectionName,d,u,g,e),s(e)})):g&&g.upsert?(u.$setOnInsert?(u.$setOnInsert._id||(u.$setOnInsert._id=objectIdHexString()),this.timestamps&&(u.$setOnInsert.createdAt=new Date)):this.timestamps?u.$setOnInsert={_id:objectIdHexString(),__v:0,createdAt:new Date}:u.$setOnInsert={_id:objectIdHexString(),__v:0},this.createLogs&&!_&&log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:this.collectionName,id_document:u.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",d,u,g]))<2e5?JSON.stringify(["upsert",d,u,g],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:""}),i=new monitor_manager_1.MonitorMongo("updateOne",this.collectionName,JSON.stringify([d,u,g])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(d,u,g).then(function(e){i.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c.collectionName),l(e.modifiedCount)):s(e.acknowledged)},function(e){i.finish(),console.log(new Date,"Error Update One",c.collectionName,d,u,g,e),s(e)})):s("No Document"),[3,3];case 2:g&&g.upsert&&(u.$setOnInsert?(u.$setOnInsert._id||(u.$setOnInsert._id=objectIdHexString()),this.timestamps&&(u.$setOnInsert.createdAt=new Date)):this.timestamps?u.$setOnInsert={_id:objectIdHexString(),createdAt:new Date}:u.$setOnInsert={_id:objectIdHexString()}),this.createLogs&&!_?(g?g.returnDocument="before":g={returnDocument:"before"},r=new monitor_manager_1.MonitorMongo("findOneAndUpdate",this.collectionName,JSON.stringify([d,u,g])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).findOneAndUpdate(d,u,g).then(function(e){r.finish();var n=e.value;n?(log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:c.collectionName,id_document:n._id,payload:(0,common_1.getBinarySize)(JSON.stringify([n,d,u,g]))<2e5?JSON.stringify([n,d,u,g],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:""}),l(e.ok)):u.$setOnInsert?(log_collection_1.Logs.insertOne({_id:objectIdHexString(),type:"document",collection:c.collectionName,id_document:u.$setOnInsert._id,payload:(0,common_1.getBinarySize)(JSON.stringify(["upsert",d,u,g]))<2e5?JSON.stringify(["upsert",d,u,g],null,2):"Too Big",method:"updateOne",id_user:"",user:"",messageId:0,route:""}),index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c.collectionName),l(e.ok)):l(0)},function(e){r.finish(),console.log(new Date,"Error Find One And Update",c.collectionName,d,u,g,e),s(e)})):(a=new monitor_manager_1.MonitorMongo("updateOne",this.collectionName,JSON.stringify([d,u,g])),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).updateOne(d,u,g).then(function(e){a.finish(),e.acknowledged?(index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(c.collectionName),l(e.modifiedCount)):s(e.acknowledged)},function(e){a.finish(),console.log(new Date,"Error Update One",c.collectionName,d,u,g,e),s(e)})),e.label=3;case 3:return[2]}})})})},MongoManagerCollection.prototype.watchCollection=function(e,n){return void 0===e&&(e=[]),index_1.ResolveIOServer.getMainDB().collection(this.collectionName,this.collectionOptions).watch(e,n)},(e=MongoManagerCollection).indexQueue=async_1.default.queue(function(n,u){return __awaiter(void 0,void 0,void 0,function(){var i,r,a,c,l,s,d;return __generator(e,function(e){switch(e.label){case 0:return(i=n.action,r=n.collection,a=n.specs,c=n.options,l=index_1.ResolveIOServer.getMainDB().collection(r.collectionName,r.collectionOptions))?(s=new monitor_manager_1.MonitorMongo(i,r.collectionName,JSON.stringify([a,c])),[4,(d=function(){return __awaiter(void 0,void 0,void 0,function(){var n,o,t;return __generator(this,function(e){switch(e.label){case 0:return e.trys.push([0,2,,9]),[4,l[i].apply(l,__spreadArray(__spreadArray([],a,!1),[c],!1))];case 1:return o=e.sent(),s.finish(),u(null,o),[3,9];case 2:if(85!==(n=e.sent()).code&&!n.message.includes("IndexOptionsConflict"))return[3,8];e.label=3;case 3:return(e.trys.push([3,7,,8]),o=r.extractIndexNameFromError(n.message))?[4,l.dropIndex(o)]:[3,6];case 4:return e.sent(),[4,d()];case 5:return[2,e.sent()];case 6:return[3,8];case 7:return t=e.sent(),u(t),[3,8];case 8:return s.finish(),u(n),[3,9];case 9:return[2]}})})})()]):[2,u(new Error("Collection ".concat(r.collectionName," not found")))];case 1:return e.sent(),[2]}})})},1),MongoManagerCollection}()),MongoManagerUserCollection=function(e){function MongoManagerUserCollection(){return null!==e&&e.apply(this,arguments)||this}return __extends(MongoManagerUserCollection,e),MongoManagerUserCollection.prototype.authenticate=function(a,o){var e=this;return new Promise(function(i,r){return __awaiter(e,void 0,void 0,function(){var n,t=this;return __generator(this,function(e){switch(e.label){case 0:return(n=Math.pow(100,Math.log(a.attempts+1)),n=n<3e5?n:3e5,a.last)?Date.now()-a.last.getTime()<n?(a.last=new Date,[4,user_collection_1.Users.updateOne({_id:a._id},{$set:{last:a.last}})]):[3,2]:[3,3];case 1:return e.sent(),i({data:null,error:"Attempt Too Soon"}),[2];case 2:return[3,4];case 3:a.last=new Date,e.label=4;case 4:return 5<=a.attempts?i({data:null,error:"Too Many Attempts"}):a.salt?pbkdf2(o,a.salt,{iterations:25e3,keylen:512,digestAlgorithm:"sha256"},function(n,o){return __awaiter(t,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return n?[2,r(n)]:scmp(o,Buffer.from(a.hash,"hex"))?(a.last=new Date,a.attempts=0,[4,user_collection_1.Users.updateOne({_id:a._id},{$set:{last:a.last,attempts:a.attempts}})]):[3,2];case 1:return e.sent(),i({data:a,error:""}),[3,4];case 2:return a.last=new Date,a.attempts=a.attempts+1,[4,user_collection_1.Users.updateOne({_id:a._id},{$set:{last:a.last,attempts:a.attempts}})];case 3:e.sent(),5<=a.attempts?i({data:null,error:"Too Many Attempts"}):i({data:null,error:"Invalid Username And Password"}),e.label=4;case 4:return[2]}})})}):i({data:null,error:"No Salt Value Stored"}),[2]}})})})},MongoManagerUserCollection.prototype.serializeUser=function(){return function(e,n){n(null,e.username)}},MongoManagerUserCollection.prototype.deserializeUser=function(){return function(e,n){user_collection_1.Users.findOne({username:e}).then(function(e){n(null,e)},function(e){n(e,null)})}},MongoManagerUserCollection.prototype.setPassword=function(r,a){var e=this;return new Promise(function(t,i){return __awaiter(e,void 0,void 0,function(){var n,o;return __generator(this,function(e){switch(e.label){case 0:return r?[3,1]:(i("No User"),[3,5]);case 1:return a?[3,2]:(i("No Password"),[3,5]);case 2:return[4,randomBytes(32)];case 3:return n=e.sent(),n=n.toString("hex"),[4,pbkdf2Promisified(a,n,{iterations:25e3,keylen:512,digestAlgorithm:"sha256"})];case 4:o=e.sent(),o=Buffer.from(o,"binary").toString("hex"),user_collection_1.Users.updateOne({_id:r._id},{$set:{hash:o,salt:n,services:{},attempts:0}}).then(function(e){return t(e)},function(e){return i(e)}),e.label=5;case 5:return[2]}})})})},MongoManagerUserCollection.prototype.changePassword=function(i,r,a){var e=this;return new Promise(function(o,t){return __awaiter(e,void 0,void 0,function(){var n;return __generator(this,function(e){switch(e.label){case 0:return i?[3,1]:(t("Missing User"),[3,4]);case 1:return r&&a?[3,2]:(t("Missing Password"),[3,4]);case 2:return[4,this.authenticate(i,r)];case 3:(n=e.sent()).data?this.setPassword(i,a).then(function(e){return o(e)},function(e){return t(e)}):t(n.error),e.label=4;case 4:return[2]}})})})},MongoManagerUserCollection.prototype.register=function(t,i){var e=this;return new Promise(function(n,o){return __awaiter(e,void 0,void 0,function(){return __generator(this,function(e){switch(e.label){case 0:return t.username?[3,1]:(o("Missing Username"),[3,5]);case 1:return[4,user_collection_1.Users.findOne({username:t.username})];case 2:return e.sent()?(o("Username Exists"),[3,5]):[3,3];case 3:return[4,user_collection_1.Users.findOne({email:t.email})];case 4:e.sent()?o("Email Exists"):(t.setPassword(i),n(t)),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 objectIdHexString(){return(new mongodb_1.ObjectId).toHexString()}function pbkdf2(e,n,o,t){crypto.pbkdf2(e,n,o.iterations,o.keylen,o.digestAlgorithm,t)}function pbkdf2Promisified(e,n,i){return new Promise(function(o,t){return pbkdf2(e,n,i,function(e,n){return e?t(e):o(n)})})}function randomBytes(e){return new Promise(function(o,t){return crypto.randomBytes(e,function(e,n){return e?t(e):o(n)})})}function objectContainsPropertyDeep(e,n){var o=Object.keys(e);if(o.some(function(e){return e===n}))return!0;for(var t=0;t<o.length;t++){var i=o[t];if(e[i]&&"object"==typeof e[i]&&objectContainsPropertyDeep(e[i],n))return!0}return!1}exports.MongoManagerUserCollection=MongoManagerUserCollection,exports.objectIdHexString=objectIdHexString;
|
|
2
2
|
//# sourceMappingURL=mongo.manager.js.map
|