@resolveio/server-lib 9.1.29 → 9.1.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/collections/file.collection.js +1 -0
- package/collections/file.collection.js.map +1 -1
- package/managers/mongo.manager.js +3 -0
- package/managers/mongo.manager.js.map +1 -1
- package/methods/accounts.js +2 -2
- package/methods/accounts.js.map +1 -1
- package/methods/aws.js +1 -1
- package/methods/aws.js.map +1 -1
- package/package.json +1 -1
|
@@ -51,6 +51,7 @@ function initializeCollection() {
|
|
|
51
51
|
var model = new mongo_manager_1.Model('files', schema, false, true, [], true, false);
|
|
52
52
|
exports.Files = model.collection_main;
|
|
53
53
|
exports.Files.createIndex({ type: 1, createdAt: 1 });
|
|
54
|
+
exports.Files.createIndex({ key: 1 });
|
|
54
55
|
}
|
|
55
56
|
else {
|
|
56
57
|
setTimeout(function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/collections/file.collection.ts"],"names":[],"mappings":";;;AAAA,kCAA2C;AAC3C,2DAA8D;AAG9D,IAAI,MAAM,GAAQ;IACjB,GAAG,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACd;IACD,GAAG,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACd;IACD,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACd;IACD,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACd;IACD,IAAI,EAAE;QACL,IAAI,EAAE,MAAM;KACZ;IACD,IAAI,EAAE;QACL,IAAI,EAAE,MAAM;KACZ;IACD,GAAG,EAAE;QACJ,IAAI,EAAE,MAAM;KACZ;IACD,IAAI,EAAE;QACL,IAAI,EAAE,MAAM;KACZ;IACD,KAAK,EAAE;QACN,IAAI,EAAE,MAAM;KACZ;IACD,MAAM,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACd;IACD,OAAO,EAAE;QACR,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI;KACd;CACD,CAAC;AAES,QAAA,KAAK,GAA0B,IAAI,CAAC;AAE/C,oBAAoB,EAAE,CAAC;AAEvB,SAAS,oBAAoB;IAC5B,IAAI,uBAAe,IAAI,uBAAe,CAAC,SAAS,EAAE,EAAE;QACnD,IAAM,KAAK,GAAG,IAAI,qBAAK,CAAY,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAClF,aAAK,GAAG,KAAK,CAAC,eAAe,CAAC;QAC9B,aAAK,CAAC,WAAW,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"sources":["../../src/collections/file.collection.ts"],"names":[],"mappings":";;;AAAA,kCAA2C;AAC3C,2DAA8D;AAG9D,IAAI,MAAM,GAAQ;IACjB,GAAG,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACd;IACD,GAAG,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACd;IACD,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACd;IACD,SAAS,EAAE;QACV,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,IAAI;KACd;IACD,IAAI,EAAE;QACL,IAAI,EAAE,MAAM;KACZ;IACD,IAAI,EAAE;QACL,IAAI,EAAE,MAAM;KACZ;IACD,GAAG,EAAE;QACJ,IAAI,EAAE,MAAM;KACZ;IACD,IAAI,EAAE;QACL,IAAI,EAAE,MAAM;KACZ;IACD,KAAK,EAAE;QACN,IAAI,EAAE,MAAM;KACZ;IACD,MAAM,EAAE;QACP,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACd;IACD,OAAO,EAAE;QACR,IAAI,EAAE,OAAO;QACb,QAAQ,EAAE,IAAI;KACd;CACD,CAAC;AAES,QAAA,KAAK,GAA0B,IAAI,CAAC;AAE/C,oBAAoB,EAAE,CAAC;AAEvB,SAAS,oBAAoB;IAC5B,IAAI,uBAAe,IAAI,uBAAe,CAAC,SAAS,EAAE,EAAE;QACnD,IAAM,KAAK,GAAG,IAAI,qBAAK,CAAY,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAClF,aAAK,GAAG,KAAK,CAAC,eAAe,CAAC;QAC9B,aAAK,CAAC,WAAW,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAC,CAAC,CAAC;QAC3C,aAAK,CAAC,WAAW,CAAC,EAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAC;KAC5B;SACI;QACJ,UAAU,CAAC;YACV,oBAAoB,EAAE,CAAC;QACxB,CAAC,EAAE,CAAC,CAAC,CAAC;KACN;AACF,CAAC","file":"file.collection.js","sourcesContent":["import { ResolveIOServer } from '../index';\nimport { Collection, Model } from '../managers/mongo.manager';\nimport { FileModel } from '../models/file.model';\n\nlet schema: any = {\n\t_id: {\n\t\ttype: String,\n\t\toptional: true\n\t},\n\t__v: {\n\t\ttype: Number,\n\t\toptional: true\n\t},\n\tupdatedAt: {\n\t\ttype: Date,\n\t\toptional: true\n\t},\n\tcreatedAt: {\n\t\ttype: Date,\n\t\toptional: true\n\t},\n\tname: {\n\t\ttype: String\n\t},\n\tsize: {\n\t\ttype: Number\n\t},\n\tkey: {\n\t\ttype: String\n\t},\n\ttype: {\n\t\ttype: String\n\t},\n\torder: {\n\t\ttype: Number\n\t},\n\tstatus: {\n\t\ttype: String,\n\t\toptional: true\n\t},\n\tdefault: {\n\t\ttype: Boolean,\n\t\toptional: true\n\t}\n};\n\nexport let Files: Collection<FileModel> = null;\n\ninitializeCollection();\n\nfunction initializeCollection() {\n\tif (ResolveIOServer && ResolveIOServer.getMainDB()) {\n\t\tconst model = new Model<FileModel>('files', schema, false, true, [], true, false);\n\t\tFiles = model.collection_main;\n\t\tFiles.createIndex({type: 1, createdAt: 1});\n\t\tFiles.createIndex({key: 1});\n\t}\n\telse {\n\t\tsetTimeout(() => {\n\t\t\tinitializeCollection();\n\t\t}, 1);\n\t}\n}"]}
|
|
@@ -997,6 +997,9 @@ var Collection = /** @class */ (function () {
|
|
|
997
997
|
_a.label = 2;
|
|
998
998
|
case 2:
|
|
999
999
|
if (!doc) return [3 /*break*/, 11];
|
|
1000
|
+
if (this.timestamps && !replacement['createdAt'] && doc['createdAt']) {
|
|
1001
|
+
replacement['createdAt'] = doc['createdAt'];
|
|
1002
|
+
}
|
|
1000
1003
|
if (this.createLogs && !bypassLogs) {
|
|
1001
1004
|
log_collection_1.Logs.insertOne({
|
|
1002
1005
|
_id: objectIdHexString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/mongo.manager.ts"],"names":[],"mappings":"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","file":"mongo.manager.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { ChangeStreamOptions, ClientSession, CollectionAggregationOptions, CollectionInsertManyOptions, CollectionInsertOneOptions, CommonOptions, FilterQuery, FindOneAndDeleteOption, FindOneAndReplaceOption, FindOneAndUpdateOption, FindOneOptions, IndexOptions, IndexSpecification, MongoCountPreferences, MongoDistinctPreferences, ReadPreferenceOrMode, ReplaceOneOptions, UpdateManyOptions, UpdateOneOptions, UpdateQuery, ObjectId } from 'mongodb';\nimport { LookupTables } from '../models/report-builder.model';\nimport { ResolveIOServer } from '../index';\nimport { Users } from '../collections/user.collection';\nimport { buildRbLookups, buildRbSchema, deepCopy, getBinarySize, getMongoMergeUpdatedDoc } from '../util/common';\nimport { UserModel } from '../models/user.model';\nimport { Logs } from '../collections/log.collection';\nconst crypto = require('crypto');\nconst scmp = require('scmp');\n\ninterface MongoQueueModel {\n\t_id: number,\n\tname_collection: string;\n\tname_function: string;\n\tdata_function: any[];\n\tname_function_addt: string;\n\tdata_function_addt: any[];\n\tcbs: Function[];\n\tcbs_next: Function[];\n\trunning: boolean;\n}\n\nexport class MongoManager {\n\tprivate _collections: Collection<any>[] = [];\n\tprivate _mongoQueue: MongoQueueModel[] = [];\n\tprivate _mongoQueueId = 0;\n\n\tconstructor() {\n\t\tthis.runQueue();\n\t}\n\n\tregisterCollection(collection: Collection<any>) {\n\t\tthis._collections.push(collection);\n\t}\n\n\tcollections() {\n\t\treturn this._collections;\n\t}\n\n\tcollection(collectionName: string): Collection<any> | UserCollection<any> {\n\t\treturn this._collections.filter(a => a.collectionName === collectionName)[0];\n\t}\n\n\taddToQueue(mongoQueue: MongoQueueModel) {\n\t\tlet _mongoQueue = this._mongoQueue.filter(a => a.name_collection === mongoQueue.name_collection && a.name_function === mongoQueue.name_function && a.name_function_addt === mongoQueue.name_function_addt && JSON.stringify(a.data_function) === JSON.stringify(mongoQueue.data_function) && JSON.stringify(a.data_function_addt) === JSON.stringify(mongoQueue.data_function_addt))[0];\n\t\t\n\t\tif (_mongoQueue) {\n\t\t\tif (!_mongoQueue.running) {\n\t\t\t\t_mongoQueue.cbs.push(mongoQueue.cbs[0]);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_mongoQueue.cbs_next.push(mongoQueue.cbs[0]);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tmongoQueue._id = this._mongoQueueId;\n\t\t\tthis._mongoQueueId += 1;\n\n\t\t\tthis._mongoQueue.push(mongoQueue);\n\t\t}\n\t}\n\n\tprivate async runQueue() {\n\t\tsetInterval(() => {\n\t\t\tif (this._mongoQueue.filter(a => !a.running).length) {\n\t\t\t\tlet mongoQueue = this._mongoQueue.filter(a => !a.running)[0];\n\t\t\t\tmongoQueue.running = true;\n\t\n\t\t\t\tif (!mongoQueue.name_function_addt) {\n\t\t\t\t\tResolveIOServer.getMainDB().collection(mongoQueue.name_collection)[mongoQueue.name_function](...mongoQueue.data_function).then(res => {\n\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\tcb(null, res);\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tif (mongoQueue.cbs_next.length) {\n\t\t\t\t\t\t\tmongoQueue.running = false;\n\t\t\t\t\t\t\tmongoQueue.cbs = mongoQueue.cbs_next;\n\t\t\t\t\t\t\tmongoQueue.cbs_next = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id), 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\tcb(err, null);\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tmongoQueue.cbs_next.forEach(cb => {\n\t\t\t\t\t\t\tcb(err, null);\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id), 1);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tResolveIOServer.getMainDB().collection(mongoQueue.name_collection)[mongoQueue.name_function](...mongoQueue.data_function)[mongoQueue.name_function_addt](...mongoQueue.data_function_addt).then(res => {\n\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\tcb(null, res);\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tif (mongoQueue.cbs_next.length) {\n\t\t\t\t\t\t\tmongoQueue.running = false;\n\t\t\t\t\t\t\tmongoQueue.cbs = mongoQueue.cbs_next;\n\t\t\t\t\t\t\tmongoQueue.cbs_next = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id), 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\tcb(err, null);\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tmongoQueue.cbs_next.forEach(cb => {\n\t\t\t\t\t\t\tcb(err, null);\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tthis._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id), 1);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}, 10);\n\t}\n}\n\nexport class Model<T> {\n\tcollection_main: Collection<T> | UserCollection<T> = null;\n\tcollection_version: Collection<T> | UserCollection<T> = null;\n\n\tconstructor(collectionName: string, schema: object, useVersionCollection = false, useReportBuilder = true, reportBuilderLookupTables: LookupTables[] = [], timestamps = true, createLogs = true, checkSchema = true) {\n\t\tif (collectionName === 'users') {\n\t\t\tthis.collection_main = new UserCollection<T>(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps, createLogs, checkSchema);\n\t\t}\n\t\telse {\n\t\t\tthis.collection_main = new Collection<T>(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps, createLogs, checkSchema);\n\t\t}\n\n\t\tif (useVersionCollection) {\n\t\t\tthis.collection_main.useVersions = true;\n\t\t\t\n\t\t\tlet versionSchema = deepCopy(schema);\n\t\t\tversionSchema['_id'].type = 'Object';\n\t\t\tversionSchema['_id'].blackbox = true;\n\n\t\t\tif (collectionName === 'users') {\n\t\t\t\tthis.collection_version = new UserCollection<T>(collectionName + '.versions', versionSchema, false, [], true, false, false);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.collection_version = new Collection<T>(collectionName + '.versions', versionSchema, false, [], true, false, false);\n\t\t\t}\n\n\t\t\t// if (this.collection_version.indexExists('_id.__v_1__id._id_1')) {\n\t\t\t// \tthis.collection_version.dropIndex('_id.__v_1__id._id_1');\n\t\t\t// }\n\n\t\t\tthis.collection_version.createIndex({'_id._id': 1, '_id.__v': 1});\n\t\t\tthis.collection_main.versionCollection = collectionName + '.versions';\n\t\t}\n\t}\n}\n\nexport class Collection<T> {\n\tcollectionName = '';\n\tcheckSchema = false;\n\tsimplschema = null;\n\trbSchema = null;\n\ttimestamps = false;\n\tuseVersions = false;\n\tversionCollection = '';\n\tcreateLogs = true;\n\tuseRB = false;\n\t\n\tconstructor(collectionName: string, schema: object, useReportBuilder, reportBuilderLookupTables: LookupTables[], timestamps, createLogs, checkSchema) {\n\t\tthis.collectionName = collectionName;\n\t\tthis.simplschema = new SimpleSchema(schema);\n\t\tthis.timestamps = timestamps;\n\t\tthis.createLogs = createLogs;\n\t\tthis.checkSchema = checkSchema;\n\n\t\tif (useReportBuilder) {\n\t\t\tthis.useRB = true;\n\t\t\tlet schemaCopy = deepCopy(schema);\n\t\t\tlet rbSchema = buildRbLookups(reportBuilderLookupTables, schemaCopy, []);\n\t\t\tthis.rbSchema = buildRbSchema(rbSchema);\n\t\t}\n\n\t\tlet interval = setInterval(() => {\n\t\t\tif (ResolveIOServer && ResolveIOServer.getMainServer() && ResolveIOServer.getMongoManager()) {\n\t\t\t\tResolveIOServer.getMongoManager().registerCollection(this);\n\t\t\t\tclearInterval(interval);\n\t\t\t}\n\t\t}, 1);\n\t}\n\n\taggregate(pipeline: object[], options?: CollectionAggregationOptions, allowLogs = false) : Promise<any[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (this.createLogs && allowLogs) {\n\t\t\t\tLogs.insertOne({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'query',\n\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\tid_document: '',\n\t\t\t\t\tpayload: getBinarySize(JSON.stringify([pipeline, options])) < 200000 ? JSON.stringify([pipeline, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'aggregate',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t\t_id: 0,\n\t\t\t\tname_collection: this.collectionName,\n\t\t\t\tname_function: 'aggregate',\n\t\t\t\tname_function_addt: 'toArray',\n\t\t\t\tdata_function: [pipeline, options],\n\t\t\t\tdata_function_addt: [],\n\t\t\t\tcbs: [(err, res) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.createLogs && allowLogs) {\n\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([err, res])) < 200000 ? JSON.stringify([err, res], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'aggregate',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tcbs_next: [],\n\t\t\t\trunning: false\n\t\t\t});\n\t\t});\n\t}\n\n\taggregateCount(pipeline: object[], options?: CollectionAggregationOptions) : Promise<number> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t\t_id: 0,\n\t\t\t\tname_collection: this.collectionName,\n\t\t\t\tname_function: 'aggregate',\n\t\t\t\tname_function_addt: 'count',\n\t\t\t\tdata_function: [pipeline, options],\n\t\t\t\tdata_function_addt: [],\n\t\t\t\tcbs: [(err, res) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tcbs_next: [],\n\t\t\t\trunning: false\n\t\t\t});\n\t\t});\n\t}\n\n\taggregateCursor(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options);\n\t}\n\n\taggregateStream(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).stream();\n\t}\n\n\tcountDocuments(filter: FilterQuery<T> = {}, options?: MongoCountPreferences) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).countDocuments(filter, options);\n\t}\n\n\tcreate(f_docs: T | T[], options?: CollectionInsertManyOptions): Promise<T | T[]> {\n\t\tlet docs = [];\n\n\t\tif (!Array.isArray(f_docs)) {\n\t\t\treturn this.insertOne(f_docs, options);\n\t\t}\n\n\t\treturn this.insertMany(f_docs, options);\n\t}\n\n\tcreateIndex(fieldOrSpec: any, options?: IndexOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).createIndex(fieldOrSpec, options);\n\t}\n\n\tcreateIndexes(indexSpecs: IndexSpecification[], options?: { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).createIndexes(indexSpecs, options);\n\t}\n\n\tdeleteMany(filter: FilterQuery<T> = {}, options?: CommonOptions, bypassLogs = false) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet docs = await this.find(filter);\n\n\t\t\t\tfor (let i = 0; i < docs.length; i++) {\n\t\t\t\t\tlet doc = docs[i];\n\t\t\t\t\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'deleteMany',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\n\t\t\t\t\tif (this.useVersions) {\n\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\tversionDoc['_id'] = {_id: doc['_id'], __v: doc['__v']};\n\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id: { _id: doc['_id'], __v: doc['__v']}}, versionDoc, {upsert: true});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).deleteMany(filter, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(res.deletedCount);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => reject(err));\n\t\t});\n\t}\n\n\tdeleteOne(filter: FilterQuery<T> = {}, options?: CommonOptions & { bypassDocumentValidation?: boolean; }, bypassLogs = false) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet doc = await this.findOne(filter, null, true);\n\t\n\t\t\t\tif (doc) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'deleteOne',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\n\t\t\t\t\tif (this.useVersions) {\n\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\tversionDoc['_id'] = {_id: doc['_id'], __v: doc['__v']};\n\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id: { _id: doc['_id'], __v: doc['__v']}}, versionDoc, {upsert: true});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).deleteOne(filter, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(res.deletedCount);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => reject(err));\n\t\t});\n\t}\n\n\tdistinct(key: string, filter?: FilterQuery<T>, options?: MongoDistinctPreferences): Promise<T[]> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).distinct(key, filter, options);\n\t}\n\n\tdrop(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).drop(options);\n\t}\n\n\tdropIndex(indexName: string, options?: CommonOptions & { maxTimeMS?: number; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).dropIndex(indexName, options);\n\t}\n\n\tdropIndexes(options?: { session?: ClientSession; maxTimeMS?: number; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).dropIndexes(options);\n\t}\n\n\tfind(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>, bypassLogs = false): Promise<T[]> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tLogs.insertOne({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'query',\n\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\tid_document: '',\n\t\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, options])) < 200000 ? JSON.stringify([filter, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'find',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t\t_id: 0,\n\t\t\t\tname_collection: this.collectionName,\n\t\t\t\tname_function: 'find',\n\t\t\t\tname_function_addt: 'toArray',\n\t\t\t\tdata_function: [filter, options],\n\t\t\t\tdata_function_addt: [],\n\t\t\t\tcbs: [(err, res) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([err, res])) < 200000 ? JSON.stringify([err, res], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'find',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tcbs_next: [],\n\t\t\t\trunning: false\n\t\t\t});\n\t\t});\n\t}\n\n\tfindById(id: string, options?: FindOneOptions<T>): Promise<T> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).findOne({_id: id}, <T>options);\n\t}\n\n\tfindCount(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>, bypassLogs = false) {\n\t\tif (this.createLogs && !bypassLogs) {\n\t\t\tLogs.insertOne({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\ttype: 'query',\n\t\t\t\tcollection: this.collectionName,\n\t\t\t\tid_document: '',\n\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, options])) < 200000 ? JSON.stringify([filter, options], null, 2) : 'Too Big',\n\t\t\t\tmethod: 'findCount',\n\t\t\t\tid_user: '',\n\t\t\t\tuser: '',\n\t\t\t\tmessageId: 0,\n\t\t\t\troute: ''\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options).count();\n\t}\n\n\tfindCursor(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options);\n\t}\n\n\tfindStream(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>, streamOptions?: any) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options).stream(streamOptions);\n\t}\n\n\tfindOne(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>, bypassLogs = false): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tLogs.insertOne({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'query',\n\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\tid_document: '',\n\t\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, options])) < 200000 ? JSON.stringify([filter, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'findOne',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t\t_id: 0,\n\t\t\t\tname_collection: this.collectionName,\n\t\t\t\tname_function: 'findOne',\n\t\t\t\tname_function_addt: '',\n\t\t\t\tdata_function: [filter, options],\n\t\t\t\tdata_function_addt: [],\n\t\t\t\tcbs: [(err, res) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([err, res])) < 200000 ? JSON.stringify([err, res], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'findOne',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tcbs_next: [],\n\t\t\t\trunning: false\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndDelete(filter: FilterQuery<T> = {}, options?: FindOneAndDeleteOption<T>, bypassLogs = false): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet doc = await this.findOne(filter, null, true);\n\t\n\t\t\t\tif (doc) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndDelete',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndDelete(filter, options).then(res => {\n\t\t\t\tif (res.ok) {\n\t\t\t\t\tresolve(res.value);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.lastErrorObject);\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([res.value])) < 200000 ? JSON.stringify([res.value], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndDelete',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([err])) < 200000 ? JSON.stringify([err], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndDelete',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndReplace(filter: FilterQuery<T> = {}, replacement: T, options?: FindOneAndReplaceOption<T>, bypassLogs = false, bypassCheckSchema = false): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tconst validation = this.simplschema.newContext();\n\t\t\t\tconst isValid = validation.validate(replacement);\n\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - findOneAndReplace', validation.validationErrors());\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on findOneAndReplace - ' + this.collectionName, [validation.validationErrors(), replacement]);\n\t\t\t\t\t\n\t\t\t\t\treject(validation.validationErrors());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tlet date = new Date();\n\t\t\tif (this.timestamps) {\n\t\t\t\treplacement['updatedAt'] = date;\n\t\t\t}\n\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet doc = await this.findOne(filter, null, true);\n\n\t\t\t\tif (doc) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndReplace',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndReplace(filter, <any>replacement, options).then(res => {\n\t\t\t\tif (res.ok) {\n\t\t\t\t\tresolve(res.value);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.lastErrorObject);\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([res.value])) < 200000 ? JSON.stringify([res.value], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndReplace',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t\t\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([err])) < 200000 ? JSON.stringify([err], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndReplace',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndUpdate(filter: FilterQuery<T> = {}, update: any, options?: FindOneAndUpdateOption<T>, bypassLogs = false, bypassCheckSchema = false): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tconst validation = this.simplschema.newContext();\n\t\t\t\tconst isValid = validation.validate(update, {modifier: true});\n\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - findOneAndUpdate', validation.validationErrors());\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on findOneAndUpdate - ' + this.collectionName, [validation.validationErrors(), update]);\n\t\t\t\t\treject(validation.validationErrors());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.timestamps) {\n\t\t\t\tlet date = new Date();\n\n\t\t\t\tif (!update['$set']) {\n\t\t\t\t\tupdate['$set'] = {updatedAt: date};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tupdate['$set']['updatedAt'] = date;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet doc = await this.findOne(filter, null, true);\n\n\t\t\t\tif (doc) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndUpdate',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndUpdate(filter, update, options).then(res => {\n\t\t\t\tif (res.ok) {\n\t\t\t\t\tresolve(res.value);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.lastErrorObject);\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([res.value])) < 200000 ? JSON.stringify([res.value], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndUpdate',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t\t\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([err])) < 200000 ? JSON.stringify([err], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndUpdate',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tindexes(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).indexes(options);\n\t}\n\n\tindexExists(indexes: string | string[], options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).indexExists(indexes, options);\n\t}\n\n\tinsertMany(docs: T[], options?: CollectionInsertManyOptions, bypassLogs = false, bypassCheckSchema = false): Promise<T[]> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!docs.length) {\n\t\t\t\treject('No Documents');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tlet validationResults = [];\n\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tdocs.forEach(doc => {\n\t\t\t\t\tconst validation = this.simplschema.newContext();\n\t\t\t\t\tconst isValid = validation.validate(doc);\n\n\t\t\t\t\tif (!isValid) {\n\t\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - insertMany', validation.validationErrors());\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on insertMany - ' + this.collectionName, [validation.validationErrors(), doc]);\n\t\t\t\t\t\tvalidationResults.push(false);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalidationResults.push(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet validDocs = this.checkSchema ? docs.filter((a, idx) => validationResults[idx]) : docs;\n\n\t\t\tfor (let i = 0; i < validDocs.length; i++) {\n\t\t\t\tlet doc = validDocs[i];\n\n\t\t\t\tif (!doc['_id']) {\n\t\t\t\t\tdoc['_id'] = objectIdHexString();\n\t\t\t\t}\n\n\t\t\t\tif (this.timestamps) {\n\t\t\t\t\tlet date = new Date();\n\t\t\t\t\tdoc['createdAt'] = date;\n\t\t\t\t\tdoc['updatedAt'] = date;\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, options])) < 200000 ? JSON.stringify([doc, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'insertMany',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (validDocs.length) {\n\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).insertMany(validDocs, options).then(res => {\n\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\tresolve(validDocs);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t}\n\t\t\t\t}, err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tinsertOne(doc: T, options?: CollectionInsertOneOptions, bypassLogs = false, bypassCheckSchema = false): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!doc['_id']) {\n\t\t\t\tdoc['_id'] = objectIdHexString();\n\t\t\t}\n\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tconst validation = this.simplschema.newContext();\n\t\t\t\tconst isValid = validation.validate(doc);\n\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - insertOne', validation.validationErrors());\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on insertOne - ' + this.collectionName, [validation.validationErrors(), doc]);\n\t\t\t\t\treject(validation.validationErrors());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.timestamps) {\n\t\t\t\tlet date = new Date();\n\t\t\t\tdoc['createdAt'] = date;\n\t\t\t\tdoc['updatedAt'] = date;\n\t\t\t}\n\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tLogs.insertOne({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'document',\n\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, options])) < 200000 ? JSON.stringify([doc, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'insertOne',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this.useVersions && !doc.hasOwnProperty('__v')) {\n\t\t\t\tdoc['__v'] = 0;\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).insertOne(doc, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(doc);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tlistIndexes(options?: { batchSize?: number; readPreference?: ReadPreferenceOrMode; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).listIndexes(options);\n\t}\n\n\treIndex(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).reIndex(options);\n\t}\n\n\trename(newName: string, options?: { dropTarget?: boolean; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).rename(newName, options);\n\t}\n\n\treplaceOne(filter: FilterQuery<T>, replacement: T, options?: ReplaceOneOptions, bypassLogs = false, bypassCheckSchema = false, doc: T = null) : Promise<number> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tconst validation = this.simplschema.newContext();\n\t\t\t\tconst isValid = validation.validate(replacement);\n\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - replaceOne', validation.validationErrors());\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on replaceOne - ' + this.collectionName, [validation.validationErrors(), replacement]);\n\t\t\t\t\treject(validation.validationErrors());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tlet date = new Date();\n\t\t\tif (this.timestamps) {\n\t\t\t\treplacement['updatedAt'] = date;\n\t\t\t}\n\n\t\t\tif (!doc) {\n\t\t\t\tdoc = await this.findOne(filter, null, true);\n\t\t\t}\n\n\t\t\tif (doc) {\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\tif (doc['__v'] === replacement['__v']) {\n\t\t\t\t\t\treplacement['__v'] += 1;\n\n\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\tversionDoc['_id'] = {_id: doc['_id'], __v: doc['__v']};\n\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id: { _id: doc['_id'], __v: doc['__v']}}, versionDoc, {upsert: true});\n\n\t\t\t\t\t\tif (doc['__v'] >= 4) {\n\t\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({\n\t\t\t\t\t\t\t\t_id: {\n\t\t\t\t\t\t\t\t\t_id: doc['_id'],\n\t\t\t\t\t\t\t\t\t__v: {$lte: doc['__v'] - 4}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).replaceOne(filter, replacement, options).then(res => {\n\t\t\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tconsole.log('invalid version - ' + this.collectionName, doc['__v'], replacement['__v']);\n\n\t\t\t\t\t\tlet prevDoc = await ResolveIOServer.getMongoManager().collection(this.versionCollection).findOne({\n\t\t\t\t\t\t\t_id: {\n\t\t\t\t\t\t\t\t_id: doc['_id'],\n\t\t\t\t\t\t\t\t__v: replacement['__v']\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, null, true);\n\n\t\t\t\t\t\tif (prevDoc) {\n\t\t\t\t\t\t\tlet docId = doc['_id'];\n\t\t\t\t\t\t\tlet docVersion = doc['__v'];\n\t\t\t\t\t\t\tlet updatedDoc: T = getMongoMergeUpdatedDoc(replacement, doc, prevDoc);\n\t\t\t\t\t\t\tupdatedDoc['_id'] = docId;\n\t\t\t\t\t\t\tupdatedDoc['__v'] = docVersion + 1;\n\n\t\t\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).replaceOne(filter, updatedDoc, options).then(res => {\n\t\t\t\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject('Invalid Version And Could Not Find History - DB: ' + doc['__v'] + ', Trying to update with :' + replacement['__v']);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).replaceOne(filter, replacement, options).then(res => {\n\t\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (options && options.upsert) {\n\t\t\t\tif (this.timestamps) {\n\t\t\t\t\treplacement['createdAt'] = date;\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: replacement['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, replacement, options])) < 200000 ? JSON.stringify([filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\treplacement['__v'] = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).replaceOne(filter, replacement, options).then(res => {\n\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t}\n\t\t\t\t}, err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\treject('No Document');\n\t\t\t}\n\t\t});\n\t}\n\n\tstats(options?: { scale: number; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).stats(options);\n\t}\n\n\tupdateMany(filter: FilterQuery<T>, update: UpdateQuery<T>, options?: UpdateManyOptions, bypassLogs = false, bypassCheckSchema = false) : Promise<number> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.timestamps) {\n\t\t\t\tlet date = new Date();\n\n\t\t\t\tif (!update.$set) {\n\t\t\t\t\tupdate.$set = <any>{updatedAt: date};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t(<any>update.$set)['updatedAt'] = date;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tconst validation = this.simplschema.newContext();\n\t\t\t\tconst isValid = validation.validate(update, {modifier: true});\n\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - updateMany', validation.validationErrors());\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on updateMany - ' + this.collectionName, [validation.validationErrors(), update]);\n\t\t\t\t\treject(validation.validationErrors());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet docs = await this.find(filter);\n\t\n\t\t\t\tfor (let i = 0; i < docs.length; i++) {\n\t\t\t\t\tlet doc = docs[i];\n\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'updateMany',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).updateMany(filter, update, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => reject(err));\n\t\t});\n\t}\n\n\tupdateOne(filter: FilterQuery<T>, update: UpdateQuery<T>, options?: UpdateOneOptions, bypassLogs = false, bypassCheckSchema = false) : Promise<number> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tlet date = new Date();\n\n\t\t\tif (this.timestamps) {\n\t\t\t\tif (!update.$set) {\n\t\t\t\t\tupdate.$set = <any>{updatedAt: date};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t(<any>update.$set)['updatedAt'] = date;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tconst validation = this.simplschema.newContext();\t\t\t\n\t\t\t\tconst isValid = validation.validate(update, {modifier: true});\n\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - updateOne', validation.validationErrors());\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on updateOne - ' + this.collectionName, [validation.validationErrors(), update]);\n\t\t\t\t\treject(validation.validationErrors());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\n\t\t\tlet doc = await this.findOne(filter, null, true);\n\n\t\t\tif (doc) {\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\tversionDoc['_id'] = {_id: doc['_id'], __v: doc['__v']};\n\n\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id: { _id: doc['_id'], __v: doc['__v']}}, versionDoc, {upsert: true});\n\t\t\t\t\t\n\t\t\t\t\tif (doc['__v'] >= 4) {\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({\n\t\t\t\t\t\t\t_id: {\n\t\t\t\t\t\t\t\t_id: doc['_id'],\n\t\t\t\t\t\t\t\t__v: {$lte: doc['__v'] - 4}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!objectContainsPropertyDeep(update, '__v')) {\n\t\t\t\t\t\tif (!update.$inc) {\n\t\t\t\t\t\t\tupdate.$inc = <any>{__v: 1};\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (!update.$inc.__v) {\n\t\t\t\t\t\t\t(<any>update.$inc).__v = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).updateOne(filter, update, options).then(res => {\n\t\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => reject(err));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).updateOne(filter, update, options).then(res => {\n\t\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => reject(err));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (options && options.upsert && update.$setOnInsert && update.$setOnInsert._id) {\n\t\t\t\tif (this.timestamps) {\n\t\t\t\t\tif (!update.$setOnInsert.createdAt) {\n\t\t\t\t\t\t(<any>update.$setOnInsert).createdAt = date;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: update.$setOnInsert._id,\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, update, options])) < 200000 ? JSON.stringify([filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\tif (!objectContainsPropertyDeep(update, '__v')) {\n\t\t\t\t\t\t(<any>update.$setOnInsert).__v = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).updateOne(filter, update, options).then(res => {\n\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t}\n\t\t\t\t}, err => reject(err));\n\t\t\t\t\n\t\t\t}\n\t\t\telse {\n\t\t\t\treject('No Document');\n\t\t\t}\n\t\t});\n\t}\n\t\n\twatchCollection(pipeline = [], options?: ChangeStreamOptions & { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).watch(pipeline, options);\n\t}\n\n\twatchCollectionWithAggregate(pipeline = [], options?: ChangeStreamOptions & { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).watch(pipeline, options);\n\t}\n}\n\nexport class UserCollection<T> extends Collection<T> {\n\tauthenticateStrategy() {\n\t\treturn async (username, password, cb) => {\n\t\t\tlet user = await Users.findOne({username: username});\n\t\t\tthis.authenticate(user, password).then(authUser => {\n\t\t\t\tif (authUser.data) {\n\t\t\t\t\tcb(null, user, null);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcb(null, null, authUser.error);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tcb(err, null, null);\n\t\t\t})\n\t\t};\n\t}\n\n\tauthenticate(user: UserModel, password: string): Promise<{data: UserModel, error: string}> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tconst attemptsInterval = Math.pow(100, Math.log(user.attempts + 1));\n\t\t\tconst calculatedInterval = attemptsInterval < 300000 ? attemptsInterval : 300000;\n\t\t\n\t\t\tif (user.last) {\n\t\t\t\tif (Date.now() - user.last.getTime() < calculatedInterval) {\n\t\t\t\t\tuser.last = new Date();\n\t\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last}});\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\terror: 'Attempt Too Soon'\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tuser.last = new Date();\n\t\t\t}\n\t\t\n\t\t\tif (user.attempts >= 5) {\n\t\t\t\tresolve({\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: 'Too Many Attempts'\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif (!user.salt) {\n\t\t\t\tresolve({\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: 'No Salt Value Stored'\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tpbkdf2(password, user.salt, {\n\t\t\t\titerations: 25000,\n\t\t\t\tkeylen: 512,\n\t\t\t\tdigestAlgorithm: 'sha256'\n\t\t\t}, async (err, hashBuffer) => {\n\t\t\t\tif (err) {\n\t\t\t\t\treturn reject(err);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tif (scmp(hashBuffer, Buffer.from(user.hash, 'hex'))) {\n\t\t\t\t\tuser.last = new Date();\n\t\t\t\t\tuser.attempts = 0;\n\t\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last, attempts: user.attempts}});\n\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tdata: user,\n\t\t\t\t\t\terror: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tuser.last = new Date();\n\t\t\t\t\tuser.attempts = user.attempts + 1;\n\t\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last, attempts: user.attempts}});\n\n\t\t\t\t\tif (user.attempts >= 5) {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\terror: 'Too Many Attempts'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\terror: 'Invalid Username And Password'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t});\n\t\t});\n\t}\n\n\tserializeUser() {\n\t\treturn (user, cb) => {\n\t\t\tcb(null, user.username);\n\t\t};\n\t}\n\n\tdeserializeUser() {\n\t\treturn (username, cb) => {\n\t\t\tUsers.findOne({username: username}).then(res => {\n\t\t\t\tcb(null, res);\n\t\t\t}, err => {\n\t\t\t\tcb(err, null);\n\t\t\t});\n\t\t};\n\t}\n\n\tsetPassword(user: UserModel, password: string) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!user) {\n\t\t\t\treject('No User');\n\t\t\t}\n\t\t\telse if (!password) {\n\t\t\t\treject('No Password');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet saltBuffer = await randomBytes(32);\n\t\t\t\tlet salt = saltBuffer.toString('hex');\n\t\t\t\tlet hashRaw = await pbkdf2Promisified(password, salt, {\n\t\t\t\t\titerations: 25000,\n\t\t\t\t\tkeylen: 512,\n\t\t\t\t\tdigestAlgorithm: 'sha256'\n\t\t\t\t});\n\t\t\t\tlet hash = Buffer.from(hashRaw, 'binary').toString('hex');\n\t\t\t\tUsers.updateOne({_id: user._id}, {$set: {hash: hash, salt: salt, services: {}}}).then(res => resolve(res), rej => reject(rej));\n\t\t\t}\n\t\t});\n\t};\n\n\tchangePassword(user, oldPassword, newPassword) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!user) {\n\t\t\t\treject('Missing User');\n\t\t\t}\n\t\t\telse if (!oldPassword || !newPassword) {\n\t\t\t\treject('Missing Password');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet authUser = await this.authenticate(user, oldPassword);\n\n\t\t\t\tif (!authUser['data']) {\n\t\t\t\t\treject(authUser['error']);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.setPassword(user, newPassword).then(res => resolve(res), rej => reject(rej));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tregister(user, password) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!user.username) {\n\t\t\t\treject('Missing Username');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet dbUser = await Users.findOne({username: user.username});\n\t\t\t\t\n\t\t\t\tif (dbUser) {\n\t\t\t\t\treject('Username Exists');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdbUser = await Users.findOne({email: user.email});\n\n\t\t\t\t\tif (dbUser) {\n\t\t\t\t\t\treject('Email Exists');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tuser.setPassword(password);\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tresetAttempts(user: UserModel) {\n\t\treturn Users.updateOne({_id: user._id}, {$set: {attempts: 0}});\n\t}\n}\n\nexport function objectIdHexString() {\n\tlet objectId = new ObjectId();\n\treturn objectId.toHexString();\n}\n\nfunction pbkdf2(password, salt, options, callback) {\n\tcrypto.pbkdf2(password, salt, options.iterations, options.keylen, options.digestAlgorithm, callback);\n};\n\nfunction pbkdf2Promisified(password, salt, options): Promise<any> {\n\treturn new Promise((resolve, reject) => pbkdf2(password, salt, options, (err, hashRaw) => (err ? reject(err) : resolve(hashRaw))));\n}\n\nfunction randomBytes(saltlen): Promise<Buffer> {\n\treturn new Promise((resolve, reject) => crypto.randomBytes(saltlen, (err, saltBuffer) => (err ? reject(err) : resolve(saltBuffer))));\n}\n\nfunction objectContainsPropertyDeep(obj: Object, prop: string) {\n\tlet keys = Object.keys(obj);\n\n\tif (keys.some(a => a === prop)) {\n\t\treturn true;\n\t}\n\t\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tlet key = keys[i];\n\t\tif (obj[key] && typeof obj[key] === 'object' && objectContainsPropertyDeep(obj[key], prop)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/managers/mongo.manager.ts"],"names":[],"mappings":"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","file":"mongo.manager.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { ChangeStreamOptions, ClientSession, CollectionAggregationOptions, CollectionInsertManyOptions, CollectionInsertOneOptions, CommonOptions, FilterQuery, FindOneAndDeleteOption, FindOneAndReplaceOption, FindOneAndUpdateOption, FindOneOptions, IndexOptions, IndexSpecification, MongoCountPreferences, MongoDistinctPreferences, ReadPreferenceOrMode, ReplaceOneOptions, UpdateManyOptions, UpdateOneOptions, UpdateQuery, ObjectId } from 'mongodb';\nimport { LookupTables } from '../models/report-builder.model';\nimport { ResolveIOServer } from '../index';\nimport { Users } from '../collections/user.collection';\nimport { buildRbLookups, buildRbSchema, deepCopy, getBinarySize, getMongoMergeUpdatedDoc } from '../util/common';\nimport { UserModel } from '../models/user.model';\nimport { Logs } from '../collections/log.collection';\nconst crypto = require('crypto');\nconst scmp = require('scmp');\n\ninterface MongoQueueModel {\n\t_id: number,\n\tname_collection: string;\n\tname_function: string;\n\tdata_function: any[];\n\tname_function_addt: string;\n\tdata_function_addt: any[];\n\tcbs: Function[];\n\tcbs_next: Function[];\n\trunning: boolean;\n}\n\nexport class MongoManager {\n\tprivate _collections: Collection<any>[] = [];\n\tprivate _mongoQueue: MongoQueueModel[] = [];\n\tprivate _mongoQueueId = 0;\n\n\tconstructor() {\n\t\tthis.runQueue();\n\t}\n\n\tregisterCollection(collection: Collection<any>) {\n\t\tthis._collections.push(collection);\n\t}\n\n\tcollections() {\n\t\treturn this._collections;\n\t}\n\n\tcollection(collectionName: string): Collection<any> | UserCollection<any> {\n\t\treturn this._collections.filter(a => a.collectionName === collectionName)[0];\n\t}\n\n\taddToQueue(mongoQueue: MongoQueueModel) {\n\t\tlet _mongoQueue = this._mongoQueue.filter(a => a.name_collection === mongoQueue.name_collection && a.name_function === mongoQueue.name_function && a.name_function_addt === mongoQueue.name_function_addt && JSON.stringify(a.data_function) === JSON.stringify(mongoQueue.data_function) && JSON.stringify(a.data_function_addt) === JSON.stringify(mongoQueue.data_function_addt))[0];\n\t\t\n\t\tif (_mongoQueue) {\n\t\t\tif (!_mongoQueue.running) {\n\t\t\t\t_mongoQueue.cbs.push(mongoQueue.cbs[0]);\n\t\t\t}\n\t\t\telse {\n\t\t\t\t_mongoQueue.cbs_next.push(mongoQueue.cbs[0]);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tmongoQueue._id = this._mongoQueueId;\n\t\t\tthis._mongoQueueId += 1;\n\n\t\t\tthis._mongoQueue.push(mongoQueue);\n\t\t}\n\t}\n\n\tprivate async runQueue() {\n\t\tsetInterval(() => {\n\t\t\tif (this._mongoQueue.filter(a => !a.running).length) {\n\t\t\t\tlet mongoQueue = this._mongoQueue.filter(a => !a.running)[0];\n\t\t\t\tmongoQueue.running = true;\n\t\n\t\t\t\tif (!mongoQueue.name_function_addt) {\n\t\t\t\t\tResolveIOServer.getMainDB().collection(mongoQueue.name_collection)[mongoQueue.name_function](...mongoQueue.data_function).then(res => {\n\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\tcb(null, res);\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tif (mongoQueue.cbs_next.length) {\n\t\t\t\t\t\t\tmongoQueue.running = false;\n\t\t\t\t\t\t\tmongoQueue.cbs = mongoQueue.cbs_next;\n\t\t\t\t\t\t\tmongoQueue.cbs_next = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id), 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\tcb(err, null);\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tmongoQueue.cbs_next.forEach(cb => {\n\t\t\t\t\t\t\tcb(err, null);\n\t\t\t\t\t\t});\n\t\t\t\t\t\t\n\t\t\t\t\t\tthis._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id), 1);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tResolveIOServer.getMainDB().collection(mongoQueue.name_collection)[mongoQueue.name_function](...mongoQueue.data_function)[mongoQueue.name_function_addt](...mongoQueue.data_function_addt).then(res => {\n\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\tcb(null, res);\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tif (mongoQueue.cbs_next.length) {\n\t\t\t\t\t\t\tmongoQueue.running = false;\n\t\t\t\t\t\t\tmongoQueue.cbs = mongoQueue.cbs_next;\n\t\t\t\t\t\t\tmongoQueue.cbs_next = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id), 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\tcb(err, null);\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tmongoQueue.cbs_next.forEach(cb => {\n\t\t\t\t\t\t\tcb(err, null);\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tthis._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id), 1);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}, 10);\n\t}\n}\n\nexport class Model<T> {\n\tcollection_main: Collection<T> | UserCollection<T> = null;\n\tcollection_version: Collection<T> | UserCollection<T> = null;\n\n\tconstructor(collectionName: string, schema: object, useVersionCollection = false, useReportBuilder = true, reportBuilderLookupTables: LookupTables[] = [], timestamps = true, createLogs = true, checkSchema = true) {\n\t\tif (collectionName === 'users') {\n\t\t\tthis.collection_main = new UserCollection<T>(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps, createLogs, checkSchema);\n\t\t}\n\t\telse {\n\t\t\tthis.collection_main = new Collection<T>(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps, createLogs, checkSchema);\n\t\t}\n\n\t\tif (useVersionCollection) {\n\t\t\tthis.collection_main.useVersions = true;\n\t\t\t\n\t\t\tlet versionSchema = deepCopy(schema);\n\t\t\tversionSchema['_id'].type = 'Object';\n\t\t\tversionSchema['_id'].blackbox = true;\n\n\t\t\tif (collectionName === 'users') {\n\t\t\t\tthis.collection_version = new UserCollection<T>(collectionName + '.versions', versionSchema, false, [], true, false, false);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.collection_version = new Collection<T>(collectionName + '.versions', versionSchema, false, [], true, false, false);\n\t\t\t}\n\n\t\t\t// if (this.collection_version.indexExists('_id.__v_1__id._id_1')) {\n\t\t\t// \tthis.collection_version.dropIndex('_id.__v_1__id._id_1');\n\t\t\t// }\n\n\t\t\tthis.collection_version.createIndex({'_id._id': 1, '_id.__v': 1});\n\t\t\tthis.collection_main.versionCollection = collectionName + '.versions';\n\t\t}\n\t}\n}\n\nexport class Collection<T> {\n\tcollectionName = '';\n\tcheckSchema = false;\n\tsimplschema = null;\n\trbSchema = null;\n\ttimestamps = false;\n\tuseVersions = false;\n\tversionCollection = '';\n\tcreateLogs = true;\n\tuseRB = false;\n\t\n\tconstructor(collectionName: string, schema: object, useReportBuilder, reportBuilderLookupTables: LookupTables[], timestamps, createLogs, checkSchema) {\n\t\tthis.collectionName = collectionName;\n\t\tthis.simplschema = new SimpleSchema(schema);\n\t\tthis.timestamps = timestamps;\n\t\tthis.createLogs = createLogs;\n\t\tthis.checkSchema = checkSchema;\n\n\t\tif (useReportBuilder) {\n\t\t\tthis.useRB = true;\n\t\t\tlet schemaCopy = deepCopy(schema);\n\t\t\tlet rbSchema = buildRbLookups(reportBuilderLookupTables, schemaCopy, []);\n\t\t\tthis.rbSchema = buildRbSchema(rbSchema);\n\t\t}\n\n\t\tlet interval = setInterval(() => {\n\t\t\tif (ResolveIOServer && ResolveIOServer.getMainServer() && ResolveIOServer.getMongoManager()) {\n\t\t\t\tResolveIOServer.getMongoManager().registerCollection(this);\n\t\t\t\tclearInterval(interval);\n\t\t\t}\n\t\t}, 1);\n\t}\n\n\taggregate(pipeline: object[], options?: CollectionAggregationOptions, allowLogs = false) : Promise<any[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (this.createLogs && allowLogs) {\n\t\t\t\tLogs.insertOne({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'query',\n\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\tid_document: '',\n\t\t\t\t\tpayload: getBinarySize(JSON.stringify([pipeline, options])) < 200000 ? JSON.stringify([pipeline, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'aggregate',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t\t_id: 0,\n\t\t\t\tname_collection: this.collectionName,\n\t\t\t\tname_function: 'aggregate',\n\t\t\t\tname_function_addt: 'toArray',\n\t\t\t\tdata_function: [pipeline, options],\n\t\t\t\tdata_function_addt: [],\n\t\t\t\tcbs: [(err, res) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.createLogs && allowLogs) {\n\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([err, res])) < 200000 ? JSON.stringify([err, res], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'aggregate',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tcbs_next: [],\n\t\t\t\trunning: false\n\t\t\t});\n\t\t});\n\t}\n\n\taggregateCount(pipeline: object[], options?: CollectionAggregationOptions) : Promise<number> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t\t_id: 0,\n\t\t\t\tname_collection: this.collectionName,\n\t\t\t\tname_function: 'aggregate',\n\t\t\t\tname_function_addt: 'count',\n\t\t\t\tdata_function: [pipeline, options],\n\t\t\t\tdata_function_addt: [],\n\t\t\t\tcbs: [(err, res) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tcbs_next: [],\n\t\t\t\trunning: false\n\t\t\t});\n\t\t});\n\t}\n\n\taggregateCursor(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options);\n\t}\n\n\taggregateStream(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).stream();\n\t}\n\n\tcountDocuments(filter: FilterQuery<T> = {}, options?: MongoCountPreferences) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).countDocuments(filter, options);\n\t}\n\n\tcreate(f_docs: T | T[], options?: CollectionInsertManyOptions): Promise<T | T[]> {\n\t\tlet docs = [];\n\n\t\tif (!Array.isArray(f_docs)) {\n\t\t\treturn this.insertOne(f_docs, options);\n\t\t}\n\n\t\treturn this.insertMany(f_docs, options);\n\t}\n\n\tcreateIndex(fieldOrSpec: any, options?: IndexOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).createIndex(fieldOrSpec, options);\n\t}\n\n\tcreateIndexes(indexSpecs: IndexSpecification[], options?: { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).createIndexes(indexSpecs, options);\n\t}\n\n\tdeleteMany(filter: FilterQuery<T> = {}, options?: CommonOptions, bypassLogs = false) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet docs = await this.find(filter);\n\n\t\t\t\tfor (let i = 0; i < docs.length; i++) {\n\t\t\t\t\tlet doc = docs[i];\n\t\t\t\t\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'deleteMany',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\n\t\t\t\t\tif (this.useVersions) {\n\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\tversionDoc['_id'] = {_id: doc['_id'], __v: doc['__v']};\n\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id: { _id: doc['_id'], __v: doc['__v']}}, versionDoc, {upsert: true});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).deleteMany(filter, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(res.deletedCount);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => reject(err));\n\t\t});\n\t}\n\n\tdeleteOne(filter: FilterQuery<T> = {}, options?: CommonOptions & { bypassDocumentValidation?: boolean; }, bypassLogs = false) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet doc = await this.findOne(filter, null, true);\n\t\n\t\t\t\tif (doc) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'deleteOne',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\n\t\t\t\t\tif (this.useVersions) {\n\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\tversionDoc['_id'] = {_id: doc['_id'], __v: doc['__v']};\n\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id: { _id: doc['_id'], __v: doc['__v']}}, versionDoc, {upsert: true});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).deleteOne(filter, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(res.deletedCount);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => reject(err));\n\t\t});\n\t}\n\n\tdistinct(key: string, filter?: FilterQuery<T>, options?: MongoDistinctPreferences): Promise<T[]> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).distinct(key, filter, options);\n\t}\n\n\tdrop(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).drop(options);\n\t}\n\n\tdropIndex(indexName: string, options?: CommonOptions & { maxTimeMS?: number; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).dropIndex(indexName, options);\n\t}\n\n\tdropIndexes(options?: { session?: ClientSession; maxTimeMS?: number; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).dropIndexes(options);\n\t}\n\n\tfind(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>, bypassLogs = false): Promise<T[]> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tLogs.insertOne({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'query',\n\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\tid_document: '',\n\t\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, options])) < 200000 ? JSON.stringify([filter, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'find',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t\t_id: 0,\n\t\t\t\tname_collection: this.collectionName,\n\t\t\t\tname_function: 'find',\n\t\t\t\tname_function_addt: 'toArray',\n\t\t\t\tdata_function: [filter, options],\n\t\t\t\tdata_function_addt: [],\n\t\t\t\tcbs: [(err, res) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([err, res])) < 200000 ? JSON.stringify([err, res], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'find',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tcbs_next: [],\n\t\t\t\trunning: false\n\t\t\t});\n\t\t});\n\t}\n\n\tfindById(id: string, options?: FindOneOptions<T>): Promise<T> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).findOne({_id: id}, <T>options);\n\t}\n\n\tfindCount(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>, bypassLogs = false) {\n\t\tif (this.createLogs && !bypassLogs) {\n\t\t\tLogs.insertOne({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\ttype: 'query',\n\t\t\t\tcollection: this.collectionName,\n\t\t\t\tid_document: '',\n\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, options])) < 200000 ? JSON.stringify([filter, options], null, 2) : 'Too Big',\n\t\t\t\tmethod: 'findCount',\n\t\t\t\tid_user: '',\n\t\t\t\tuser: '',\n\t\t\t\tmessageId: 0,\n\t\t\t\troute: ''\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options).count();\n\t}\n\n\tfindCursor(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options);\n\t}\n\n\tfindStream(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>, streamOptions?: any) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options).stream(streamOptions);\n\t}\n\n\tfindOne(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>, bypassLogs = false): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tLogs.insertOne({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'query',\n\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\tid_document: '',\n\t\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, options])) < 200000 ? JSON.stringify([filter, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'findOne',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t\t_id: 0,\n\t\t\t\tname_collection: this.collectionName,\n\t\t\t\tname_function: 'findOne',\n\t\t\t\tname_function_addt: '',\n\t\t\t\tdata_function: [filter, options],\n\t\t\t\tdata_function_addt: [],\n\t\t\t\tcbs: [(err, res) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([err, res])) < 200000 ? JSON.stringify([err, res], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'findOne',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}],\n\t\t\t\tcbs_next: [],\n\t\t\t\trunning: false\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndDelete(filter: FilterQuery<T> = {}, options?: FindOneAndDeleteOption<T>, bypassLogs = false): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet doc = await this.findOne(filter, null, true);\n\t\n\t\t\t\tif (doc) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndDelete',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndDelete(filter, options).then(res => {\n\t\t\t\tif (res.ok) {\n\t\t\t\t\tresolve(res.value);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.lastErrorObject);\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([res.value])) < 200000 ? JSON.stringify([res.value], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndDelete',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([err])) < 200000 ? JSON.stringify([err], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndDelete',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndReplace(filter: FilterQuery<T> = {}, replacement: T, options?: FindOneAndReplaceOption<T>, bypassLogs = false, bypassCheckSchema = false): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tconst validation = this.simplschema.newContext();\n\t\t\t\tconst isValid = validation.validate(replacement);\n\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - findOneAndReplace', validation.validationErrors());\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on findOneAndReplace - ' + this.collectionName, [validation.validationErrors(), replacement]);\n\t\t\t\t\t\n\t\t\t\t\treject(validation.validationErrors());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tlet date = new Date();\n\t\t\tif (this.timestamps) {\n\t\t\t\treplacement['updatedAt'] = date;\n\t\t\t}\n\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet doc = await this.findOne(filter, null, true);\n\n\t\t\t\tif (doc) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndReplace',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndReplace(filter, <any>replacement, options).then(res => {\n\t\t\t\tif (res.ok) {\n\t\t\t\t\tresolve(res.value);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.lastErrorObject);\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([res.value])) < 200000 ? JSON.stringify([res.value], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndReplace',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t\t\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([err])) < 200000 ? JSON.stringify([err], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndReplace',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndUpdate(filter: FilterQuery<T> = {}, update: any, options?: FindOneAndUpdateOption<T>, bypassLogs = false, bypassCheckSchema = false): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tconst validation = this.simplschema.newContext();\n\t\t\t\tconst isValid = validation.validate(update, {modifier: true});\n\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - findOneAndUpdate', validation.validationErrors());\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on findOneAndUpdate - ' + this.collectionName, [validation.validationErrors(), update]);\n\t\t\t\t\treject(validation.validationErrors());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.timestamps) {\n\t\t\t\tlet date = new Date();\n\n\t\t\t\tif (!update['$set']) {\n\t\t\t\t\tupdate['$set'] = {updatedAt: date};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tupdate['$set']['updatedAt'] = date;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet doc = await this.findOne(filter, null, true);\n\n\t\t\t\tif (doc) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndUpdate',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndUpdate(filter, update, options).then(res => {\n\t\t\t\tif (res.ok) {\n\t\t\t\t\tresolve(res.value);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.lastErrorObject);\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([res.value])) < 200000 ? JSON.stringify([res.value], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndUpdate',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t\t\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'queryResponse',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: '',\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([err])) < 200000 ? JSON.stringify([err], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndUpdate',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\n\tindexes(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).indexes(options);\n\t}\n\n\tindexExists(indexes: string | string[], options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).indexExists(indexes, options);\n\t}\n\n\tinsertMany(docs: T[], options?: CollectionInsertManyOptions, bypassLogs = false, bypassCheckSchema = false): Promise<T[]> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!docs.length) {\n\t\t\t\treject('No Documents');\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tlet validationResults = [];\n\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tdocs.forEach(doc => {\n\t\t\t\t\tconst validation = this.simplschema.newContext();\n\t\t\t\t\tconst isValid = validation.validate(doc);\n\n\t\t\t\t\tif (!isValid) {\n\t\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - insertMany', validation.validationErrors());\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on insertMany - ' + this.collectionName, [validation.validationErrors(), doc]);\n\t\t\t\t\t\tvalidationResults.push(false);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalidationResults.push(true);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tlet validDocs = this.checkSchema ? docs.filter((a, idx) => validationResults[idx]) : docs;\n\n\t\t\tfor (let i = 0; i < validDocs.length; i++) {\n\t\t\t\tlet doc = validDocs[i];\n\n\t\t\t\tif (!doc['_id']) {\n\t\t\t\t\tdoc['_id'] = objectIdHexString();\n\t\t\t\t}\n\n\t\t\t\tif (this.timestamps) {\n\t\t\t\t\tlet date = new Date();\n\t\t\t\t\tdoc['createdAt'] = date;\n\t\t\t\t\tdoc['updatedAt'] = date;\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, options])) < 200000 ? JSON.stringify([doc, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'insertMany',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (validDocs.length) {\n\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).insertMany(validDocs, options).then(res => {\n\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\tresolve(validDocs);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t}\n\t\t\t\t}, err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tinsertOne(doc: T, options?: CollectionInsertOneOptions, bypassLogs = false, bypassCheckSchema = false): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!doc['_id']) {\n\t\t\t\tdoc['_id'] = objectIdHexString();\n\t\t\t}\n\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tconst validation = this.simplschema.newContext();\n\t\t\t\tconst isValid = validation.validate(doc);\n\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - insertOne', validation.validationErrors());\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on insertOne - ' + this.collectionName, [validation.validationErrors(), doc]);\n\t\t\t\t\treject(validation.validationErrors());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.timestamps) {\n\t\t\t\tlet date = new Date();\n\t\t\t\tdoc['createdAt'] = date;\n\t\t\t\tdoc['updatedAt'] = date;\n\t\t\t}\n\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tLogs.insertOne({\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\ttype: 'document',\n\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, options])) < 200000 ? JSON.stringify([doc, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'insertOne',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: 0,\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this.useVersions && !doc.hasOwnProperty('__v')) {\n\t\t\t\tdoc['__v'] = 0;\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).insertOne(doc, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(doc);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tlistIndexes(options?: { batchSize?: number; readPreference?: ReadPreferenceOrMode; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).listIndexes(options);\n\t}\n\n\treIndex(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).reIndex(options);\n\t}\n\n\trename(newName: string, options?: { dropTarget?: boolean; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).rename(newName, options);\n\t}\n\n\treplaceOne(filter: FilterQuery<T>, replacement: T, options?: ReplaceOneOptions, bypassLogs = false, bypassCheckSchema = false, doc: T = null) : Promise<number> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tconst validation = this.simplschema.newContext();\n\t\t\t\tconst isValid = validation.validate(replacement);\n\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - replaceOne', validation.validationErrors());\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on replaceOne - ' + this.collectionName, [validation.validationErrors(), replacement]);\n\t\t\t\t\treject(validation.validationErrors());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tlet date = new Date();\n\t\t\tif (this.timestamps) {\n\t\t\t\treplacement['updatedAt'] = date;\n\t\t\t}\n\n\t\t\tif (!doc) {\n\t\t\t\tdoc = await this.findOne(filter, null, true);\n\t\t\t}\n\n\t\t\tif (doc) {\n\t\t\t\tif (this.timestamps && !replacement['createdAt'] && doc['createdAt']) {\n\t\t\t\t\treplacement['createdAt'] = doc['createdAt'];\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\tif (doc['__v'] === replacement['__v']) {\n\t\t\t\t\t\treplacement['__v'] += 1;\n\n\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\tversionDoc['_id'] = {_id: doc['_id'], __v: doc['__v']};\n\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id: { _id: doc['_id'], __v: doc['__v']}}, versionDoc, {upsert: true});\n\n\t\t\t\t\t\tif (doc['__v'] >= 4) {\n\t\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({\n\t\t\t\t\t\t\t\t_id: {\n\t\t\t\t\t\t\t\t\t_id: doc['_id'],\n\t\t\t\t\t\t\t\t\t__v: {$lte: doc['__v'] - 4}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).replaceOne(filter, replacement, options).then(res => {\n\t\t\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tconsole.log('invalid version - ' + this.collectionName, doc['__v'], replacement['__v']);\n\n\t\t\t\t\t\tlet prevDoc = await ResolveIOServer.getMongoManager().collection(this.versionCollection).findOne({\n\t\t\t\t\t\t\t_id: {\n\t\t\t\t\t\t\t\t_id: doc['_id'],\n\t\t\t\t\t\t\t\t__v: replacement['__v']\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, null, true);\n\n\t\t\t\t\t\tif (prevDoc) {\n\t\t\t\t\t\t\tlet docId = doc['_id'];\n\t\t\t\t\t\t\tlet docVersion = doc['__v'];\n\t\t\t\t\t\t\tlet updatedDoc: T = getMongoMergeUpdatedDoc(replacement, doc, prevDoc);\n\t\t\t\t\t\t\tupdatedDoc['_id'] = docId;\n\t\t\t\t\t\t\tupdatedDoc['__v'] = docVersion + 1;\n\n\t\t\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).replaceOne(filter, updatedDoc, options).then(res => {\n\t\t\t\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject('Invalid Version And Could Not Find History - DB: ' + doc['__v'] + ', Trying to update with :' + replacement['__v']);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).replaceOne(filter, replacement, options).then(res => {\n\t\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (options && options.upsert) {\n\t\t\t\tif (this.timestamps) {\n\t\t\t\t\treplacement['createdAt'] = date;\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: replacement['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, replacement, options])) < 200000 ? JSON.stringify([filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\treplacement['__v'] = 0;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).replaceOne(filter, replacement, options).then(res => {\n\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t}\n\t\t\t\t}, err => {\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\treject('No Document');\n\t\t\t}\n\t\t});\n\t}\n\n\tstats(options?: { scale: number; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).stats(options);\n\t}\n\n\tupdateMany(filter: FilterQuery<T>, update: UpdateQuery<T>, options?: UpdateManyOptions, bypassLogs = false, bypassCheckSchema = false) : Promise<number> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.timestamps) {\n\t\t\t\tlet date = new Date();\n\n\t\t\t\tif (!update.$set) {\n\t\t\t\t\tupdate.$set = <any>{updatedAt: date};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t(<any>update.$set)['updatedAt'] = date;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tconst validation = this.simplschema.newContext();\n\t\t\t\tconst isValid = validation.validate(update, {modifier: true});\n\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - updateMany', validation.validationErrors());\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on updateMany - ' + this.collectionName, [validation.validationErrors(), update]);\n\t\t\t\t\treject(validation.validationErrors());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet docs = await this.find(filter);\n\t\n\t\t\t\tfor (let i = 0; i < docs.length; i++) {\n\t\t\t\t\tlet doc = docs[i];\n\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'updateMany',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).updateMany(filter, update, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => reject(err));\n\t\t});\n\t}\n\n\tupdateOne(filter: FilterQuery<T>, update: UpdateQuery<T>, options?: UpdateOneOptions, bypassLogs = false, bypassCheckSchema = false) : Promise<number> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tlet date = new Date();\n\n\t\t\tif (this.timestamps) {\n\t\t\t\tif (!update.$set) {\n\t\t\t\t\tupdate.$set = <any>{updatedAt: date};\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t(<any>update.$set)['updatedAt'] = date;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.checkSchema && !bypassCheckSchema) {\n\t\t\t\tconst validation = this.simplschema.newContext();\t\t\t\n\t\t\t\tconst isValid = validation.validate(update, {modifier: true});\n\n\t\t\t\tif (!isValid) {\n\t\t\t\t\tconsole.log(new Date(), this.collectionName, 'Schema Errors - updateOne', validation.validationErrors());\n\t\t\t\t\tResolveIOServer.getMainServer().getMethodManager().callMethodInternal('insertErrorLog', 'Schema Failed on updateOne - ' + this.collectionName, [validation.validationErrors(), update]);\n\t\t\t\t\treject(validation.validationErrors());\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\t\n\t\t\tlet doc = await this.findOne(filter, null, true);\n\n\t\t\tif (doc) {\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\tversionDoc['_id'] = {_id: doc['_id'], __v: doc['__v']};\n\n\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne({_id: { _id: doc['_id'], __v: doc['__v']}}, versionDoc, {upsert: true});\n\t\t\t\t\t\n\t\t\t\t\tif (doc['__v'] >= 4) {\n\t\t\t\t\t\tawait ResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany({\n\t\t\t\t\t\t\t_id: {\n\t\t\t\t\t\t\t\t_id: doc['_id'],\n\t\t\t\t\t\t\t\t__v: {$lte: doc['__v'] - 4}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!objectContainsPropertyDeep(update, '__v')) {\n\t\t\t\t\t\tif (!update.$inc) {\n\t\t\t\t\t\t\tupdate.$inc = <any>{__v: 1};\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (!update.$inc.__v) {\n\t\t\t\t\t\t\t(<any>update.$inc).__v = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).updateOne(filter, update, options).then(res => {\n\t\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => reject(err));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).updateOne(filter, update, options).then(res => {\n\t\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => reject(err));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (options && options.upsert && update.$setOnInsert && update.$setOnInsert._id) {\n\t\t\t\tif (this.timestamps) {\n\t\t\t\t\tif (!update.$setOnInsert.createdAt) {\n\t\t\t\t\t\t(<any>update.$setOnInsert).createdAt = date;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: update.$setOnInsert._id,\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, update, options])) < 200000 ? JSON.stringify([filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\tif (!objectContainsPropertyDeep(update, '__v')) {\n\t\t\t\t\t\t(<any>update.$setOnInsert).__v = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).updateOne(filter, update, options).then(res => {\n\t\t\t\t\tif (res.result.ok) {\n\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treject(res.result.ok);\n\t\t\t\t\t}\n\t\t\t\t}, err => reject(err));\n\t\t\t\t\n\t\t\t}\n\t\t\telse {\n\t\t\t\treject('No Document');\n\t\t\t}\n\t\t});\n\t}\n\t\n\twatchCollection(pipeline = [], options?: ChangeStreamOptions & { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).watch(pipeline, options);\n\t}\n\n\twatchCollectionWithAggregate(pipeline = [], options?: ChangeStreamOptions & { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).watch(pipeline, options);\n\t}\n}\n\nexport class UserCollection<T> extends Collection<T> {\n\tauthenticateStrategy() {\n\t\treturn async (username, password, cb) => {\n\t\t\tlet user = await Users.findOne({username: username});\n\t\t\tthis.authenticate(user, password).then(authUser => {\n\t\t\t\tif (authUser.data) {\n\t\t\t\t\tcb(null, user, null);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcb(null, null, authUser.error);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tcb(err, null, null);\n\t\t\t})\n\t\t};\n\t}\n\n\tauthenticate(user: UserModel, password: string): Promise<{data: UserModel, error: string}> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tconst attemptsInterval = Math.pow(100, Math.log(user.attempts + 1));\n\t\t\tconst calculatedInterval = attemptsInterval < 300000 ? attemptsInterval : 300000;\n\t\t\n\t\t\tif (user.last) {\n\t\t\t\tif (Date.now() - user.last.getTime() < calculatedInterval) {\n\t\t\t\t\tuser.last = new Date();\n\t\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last}});\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\terror: 'Attempt Too Soon'\n\t\t\t\t\t});\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tuser.last = new Date();\n\t\t\t}\n\t\t\n\t\t\tif (user.attempts >= 5) {\n\t\t\t\tresolve({\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: 'Too Many Attempts'\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tif (!user.salt) {\n\t\t\t\tresolve({\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: 'No Salt Value Stored'\n\t\t\t\t});\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\n\t\t\tpbkdf2(password, user.salt, {\n\t\t\t\titerations: 25000,\n\t\t\t\tkeylen: 512,\n\t\t\t\tdigestAlgorithm: 'sha256'\n\t\t\t}, async (err, hashBuffer) => {\n\t\t\t\tif (err) {\n\t\t\t\t\treturn reject(err);\n\t\t\t\t}\n\t\t\t\n\t\t\t\tif (scmp(hashBuffer, Buffer.from(user.hash, 'hex'))) {\n\t\t\t\t\tuser.last = new Date();\n\t\t\t\t\tuser.attempts = 0;\n\t\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last, attempts: user.attempts}});\n\n\t\t\t\t\tresolve({\n\t\t\t\t\t\tdata: user,\n\t\t\t\t\t\terror: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tuser.last = new Date();\n\t\t\t\t\tuser.attempts = user.attempts + 1;\n\t\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last, attempts: user.attempts}});\n\n\t\t\t\t\tif (user.attempts >= 5) {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\terror: 'Too Many Attempts'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve({\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\terror: 'Invalid Username And Password'\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} \n\t\t\t});\n\t\t});\n\t}\n\n\tserializeUser() {\n\t\treturn (user, cb) => {\n\t\t\tcb(null, user.username);\n\t\t};\n\t}\n\n\tdeserializeUser() {\n\t\treturn (username, cb) => {\n\t\t\tUsers.findOne({username: username}).then(res => {\n\t\t\t\tcb(null, res);\n\t\t\t}, err => {\n\t\t\t\tcb(err, null);\n\t\t\t});\n\t\t};\n\t}\n\n\tsetPassword(user: UserModel, password: string) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!user) {\n\t\t\t\treject('No User');\n\t\t\t}\n\t\t\telse if (!password) {\n\t\t\t\treject('No Password');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet saltBuffer = await randomBytes(32);\n\t\t\t\tlet salt = saltBuffer.toString('hex');\n\t\t\t\tlet hashRaw = await pbkdf2Promisified(password, salt, {\n\t\t\t\t\titerations: 25000,\n\t\t\t\t\tkeylen: 512,\n\t\t\t\t\tdigestAlgorithm: 'sha256'\n\t\t\t\t});\n\t\t\t\tlet hash = Buffer.from(hashRaw, 'binary').toString('hex');\n\t\t\t\tUsers.updateOne({_id: user._id}, {$set: {hash: hash, salt: salt, services: {}}}).then(res => resolve(res), rej => reject(rej));\n\t\t\t}\n\t\t});\n\t};\n\n\tchangePassword(user, oldPassword, newPassword) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!user) {\n\t\t\t\treject('Missing User');\n\t\t\t}\n\t\t\telse if (!oldPassword || !newPassword) {\n\t\t\t\treject('Missing Password');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet authUser = await this.authenticate(user, oldPassword);\n\n\t\t\t\tif (!authUser['data']) {\n\t\t\t\t\treject(authUser['error']);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.setPassword(user, newPassword).then(res => resolve(res), rej => reject(rej));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t\n\tregister(user, password) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!user.username) {\n\t\t\t\treject('Missing Username');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet dbUser = await Users.findOne({username: user.username});\n\t\t\t\t\n\t\t\t\tif (dbUser) {\n\t\t\t\t\treject('Username Exists');\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdbUser = await Users.findOne({email: user.email});\n\n\t\t\t\t\tif (dbUser) {\n\t\t\t\t\t\treject('Email Exists');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tuser.setPassword(password);\n\t\t\t\t\t\tresolve(user);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tresetAttempts(user: UserModel) {\n\t\treturn Users.updateOne({_id: user._id}, {$set: {attempts: 0}});\n\t}\n}\n\nexport function objectIdHexString() {\n\tlet objectId = new ObjectId();\n\treturn objectId.toHexString();\n}\n\nfunction pbkdf2(password, salt, options, callback) {\n\tcrypto.pbkdf2(password, salt, options.iterations, options.keylen, options.digestAlgorithm, callback);\n};\n\nfunction pbkdf2Promisified(password, salt, options): Promise<any> {\n\treturn new Promise((resolve, reject) => pbkdf2(password, salt, options, (err, hashRaw) => (err ? reject(err) : resolve(hashRaw))));\n}\n\nfunction randomBytes(saltlen): Promise<Buffer> {\n\treturn new Promise((resolve, reject) => crypto.randomBytes(saltlen, (err, saltBuffer) => (err ? reject(err) : resolve(saltBuffer))));\n}\n\nfunction objectContainsPropertyDeep(obj: Object, prop: string) {\n\tlet keys = Object.keys(obj);\n\n\tif (keys.some(a => a === prop)) {\n\t\treturn true;\n\t}\n\t\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tlet key = keys[i];\n\t\tif (obj[key] && typeof obj[key] === 'object' && objectContainsPropertyDeep(obj[key], prop)) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}"]}
|
package/methods/accounts.js
CHANGED
|
@@ -62,11 +62,11 @@ function loadAccountMethods(methodManager) {
|
|
|
62
62
|
resolve(true);
|
|
63
63
|
}
|
|
64
64
|
else {
|
|
65
|
-
index_1.ResolveIOServer.getMainServer().getSubscriptionManager().unsubscribeAll(_this.id_ws);
|
|
65
|
+
index_1.ResolveIOServer.getMainServer().getSubscriptionManager().unsubscribeAll(_this._mainServer.getWS(_this.id_ws));
|
|
66
66
|
resolve(false);
|
|
67
67
|
}
|
|
68
68
|
}, function (err) {
|
|
69
|
-
index_1.ResolveIOServer.getMainServer().getSubscriptionManager().unsubscribeAll(_this.id_ws);
|
|
69
|
+
index_1.ResolveIOServer.getMainServer().getSubscriptionManager().unsubscribeAll(_this._mainServer.getWS(_this.id_ws));
|
|
70
70
|
resolve(false);
|
|
71
71
|
});
|
|
72
72
|
});
|
package/methods/accounts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/accounts.ts"],"names":[],"mappings":"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","file":"accounts.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { Users } from '../collections/user.collection';\nimport * as handlebars from 'handlebars';\nimport * as jwt from 'jsonwebtoken';\nimport { LoggedInUsers } from '../collections/logged-in-users.collection';\nimport { QueueResponses } from '../collections/queue-response.collection';\nimport { MethodManager } from '../managers/method.manager';\nimport { ResolveIOServer } from '../index';\nimport { UserModel } from '../models/user.model';\nimport { objectIdHexString } from '../managers/mongo.manager';\n\nexport function loadAccountMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tsetWSAppVersion: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tversion: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(version) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tLoggedInUsers.updateOne({id_ws: this.id_ws}, {$set: {app_version: version}}).then(res => {\n\t\t\t\t\t\tif (res) {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tResolveIOServer.getMainServer().getSubscriptionManager().unsubscribeAll(this.id_ws);\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getSubscriptionManager().unsubscribeAll(this.id_ws);\n\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\treloadWS: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_ws: String\n\t\t\t}),\n\t\t\tfunction: function(id_ws) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tQueueResponses.create({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\tmethod: 'reloadWSCommand',\n\t\t\t\t\t\tid_ws: id_ws,\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\tid_user: this.id_user,\n\t\t\t\t\t\tuser: this.user,\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\tdata: 'reloadWSCommand'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: new Date()\n\t\t\t\t\t}).then(val => {\n\t\t\t\t\t\t// console.log(val);\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\treconnectWS: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_ws: String\n\t\t\t}),\n\t\t\tfunction: function(id_ws) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tQueueResponses.create({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\tmethod: 'reconnectWSCommand',\n\t\t\t\t\t\tid_ws: id_ws,\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\tid_user: this.id_user,\n\t\t\t\t\t\tuser: this.user,\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\tdata: 'reconnectWSCommand'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: new Date()\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdisconnectWS: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_ws: String\n\t\t\t}),\n\t\t\tfunction: function(id_ws) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tQueueResponses.create({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\tmethod: 'disconnectWSCommand',\n\t\t\t\t\t\tid_ws: id_ws,\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\tid_user: this.id_user,\n\t\t\t\t\t\tuser: this.user,\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\tdata: 'disconnectWSCommand'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: new Date()\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcreateUserAndEmailEnrollment: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tdata: {\n\t\t\t\t\ttype: Users['simplschema']\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(newUser: UserModel) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tnewUser._id = objectIdHexString();\n\n\t\t\t\t\tnewUser.services = {\n\t\t\t\t\t\tenrollment: jwt.sign({id_user: newUser._id}, this.serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\t\texpiresIn : 3 * 24 * 60 * 60 * 1000 // 3 days\n\t\t\t\t\t\t})\n\t\t\t\t\t};\n\t\t\t\t\t\n\t\t\t\t\tawait Users.insertOne(newUser);\n\n\t\t\t\t\tlet emailData = {\n\t\t\t\t\t\tfullname: newUser.fullname,\n\t\t\t\t\t\tuser: this.user,\n\t\t\t\t\t\turl: this.serverConfig['ROOT_URL'] + '/enroll-account?' + encodeURIComponent(this.serverConfig['SERVER_URL']) + '&' + newUser.services['enrollment']\n\t\t\t\t\t};\n\n\t\t\t\t\tthis.readFile('email-templates/enrollment.html').then(html => {\n\t\t\t\t\t\tlet template = handlebars.compile(html);\n\t\t\t\t\t\thandlebars.registerHelper('equals', (a, b) => {\n\t\t\t\t\t\t\treturn a === b;\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tthis.sendEmail(newUser.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Enrollment Email', '', template(emailData));\n\t\n\t\t\t\t\t\tresolve(newUser);\n\t\t\t\t\t}, errEmail => reject(errEmail));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresetUserPassword: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tuserId: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(userId: string) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\t\t\t\t\n\t\t\t\t\tlet user = await Users.findOne({_id: userId});\n\t\t\n\t\t\t\t\tif (user) {\n\n\t\t\t\t\t\tuser.services['forgot_password'] = jwt.sign({id_user: userId}, this.serverConfig['JWT_SECRET']);\n\n\t\t\t\t\t\tlet emailData = {\n\t\t\t\t\t\t\tuserToChangePassword: user.fullname,\n\t\t\t\t\t\t\tuserWhoResetPassword: this.user,\n\t\t\t\t\t\t\turl: this.serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(this.serverConfig['SERVER_URL']) + '&' + user.services['forgot_password']\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tUsers.updateOne({_id: user._id}, {$set: {services: user.services}}).then(() => {\n\t\t\t\t\t\t\tthis.readFile('email-templates/forgot-password.html').then(html => {\n\t\t\t\t\t\t\t\tlet template = handlebars.compile(html);\n\t\t\t\t\t\t\t\thandlebars.registerHelper('equals', (a, b) => {\n\t\t\t\t\t\t\t\t\treturn a === b;\n\t\t\t\t\t\t\t\t});\n\t\t\t\n\t\t\t\t\t\t\t\tthis.sendEmail(user.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData));\n\t\t\t\n\t\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t\t}, errEmail => reject(errEmail));\n\t\t\t\t\t\t}, () => {});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction randomString(length, chars) {\n\tlet result = '';\n\tfor (let i = length; i > 0; --i) { result += chars[Math.floor(Math.random() * chars.length)]; }\n\treturn result;\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/methods/accounts.ts"],"names":[],"mappings":"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","file":"accounts.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { Users } from '../collections/user.collection';\nimport * as handlebars from 'handlebars';\nimport * as jwt from 'jsonwebtoken';\nimport { LoggedInUsers } from '../collections/logged-in-users.collection';\nimport { QueueResponses } from '../collections/queue-response.collection';\nimport { MethodManager } from '../managers/method.manager';\nimport { ResolveIOServer } from '../index';\nimport { UserModel } from '../models/user.model';\nimport { objectIdHexString } from '../managers/mongo.manager';\n\nexport function loadAccountMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tsetWSAppVersion: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tversion: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(version) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tLoggedInUsers.updateOne({id_ws: this.id_ws}, {$set: {app_version: version}}).then(res => {\n\t\t\t\t\t\tif (res) {\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tResolveIOServer.getMainServer().getSubscriptionManager().unsubscribeAll(this._mainServer.getWS(this.id_ws));\n\t\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getSubscriptionManager().unsubscribeAll(this._mainServer.getWS(this.id_ws));\n\t\t\t\t\t\tresolve(false);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\treloadWS: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_ws: String\n\t\t\t}),\n\t\t\tfunction: function(id_ws) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tQueueResponses.create({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\tmethod: 'reloadWSCommand',\n\t\t\t\t\t\tid_ws: id_ws,\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\tid_user: this.id_user,\n\t\t\t\t\t\tuser: this.user,\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\tdata: 'reloadWSCommand'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: new Date()\n\t\t\t\t\t}).then(val => {\n\t\t\t\t\t\t// console.log(val);\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\treconnectWS: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_ws: String\n\t\t\t}),\n\t\t\tfunction: function(id_ws) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tQueueResponses.create({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\tmethod: 'reconnectWSCommand',\n\t\t\t\t\t\tid_ws: id_ws,\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\tid_user: this.id_user,\n\t\t\t\t\t\tuser: this.user,\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\tdata: 'reconnectWSCommand'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: new Date()\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdisconnectWS: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_ws: String\n\t\t\t}),\n\t\t\tfunction: function(id_ws) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tQueueResponses.create({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t__v: 0,\n\t\t\t\t\t\tmethod: 'disconnectWSCommand',\n\t\t\t\t\t\tid_ws: id_ws,\n\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\tid_user: this.id_user,\n\t\t\t\t\t\tuser: this.user,\n\t\t\t\t\t\tresponse: {\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\tdata: 'disconnectWSCommand'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdate: new Date()\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcreateUserAndEmailEnrollment: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tdata: {\n\t\t\t\t\ttype: Users['simplschema']\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(newUser: UserModel) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tnewUser._id = objectIdHexString();\n\n\t\t\t\t\tnewUser.services = {\n\t\t\t\t\t\tenrollment: jwt.sign({id_user: newUser._id}, this.serverConfig['JWT_SECRET'], {\n\t\t\t\t\t\t\texpiresIn : 3 * 24 * 60 * 60 * 1000 // 3 days\n\t\t\t\t\t\t})\n\t\t\t\t\t};\n\t\t\t\t\t\n\t\t\t\t\tawait Users.insertOne(newUser);\n\n\t\t\t\t\tlet emailData = {\n\t\t\t\t\t\tfullname: newUser.fullname,\n\t\t\t\t\t\tuser: this.user,\n\t\t\t\t\t\turl: this.serverConfig['ROOT_URL'] + '/enroll-account?' + encodeURIComponent(this.serverConfig['SERVER_URL']) + '&' + newUser.services['enrollment']\n\t\t\t\t\t};\n\n\t\t\t\t\tthis.readFile('email-templates/enrollment.html').then(html => {\n\t\t\t\t\t\tlet template = handlebars.compile(html);\n\t\t\t\t\t\thandlebars.registerHelper('equals', (a, b) => {\n\t\t\t\t\t\t\treturn a === b;\n\t\t\t\t\t\t});\n\t\n\t\t\t\t\t\tthis.sendEmail(newUser.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Enrollment Email', '', template(emailData));\n\t\n\t\t\t\t\t\tresolve(newUser);\n\t\t\t\t\t}, errEmail => reject(errEmail));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresetUserPassword: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tuserId: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(userId: string) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\t\t\t\t\n\t\t\t\t\tlet user = await Users.findOne({_id: userId});\n\t\t\n\t\t\t\t\tif (user) {\n\n\t\t\t\t\t\tuser.services['forgot_password'] = jwt.sign({id_user: userId}, this.serverConfig['JWT_SECRET']);\n\n\t\t\t\t\t\tlet emailData = {\n\t\t\t\t\t\t\tuserToChangePassword: user.fullname,\n\t\t\t\t\t\t\tuserWhoResetPassword: this.user,\n\t\t\t\t\t\t\turl: this.serverConfig['ROOT_URL'] + '/forgot-password?' + encodeURIComponent(this.serverConfig['SERVER_URL']) + '&' + user.services['forgot_password']\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tUsers.updateOne({_id: user._id}, {$set: {services: user.services}}).then(() => {\n\t\t\t\t\t\t\tthis.readFile('email-templates/forgot-password.html').then(html => {\n\t\t\t\t\t\t\t\tlet template = handlebars.compile(html);\n\t\t\t\t\t\t\t\thandlebars.registerHelper('equals', (a, b) => {\n\t\t\t\t\t\t\t\t\treturn a === b;\n\t\t\t\t\t\t\t\t});\n\t\t\t\n\t\t\t\t\t\t\t\tthis.sendEmail(user.email, 'ResolveIO (' + ResolveIOServer.getClientName() + ') - Forgot Password', '', template(emailData));\n\t\t\t\n\t\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t\t}, errEmail => reject(errEmail));\n\t\t\t\t\t\t}, () => {});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}\n\nfunction randomString(length, chars) {\n\tlet result = '';\n\tfor (let i = length; i > 0; --i) { result += chars[Math.floor(Math.random() * chars.length)]; }\n\treturn result;\n}"]}
|
package/methods/aws.js
CHANGED
package/methods/aws.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/aws.ts"],"names":[],"mappings":"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","file":"aws.js","sourcesContent":["import { MethodManager } from '../managers/method.manager';\nimport { Files } from '../collections/file.collection';\nimport SimpleSchema from 'simpl-schema';\nimport { ResolveIOServer } from '../index';\nimport { objectIdHexString } from '../managers/mongo.manager';\nlet request = require('request').defaults({ encoding: null });\n\nlet pdfCnt = 1000000;\n\nexport function loadAWSMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tuploadFileAndSave: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileData: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileSize: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileOrder: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcompress: {\n\t\t\t\t\ttype: Boolean\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileName: string, fileData: string, fileSize: number, fileOrder: number, fileType: string, compress: Boolean) {\n\t\t\t\tlet that = this;\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tif (fileName) {\n\t\t\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\n\t\t\t\t\t\tif (fileData.split(',')[0].split(':')[1].split(';')[0] === 'application/pdf' && compress) {\n\t\t\t\t\t\t\tlet file = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(), \n\t\t\t\t\t\t\t\t__v: 0, \n\t\t\t\t\t\t\t\tname: fileName, \n\t\t\t\t\t\t\t\tsize: fileSize, \n\t\t\t\t\t\t\t\tkey: key, \n\t\t\t\t\t\t\t\torder: fileOrder, \n\t\t\t\t\t\t\t\ttype: fileType\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tFiles.create(file).then(resFile => {\n\t\t\t\t\t\t\t\tthis.callMethodInternal('compressBase64AndUploadPDF', file._id, fileName, key, fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), (errCompress, resCompress) => {\n\t\t\t\t\t\t\t\t\tresolve(resFile);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}, errFile => reject(errFile));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet newParams = {Bucket: that.serverConfig.AWSBUCKET, Key: key, Body: Buffer.from(fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), 'base64'), ACL: 'private', ContentType: fileData.split(',')[0].split(':')[1].split(';')[0], ContentDisposition: 'inline'};\n\n\t\t\t\t\t\t\tthat.getAWS().upload(newParams, (err, res) => {\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (res) {\n\t\t\t\t\t\t\t\t\tFiles.create({\n\t\t\t\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\n\t\t\t\t\t\t\t\t\t}).then(resFile => {\n\t\t\t\t\t\t\t\t\t\tresolve(resFile);\n\t\t\t\t\t\t\t\t\t}, errFile => reject(errFile));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tuploadNonPDFFileAndSave: {\t\n\t\t\tskipQueue: true,\t\n\t\t\tcheck: new SimpleSchema({\t\n\t\t\t\tfileName: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileData: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileSize: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileOrder: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileType: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t}\t\n\t\t\t}),\t\n\t\t\tfunction: function(fileName: string, fileData: string, fileSize: number, fileOrder: number, fileType: string) {\t\n\t\t\t\treturn new Promise((resolve, reject) => {\t\n\t\t\t\t\tif (fileName) {\t\n\t\t\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + fileName;\t\n\n\t\t\t\t\t\tlet newParams = {Bucket: this.serverConfig.AWSBUCKET, Key: key, Body: Buffer.from(fileData), ACL: 'private', ContentType: 'application/gzip', ContentDisposition: 'inline'};\t\n\n\t\t\t\t\t\tthis.getAWS().upload(newParams, (err, res) => {\t\n\t\t\t\t\t\t\tif (err) {\t\n\t\t\t\t\t\t\t\treject(err);\t\n\t\t\t\t\t\t\t}\t\n\t\t\t\t\t\t\telse if (res) {\t\n\t\t\t\t\t\t\t\tFiles.create({\t\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\n\t\t\t\t\t\t\t\t}).then(resFile => {\t\n\t\t\t\t\t\t\t\t\tresolve(resFile);\t\n\t\t\t\t\t\t\t\t}, errFile => reject(errFile));\t\n\t\t\t\t\t\t\t}\t\n\t\t\t\t\t\t});\t\n\t\t\t\t\t}\t\n\t\t\t\t});\t\n\t\t\t}\t\n\t\t},\n\t\tdeleteFiles: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'keys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(keys: string[]) {\t\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet files = await Files.find({key: {$in: keys}});\n\t\t\n\t\t\t\t\tlet deleteCnt = files.length;\n\t\t\n\t\t\t\t\tfiles.forEach(file => {\n\t\t\t\t\t\tFiles.deleteOne({_id: file._id});\n\t\t\n\t\t\t\t\t\tlet delParams = {Bucket: this.serverConfig.AWSBUCKET, Key: file.key};\n\t\t\t\n\t\t\t\t\t\tthis.getAWS().deleteObject(delParams, (err, res) => {\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tdeleteCnt--;\n\t\t\t\t\t\t\t\tif (!deleteCnt) {\n\t\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdeleteFile: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(key: string) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\n\t\t\t\t\tlet file = await Files.findOne({key: key});\n\t\t\n\t\t\t\t\tif (file) {\n\t\t\t\t\t\tFiles.deleteOne({_id: file._id});\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tlet delParams = {Bucket: this.serverConfig['AWSBUCKET'], Key: key};\n\t\t\n\t\t\t\t\tthis.getAWS().deleteObject(delParams, (err, res) => {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdeleteFileWithId: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\n\t\t\t\t\tlet file = await Files.findOne({_id: id_file});\n\t\t\n\t\t\t\t\tif (!file) {\n\t\t\t\t\t\treject('Could not find file');\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tlet delParams = {Bucket: this.serverConfig['AWSBUCKET'], Key: file.key};\n\t\t\n\t\t\t\t\tthis.getAWS().deleteObject(delParams, (err, res) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tFiles.deleteOne({_id: file._id});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlsAndFilesWithId: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tids: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'ids.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(ids: string[], expires: number) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet res = [];\n\t\t\t\t\tlet fileArray = [];\n\n\t\t\t\t\tlet files = await Files.find({_id: {$in: ids}});\n\t\t\t\t\t\n\t\t\t\t\tfiles.forEach(file => {\n\t\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: file.key, Expires: expires};\n\t\t\t\t\t\tres.push(this.getAWS().getSignedUrl('getObject', params));\n\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresolve({res: res, fileArray: files.map(a => a.name)});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlWithId: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, expires: number) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet file = await Files.findOne({_id: id_file});\n\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: file.key, Expires: expires};\n\n\t\t\t\t\tthis.getAWS().getSignedUrl('getObject', params, (err, res) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrl: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(key: string, expires: number) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: key, Expires: expires};\n\n\t\t\t\t\tthis.getAWS().getSignedUrl('getObject', params, (err, res) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrls: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'keys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(keys: string[], expires: number) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tlet res = [];\n\n\t\t\t\t\tkeys.forEach(key => {\n\t\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: key, Expires: expires};\n\n\t\t\t\t\t\tres.push(this.getAWS().getSignedUrl('getObject', params));\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve(res);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetDataURIfromURL: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\turl: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(url: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\trequest.get(url, function (error, response, body) {\n\t\t\t\t\t\tif (!error && response.statusCode === 200) {\n\t\t\t\t\t\t\tlet data = 'data:' + response.headers['content-type'] + ';base64,' + new Buffer(body).toString('base64');\n\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\temailFile: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\temail: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n additional_message: {\n type: String\n }\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, email: string, additional_message) {\n\t\t\t\tlet that = this;\n\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet file = await Files.findById(id_file);\n\n\t\t\t\t\tif (!file) {\n\t\t\t\t\t\treject('Could not find file');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthat.callMethodInternal.call(that, 'getSignedUrl', file.key, 259200, (errPDF, resPDF) => {\n\t\t\t\t\t\tif (resPDF) {\n\t\t\t\t\t\t\tif (file.size < 5000000) {\n\t\t\t\t\t\t\t\tlet emailMessage = 'Attached is the file requested for email.\\n' + (additional_message !== '' ? '\\nAdditional Mesasge:\\n' + additional_message + '\\n' : '') ;\n\n\t\t\t\t\t\t\t\tthat.sendEmail(email, ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage, '', [{\n\t\t\t\t\t\t\t\t\tfilename: file.name,\n\t\t\t\t\t\t\t\t\tpath: resPDF\n\t\t\t\t\t\t\t\t}]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tlet emailMessage = 'Please click the link to the requested file.\\n' + (additional_message !== '' ? '\\nAdditional Mesasge:\\n' + additional_message + '\\n' : '') ;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tthat.sendEmail(email, ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage + resPDF, '');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject('Could not get file URL');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/methods/aws.ts"],"names":[],"mappings":"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","file":"aws.js","sourcesContent":["import { MethodManager } from '../managers/method.manager';\nimport { Files } from '../collections/file.collection';\nimport SimpleSchema from 'simpl-schema';\nimport { ResolveIOServer } from '../index';\nimport { objectIdHexString } from '../managers/mongo.manager';\nlet request = require('request').defaults({ encoding: null });\n\nlet pdfCnt = 1000000;\n\nexport function loadAWSMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tuploadFileAndSave: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileData: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileSize: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileOrder: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tcompress: {\n\t\t\t\t\ttype: Boolean\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileName: string, fileData: string, fileSize: number, fileOrder: number, fileType: string, compress: Boolean) {\n\t\t\t\tlet that = this;\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tif (fileName) {\n\t\t\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + (pdfCnt++) + '-' + fileName;\n\n\t\t\t\t\t\tif (fileData.split(',')[0].split(':')[1].split(';')[0] === 'application/pdf' && compress) {\n\t\t\t\t\t\t\tlet file = {\n\t\t\t\t\t\t\t\t_id: objectIdHexString(), \n\t\t\t\t\t\t\t\t__v: 0, \n\t\t\t\t\t\t\t\tname: fileName, \n\t\t\t\t\t\t\t\tsize: fileSize, \n\t\t\t\t\t\t\t\tkey: key, \n\t\t\t\t\t\t\t\torder: fileOrder, \n\t\t\t\t\t\t\t\ttype: fileType\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tFiles.create(file).then(resFile => {\n\t\t\t\t\t\t\t\tthis.callMethodInternal('compressBase64AndUploadPDF', file._id, fileName, key, fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), (errCompress, resCompress) => {\n\t\t\t\t\t\t\t\t\tresolve(resFile);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}, errFile => reject(errFile));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet newParams = {Bucket: that.serverConfig.AWSBUCKET, Key: key, Body: Buffer.from(fileData.replace('data:' + fileData.split(',')[0].split(':')[1].split(';')[0] + ';base64,', ''), 'base64'), ACL: 'private', ContentType: fileData.split(',')[0].split(':')[1].split(';')[0], ContentDisposition: 'inline'};\n\n\t\t\t\t\t\t\tthat.getAWS().upload(newParams, (err, res) => {\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse if (res) {\n\t\t\t\t\t\t\t\t\tFiles.create({\n\t\t\t\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\n\t\t\t\t\t\t\t\t\t}).then(resFile => {\n\t\t\t\t\t\t\t\t\t\tresolve(resFile);\n\t\t\t\t\t\t\t\t\t}, errFile => reject(errFile));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tuploadNonPDFFileAndSave: {\t\n\t\t\tskipQueue: true,\t\n\t\t\tcheck: new SimpleSchema({\t\n\t\t\t\tfileName: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileData: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t},\t\n\t\t\t\tfileSize: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileOrder: {\t\n\t\t\t\t\ttype: Number\t\n\t\t\t\t},\t\n\t\t\t\tfileType: {\t\n\t\t\t\t\ttype: String\t\n\t\t\t\t}\t\n\t\t\t}),\t\n\t\t\tfunction: function(fileName: string, fileData: string, fileSize: number, fileOrder: number, fileType: string) {\t\n\t\t\t\treturn new Promise((resolve, reject) => {\t\n\t\t\t\t\tif (fileName) {\t\n\t\t\t\t\t\tlet key = 'uploads/' + Date.now() + '-' + fileName;\t\n\n\t\t\t\t\t\tlet newParams = {Bucket: this.serverConfig.AWSBUCKET, Key: key, Body: Buffer.from(fileData), ACL: 'private', ContentType: 'application/gzip', ContentDisposition: 'inline'};\t\n\n\t\t\t\t\t\tthis.getAWS().upload(newParams, (err, res) => {\t\n\t\t\t\t\t\t\tif (err) {\t\n\t\t\t\t\t\t\t\treject(err);\t\n\t\t\t\t\t\t\t}\t\n\t\t\t\t\t\t\telse if (res) {\t\n\t\t\t\t\t\t\t\tFiles.create({\t\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(), __v: 0, name: fileName, size: fileSize, key: key, order: fileOrder, type: fileType\n\t\t\t\t\t\t\t\t}).then(resFile => {\t\n\t\t\t\t\t\t\t\t\tresolve(resFile);\t\n\t\t\t\t\t\t\t\t}, errFile => reject(errFile));\t\n\t\t\t\t\t\t\t}\t\n\t\t\t\t\t\t});\t\n\t\t\t\t\t}\t\n\t\t\t\t});\t\n\t\t\t}\t\n\t\t},\n\t\tdeleteFiles: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'keys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(keys: string[]) {\t\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet files = await Files.find({key: {$in: keys}});\n\t\t\n\t\t\t\t\tlet deleteCnt = files.length;\n\t\t\n\t\t\t\t\tfiles.forEach(file => {\n\t\t\t\t\t\tFiles.deleteOne({_id: file._id});\n\t\t\n\t\t\t\t\t\tlet delParams = {Bucket: this.serverConfig.AWSBUCKET, Key: file.key};\n\t\t\t\n\t\t\t\t\t\tthis.getAWS().deleteObject(delParams, (err, res) => {\n\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tdeleteCnt--;\n\t\t\t\t\t\t\t\tif (!deleteCnt) {\n\t\t\t\t\t\t\t\t\tresolve(files.length);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdeleteFile: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(key: string) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\n\t\t\t\t\tlet file = await Files.findOne({key: key});\n\t\t\n\t\t\t\t\tif (file) {\n\t\t\t\t\t\tFiles.deleteOne({_id: file._id});\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tlet delParams = {Bucket: this.serverConfig['AWSBUCKET'], Key: key};\n\t\t\n\t\t\t\t\tthis.getAWS().deleteObject(delParams, (err, res) => {\n\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tdeleteFileWithId: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\n\t\t\t\t\tlet file = await Files.findOne({_id: id_file});\n\t\t\n\t\t\t\t\tif (!file) {\n\t\t\t\t\t\treject('Could not find file');\n\t\t\t\t\t}\n\t\t\n\t\t\t\t\tlet delParams = {Bucket: this.serverConfig['AWSBUCKET'], Key: file.key};\n\t\t\n\t\t\t\t\tthis.getAWS().deleteObject(delParams, (err, res) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tFiles.deleteOne({_id: file._id});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlsAndFilesWithId: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tids: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'ids.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(ids: string[], expires: number) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet res = [];\n\t\t\t\t\tlet fileArray = [];\n\n\t\t\t\t\tlet files = await Files.find({_id: {$in: ids}});\n\t\t\t\t\t\n\t\t\t\t\tfiles.forEach(file => {\n\t\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: file.key, Expires: expires};\n\t\t\t\t\t\tres.push(this.getAWS().getSignedUrl('getObject', params));\n\n\t\t\t\t\t});\n\t\t\t\t\t\n\t\t\t\t\tresolve({res: res, fileArray: files.map(a => a.name)});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrlWithId: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, expires: number) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet file = await Files.findOne({_id: id_file});\n\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: file.key, Expires: expires};\n\n\t\t\t\t\tthis.getAWS().getSignedUrl('getObject', params, (err, res) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrl: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkey: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(key: string, expires: number) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: key, Expires: expires};\n\n\t\t\t\t\tthis.getAWS().getSignedUrl('getObject', params, (err, res) => {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetSignedUrls: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tkeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'keys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\texpires: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(keys: string[], expires: number) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tlet res = [];\n\n\t\t\t\t\tkeys.forEach(key => {\n\t\t\t\t\t\tlet params = {Bucket: this.serverConfig.AWSBUCKET, Key: key, Expires: expires};\n\n\t\t\t\t\t\tres.push(this.getAWS().getSignedUrl('getObject', params));\n\t\t\t\t\t});\n\n\t\t\t\t\tresolve(res);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgetDataURIfromURL: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\turl: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(url: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\trequest.get(url, function (error, response, body) {\n\t\t\t\t\t\tif (!error && response.statusCode === 200) {\n\t\t\t\t\t\t\tlet data = 'data:' + response.headers['content-type'] + ';base64,' + new Buffer(body).toString('base64');\n\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\temailFile: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tid_file: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\temail: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n additional_message: {\n type: String\n }\n\t\t\t}),\n\t\t\tfunction: function(id_file: string, email: string, additional_message) {\n\t\t\t\tlet that = this;\n\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tlet file = await Files.findById(id_file);\n\n\t\t\t\t\tif (!file) {\n\t\t\t\t\t\treject('Could not find file');\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tthat.callMethodInternal.call(that, 'getSignedUrl', file.key, 259200, (errPDF, resPDF) => {\n\t\t\t\t\t\tif (resPDF) {\n\t\t\t\t\t\t\tif (file.size < 5000000) {\n\t\t\t\t\t\t\t\tlet emailMessage = 'Attached is the file requested for email.\\n' + (additional_message !== '' ? '\\nAdditional Mesasge:\\n' + additional_message + '\\n' : '') ;\n\n\t\t\t\t\t\t\t\tthat.sendEmail(email, ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage, '', [{\n\t\t\t\t\t\t\t\t\tfilename: file.name,\n\t\t\t\t\t\t\t\t\tpath: resPDF\n\t\t\t\t\t\t\t\t}]);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tlet emailMessage = 'Please click the link to the requested file.\\n' + (additional_message !== '' ? '\\nAdditional Mesasge:\\n' + additional_message + '\\n' : '') ;\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tthat.sendEmail(email, ResolveIOServer.getClientName() + ' File - ' + file.name, emailMessage + resPDF, '');\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject('Could not get file URL');\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}"]}
|