@resolveio/server-lib 12.7.2 → 12.7.4
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.
|
@@ -445,6 +445,11 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
445
445
|
MongoManagerCollection.prototype.extractIndexNameFromError = function (errorMessage) {
|
|
446
446
|
var regexPattern = /Index already exists with a different name: (\S+)/;
|
|
447
447
|
var matches = errorMessage.match(regexPattern);
|
|
448
|
+
if (!matches || matches.length <= 1) {
|
|
449
|
+
// If the first pattern doesn't match, try the second pattern
|
|
450
|
+
regexPattern = /existing index:.*name: "([^"]+)"/;
|
|
451
|
+
matches = errorMessage.match(regexPattern);
|
|
452
|
+
}
|
|
448
453
|
return matches && matches.length > 1 ? matches[1] : null;
|
|
449
454
|
};
|
|
450
455
|
MongoManagerCollection.prototype.aggregate = function (pipeline, options, skipCache) {
|
|
@@ -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 { AggregateOptions, AggregationCursor, BulkWriteOptions, ChangeStream, ChangeStreamOptions, CommandOperationOptions, CountDocumentsOptions, CreateCollectionOptions, CreateIndexesOptions, CursorStreamOptions, DeleteOptions, Filter, FindCursor, FindOneAndDeleteOptions, FindOneAndReplaceOptions, FindOneAndUpdateOptions, FindOptions, IndexDescription, IndexInformationOptions, InsertOneOptions, ListIndexesCursor, ListIndexesOptions, ObjectId, RenameOptions, ReplaceOptions, UpdateOptions, OptionalId, Collection, CollectionInfo, OptionalUnlessRequiredId, AnyBulkWriteOperation, BulkWriteResult, DbStatsOptions } from 'mongodb';\nimport { LookupTables } from '../models/report-builder.model';\nimport { ResolveIOServer } from '../index';\nimport { Users } from '../collections/user.collection';\nimport { buildRbLookups, buildRbSchema, dateReviver, deepCopy, getBinarySize, getMongoMergeUpdatedDoc } from '../util/common';\nimport { UserModel } from '../models/user.model';\nimport { Logs } from '../collections/log.collection';\nimport * as NodeCache from 'node-cache';\nconst crypto = require('crypto');\nconst scmp = require('scmp');\nimport { MonitorMongo } from './monitor.manager';\nimport { CollectionDocument, Document } from '../models/collection-document.model';\nimport { cpus } from 'os';\nconst numCPUs = cpus().length;\nconst v8 = require('v8');\nimport async from 'async';\n\ninterface MongoQueueModel {\n\t_id: number,\n\tname_collection: string;\n\tlookup_collections: 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\tcacheId: number;\n\tinvalidateFlag: boolean;\n\tinvalidateCount: number;\n}\n\n// export declare interface MongoManagerFilterOperators<T> extends Document {\nexport declare interface MongoManagerFilterParamaterOperators<P> {\n\t$eq?: P;\n $gt?: P;\n $gte?: P;\n $in?: P extends Array<any> ? P : P[];\n $lt?: P;\n $lte?: P;\n $ne?: P;\n $nin?: P extends Array<any> ? P : P[];\n $not?: P extends string ? MongoManagerFilterParamaterOperators<P> | RegExpConstructor : MongoManagerFilterParamaterOperators<P>;\n $exists?: boolean;\n $expr?: any[]\n $regex?: P extends string ? RegExpConstructor | string : never;\n $options?: P extends string ? string : never;\n $geoIntersects?: {\n $geometry: Document;\n };\n $geoWithin?: Document;\n $near?: Document;\n $nearSphere?: Document;\n $maxDistance?: number;\n $all?: any[];\n $elemMatch?: Document;\n $size?: P extends any[] ? number : never;\n}\n\nexport declare interface MongoManagerFilterOperators<T> extends Document { //TODO: Remove extends document when I get answer on S.O.\n $and?: MongoManagerFilter<T>[] | MongoManagerFilterOperators<T>;\n $nor?: MongoManagerFilter<T>[] | MongoManagerFilterOperators<T>;\n $or?: MongoManagerFilter<T>[] | MongoManagerFilterOperators<T>;\n $text?: {\n $search: string;\n $language?: string;\n $caseSensitive?: boolean;\n $diacriticSensitive?: boolean;\n };\n $where?: string | ((this: T) => boolean);\n $comment?: string | Document;\n}\n\n// function isDotStringRegExp(obj: Object, dotKey: string): boolean {\n// \tlet keyData = dotKey.split('.');\n// \tlet objData = obj;\n\t\n// \tfor (let i = 0; i < keyData.length; i++) {\n// \t\tlet key = keyData[i];\n// \t\tif (objData.hasOwnProperty(key)) {\n// \t\t\tobjData = objData[key];\n\t\t\t\n// \t\t\tif (i === keyData.length - 1) {\n// \t\t\t\treturn true;\n// \t\t\t}\n// \t\t}\n// \t\telse {\n// \t\t\treturn false;\n// \t\t}\n// \t}\n// }\n\n// export declare type MongoManagerDotStringFilter<T> = {\n// \t[key: string]: (isDotStringRegExp(T, key) ? any : never);\n// };\n\nexport declare type MongoManagerFilter<T> = {\n\t[P in keyof T]?: T[P] | MongoManagerFilterParamaterOperators<T[P]>;\n};\n\nexport declare type MongoManagerUnsetFilter<T> = {\n\t[P in keyof T]?: number | boolean;\n};\n\nexport declare type MongoManagerIncFilter<T> = {\n\t[P in keyof T]?: number;\n};\n\nexport declare type MongoManagerUpdateFilter<T> = {\n $inc?: MongoManagerIncFilter<T> | Document;\n $set?: MongoManagerFilter<T> | Document;\n $setOnInsert?: MongoManagerFilter<T> | Document;\n $unset?: MongoManagerUnsetFilter<T> | Document;\n};\n\nexport class MongoManager {\n\tprivate _collections: MongoManagerCollection<CollectionDocument>[] = [];\n\tprivate _mongoQueue: MongoQueueModel[] = [];\n\tprivate _mongoQueueId = 0;\n\tprivate _mongoQueueRunning = false;\n\n\tprivate _nodeCache;\n\tprivate _mongoQueueCacheId = 1;\n\n\tprivate _heapStats = v8.getHeapStatistics();\n\tprivate _heapLimit = this._heapStats.heap_size_limit / numCPUs / 8;\n\n\tprivate _serverCollections: (CollectionInfo | Pick<CollectionInfo, \"name\" | \"type\">)[] = [];\n\n\tprivate _debugMongoQueueHits = 0;\n\tprivate _debugRemoveCacheHits = 0;\n\tprivate _debugMongoQueueCollections = [];\n\n\tconstructor() {\n\t\tthis._nodeCache = new NodeCache( { stdTTL: 0, checkperiod: 0 } );\n\n\t\tsetInterval(() => {\n\t\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Mongo Manager', 'Collections', this._collections.length);\n\t\t\t\tconsole.log(new Date(), 'Mongo Manager', 'Mongo Queue', this._mongoQueue.length, JSON.stringify(this._mongoQueue.sort((a, b) => a.name_collection.localeCompare(b.name_collection)), null, 2));\n\t\t\t\tconsole.log(new Date(), 'Mongo Manager', 'Server Collections', this._serverCollections.length);\n\t\t\t\tconsole.log(new Date(), 'Mongo Manager', 'Mongo Queue Hits', this._debugMongoQueueHits);\n\t\t\t\tconsole.log(new Date(), 'Mongo Manager', 'Mongo Queue Collections', this._debugMongoQueueCollections.sort((a, b) => a.collection.localeCompare(b.collection) || a.function.localeCompare(b.function)));\n\t\t\t\tconsole.log(new Date(), 'Mongo Manager', 'Cache Cleanup Hits', JSON.stringify(this._debugRemoveCacheHits, null, 2));\n\t\t\t}\n\t\t\t\t\n\t\t\tthis._debugMongoQueueHits = 0;\n\t\t\tthis._debugRemoveCacheHits = 0;\n\t\t\tthis._debugMongoQueueCollections = [];\n\t\t}, 60000);\n\n\t\tthis.initServerCollections();\n\n\t\tthis.runQueue();\n\t}\n\n\tasync initServerCollections() {\n\t\tlet collections = await ResolveIOServer.getMainDB().listCollections().toArray();\n\t\tthis._serverCollections = collections;\n\t}\n\n\tgetServerCollections() {\n\t\treturn this._serverCollections;\n\t}\n\n\tregisterCollection(collection: MongoManagerCollection<CollectionDocument>) {\n\t\tif (collection.collectionOptions && collection.collectionOptions.timeseries && collection.collectionOptions.timeseries.timeField && this._serverCollections.some(a => a.name === collection.collectionName && a.type === 'collection')) {\n\t\t\tResolveIOServer.getMainDB().dropCollection(collection.collectionName).then(() => {\n\t\t\t\tthis.createCollection(collection);\n\t\t\t});\n\t\t}\n\t\n\t\tthis._collections.push(collection);\n\t}\n\n\tcreateCollection(collection: MongoManagerCollection<CollectionDocument>) {\n\t\tResolveIOServer.getMainDB().createCollection<CollectionDocument>(collection.collectionName, collection.collectionOptions);\n\t}\n\n\tcollections() {\n\t\treturn this._collections;\n\t}\n\n\tcollection(collectionName: string): MongoManagerCollection<CollectionDocument> | MongoManagerUserCollection<CollectionDocument> {\n\t\treturn this._collections.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.splice(0, 0, mongoQueue);\n\t\t}\n\t}\n\n\tprivate async runQueue() {\n\t\tsetInterval(() => {\n\t\t\tif (!this._mongoQueueRunning) {\n\t\t\t\tconst queueArr = this._mongoQueue.filter(a => !a.running && a.cbs.length);\n\t\t\t\tif (queueArr.length) {\n\t\t\t\t\tthis._mongoQueueRunning = true;\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = queueArr.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tthis._debugMongoQueueHits += 1;\n\n\t\t\t\t\t\tlet mongoQueue = queueArr[i];\n\n\t\t\t\t\t\tif (!this._debugMongoQueueCollections.some(a => a.collection === mongoQueue.name_collection && a.function === mongoQueue.name_function)) {\n\t\t\t\t\t\t\tthis._debugMongoQueueCollections.push({\n\t\t\t\t\t\t\t\tcollection: mongoQueue.name_collection,\n\t\t\t\t\t\t\t\tfunction: mongoQueue.name_function,\n\t\t\t\t\t\t\t\thits: 1\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\tthis._debugMongoQueueCollections.filter(a => a.collection === mongoQueue.name_collection && a.function === mongoQueue.name_function)[0].hits += 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmongoQueue.running = true;\n\t\t\t\t\t\tmongoQueue.invalidateFlag = false;\n\n\t\t\t\t\t\tif (mongoQueue.cacheId) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tlet res = JSON.parse(this._nodeCache.get(mongoQueue.cacheId), dateReviver);\n\n\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\tcb(null, res, true);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tmongoQueue.cbs = [];\n\t\t\t\t\t\t\t\tmongoQueue.running = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch {\n\t\t\t\t\t\t\t\tmongoQueue.cacheId = 0;\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\tif (!mongoQueue.cacheId) {\n\t\t\t\t\t\t\tif (!mongoQueue.name_function_addt) {\n\t\t\t\t\t\t\t\tlet monitor = new MonitorMongo(mongoQueue.name_function, mongoQueue.name_collection, JSON.stringify(mongoQueue.data_function));\n\t\t\t\t\t\t\t\tResolveIOServer.getMainDB().collection(mongoQueue.name_collection)[mongoQueue.name_function](...mongoQueue.data_function).then(res => {\n\t\t\t\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\t\t\t\tif (!mongoQueue.invalidateFlag) {\n\t\t\t\t\t\t\t\t\t\tmongoQueue.invalidateCount = 0;\n\n\t\t\t\t\t\t\t\t\t\tlet stringifyLength = 0;\n\t\t\t\t\t\t\t\t\t\tlet stringifyFail = false;\n\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tlet stringify = JSON.stringify(res).replace(/[\\[\\]\\,\\\"]/g,'');\n\t\t\t\t\t\t\t\t\t\t\tstringifyLength\t = stringify.length;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcatch(e) {\n\t\t\t\t\t\t\t\t\t\t\tstringifyFail = true;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (!stringifyFail && res !== null && res !== undefined && (!Array.isArray(res) || res.length) && stringifyLength < 10000000) {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cacheId = this._mongoQueueCacheId;\n\t\t\t\t\t\t\t\t\t\t\tthis._mongoQueueCacheId += 1;\n\n\t\t\t\t\t\t\t\t\t\t\tthis.addToCache(mongoQueue.cacheId, res);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cacheId = 0;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\t\tcb(null, res, false);\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\tif (mongoQueue.cbs_next.length) {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs = mongoQueue.cbs_next;\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs_next = [];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs = [];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tif (mongoQueue.invalidateCount >= 5) {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.invalidateCount = 0;\n\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\t\t\tcb(null, res, false);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs = mongoQueue.cbs.concat(mongoQueue.cbs_next);\n\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs_next = [];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tmongoQueue.running = false;\n\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\tmonitor.finish();\n\n\t\t\t\t\t\t\t\t\tconsole.log(new Date(), 'Error ' + mongoQueue.name_function, mongoQueue.name_collection, ...mongoQueue.data_function, err);\n\n\t\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\tcb(err, null, false);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tmongoQueue.cbs_next.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\tcb(err, null, false);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id) >= 0) {\n\t\t\t\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\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tlet monitor = new MonitorMongo(mongoQueue.name_function, mongoQueue.name_collection, JSON.stringify([...mongoQueue.data_function, mongoQueue.name_function_addt, ...mongoQueue.data_function_addt]));\n\t\t\t\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\t\t\t\tmonitor.finish();\n\t\t\t\t\t\t\t\t\tif (!mongoQueue.invalidateFlag) {\n\t\t\t\t\t\t\t\t\t\tmongoQueue.invalidateCount = 0;\n\n\t\t\t\t\t\t\t\t\t\tlet stringifyLength = 0;\n\t\t\t\t\t\t\t\t\t\tlet stringifyFail = false;\n\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tlet stringify = JSON.stringify(res).replace(/[\\[\\]\\,\\\"]/g,'');\n\t\t\t\t\t\t\t\t\t\t\tstringifyLength\t = stringify.length;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcatch(e) {\n\t\t\t\t\t\t\t\t\t\t\tstringifyFail = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tif (!stringifyFail && res !== null && res !== undefined && (!Array.isArray(res) || res.length) && stringifyLength < 10000000) {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cacheId = this._mongoQueueCacheId;\n\t\t\t\t\t\t\t\t\t\t\tthis._mongoQueueCacheId += 1;\n\t\t\t\t\t\t\t\t\t\t\tthis.addToCache(mongoQueue.cacheId, res);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cacheId = 0;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\t\tcb(null, res, false);\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\tif (mongoQueue.cbs_next.length) {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs = mongoQueue.cbs_next;\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs_next = [];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs = [];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tif (mongoQueue.invalidateCount >= 5) {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.invalidateCount = 0;\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\t\t\tcb(null, res, false);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs = mongoQueue.cbs.concat(mongoQueue.cbs_next);\n\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs_next = [];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tmongoQueue.running = false;\n\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\tcb(err, null, false);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tmongoQueue.cbs_next.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\tcb(err, null, false);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id) >= 0) {\n\t\t\t\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\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._mongoQueueRunning = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}, 25);\n\t}\n\n\tprivate addToCache(id, data) {\n\t\tlet nodeCacheSize = this._nodeCache.getStats().vsize;\n\t\t\t\t\t\t\n\t\tif (nodeCacheSize > this._heapLimit) {\n\t\t\tlet deleteCount = 0;\n\n\t\t\tconst queueArr = this._mongoQueue.filter(a => a.cacheId && !a.running && !a.cbs.length);\n\n\t\t\tfor (let zz = queueArr.length - 1; zz >= 0; zz--) {\n\t\t\t\tthis._debugRemoveCacheHits += 1;\n\n\t\t\t\tlet queue = queueArr[zz];\n\n\t\t\t\tthis._nodeCache.del(queue.cacheId);\n\t\t\t\tqueue.cacheId = 0;\n\n\t\t\t\tif (this._mongoQueue.map(a => a._id).indexOf(queue._id) >= 0) {\n\t\t\t\t\tthis._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(queue._id), 1);\n\t\t\t\t}\n\n\t\t\t\tdeleteCount += 1;\n\n\t\t\t\tnodeCacheSize = this._nodeCache.getStats().vsize;\n\n\t\t\t\tif (nodeCacheSize < this._heapLimit * 0.75) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tconsole.log('Query Cache: ' + 'Too Big, - Deleted: ' + deleteCount + ' - ' + nodeCacheSize);\n\t\t}\n\n\t\tthis._nodeCache.set(id, JSON.stringify(data));\n\t}\n\n\tpublic invalidateQueryCache(collection: string) {\n\t\tlet queueArr = this._mongoQueue.filter(a => (a.name_collection === collection || a.lookup_collections.includes(collection)));\n\t\tfor (let i = queueArr.length - 1; i >= 0; i--) {\n\t\t\tlet queue = queueArr[i];\t\t\t\n\t\t\tif (queue.cacheId) {\n\t\t\t\tthis._nodeCache.del(queue.cacheId);\n\t\t\t\tqueue.cacheId = 0;\n\t\t\t}\n\n\t\t\tif (queue.running) {\n\t\t\t\tqueue.invalidateFlag = true;\n\t\t\t\tqueue.invalidateCount += 1;\n\t\t\t}\n\t\t\telse if (!queue.cbs.length) {\n\t\t\t\tif (this._mongoQueue.map(a => a._id).indexOf(queue._id) >= 0) {\n\t\t\t\t\tthis._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(queue._id), 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class MongoManagerModel<T extends CollectionDocument> {\n\tcollection_main: MongoManagerCollection<T> | MongoManagerUserCollection<T> = null;\n\tcollection_version: MongoManagerCollection<T> | MongoManagerUserCollection<T> = null;\n\n\tconstructor(options: MongoManagerCollectionOptions) {\n\t\tif (options.collectionName === 'users') {\n\t\t\tthis.collection_main = new MongoManagerUserCollection<T>(options);\n\t\t}\n\t\telse {\n\t\t\tthis.collection_main = new MongoManagerCollection<T>(options);\n\t\t}\n\n\t\tif (options.useVersionCollection) {\n\t\t\tthis.collection_main.useVersions = true;\n\t\t\t\n\t\t\tlet versionSchema = deepCopy(options.schema);\n\t\t\tversionSchema._id.type = 'Object';\n\t\t\tversionSchema._id.blackbox = true;\n\n\t\t\tlet versionOptions: MongoManagerCollectionOptions = {\n\t\t\t\tcollectionName: options.collectionName + '.versions',\n\t\t\t\tschema: versionSchema,\n\t\t\t\tuseVersionCollection: false,\n\t\t\t\tuseReportBuilder: false,\n\t\t\t\treportBuilderLookupTables: [],\n\t\t\t\ttimestamps: true,\n\t\t\t\tcreateLogs: false,\n\t\t\t\tcheckSchema: false,\n\t\t\t\tcollectionOptions: null\n\t\t\t};\n\n\t\t\tif (options.collectionName === 'users') {\t\n\t\t\t\tthis.collection_version = new MongoManagerUserCollection<T>(versionOptions);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.collection_version = new MongoManagerCollection<T>(versionOptions);\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 = options.collectionName + '.versions';\n\t\t}\n\t}\n}\n\nexport interface MongoManagerCollectionOptions {\n\tcollectionName: string;\n\tschema: object;\n\tuseVersionCollection: boolean;\n\tuseReportBuilder: boolean;\n\treportBuilderLookupTables: LookupTables[]\n\ttimestamps: boolean;\n\tcreateLogs: boolean;\n\tcheckSchema: boolean;\n\tcollectionOptions: CreateCollectionOptions;\n}\n\nexport class MongoManagerCollection<T extends CollectionDocument> {\n\tcollectionName = '';\n\tcheckSchema = false;\n\tsimplschema = null;\n\trbSchema = null;\n\ttimestamps = false;\n\tuseVersions = false;\n\tversionCollection = '';\n\tcreateLogs = true;\n\tuseRB = false;\n\tcollectionOptions: CreateCollectionOptions;\n\t\n\tconstructor(options: MongoManagerCollectionOptions) {\n\t\tthis.collectionName = options.collectionName;\n\t\tthis.simplschema = new SimpleSchema(options.schema);\n\t\tthis.timestamps = options.timestamps;\n\t\tthis.createLogs = options.createLogs;\n\t\tthis.checkSchema = options.checkSchema;\n\t\tthis.collectionOptions = options.collectionOptions;\n\n\t\tif (options.useReportBuilder) {\n\t\t\tthis.useRB = true;\n\t\t\tlet schemaCopy = deepCopy(options.schema);\n\t\t\tlet rbSchema = buildRbLookups(options.reportBuilderLookupTables, schemaCopy, []);\n\t\t\tthis.rbSchema = buildRbSchema(rbSchema);\n\t\t}\n\n\t\tlet interval = setInterval(() => {\n\t\t\tif (ResolveIOServer && ResolveIOServer.getMainServer() && ResolveIOServer.getMongoManager() && ResolveIOServer.getMongoManager().getServerCollections().length) {\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\tprivate static indexQueue = async.queue(async (task, callback) => {\n const { action, collection, specs, options } = task;\n \n const dbCollection = ResolveIOServer.getMainDB().collection(collection.collectionName, collection.collectionOptions);\n \n if (!dbCollection) {\n return callback(new Error(`Collection ${collection.collectionName} not found`));\n }\n\n let monitor = new MonitorMongo(action, collection.collectionName, JSON.stringify([specs, options]));\n\n const createIndex = async () => {\n try {\n const result = await dbCollection[action](...specs, options);\n monitor.finish();\n callback(null, result);\n } catch (err) {\n if (err.code === 85 || err.message.includes('IndexOptionsConflict')) {\n try {\n const existingIndexName = collection.extractIndexNameFromError(err.message);\n if (existingIndexName) {\n await dbCollection.dropIndex(existingIndexName);\n return await createIndex();\n }\n } catch (innerError) {\n callback(innerError);\n }\n }\n monitor.finish();\n callback(err);\n }\n };\n\n await createIndex();\n }, 1);\n\n // Method to extract index name from error message\n extractIndexNameFromError(errorMessage) {\n const regexPattern = /Index already exists with a different name: (\\S+)/;\n const matches = errorMessage.match(regexPattern);\n return matches && matches.length > 1 ? matches[1] : null;\n }\n\n\taggregate(pipeline: object[], options?: AggregateOptions, skipCache = false) : Promise<any[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// if (!skipCache) {\n\t\t\t// \tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t// \t\t_id: 0,\n\t\t\t// \t\tname_collection: this.collectionName,\n\t\t\t// \t\tname_function: 'aggregate',\n\t\t\t// \t\tname_function_addt: 'toArray',\n\t\t\t// \t\tdata_function: [pipeline, options],\n\t\t\t// \t\tdata_function_addt: [],\n\t\t\t// \t\tcbs: [(err, res, cached) => {\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\tcbs_next: [],\n\t\t\t// \t\trunning: false,\n\t\t\t// \t\tcacheId: 0,\n\t\t\t// \t\tlookup_collections: pipeline.filter(a => a['$lookup'] && a['$lookup'].from).map(a => a['$lookup'].from).filter((elem, index, self) => {\n\t\t\t// \t\t\treturn index === self.indexOf(elem);\n\t\t\t// \t\t}),\n\t\t\t// \t\tinvalidateFlag: false,\n\t\t\t// \t\tinvalidateCount: 0\n\t\t\t// \t});\n\t\t\t// }\n\t\t\t// else {\n\t\t\t// \tlet monitor = new MonitorMongo('aggregate', this.collectionName, JSON.stringify([pipeline, options]));\n\t\t\t// \tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).aggregate(pipeline, options).toArray().then(res => {\n\t\t\t// \t\tmonitor.finish();\n\t\t\t// \t\tresolve(res);\n\t\t\t// \t}, err => {\n\t\t\t// \t\tmonitor.finish();\n\t\t\t// \t\tconsole.log(new Date(), 'Error Aggregate', this.collectionName, pipeline, options, err);\n\t\t\t// \t\treject(err);\n\t\t\t// \t});\n\t\t\t// }\n\n\t\t\tlet monitor = new MonitorMongo('aggregate', this.collectionName, JSON.stringify([pipeline, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).aggregate(pipeline, options).toArray().then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Aggregate', this.collectionName, pipeline, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\taggregateCount(pipeline: object[], options?: AggregateOptions) : 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, cached) => {\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\tcacheId: 0,\n\t\t\t\tlookup_collections: pipeline.filter(a => a['$lookup'] && a['$lookup'].from).map(a => a['$lookup'].from).filter((elem, index, self) => {\n\t\t\t\t\treturn index === self.indexOf(elem);\n\t\t\t\t}),\n\t\t\t\tinvalidateFlag: false,\n\t\t\t\tinvalidateCount: 0\n\t\t\t});\n\t\t});\n\t}\n\n\taggregateCursor(pipeline: object[], options?: AggregateOptions): AggregationCursor {\n\t\tlet monitor = new MonitorMongo('aggregateCursor', this.collectionName, JSON.stringify([pipeline, options]));\n\t\tlet cursor = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).aggregate(pipeline, options);\n\t\tcursor.on('close', ev => {\n\t\t\tmonitor.finish();\n\t\t\treturn ev;\n\t\t});\n\n\t\treturn cursor;\n\t}\n\n\taggregateStream(pipeline: object[], options?: AggregateOptions, streamOptions?: CursorStreamOptions) {\n\t\tlet monitor = new MonitorMongo('aggregateStream', this.collectionName, JSON.stringify([pipeline, options, streamOptions]));\n\t\tlet stream = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).aggregate(pipeline, options).stream(streamOptions);\n\t\tstream.on('end', ev => {\n\t\t\tmonitor.finish();\n\t\t\treturn ev;\n\t\t});\n\n\t\treturn stream;\n\t}\n\n\t// bulkWrite(operations: AnyBulkWriteOperation<T>[], options: BulkWriteOptions): Promise<BulkWriteResult> {\n\tbulkWrite(operations: any[], options?: BulkWriteOptions): Promise<BulkWriteResult> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('bulkWrite', this.collectionName, JSON.stringify([operations.slice(-100), options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).bulkWrite(operations, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Bulk Write', this.collectionName, operations.slice(-100), options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tcountDocuments(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: CountDocumentsOptions): Promise<number> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('countDocuments', this.collectionName, JSON.stringify([filter, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).countDocuments(<any>filter, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Count Documents', this.collectionName, filter, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\t//Helper Function (1 or Many) - Not Real Mongo Function\n\tcreate(f_docs: T | T[], options?: InsertOneOptions | BulkWriteOptions): Promise<T | T[]> {\n\t\tif (!Array.isArray(f_docs)) {\n\t\t\treturn this.insertOne(f_docs, <InsertOneOptions>options);\n\t\t}\n\t\telse if (f_docs.length === 1) {\n\t\t\treturn this.insertOne(f_docs[0], <InsertOneOptions>options);\n\t\t}\n\n\t\treturn this.insertMany(f_docs, <BulkWriteOptions>options);\n\t}\n\n\tcreateIndex(fieldOrSpec: any, options?: CreateIndexesOptions): Promise<string> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tMongoManagerCollection.indexQueue.push({\n\t\t\t\taction: 'createIndex',\n\t\t\t\tcollection: this, // Current instance\n\t\t\t\tspecs: [fieldOrSpec],\n\t\t\t\toptions: options\n\t\t\t}, (err, result) => {\n\t\t\t\tif (err) reject(err);\n\t\t\t\telse resolve(result);\n\t\t\t});\n\t\t});\n\t}\n\t\n\tcreateIndexes(indexSpecs: IndexDescription[], options?: CreateIndexesOptions): Promise<string[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tMongoManagerCollection.indexQueue.push({\n\t\t\t\taction: 'createIndexes',\n\t\t\t\tcollection: this, // Current instance\n\t\t\t\tspecs: [indexSpecs],\n\t\t\t\toptions: options\n\t\t\t}, (err, result) => {\n\t\t\t\tif (err) reject(err);\n\t\t\t\telse resolve(result);\n\t\t\t});\n\t\t});\n\t}\n\n\tdeleteMany(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: DeleteOptions, bypassLogs = false): Promise<number> {\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\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 1}}]});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet monitor = new MonitorMongo('deleteMany', this.collectionName, JSON.stringify([filter, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).deleteMany(<any>filter, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\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.acknowledged);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Delete Many', this.collectionName, filter, options, err);\n\t\t\t\treject(err)\n\t\t\t});\n\t\t});\n\t}\n\n\tdeleteOne(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOneAndDeleteOptions, bypassLogs = false): Promise<number> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet monitor = new MonitorMongo('findOneAndDelete', this.collectionName, JSON.stringify([filter, options]));\n\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndDelete(<any>filter, options).then(async returnVal => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tlet doc = returnVal;\n\n\t\t\t\t\tif (doc) {\n\t\t\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'deleteOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif (this.useVersions) {\n\t\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\t\tversionDoc._id = {_id: doc._id, __v: doc.__v};\n\t\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 1}}]});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\n\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(0);\n\t\t\t\t\t}\n\t\t\t\t}, err => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tconsole.log(new Date(), 'Error Find One And Delete', this.collectionName, filter, options, 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\tlet monitor = new MonitorMongo('deleteOne', this.collectionName, JSON.stringify([filter, options]));\n\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).deleteOne(<any>filter, options).then(res => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\tresolve(res.deletedCount);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t\t}\n\t\t\t\t}, err => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tconsole.log(new Date(), 'Error Delete One', this.collectionName, filter, options, err);\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t}\t\t\t\n\t\t});\n\t}\n\n\tdistinct(key: string, filter?: MongoManagerFilter<T> & MongoManagerFilterOperators<T>, options?: CommandOperationOptions): Promise<T[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('distinct', this.collectionName, JSON.stringify([key, filter, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).distinct(key, <any>filter, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Distinct', this.collectionName, filter, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tdrop(options?: CommandOperationOptions): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('drop', this.collectionName, JSON.stringify([options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).drop(options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Count Documents', this.collectionName, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tdropIndex(indexName: string, options?: CommandOperationOptions): Promise<Document> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('dropIndex', this.collectionName, JSON.stringify([indexName, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).dropIndex(indexName, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(<Document>res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Drop Index', this.collectionName, indexName, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tdropIndexes(options?: CommandOperationOptions): Promise<Boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('dropIndexes', this.collectionName, JSON.stringify([options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).dropIndexes(options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Drop Indexes', this.collectionName, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfind(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOptions<T>, skipCache = false): Promise<T[]> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!skipCache) {\n\t\t\t\tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tname_collection: this.collectionName,\n\t\t\t\t\tname_function: 'find',\n\t\t\t\t\tname_function_addt: 'toArray',\n\t\t\t\t\tdata_function: [filter, options],\n\t\t\t\t\tdata_function_addt: [],\n\t\t\t\t\tcbs: [(err, res, cached) => {\t\t\t\t\t\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\tcbs_next: [],\n\t\t\t\t\trunning: false,\n\t\t\t\t\tcacheId: 0,\n\t\t\t\t\tlookup_collections: [],\n\t\t\t\t\tinvalidateFlag: false,\n\t\t\t\t\tinvalidateCount: 0\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet monitor = new MonitorMongo('find', this.collectionName, JSON.stringify([filter, options]));\n\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).find<T>(<any>filter, options).toArray().then(res => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tresolve(res);\n\t\t\t\t}, err => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tconsole.log(new Date(), 'Error Find', this.collectionName, filter, options, err);\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tfindById(id: string, options?: FindOptions<T>): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('findById', this.collectionName, JSON.stringify([{_id: id}, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOne<T>(<any>{_id: id}, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Find By Id', this.collectionName, {_id: id}, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfindCount(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOptions<T>): Promise<Number> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('findCount', this.collectionName, JSON.stringify([filter, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).find(<any>filter, options).count().then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Find Count', this.collectionName, filter, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfindCursor(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOptions<T>): FindCursor {\n\t\tlet monitor = new MonitorMongo('findCursor', this.collectionName, JSON.stringify([filter, options]));\n\t\tlet cursor = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).find(<any>filter, options);\n\t\tcursor.on('close', ev => {\n\t\t\tmonitor.finish();\n\t\t\treturn ev;\n\t\t});\n\t\treturn cursor;\n\t}\n\n\tfindStream(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOptions<T>, streamOptions?: CursorStreamOptions) {\n\t\tlet monitor = new MonitorMongo('findStream', this.collectionName, JSON.stringify([filter, options, streamOptions]));\n\t\tlet stream = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).find(<any>filter, options).stream(streamOptions);\n\t\tstream.on('end', ev => {\n\t\t\tmonitor.finish();\n\t\t\treturn ev;\n\t\t});\n\t\treturn stream;\n\t}\n\n\tfindOne(filter: MongoManagerFilter<T> | MongoManagerFilterOperators<T> = {}, options?: FindOptions<T>, skipCache = false): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (!skipCache) {\n\t\t\t\tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tname_collection: this.collectionName,\n\t\t\t\t\tname_function: 'findOne',\n\t\t\t\t\tname_function_addt: '',\n\t\t\t\t\tdata_function: [filter, options],\n\t\t\t\t\tdata_function_addt: [],\n\t\t\t\t\tcbs: [(err, res, cached) => {\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\tcbs_next: [],\n\t\t\t\t\trunning: false,\n\t\t\t\t\tcacheId: 0,\n\t\t\t\t\tlookup_collections: [],\n\t\t\t\t\tinvalidateFlag: false,\n\t\t\t\t\tinvalidateCount: 0\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet monitor = new MonitorMongo('findOne', this.collectionName, JSON.stringify([filter, options]));\n\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOne<T>(<any>filter, options).then(res => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tresolve(res);\n\t\t\t\t}, err => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tconsole.log(new Date(), 'Error Find One', this.collectionName, filter, options, err);\n\t\t\t\t\treject(err)\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tfindOneAndDelete(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOneAndDeleteOptions, bypassLogs = false): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('findOneAndDelete', this.collectionName, JSON.stringify([filter, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndDelete(<any>filter, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tlet doc = res;\n\t\t\t\t\n\t\t\t\tif (doc) {\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'findOneAndDelete',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\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\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t}\n\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\n\t\t\t\t\tresolve(<T>doc);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresolve(null);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Find One And Delete', this.collectionName, filter, options, err);\n\t\t\t\treject(err)\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndReplace(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, replacement: T, options?: FindOneAndReplaceOptions, 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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\n\t\t\tif (this.timestamps) {\n\t\t\t\treplacement.updatedAt = date;\n\t\t\t}\n\n\t\t\tif (options && options.upsert) {\n\t\t\t\tif (!replacement._id) {\n\t\t\t\t\treplacement._id = objectIdHexString();\n\t\t\t\t}\n\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\treplacement.__v = 0;\n\t\t\t\t}\n\n\t\t\t\tif (this.timestamps && !replacement.createdAt) {\n\t\t\t\t\treplacement.createdAt = date;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet monitor = new MonitorMongo('findOneAndReplace', this.collectionName, JSON.stringify([filter, replacement, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndReplace(<any>filter, replacement, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tlet doc = res;\n\n\t\t\t\tif (doc) {\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'findOneAndReplace',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\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\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t}\n\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\n\t\t\t\t\tresolve(<T>doc);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresolve(null);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Find One And Replace', this.collectionName, filter, options, err);\n\t\t\t\treject(err)\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndUpdate(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, update: MongoManagerUpdateFilter<T>, options?: FindOneAndUpdateOptions, 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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\t\t\t\t\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\tupdate.$set.updatedAt = date;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options && options.upsert) {\n\t\t\t\tif (!update.$setOnInsert) {\n\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t\t_id: objectIdHexString()\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (!update.$setOnInsert._id) {\n\t\t\t\t\t\tupdate.$setOnInsert._id = objectIdHexString();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\tupdate.$setOnInsert.createdAt = new Date();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet monitor = new MonitorMongo('findOneAndUpdate', this.collectionName, JSON.stringify([filter, update, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndUpdate(<any>filter, <any>update, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tlet doc = res;\n\n\t\t\t\tif (doc) {\n\t\t\t\t\tif (this.createLogs && !bypassLogs) {\t\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'findOneAndUpdate',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\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\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t}\n\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\n\t\t\t\t\tresolve(<T>doc);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresolve(null);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Find One And Update', this.collectionName, filter, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tindexes(options: IndexInformationOptions): Promise<any[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('indexes', this.collectionName, JSON.stringify([options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).indexes(options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Indexes', this.collectionName, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tindexExists(indexes: string | string[], options?: IndexInformationOptions): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('indexExists', this.collectionName, JSON.stringify([indexes, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).indexExists(indexes, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Index Exists', this.collectionName, indexes, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tinsertMany(docs: T[], options?: BulkWriteOptions, bypassLogs = false, bypassCheckSchema = false, bypassMonitor = false): Promise<T[]> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!docs.length) {\n\t\t\t\tresolve([]);\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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\tlet monitor = null;\n\t\t\t\t\n\t\t\t\tif (!bypassMonitor) {\n\t\t\t\t\tmonitor = new MonitorMongo('insertMany', this.collectionName, JSON.stringify([validDocs, options]));\n\t\t\t\t}\n\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).insertMany(<OptionalUnlessRequiredId<T>[]>validDocs, options).then(res => {\n\t\t\t\t\tif (monitor) {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t}\n\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\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.acknowledged);\n\t\t\t\t\t}\n\t\t\t\t}, err => {\n\t\t\t\t\tif (monitor) {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t}\n\t\t\t\t\tconsole.log(new Date(), 'Error Insert Many', this.collectionName, validDocs, options, 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?: InsertOneOptions, 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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\tlet monitor = new MonitorMongo('insertOne', this.collectionName, JSON.stringify([doc, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).insertOne(<OptionalUnlessRequiredId<T>>doc, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\tresolve(doc);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Insert One', this.collectionName, doc, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tlistIndexes(options?: ListIndexesOptions): ListIndexesCursor {\n\t\tlet monitor = new MonitorMongo('listIndexes', this.collectionName, JSON.stringify([options]));\n\t\tlet cursor = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).listIndexes(options);\n\t\tcursor.on('close', ev => {\n\t\t\tmonitor.finish();\n\t\t\treturn ev;\n\t\t});\n\t\treturn cursor;\n\t}\n\n\trename(newName: string, options?: RenameOptions): Promise<Collection<Document>> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('rename', this.collectionName, JSON.stringify([newName, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).rename(newName, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Rename', this.collectionName, newName, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\treplaceOne(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T>, replacement: T, options?: ReplaceOptions, 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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\t\n\t\t\tif (this.timestamps) {\n\t\t\t\treplacement.updatedAt = date;\n\t\t\t}\n\n\t\t\tif (this.useVersions) {\n\t\t\t\tif (!doc) {\n\t\t\t\t\tdoc = await this.findOne(<any>filter, null, true);\n\t\t\t\t}\n\n\t\t\t\tif (doc) {\n\t\t\t\t\tif (this.timestamps && !replacement.createdAt && doc.createdAt) {\n\t\t\t\t\t\treplacement.createdAt = doc.createdAt;\n\t\t\t\t\t}\n\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\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\n\t\t\t\t\t\tif (doc.__v >= 4) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 4}}]});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet monitor = new MonitorMongo('replaceOne', this.collectionName, JSON.stringify([filter, replacement, options]));\n\t\t\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options).then(res => {\n\t\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\t\tresolve(res.modifiedCount);\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.acknowledged);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\t\tconsole.log(new Date(), 'Error Replace One', this.collectionName, filter, replacement, options, 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: <any>{\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\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\t\tid_document: docId,\n\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['invalidVersion - merge', doc, filter, updatedDoc, options])) < 200000 ? JSON.stringify(['invalidVersion - merge', doc, filter, updatedDoc, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet monitor = new MonitorMongo('replaceOne', this.collectionName, JSON.stringify([filter, updatedDoc, options]));\n\t\t\t\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, updatedDoc, options).then(res => {\n\t\t\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\t\t\tresolve(res.modifiedCount);\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.acknowledged);\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\tmonitor.finish();\n\t\t\t\t\t\t\t\tconsole.log(new Date(), 'Error Replace One', this.collectionName, filter, updatedDoc, options, 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 if (options && options.upsert) {\n\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\treplacement.createdAt = date;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!replacement._id) {\n\t\t\t\t\t\treplacement._id = objectIdHexString();\n\t\t\t\t\t}\n\n\t\t\t\t\treplacement.__v = 0;\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: replacement._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, replacement, options])) < 200000 ? JSON.stringify(['upsert', filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet monitor = new MonitorMongo('replaceOne', this.collectionName, JSON.stringify([filter, replacement, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\tresolve(res.modifiedCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Replace One', this.collectionName, filter, replacement, options, err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject('No Document');\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (options && options.upsert) {\n\t\t\t\t\tif (this.timestamps && !replacement.createdAt) {\n\t\t\t\t\t\treplacement.createdAt = date;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!replacement._id) {\n\t\t\t\t\t\treplacement._id = objectIdHexString();\n\t\t\t\t\t}\n\n\t\t\t\t\treplacement.__v = 0;\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tif (!options) {\n\t\t\t\t\t\toptions = <FindOneAndReplaceOptions>{returnDocument: 'before'};\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t(<FindOneAndReplaceOptions>options).returnDocument = 'before';\n\t\t\t\t\t}\n\n\t\t\t\t\tlet monitor = new MonitorMongo('findOneAndReplace', this.collectionName, JSON.stringify([filter, replacement, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndReplace(<any>filter, replacement, <FindOneAndReplaceOptions>options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tlet doc = res;\n\n\t\t\t\t\t\tif (doc) {\n\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: replacement._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, replacement, options])) < 200000 ? JSON.stringify(['upsert', filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Find One And Replace', this.collectionName, filter, replacement, options, err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet monitor = new MonitorMongo('replaceOne', this.collectionName, JSON.stringify([filter, replacement, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\tresolve(res.modifiedCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Replace One', this.collectionName, filter, replacement, options, 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});\n\t}\n\n\tupdateMany(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T>, update: MongoManagerUpdateFilter<T>, options?: UpdateOptions, bypassLogs = false, bypassCheckSchema = false, bypassVersions = false) : Promise<number> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif ((!update.$inc || JSON.stringify(update.$inc) === '{}') && (!update.$set || JSON.stringify(update.$set) === '{}') && (!update.$setOnInsert || JSON.stringify(update.$setOnInsert) === '{}') && (!update.$unset || JSON.stringify(update.$unset) === '{}')) {\n\t\t\t\tresolve(1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\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\tupdate.$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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\n\t\t\tif ((this.useVersions && !bypassVersions) || (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\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'updateMany',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\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\t\t\n\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (doc.__v >= 4) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 4}}]});\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif (!objectContainsPropertyDeep(update, '__v')) {\n\t\t\t\t\t\t\tif (!update.$inc) {\n\t\t\t\t\t\t\t\tupdate.$inc = {__v: 1};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (!update.$inc.__v) {\n\t\t\t\t\t\t\t\tupdate.$inc.__v = 1;\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\n\t\t\tlet monitor = new MonitorMongo('updateMany', this.collectionName, JSON.stringify([filter, update, options]));\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateMany(<any>filter, update, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\tresolve(res.modifiedCount);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Update Many', this.collectionName, filter, update, options, err);\n\t\t\t\treject(err)\n\t\t\t});\n\t\t});\n\t}\n\n\tupdateOne(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T>, update: MongoManagerUpdateFilter<T>, options?: UpdateOptions, bypassLogs = false, bypassCheckSchema = false) : 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();\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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\n\t\t\tif ((!update.$inc || JSON.stringify(update.$inc) === '{}') && (!update.$set || JSON.stringify(update.$set) === '{}') && (!update.$setOnInsert || JSON.stringify(update.$setOnInsert) === '{}') && (!update.$unset || JSON.stringify(update.$unset) === '{}')) {\n\t\t\t\tresolve(1);\n\t\t\t\treturn;\n\t\t\t}\n\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\tupdate.$set.updatedAt = date;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (this.useVersions) {\n\t\t\t\tlet doc = await this.findOne(filter, null, true);\n\n\t\t\t\tif (doc) {\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\tversionDoc._id = {_id: doc._id, __v: doc.__v};\n\t\n\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t\n\t\t\t\t\tif (doc.__v >= 4) {\n\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 4}}]});\n\t\t\t\t\t}\n\t\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 = {__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\tupdate.$inc.__v = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet monitor = new MonitorMongo('updateOne', this.collectionName, JSON.stringify([filter, update, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\tresolve(res.modifiedCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Update One', this.collectionName, filter, update, options, err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse if (options && options.upsert) {\n\t\t\t\t\tif (!update.$setOnInsert) {\n\t\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\t\tupdate.$setOnInsert = <any>{\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\tcreatedAt: new Date()\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\tupdate.$setOnInsert = <any>{\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};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (!update.$setOnInsert._id) {\n\t\t\t\t\t\t\tupdate.$setOnInsert._id = objectIdHexString();\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\t\tupdate.$setOnInsert.createdAt = new Date();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: update.$setOnInsert._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, update, options])) < 200000 ? JSON.stringify(['upsert', filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet monitor = new MonitorMongo('updateOne', this.collectionName, JSON.stringify([filter, update, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\tresolve(res.modifiedCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Update One', this.collectionName, filter, update, options, err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject('No Document');\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (options && options.upsert) {\n\t\t\t\t\tif (!update.$setOnInsert) {\n\t\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t\t\t_id: objectIdHexString()\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (!update.$setOnInsert._id) {\n\t\t\t\t\t\t\tupdate.$setOnInsert._id = objectIdHexString();\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\t\tupdate.$setOnInsert.createdAt = new Date();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tif (!options) {\n\t\t\t\t\t\toptions = <FindOneAndUpdateOptions>{returnDocument: 'before'};\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t(<FindOneAndUpdateOptions>options).returnDocument = 'before';\n\t\t\t\t\t}\n\n\t\t\t\t\tlet monitor = new MonitorMongo('findOneAndUpdate', this.collectionName, JSON.stringify([filter, update, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).findOneAndUpdate(<any>filter, update, <FindOneAndUpdateOptions>options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tlet doc = res.value;\n\n\t\t\t\t\t\tif (doc) {\n\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: <any>doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tresolve(res.ok);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (update.$setOnInsert) {\n\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: update.$setOnInsert._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, update, options])) < 200000 ? JSON.stringify(['upsert', filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\n\t\t\t\t\t\t\tresolve(res.ok);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Find One And Update', this.collectionName, filter, update, options, err);\n\t\t\t\t\t\treject(err)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet monitor = new MonitorMongo('updateOne', this.collectionName, JSON.stringify([filter, update, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\tresolve(res.modifiedCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Update One', this.collectionName, filter, update, options, 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});\n\t}\n\t\n\twatchCollection(pipeline = [], options?: ChangeStreamOptions): ChangeStream<T> {\n\t\tlet stream = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).watch(pipeline, options);\n\t\tstream.on('change', evData => {\n\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\treturn evData;\n\t\t});\n\t\treturn <ChangeStream<T>>stream;\n\t}\n\n\twatchCollectionWithAggregate(pipeline = [], options?: ChangeStreamOptions): ChangeStream<T> {\n\t\tlet stream = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).watch(pipeline, options);\n\t\tstream.on('change', evData => {\n\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\treturn evData;\n\t\t});\n\t\treturn <ChangeStream<T>>stream;\n\t}\n}\n\nexport class MongoManagerUserCollection<T extends CollectionDocument> extends MongoManagerCollection<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: {}, attempts: 0}}).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 { AggregateOptions, AggregationCursor, BulkWriteOptions, ChangeStream, ChangeStreamOptions, CommandOperationOptions, CountDocumentsOptions, CreateCollectionOptions, CreateIndexesOptions, CursorStreamOptions, DeleteOptions, Filter, FindCursor, FindOneAndDeleteOptions, FindOneAndReplaceOptions, FindOneAndUpdateOptions, FindOptions, IndexDescription, IndexInformationOptions, InsertOneOptions, ListIndexesCursor, ListIndexesOptions, ObjectId, RenameOptions, ReplaceOptions, UpdateOptions, OptionalId, Collection, CollectionInfo, OptionalUnlessRequiredId, AnyBulkWriteOperation, BulkWriteResult, DbStatsOptions } from 'mongodb';\nimport { LookupTables } from '../models/report-builder.model';\nimport { ResolveIOServer } from '../index';\nimport { Users } from '../collections/user.collection';\nimport { buildRbLookups, buildRbSchema, dateReviver, deepCopy, getBinarySize, getMongoMergeUpdatedDoc } from '../util/common';\nimport { UserModel } from '../models/user.model';\nimport { Logs } from '../collections/log.collection';\nimport * as NodeCache from 'node-cache';\nconst crypto = require('crypto');\nconst scmp = require('scmp');\nimport { MonitorMongo } from './monitor.manager';\nimport { CollectionDocument, Document } from '../models/collection-document.model';\nimport { cpus } from 'os';\nconst numCPUs = cpus().length;\nconst v8 = require('v8');\nimport async from 'async';\n\ninterface MongoQueueModel {\n\t_id: number,\n\tname_collection: string;\n\tlookup_collections: 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\tcacheId: number;\n\tinvalidateFlag: boolean;\n\tinvalidateCount: number;\n}\n\n// export declare interface MongoManagerFilterOperators<T> extends Document {\nexport declare interface MongoManagerFilterParamaterOperators<P> {\n\t$eq?: P;\n $gt?: P;\n $gte?: P;\n $in?: P extends Array<any> ? P : P[];\n $lt?: P;\n $lte?: P;\n $ne?: P;\n $nin?: P extends Array<any> ? P : P[];\n $not?: P extends string ? MongoManagerFilterParamaterOperators<P> | RegExpConstructor : MongoManagerFilterParamaterOperators<P>;\n $exists?: boolean;\n $expr?: any[]\n $regex?: P extends string ? RegExpConstructor | string : never;\n $options?: P extends string ? string : never;\n $geoIntersects?: {\n $geometry: Document;\n };\n $geoWithin?: Document;\n $near?: Document;\n $nearSphere?: Document;\n $maxDistance?: number;\n $all?: any[];\n $elemMatch?: Document;\n $size?: P extends any[] ? number : never;\n}\n\nexport declare interface MongoManagerFilterOperators<T> extends Document { //TODO: Remove extends document when I get answer on S.O.\n $and?: MongoManagerFilter<T>[] | MongoManagerFilterOperators<T>;\n $nor?: MongoManagerFilter<T>[] | MongoManagerFilterOperators<T>;\n $or?: MongoManagerFilter<T>[] | MongoManagerFilterOperators<T>;\n $text?: {\n $search: string;\n $language?: string;\n $caseSensitive?: boolean;\n $diacriticSensitive?: boolean;\n };\n $where?: string | ((this: T) => boolean);\n $comment?: string | Document;\n}\n\n// function isDotStringRegExp(obj: Object, dotKey: string): boolean {\n// \tlet keyData = dotKey.split('.');\n// \tlet objData = obj;\n\t\n// \tfor (let i = 0; i < keyData.length; i++) {\n// \t\tlet key = keyData[i];\n// \t\tif (objData.hasOwnProperty(key)) {\n// \t\t\tobjData = objData[key];\n\t\t\t\n// \t\t\tif (i === keyData.length - 1) {\n// \t\t\t\treturn true;\n// \t\t\t}\n// \t\t}\n// \t\telse {\n// \t\t\treturn false;\n// \t\t}\n// \t}\n// }\n\n// export declare type MongoManagerDotStringFilter<T> = {\n// \t[key: string]: (isDotStringRegExp(T, key) ? any : never);\n// };\n\nexport declare type MongoManagerFilter<T> = {\n\t[P in keyof T]?: T[P] | MongoManagerFilterParamaterOperators<T[P]>;\n};\n\nexport declare type MongoManagerUnsetFilter<T> = {\n\t[P in keyof T]?: number | boolean;\n};\n\nexport declare type MongoManagerIncFilter<T> = {\n\t[P in keyof T]?: number;\n};\n\nexport declare type MongoManagerUpdateFilter<T> = {\n $inc?: MongoManagerIncFilter<T> | Document;\n $set?: MongoManagerFilter<T> | Document;\n $setOnInsert?: MongoManagerFilter<T> | Document;\n $unset?: MongoManagerUnsetFilter<T> | Document;\n};\n\nexport class MongoManager {\n\tprivate _collections: MongoManagerCollection<CollectionDocument>[] = [];\n\tprivate _mongoQueue: MongoQueueModel[] = [];\n\tprivate _mongoQueueId = 0;\n\tprivate _mongoQueueRunning = false;\n\n\tprivate _nodeCache;\n\tprivate _mongoQueueCacheId = 1;\n\n\tprivate _heapStats = v8.getHeapStatistics();\n\tprivate _heapLimit = this._heapStats.heap_size_limit / numCPUs / 8;\n\n\tprivate _serverCollections: (CollectionInfo | Pick<CollectionInfo, \"name\" | \"type\">)[] = [];\n\n\tprivate _debugMongoQueueHits = 0;\n\tprivate _debugRemoveCacheHits = 0;\n\tprivate _debugMongoQueueCollections = [];\n\n\tconstructor() {\n\t\tthis._nodeCache = new NodeCache( { stdTTL: 0, checkperiod: 0 } );\n\n\t\tsetInterval(() => {\n\t\t\tif (ResolveIOServer.getMainServer().getSubscriptionManager().getEnableDebug()) {\n\t\t\t\tconsole.log(new Date(), 'Mongo Manager', 'Collections', this._collections.length);\n\t\t\t\tconsole.log(new Date(), 'Mongo Manager', 'Mongo Queue', this._mongoQueue.length, JSON.stringify(this._mongoQueue.sort((a, b) => a.name_collection.localeCompare(b.name_collection)), null, 2));\n\t\t\t\tconsole.log(new Date(), 'Mongo Manager', 'Server Collections', this._serverCollections.length);\n\t\t\t\tconsole.log(new Date(), 'Mongo Manager', 'Mongo Queue Hits', this._debugMongoQueueHits);\n\t\t\t\tconsole.log(new Date(), 'Mongo Manager', 'Mongo Queue Collections', this._debugMongoQueueCollections.sort((a, b) => a.collection.localeCompare(b.collection) || a.function.localeCompare(b.function)));\n\t\t\t\tconsole.log(new Date(), 'Mongo Manager', 'Cache Cleanup Hits', JSON.stringify(this._debugRemoveCacheHits, null, 2));\n\t\t\t}\n\t\t\t\t\n\t\t\tthis._debugMongoQueueHits = 0;\n\t\t\tthis._debugRemoveCacheHits = 0;\n\t\t\tthis._debugMongoQueueCollections = [];\n\t\t}, 60000);\n\n\t\tthis.initServerCollections();\n\n\t\tthis.runQueue();\n\t}\n\n\tasync initServerCollections() {\n\t\tlet collections = await ResolveIOServer.getMainDB().listCollections().toArray();\n\t\tthis._serverCollections = collections;\n\t}\n\n\tgetServerCollections() {\n\t\treturn this._serverCollections;\n\t}\n\n\tregisterCollection(collection: MongoManagerCollection<CollectionDocument>) {\n\t\tif (collection.collectionOptions && collection.collectionOptions.timeseries && collection.collectionOptions.timeseries.timeField && this._serverCollections.some(a => a.name === collection.collectionName && a.type === 'collection')) {\n\t\t\tResolveIOServer.getMainDB().dropCollection(collection.collectionName).then(() => {\n\t\t\t\tthis.createCollection(collection);\n\t\t\t});\n\t\t}\n\t\n\t\tthis._collections.push(collection);\n\t}\n\n\tcreateCollection(collection: MongoManagerCollection<CollectionDocument>) {\n\t\tResolveIOServer.getMainDB().createCollection<CollectionDocument>(collection.collectionName, collection.collectionOptions);\n\t}\n\n\tcollections() {\n\t\treturn this._collections;\n\t}\n\n\tcollection(collectionName: string): MongoManagerCollection<CollectionDocument> | MongoManagerUserCollection<CollectionDocument> {\n\t\treturn this._collections.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.splice(0, 0, mongoQueue);\n\t\t}\n\t}\n\n\tprivate async runQueue() {\n\t\tsetInterval(() => {\n\t\t\tif (!this._mongoQueueRunning) {\n\t\t\t\tconst queueArr = this._mongoQueue.filter(a => !a.running && a.cbs.length);\n\t\t\t\tif (queueArr.length) {\n\t\t\t\t\tthis._mongoQueueRunning = true;\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = queueArr.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tthis._debugMongoQueueHits += 1;\n\n\t\t\t\t\t\tlet mongoQueue = queueArr[i];\n\n\t\t\t\t\t\tif (!this._debugMongoQueueCollections.some(a => a.collection === mongoQueue.name_collection && a.function === mongoQueue.name_function)) {\n\t\t\t\t\t\t\tthis._debugMongoQueueCollections.push({\n\t\t\t\t\t\t\t\tcollection: mongoQueue.name_collection,\n\t\t\t\t\t\t\t\tfunction: mongoQueue.name_function,\n\t\t\t\t\t\t\t\thits: 1\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\tthis._debugMongoQueueCollections.filter(a => a.collection === mongoQueue.name_collection && a.function === mongoQueue.name_function)[0].hits += 1;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tmongoQueue.running = true;\n\t\t\t\t\t\tmongoQueue.invalidateFlag = false;\n\n\t\t\t\t\t\tif (mongoQueue.cacheId) {\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tlet res = JSON.parse(this._nodeCache.get(mongoQueue.cacheId), dateReviver);\n\n\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\tcb(null, res, true);\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tmongoQueue.cbs = [];\n\t\t\t\t\t\t\t\tmongoQueue.running = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcatch {\n\t\t\t\t\t\t\t\tmongoQueue.cacheId = 0;\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\tif (!mongoQueue.cacheId) {\n\t\t\t\t\t\t\tif (!mongoQueue.name_function_addt) {\n\t\t\t\t\t\t\t\tlet monitor = new MonitorMongo(mongoQueue.name_function, mongoQueue.name_collection, JSON.stringify(mongoQueue.data_function));\n\t\t\t\t\t\t\t\tResolveIOServer.getMainDB().collection(mongoQueue.name_collection)[mongoQueue.name_function](...mongoQueue.data_function).then(res => {\n\t\t\t\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\t\t\t\tif (!mongoQueue.invalidateFlag) {\n\t\t\t\t\t\t\t\t\t\tmongoQueue.invalidateCount = 0;\n\n\t\t\t\t\t\t\t\t\t\tlet stringifyLength = 0;\n\t\t\t\t\t\t\t\t\t\tlet stringifyFail = false;\n\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tlet stringify = JSON.stringify(res).replace(/[\\[\\]\\,\\\"]/g,'');\n\t\t\t\t\t\t\t\t\t\t\tstringifyLength\t = stringify.length;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcatch(e) {\n\t\t\t\t\t\t\t\t\t\t\tstringifyFail = true;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif (!stringifyFail && res !== null && res !== undefined && (!Array.isArray(res) || res.length) && stringifyLength < 10000000) {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cacheId = this._mongoQueueCacheId;\n\t\t\t\t\t\t\t\t\t\t\tthis._mongoQueueCacheId += 1;\n\n\t\t\t\t\t\t\t\t\t\t\tthis.addToCache(mongoQueue.cacheId, res);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cacheId = 0;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\t\tcb(null, res, false);\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\tif (mongoQueue.cbs_next.length) {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs = mongoQueue.cbs_next;\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs_next = [];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs = [];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tif (mongoQueue.invalidateCount >= 5) {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.invalidateCount = 0;\n\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\t\t\tcb(null, res, false);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs = mongoQueue.cbs.concat(mongoQueue.cbs_next);\n\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs_next = [];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tmongoQueue.running = false;\n\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\tmonitor.finish();\n\n\t\t\t\t\t\t\t\t\tconsole.log(new Date(), 'Error ' + mongoQueue.name_function, mongoQueue.name_collection, ...mongoQueue.data_function, err);\n\n\t\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\tcb(err, null, false);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tmongoQueue.cbs_next.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\tcb(err, null, false);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id) >= 0) {\n\t\t\t\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\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tlet monitor = new MonitorMongo(mongoQueue.name_function, mongoQueue.name_collection, JSON.stringify([...mongoQueue.data_function, mongoQueue.name_function_addt, ...mongoQueue.data_function_addt]));\n\t\t\t\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\t\t\t\tmonitor.finish();\n\t\t\t\t\t\t\t\t\tif (!mongoQueue.invalidateFlag) {\n\t\t\t\t\t\t\t\t\t\tmongoQueue.invalidateCount = 0;\n\n\t\t\t\t\t\t\t\t\t\tlet stringifyLength = 0;\n\t\t\t\t\t\t\t\t\t\tlet stringifyFail = false;\n\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tlet stringify = JSON.stringify(res).replace(/[\\[\\]\\,\\\"]/g,'');\n\t\t\t\t\t\t\t\t\t\t\tstringifyLength\t = stringify.length;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcatch(e) {\n\t\t\t\t\t\t\t\t\t\t\tstringifyFail = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tif (!stringifyFail && res !== null && res !== undefined && (!Array.isArray(res) || res.length) && stringifyLength < 10000000) {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cacheId = this._mongoQueueCacheId;\n\t\t\t\t\t\t\t\t\t\t\tthis._mongoQueueCacheId += 1;\n\t\t\t\t\t\t\t\t\t\t\tthis.addToCache(mongoQueue.cacheId, res);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cacheId = 0;\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\t\tcb(null, res, false);\n\t\t\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\t\t\tif (mongoQueue.cbs_next.length) {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs = mongoQueue.cbs_next;\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs_next = [];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs = [];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tif (mongoQueue.invalidateCount >= 5) {\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.invalidateCount = 0;\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\t\t\tcb(null, res, false);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs = mongoQueue.cbs.concat(mongoQueue.cbs_next);\n\t\t\t\t\t\t\t\t\t\tmongoQueue.cbs_next = [];\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\tmongoQueue.running = false;\n\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tmongoQueue.cbs.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\tcb(err, null, false);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tmongoQueue.cbs_next.forEach(cb => {\n\t\t\t\t\t\t\t\t\t\tcb(err, null, false);\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\n\t\t\t\t\t\t\t\t\tif (this._mongoQueue.map(a => a._id).indexOf(mongoQueue._id) >= 0) {\n\t\t\t\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\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._mongoQueueRunning = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}, 25);\n\t}\n\n\tprivate addToCache(id, data) {\n\t\tlet nodeCacheSize = this._nodeCache.getStats().vsize;\n\t\t\t\t\t\t\n\t\tif (nodeCacheSize > this._heapLimit) {\n\t\t\tlet deleteCount = 0;\n\n\t\t\tconst queueArr = this._mongoQueue.filter(a => a.cacheId && !a.running && !a.cbs.length);\n\n\t\t\tfor (let zz = queueArr.length - 1; zz >= 0; zz--) {\n\t\t\t\tthis._debugRemoveCacheHits += 1;\n\n\t\t\t\tlet queue = queueArr[zz];\n\n\t\t\t\tthis._nodeCache.del(queue.cacheId);\n\t\t\t\tqueue.cacheId = 0;\n\n\t\t\t\tif (this._mongoQueue.map(a => a._id).indexOf(queue._id) >= 0) {\n\t\t\t\t\tthis._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(queue._id), 1);\n\t\t\t\t}\n\n\t\t\t\tdeleteCount += 1;\n\n\t\t\t\tnodeCacheSize = this._nodeCache.getStats().vsize;\n\n\t\t\t\tif (nodeCacheSize < this._heapLimit * 0.75) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tconsole.log('Query Cache: ' + 'Too Big, - Deleted: ' + deleteCount + ' - ' + nodeCacheSize);\n\t\t}\n\n\t\tthis._nodeCache.set(id, JSON.stringify(data));\n\t}\n\n\tpublic invalidateQueryCache(collection: string) {\n\t\tlet queueArr = this._mongoQueue.filter(a => (a.name_collection === collection || a.lookup_collections.includes(collection)));\n\t\tfor (let i = queueArr.length - 1; i >= 0; i--) {\n\t\t\tlet queue = queueArr[i];\t\t\t\n\t\t\tif (queue.cacheId) {\n\t\t\t\tthis._nodeCache.del(queue.cacheId);\n\t\t\t\tqueue.cacheId = 0;\n\t\t\t}\n\n\t\t\tif (queue.running) {\n\t\t\t\tqueue.invalidateFlag = true;\n\t\t\t\tqueue.invalidateCount += 1;\n\t\t\t}\n\t\t\telse if (!queue.cbs.length) {\n\t\t\t\tif (this._mongoQueue.map(a => a._id).indexOf(queue._id) >= 0) {\n\t\t\t\t\tthis._mongoQueue.splice(this._mongoQueue.map(a => a._id).indexOf(queue._id), 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport class MongoManagerModel<T extends CollectionDocument> {\n\tcollection_main: MongoManagerCollection<T> | MongoManagerUserCollection<T> = null;\n\tcollection_version: MongoManagerCollection<T> | MongoManagerUserCollection<T> = null;\n\n\tconstructor(options: MongoManagerCollectionOptions) {\n\t\tif (options.collectionName === 'users') {\n\t\t\tthis.collection_main = new MongoManagerUserCollection<T>(options);\n\t\t}\n\t\telse {\n\t\t\tthis.collection_main = new MongoManagerCollection<T>(options);\n\t\t}\n\n\t\tif (options.useVersionCollection) {\n\t\t\tthis.collection_main.useVersions = true;\n\t\t\t\n\t\t\tlet versionSchema = deepCopy(options.schema);\n\t\t\tversionSchema._id.type = 'Object';\n\t\t\tversionSchema._id.blackbox = true;\n\n\t\t\tlet versionOptions: MongoManagerCollectionOptions = {\n\t\t\t\tcollectionName: options.collectionName + '.versions',\n\t\t\t\tschema: versionSchema,\n\t\t\t\tuseVersionCollection: false,\n\t\t\t\tuseReportBuilder: false,\n\t\t\t\treportBuilderLookupTables: [],\n\t\t\t\ttimestamps: true,\n\t\t\t\tcreateLogs: false,\n\t\t\t\tcheckSchema: false,\n\t\t\t\tcollectionOptions: null\n\t\t\t};\n\n\t\t\tif (options.collectionName === 'users') {\t\n\t\t\t\tthis.collection_version = new MongoManagerUserCollection<T>(versionOptions);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.collection_version = new MongoManagerCollection<T>(versionOptions);\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 = options.collectionName + '.versions';\n\t\t}\n\t}\n}\n\nexport interface MongoManagerCollectionOptions {\n\tcollectionName: string;\n\tschema: object;\n\tuseVersionCollection: boolean;\n\tuseReportBuilder: boolean;\n\treportBuilderLookupTables: LookupTables[]\n\ttimestamps: boolean;\n\tcreateLogs: boolean;\n\tcheckSchema: boolean;\n\tcollectionOptions: CreateCollectionOptions;\n}\n\nexport class MongoManagerCollection<T extends CollectionDocument> {\n\tcollectionName = '';\n\tcheckSchema = false;\n\tsimplschema = null;\n\trbSchema = null;\n\ttimestamps = false;\n\tuseVersions = false;\n\tversionCollection = '';\n\tcreateLogs = true;\n\tuseRB = false;\n\tcollectionOptions: CreateCollectionOptions;\n\t\n\tconstructor(options: MongoManagerCollectionOptions) {\n\t\tthis.collectionName = options.collectionName;\n\t\tthis.simplschema = new SimpleSchema(options.schema);\n\t\tthis.timestamps = options.timestamps;\n\t\tthis.createLogs = options.createLogs;\n\t\tthis.checkSchema = options.checkSchema;\n\t\tthis.collectionOptions = options.collectionOptions;\n\n\t\tif (options.useReportBuilder) {\n\t\t\tthis.useRB = true;\n\t\t\tlet schemaCopy = deepCopy(options.schema);\n\t\t\tlet rbSchema = buildRbLookups(options.reportBuilderLookupTables, schemaCopy, []);\n\t\t\tthis.rbSchema = buildRbSchema(rbSchema);\n\t\t}\n\n\t\tlet interval = setInterval(() => {\n\t\t\tif (ResolveIOServer && ResolveIOServer.getMainServer() && ResolveIOServer.getMongoManager() && ResolveIOServer.getMongoManager().getServerCollections().length) {\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\tprivate static indexQueue = async.queue(async (task, callback) => {\n const { action, collection, specs, options } = task;\n \n const dbCollection = ResolveIOServer.getMainDB().collection(collection.collectionName, collection.collectionOptions);\n \n if (!dbCollection) {\n return callback(new Error(`Collection ${collection.collectionName} not found`));\n }\n\n let monitor = new MonitorMongo(action, collection.collectionName, JSON.stringify([specs, options]));\n\n const createIndex = async () => {\n try {\n const result = await dbCollection[action](...specs, options);\n monitor.finish();\n callback(null, result);\n } catch (err) {\n if (err.code === 85 || err.message.includes('IndexOptionsConflict')) {\n try {\n const existingIndexName = collection.extractIndexNameFromError(err.message);\n if (existingIndexName) {\n await dbCollection.dropIndex(existingIndexName);\n return await createIndex();\n }\n } catch (innerError) {\n callback(innerError);\n }\n }\n monitor.finish();\n callback(err);\n }\n };\n\n await createIndex();\n }, 1);\n\n // Method to extract index name from error message\n extractIndexNameFromError(errorMessage) {\n\t\tlet regexPattern = /Index already exists with a different name: (\\S+)/;\n\t\tlet matches = errorMessage.match(regexPattern);\n\t\n\t\tif (!matches || matches.length <= 1) {\n\t\t\t// If the first pattern doesn't match, try the second pattern\n\t\t\tregexPattern = /existing index:.*name: \"([^\"]+)\"/;\n\t\t\tmatches = errorMessage.match(regexPattern);\n\t\t}\n\t\n\t\treturn matches && matches.length > 1 ? matches[1] : null;\n\t}\t\n\n\taggregate(pipeline: object[], options?: AggregateOptions, skipCache = false) : Promise<any[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\t// if (!skipCache) {\n\t\t\t// \tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t// \t\t_id: 0,\n\t\t\t// \t\tname_collection: this.collectionName,\n\t\t\t// \t\tname_function: 'aggregate',\n\t\t\t// \t\tname_function_addt: 'toArray',\n\t\t\t// \t\tdata_function: [pipeline, options],\n\t\t\t// \t\tdata_function_addt: [],\n\t\t\t// \t\tcbs: [(err, res, cached) => {\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\tcbs_next: [],\n\t\t\t// \t\trunning: false,\n\t\t\t// \t\tcacheId: 0,\n\t\t\t// \t\tlookup_collections: pipeline.filter(a => a['$lookup'] && a['$lookup'].from).map(a => a['$lookup'].from).filter((elem, index, self) => {\n\t\t\t// \t\t\treturn index === self.indexOf(elem);\n\t\t\t// \t\t}),\n\t\t\t// \t\tinvalidateFlag: false,\n\t\t\t// \t\tinvalidateCount: 0\n\t\t\t// \t});\n\t\t\t// }\n\t\t\t// else {\n\t\t\t// \tlet monitor = new MonitorMongo('aggregate', this.collectionName, JSON.stringify([pipeline, options]));\n\t\t\t// \tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).aggregate(pipeline, options).toArray().then(res => {\n\t\t\t// \t\tmonitor.finish();\n\t\t\t// \t\tresolve(res);\n\t\t\t// \t}, err => {\n\t\t\t// \t\tmonitor.finish();\n\t\t\t// \t\tconsole.log(new Date(), 'Error Aggregate', this.collectionName, pipeline, options, err);\n\t\t\t// \t\treject(err);\n\t\t\t// \t});\n\t\t\t// }\n\n\t\t\tlet monitor = new MonitorMongo('aggregate', this.collectionName, JSON.stringify([pipeline, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).aggregate(pipeline, options).toArray().then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Aggregate', this.collectionName, pipeline, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\taggregateCount(pipeline: object[], options?: AggregateOptions) : 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, cached) => {\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\tcacheId: 0,\n\t\t\t\tlookup_collections: pipeline.filter(a => a['$lookup'] && a['$lookup'].from).map(a => a['$lookup'].from).filter((elem, index, self) => {\n\t\t\t\t\treturn index === self.indexOf(elem);\n\t\t\t\t}),\n\t\t\t\tinvalidateFlag: false,\n\t\t\t\tinvalidateCount: 0\n\t\t\t});\n\t\t});\n\t}\n\n\taggregateCursor(pipeline: object[], options?: AggregateOptions): AggregationCursor {\n\t\tlet monitor = new MonitorMongo('aggregateCursor', this.collectionName, JSON.stringify([pipeline, options]));\n\t\tlet cursor = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).aggregate(pipeline, options);\n\t\tcursor.on('close', ev => {\n\t\t\tmonitor.finish();\n\t\t\treturn ev;\n\t\t});\n\n\t\treturn cursor;\n\t}\n\n\taggregateStream(pipeline: object[], options?: AggregateOptions, streamOptions?: CursorStreamOptions) {\n\t\tlet monitor = new MonitorMongo('aggregateStream', this.collectionName, JSON.stringify([pipeline, options, streamOptions]));\n\t\tlet stream = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).aggregate(pipeline, options).stream(streamOptions);\n\t\tstream.on('end', ev => {\n\t\t\tmonitor.finish();\n\t\t\treturn ev;\n\t\t});\n\n\t\treturn stream;\n\t}\n\n\t// bulkWrite(operations: AnyBulkWriteOperation<T>[], options: BulkWriteOptions): Promise<BulkWriteResult> {\n\tbulkWrite(operations: any[], options?: BulkWriteOptions): Promise<BulkWriteResult> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('bulkWrite', this.collectionName, JSON.stringify([operations.slice(-100), options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).bulkWrite(operations, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Bulk Write', this.collectionName, operations.slice(-100), options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tcountDocuments(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: CountDocumentsOptions): Promise<number> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('countDocuments', this.collectionName, JSON.stringify([filter, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).countDocuments(<any>filter, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Count Documents', this.collectionName, filter, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\t//Helper Function (1 or Many) - Not Real Mongo Function\n\tcreate(f_docs: T | T[], options?: InsertOneOptions | BulkWriteOptions): Promise<T | T[]> {\n\t\tif (!Array.isArray(f_docs)) {\n\t\t\treturn this.insertOne(f_docs, <InsertOneOptions>options);\n\t\t}\n\t\telse if (f_docs.length === 1) {\n\t\t\treturn this.insertOne(f_docs[0], <InsertOneOptions>options);\n\t\t}\n\n\t\treturn this.insertMany(f_docs, <BulkWriteOptions>options);\n\t}\n\n\tcreateIndex(fieldOrSpec: any, options?: CreateIndexesOptions): Promise<string> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tMongoManagerCollection.indexQueue.push({\n\t\t\t\taction: 'createIndex',\n\t\t\t\tcollection: this, // Current instance\n\t\t\t\tspecs: [fieldOrSpec],\n\t\t\t\toptions: options\n\t\t\t}, (err, result) => {\n\t\t\t\tif (err) reject(err);\n\t\t\t\telse resolve(result);\n\t\t\t});\n\t\t});\n\t}\n\t\n\tcreateIndexes(indexSpecs: IndexDescription[], options?: CreateIndexesOptions): Promise<string[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tMongoManagerCollection.indexQueue.push({\n\t\t\t\taction: 'createIndexes',\n\t\t\t\tcollection: this, // Current instance\n\t\t\t\tspecs: [indexSpecs],\n\t\t\t\toptions: options\n\t\t\t}, (err, result) => {\n\t\t\t\tif (err) reject(err);\n\t\t\t\telse resolve(result);\n\t\t\t});\n\t\t});\n\t}\n\n\tdeleteMany(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: DeleteOptions, bypassLogs = false): Promise<number> {\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\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 1}}]});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet monitor = new MonitorMongo('deleteMany', this.collectionName, JSON.stringify([filter, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).deleteMany(<any>filter, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\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.acknowledged);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Delete Many', this.collectionName, filter, options, err);\n\t\t\t\treject(err)\n\t\t\t});\n\t\t});\n\t}\n\n\tdeleteOne(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOneAndDeleteOptions, bypassLogs = false): Promise<number> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\tlet monitor = new MonitorMongo('findOneAndDelete', this.collectionName, JSON.stringify([filter, options]));\n\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndDelete(<any>filter, options).then(async returnVal => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tlet doc = returnVal;\n\n\t\t\t\t\tif (doc) {\n\t\t\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'deleteOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif (this.useVersions) {\n\t\t\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\t\t\tversionDoc._id = {_id: doc._id, __v: doc.__v};\n\t\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 1}}]});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\n\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tresolve(0);\n\t\t\t\t\t}\n\t\t\t\t}, err => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tconsole.log(new Date(), 'Error Find One And Delete', this.collectionName, filter, options, 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\tlet monitor = new MonitorMongo('deleteOne', this.collectionName, JSON.stringify([filter, options]));\n\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).deleteOne(<any>filter, options).then(res => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\tresolve(res.deletedCount);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t\t}\n\t\t\t\t}, err => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tconsole.log(new Date(), 'Error Delete One', this.collectionName, filter, options, err);\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t}\t\t\t\n\t\t});\n\t}\n\n\tdistinct(key: string, filter?: MongoManagerFilter<T> & MongoManagerFilterOperators<T>, options?: CommandOperationOptions): Promise<T[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('distinct', this.collectionName, JSON.stringify([key, filter, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).distinct(key, <any>filter, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Distinct', this.collectionName, filter, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tdrop(options?: CommandOperationOptions): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('drop', this.collectionName, JSON.stringify([options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).drop(options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Count Documents', this.collectionName, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tdropIndex(indexName: string, options?: CommandOperationOptions): Promise<Document> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('dropIndex', this.collectionName, JSON.stringify([indexName, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).dropIndex(indexName, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(<Document>res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Drop Index', this.collectionName, indexName, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tdropIndexes(options?: CommandOperationOptions): Promise<Boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('dropIndexes', this.collectionName, JSON.stringify([options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).dropIndexes(options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Drop Indexes', this.collectionName, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfind(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOptions<T>, skipCache = false): Promise<T[]> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!skipCache) {\n\t\t\t\tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tname_collection: this.collectionName,\n\t\t\t\t\tname_function: 'find',\n\t\t\t\t\tname_function_addt: 'toArray',\n\t\t\t\t\tdata_function: [filter, options],\n\t\t\t\t\tdata_function_addt: [],\n\t\t\t\t\tcbs: [(err, res, cached) => {\t\t\t\t\t\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\tcbs_next: [],\n\t\t\t\t\trunning: false,\n\t\t\t\t\tcacheId: 0,\n\t\t\t\t\tlookup_collections: [],\n\t\t\t\t\tinvalidateFlag: false,\n\t\t\t\t\tinvalidateCount: 0\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet monitor = new MonitorMongo('find', this.collectionName, JSON.stringify([filter, options]));\n\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).find<T>(<any>filter, options).toArray().then(res => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tresolve(res);\n\t\t\t\t}, err => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tconsole.log(new Date(), 'Error Find', this.collectionName, filter, options, err);\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tfindById(id: string, options?: FindOptions<T>): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('findById', this.collectionName, JSON.stringify([{_id: id}, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOne<T>(<any>{_id: id}, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Find By Id', this.collectionName, {_id: id}, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfindCount(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOptions<T>): Promise<Number> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('findCount', this.collectionName, JSON.stringify([filter, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).find(<any>filter, options).count().then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Find Count', this.collectionName, filter, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfindCursor(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOptions<T>): FindCursor {\n\t\tlet monitor = new MonitorMongo('findCursor', this.collectionName, JSON.stringify([filter, options]));\n\t\tlet cursor = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).find(<any>filter, options);\n\t\tcursor.on('close', ev => {\n\t\t\tmonitor.finish();\n\t\t\treturn ev;\n\t\t});\n\t\treturn cursor;\n\t}\n\n\tfindStream(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOptions<T>, streamOptions?: CursorStreamOptions) {\n\t\tlet monitor = new MonitorMongo('findStream', this.collectionName, JSON.stringify([filter, options, streamOptions]));\n\t\tlet stream = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).find(<any>filter, options).stream(streamOptions);\n\t\tstream.on('end', ev => {\n\t\t\tmonitor.finish();\n\t\t\treturn ev;\n\t\t});\n\t\treturn stream;\n\t}\n\n\tfindOne(filter: MongoManagerFilter<T> | MongoManagerFilterOperators<T> = {}, options?: FindOptions<T>, skipCache = false): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (!skipCache) {\n\t\t\t\tResolveIOServer.getMongoManager().addToQueue({\n\t\t\t\t\t_id: 0,\n\t\t\t\t\tname_collection: this.collectionName,\n\t\t\t\t\tname_function: 'findOne',\n\t\t\t\t\tname_function_addt: '',\n\t\t\t\t\tdata_function: [filter, options],\n\t\t\t\t\tdata_function_addt: [],\n\t\t\t\t\tcbs: [(err, res, cached) => {\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\tcbs_next: [],\n\t\t\t\t\trunning: false,\n\t\t\t\t\tcacheId: 0,\n\t\t\t\t\tlookup_collections: [],\n\t\t\t\t\tinvalidateFlag: false,\n\t\t\t\t\tinvalidateCount: 0\n\t\t\t\t});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tlet monitor = new MonitorMongo('findOne', this.collectionName, JSON.stringify([filter, options]));\n\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOne<T>(<any>filter, options).then(res => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tresolve(res);\n\t\t\t\t}, err => {\n\t\t\t\t\tmonitor.finish();\n\t\t\t\t\tconsole.log(new Date(), 'Error Find One', this.collectionName, filter, options, err);\n\t\t\t\t\treject(err)\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tfindOneAndDelete(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, options?: FindOneAndDeleteOptions, bypassLogs = false): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('findOneAndDelete', this.collectionName, JSON.stringify([filter, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndDelete(<any>filter, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tlet doc = res;\n\t\t\t\t\n\t\t\t\tif (doc) {\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'findOneAndDelete',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\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\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t}\n\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\n\t\t\t\t\tresolve(<T>doc);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresolve(null);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Find One And Delete', this.collectionName, filter, options, err);\n\t\t\t\treject(err)\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndReplace(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, replacement: T, options?: FindOneAndReplaceOptions, 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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\n\t\t\tif (this.timestamps) {\n\t\t\t\treplacement.updatedAt = date;\n\t\t\t}\n\n\t\t\tif (options && options.upsert) {\n\t\t\t\tif (!replacement._id) {\n\t\t\t\t\treplacement._id = objectIdHexString();\n\t\t\t\t}\n\n\t\t\t\tif (this.useVersions) {\n\t\t\t\t\treplacement.__v = 0;\n\t\t\t\t}\n\n\t\t\t\tif (this.timestamps && !replacement.createdAt) {\n\t\t\t\t\treplacement.createdAt = date;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet monitor = new MonitorMongo('findOneAndReplace', this.collectionName, JSON.stringify([filter, replacement, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndReplace(<any>filter, replacement, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tlet doc = res;\n\n\t\t\t\tif (doc) {\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'findOneAndReplace',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\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\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t}\n\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\n\t\t\t\t\tresolve(<T>doc);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresolve(null);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Find One And Replace', this.collectionName, filter, options, err);\n\t\t\t\treject(err)\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndUpdate(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T> = {}, update: MongoManagerUpdateFilter<T>, options?: FindOneAndUpdateOptions, 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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\t\t\t\t\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\tupdate.$set.updatedAt = date;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options && options.upsert) {\n\t\t\t\tif (!update.$setOnInsert) {\n\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t\t_id: objectIdHexString()\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (!update.$setOnInsert._id) {\n\t\t\t\t\t\tupdate.$setOnInsert._id = objectIdHexString();\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\tupdate.$setOnInsert.createdAt = new Date();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet monitor = new MonitorMongo('findOneAndUpdate', this.collectionName, JSON.stringify([filter, update, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndUpdate(<any>filter, <any>update, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tlet doc = res;\n\n\t\t\t\tif (doc) {\n\t\t\t\t\tif (this.createLogs && !bypassLogs) {\t\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'findOneAndUpdate',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\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\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t}\n\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\n\t\t\t\t\tresolve(<T>doc);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tresolve(null);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Find One And Update', this.collectionName, filter, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tindexes(options: IndexInformationOptions): Promise<any[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('indexes', this.collectionName, JSON.stringify([options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).indexes(options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Indexes', this.collectionName, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tindexExists(indexes: string | string[], options?: IndexInformationOptions): Promise<boolean> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('indexExists', this.collectionName, JSON.stringify([indexes, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).indexExists(indexes, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Index Exists', this.collectionName, indexes, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tinsertMany(docs: T[], options?: BulkWriteOptions, bypassLogs = false, bypassCheckSchema = false, bypassMonitor = false): Promise<T[]> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!docs.length) {\n\t\t\t\tresolve([]);\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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\tlet monitor = null;\n\t\t\t\t\n\t\t\t\tif (!bypassMonitor) {\n\t\t\t\t\tmonitor = new MonitorMongo('insertMany', this.collectionName, JSON.stringify([validDocs, options]));\n\t\t\t\t}\n\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).insertMany(<OptionalUnlessRequiredId<T>[]>validDocs, options).then(res => {\n\t\t\t\t\tif (monitor) {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t}\n\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\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.acknowledged);\n\t\t\t\t\t}\n\t\t\t\t}, err => {\n\t\t\t\t\tif (monitor) {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t}\n\t\t\t\t\tconsole.log(new Date(), 'Error Insert Many', this.collectionName, validDocs, options, 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?: InsertOneOptions, 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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\tlet monitor = new MonitorMongo('insertOne', this.collectionName, JSON.stringify([doc, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).insertOne(<OptionalUnlessRequiredId<T>>doc, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\tresolve(doc);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Insert One', this.collectionName, doc, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tlistIndexes(options?: ListIndexesOptions): ListIndexesCursor {\n\t\tlet monitor = new MonitorMongo('listIndexes', this.collectionName, JSON.stringify([options]));\n\t\tlet cursor = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).listIndexes(options);\n\t\tcursor.on('close', ev => {\n\t\t\tmonitor.finish();\n\t\t\treturn ev;\n\t\t});\n\t\treturn cursor;\n\t}\n\n\trename(newName: string, options?: RenameOptions): Promise<Collection<Document>> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tlet monitor = new MonitorMongo('rename', this.collectionName, JSON.stringify([newName, options]));\n\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).rename(newName, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tresolve(res);\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Rename', this.collectionName, newName, options, err);\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\treplaceOne(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T>, replacement: T, options?: ReplaceOptions, 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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\t\n\t\t\tif (this.timestamps) {\n\t\t\t\treplacement.updatedAt = date;\n\t\t\t}\n\n\t\t\tif (this.useVersions) {\n\t\t\t\tif (!doc) {\n\t\t\t\t\tdoc = await this.findOne(<any>filter, null, true);\n\t\t\t\t}\n\n\t\t\t\tif (doc) {\n\t\t\t\t\tif (this.timestamps && !replacement.createdAt && doc.createdAt) {\n\t\t\t\t\t\treplacement.createdAt = doc.createdAt;\n\t\t\t\t\t}\n\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\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\n\t\t\t\t\t\tif (doc.__v >= 4) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 4}}]});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tlet monitor = new MonitorMongo('replaceOne', this.collectionName, JSON.stringify([filter, replacement, options]));\n\t\t\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options).then(res => {\n\t\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\t\tresolve(res.modifiedCount);\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.acknowledged);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\t\tconsole.log(new Date(), 'Error Replace One', this.collectionName, filter, replacement, options, 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: <any>{\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\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\t\tid_document: docId,\n\t\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['invalidVersion - merge', doc, filter, updatedDoc, options])) < 200000 ? JSON.stringify(['invalidVersion - merge', doc, filter, updatedDoc, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tlet monitor = new MonitorMongo('replaceOne', this.collectionName, JSON.stringify([filter, updatedDoc, options]));\n\t\t\t\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, updatedDoc, options).then(res => {\n\t\t\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\t\t\tresolve(res.modifiedCount);\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.acknowledged);\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\tmonitor.finish();\n\t\t\t\t\t\t\t\tconsole.log(new Date(), 'Error Replace One', this.collectionName, filter, updatedDoc, options, 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 if (options && options.upsert) {\n\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\treplacement.createdAt = date;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!replacement._id) {\n\t\t\t\t\t\treplacement._id = objectIdHexString();\n\t\t\t\t\t}\n\n\t\t\t\t\treplacement.__v = 0;\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: replacement._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, replacement, options])) < 200000 ? JSON.stringify(['upsert', filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet monitor = new MonitorMongo('replaceOne', this.collectionName, JSON.stringify([filter, replacement, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\tresolve(res.modifiedCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Replace One', this.collectionName, filter, replacement, options, err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject('No Document');\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (options && options.upsert) {\n\t\t\t\t\tif (this.timestamps && !replacement.createdAt) {\n\t\t\t\t\t\treplacement.createdAt = date;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!replacement._id) {\n\t\t\t\t\t\treplacement._id = objectIdHexString();\n\t\t\t\t\t}\n\n\t\t\t\t\treplacement.__v = 0;\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tif (!options) {\n\t\t\t\t\t\toptions = <FindOneAndReplaceOptions>{returnDocument: 'before'};\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t(<FindOneAndReplaceOptions>options).returnDocument = 'before';\n\t\t\t\t\t}\n\n\t\t\t\t\tlet monitor = new MonitorMongo('findOneAndReplace', this.collectionName, JSON.stringify([filter, replacement, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).findOneAndReplace(<any>filter, replacement, <FindOneAndReplaceOptions>options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tlet doc = res;\n\n\t\t\t\t\t\tif (doc) {\n\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: replacement._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, replacement, options])) < 200000 ? JSON.stringify(['upsert', filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Find One And Replace', this.collectionName, filter, replacement, options, err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet monitor = new MonitorMongo('replaceOne', this.collectionName, JSON.stringify([filter, replacement, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).replaceOne(<any>filter, replacement, options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\tresolve(res.modifiedCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Replace One', this.collectionName, filter, replacement, options, 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});\n\t}\n\n\tupdateMany(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T>, update: MongoManagerUpdateFilter<T>, options?: UpdateOptions, bypassLogs = false, bypassCheckSchema = false, bypassVersions = false) : Promise<number> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif ((!update.$inc || JSON.stringify(update.$inc) === '{}') && (!update.$set || JSON.stringify(update.$set) === '{}') && (!update.$setOnInsert || JSON.stringify(update.$setOnInsert) === '{}') && (!update.$unset || JSON.stringify(update.$unset) === '{}')) {\n\t\t\t\tresolve(1);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\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\tupdate.$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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\n\t\t\tif ((this.useVersions && !bypassVersions) || (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\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'updateMany',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\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\t\t\n\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (doc.__v >= 4) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 4}}]});\n\t\t\t\t\t\t}\n\t\t\n\t\t\t\t\t\tif (!objectContainsPropertyDeep(update, '__v')) {\n\t\t\t\t\t\t\tif (!update.$inc) {\n\t\t\t\t\t\t\t\tupdate.$inc = {__v: 1};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (!update.$inc.__v) {\n\t\t\t\t\t\t\t\tupdate.$inc.__v = 1;\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\n\t\t\tlet monitor = new MonitorMongo('updateMany', this.collectionName, JSON.stringify([filter, update, options]));\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateMany(<any>filter, update, options).then(res => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\tresolve(res.modifiedCount);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tmonitor.finish();\n\t\t\t\tconsole.log(new Date(), 'Error Update Many', this.collectionName, filter, update, options, err);\n\t\t\t\treject(err)\n\t\t\t});\n\t\t});\n\t}\n\n\tupdateOne(filter: MongoManagerFilter<T> & MongoManagerFilterOperators<T>, update: MongoManagerUpdateFilter<T>, options?: UpdateOptions, bypassLogs = false, bypassCheckSchema = false) : 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();\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.call(ResolveIOServer.getMainServer().getMethodManager(), '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\n\t\t\tif ((!update.$inc || JSON.stringify(update.$inc) === '{}') && (!update.$set || JSON.stringify(update.$set) === '{}') && (!update.$setOnInsert || JSON.stringify(update.$setOnInsert) === '{}') && (!update.$unset || JSON.stringify(update.$unset) === '{}')) {\n\t\t\t\tresolve(1);\n\t\t\t\treturn;\n\t\t\t}\n\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\tupdate.$set.updatedAt = date;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t\tif (this.useVersions) {\n\t\t\t\tlet doc = await this.findOne(filter, null, true);\n\n\t\t\t\tif (doc) {\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: doc._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tlet versionDoc = deepCopy(doc);\n\t\t\t\t\tversionDoc._id = {_id: doc._id, __v: doc.__v};\n\t\n\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).replaceOne(<any>{_id: { _id: doc._id, __v: doc.__v}}, versionDoc, {upsert: true});\n\t\t\t\t\t\n\t\t\t\t\tif (doc.__v >= 4) {\n\t\t\t\t\t\tResolveIOServer.getMongoManager().collection(this.versionCollection).deleteMany(<any>{$and: [{'_id._id': doc._id}, {'_id.__v': {$lt: doc.__v - 4}}]});\n\t\t\t\t\t}\n\t\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 = {__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\tupdate.$inc.__v = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet monitor = new MonitorMongo('updateOne', this.collectionName, JSON.stringify([filter, update, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\tresolve(res.modifiedCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Update One', this.collectionName, filter, update, options, err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse if (options && options.upsert) {\n\t\t\t\t\tif (!update.$setOnInsert) {\n\t\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\t\tupdate.$setOnInsert = <any>{\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\tcreatedAt: new Date()\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\tupdate.$setOnInsert = <any>{\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};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (!update.$setOnInsert._id) {\n\t\t\t\t\t\t\tupdate.$setOnInsert._id = objectIdHexString();\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\t\tupdate.$setOnInsert.createdAt = new Date();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\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: 'document',\n\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\tid_document: update.$setOnInsert._id,\n\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, update, options])) < 200000 ? JSON.stringify(['upsert', filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tlet monitor = new MonitorMongo('updateOne', this.collectionName, JSON.stringify([filter, update, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\tresolve(res.modifiedCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Update One', this.collectionName, filter, update, options, err);\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject('No Document');\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (options && options.upsert) {\n\t\t\t\t\tif (!update.$setOnInsert) {\n\t\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\tcreatedAt: new Date()\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tupdate.$setOnInsert = <any>{\n\t\t\t\t\t\t\t\t_id: objectIdHexString()\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (!update.$setOnInsert._id) {\n\t\t\t\t\t\t\tupdate.$setOnInsert._id = objectIdHexString();\n\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\tif (this.timestamps) {\n\t\t\t\t\t\t\tupdate.$setOnInsert.createdAt = new Date();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.createLogs && !bypassLogs) {\n\t\t\t\t\tif (!options) {\n\t\t\t\t\t\toptions = <FindOneAndUpdateOptions>{returnDocument: 'before'};\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t(<FindOneAndUpdateOptions>options).returnDocument = 'before';\n\t\t\t\t\t}\n\n\t\t\t\t\tlet monitor = new MonitorMongo('findOneAndUpdate', this.collectionName, JSON.stringify([filter, update, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).findOneAndUpdate(<any>filter, update, <FindOneAndUpdateOptions>options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tlet doc = res.value;\n\n\t\t\t\t\t\tif (doc) {\n\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: <any>doc._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tresolve(res.ok);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (update.$setOnInsert) {\n\t\t\t\t\t\t\tLogs.insertOne({\n\t\t\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\t\t\tid_document: update.$setOnInsert._id,\n\t\t\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify(['upsert', filter, update, options])) < 200000 ? JSON.stringify(['upsert', filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\t\t\tmessageId: 0,\n\t\t\t\t\t\t\t\troute: ''\n\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\n\t\t\t\t\t\t\tresolve(res.ok);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tresolve(0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Find One And Update', this.collectionName, filter, update, options, err);\n\t\t\t\t\t\treject(err)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet monitor = new MonitorMongo('updateOne', this.collectionName, JSON.stringify([filter, update, options]));\n\t\t\t\t\tResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).updateOne(<any>filter, update, options).then(res => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tif (res.acknowledged) {\n\t\t\t\t\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\t\t\t\t\tresolve(res.modifiedCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treject(res.acknowledged);\n\t\t\t\t\t\t}\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tmonitor.finish();\n\t\t\t\t\t\tconsole.log(new Date(), 'Error Update One', this.collectionName, filter, update, options, 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});\n\t}\n\t\n\twatchCollection(pipeline = [], options?: ChangeStreamOptions): ChangeStream<T> {\n\t\tlet stream = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).watch(pipeline, options);\n\t\tstream.on('change', evData => {\n\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\treturn evData;\n\t\t});\n\t\treturn <ChangeStream<T>>stream;\n\t}\n\n\twatchCollectionWithAggregate(pipeline = [], options?: ChangeStreamOptions): ChangeStream<T> {\n\t\tlet stream = ResolveIOServer.getMainDB().collection<T>(this.collectionName, this.collectionOptions).watch(pipeline, options);\n\t\tstream.on('change', evData => {\n\t\t\tResolveIOServer.getMongoManager().invalidateQueryCache(this.collectionName);\n\t\t\treturn evData;\n\t\t});\n\t\treturn <ChangeStream<T>>stream;\n\t}\n}\n\nexport class MongoManagerUserCollection<T extends CollectionDocument> extends MongoManagerCollection<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: {}, attempts: 0}}).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/pdf.js
CHANGED
|
@@ -125,7 +125,7 @@ function loadPDFMethods(methodManager) {
|
|
|
125
125
|
dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');
|
|
126
126
|
dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');
|
|
127
127
|
dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');
|
|
128
|
-
content = "\n\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserif_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserifBold_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserifItalic_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserifBoldItalic_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-size: " + (fontSize ? fontSize : '12px') + ";\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t</head>\n\t\t\t\t\t\t<body>\n\t\t\t\t\t" + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';
|
|
128
|
+
content = "\n\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserif_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserifBold_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserifItalic_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserifBoldItalic_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-size: " + (fontSize ? fontSize : '12px') + ";\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t<meta charset=\"UTF-8\">\n\t\t\t\t\t\t</head>\n\t\t\t\t\t\t<body>\n\t\t\t\t\t" + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';
|
|
129
129
|
return [4 /*yield*/, page.setContent(content, { waitUntil: ['domcontentloaded', 'load', 'networkidle0'] })];
|
|
130
130
|
case 3:
|
|
131
131
|
_a.sent();
|
|
@@ -269,7 +269,7 @@ function loadPDFMethods(methodManager) {
|
|
|
269
269
|
dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');
|
|
270
270
|
dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');
|
|
271
271
|
dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');
|
|
272
|
-
content = "\n\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserif_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserifBold_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserifItalic_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserifBoldItalic_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-size: " + (fontSize ? fontSize : '12px') + ";\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t</head>\n\t\t\t\t\t\t<body>\n\t\t\t\t\t" + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';
|
|
272
|
+
content = "\n\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserif_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserifBold_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserifItalic_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"" + dejavuserifBoldItalic_woff + "\") format('woff');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-size: " + (fontSize ? fontSize : '12px') + ";\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t<meta charset=\"UTF-8\">\n\t\t\t\t\t\t</head>\n\t\t\t\t\t\t<body>\n\t\t\t\t\t" + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';
|
|
273
273
|
return [4 /*yield*/, page.setContent(content, { waitUntil: ['domcontentloaded', 'load', 'networkidle0'] })];
|
|
274
274
|
case 3:
|
|
275
275
|
_a.sent();
|
package/methods/pdf.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/pdf.ts"],"names":[],"mappings":"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","file":"pdf.js","sourcesContent":["import * as fs from 'fs';\nimport { MethodManager } from '../managers/method.manager';\nimport SimpleSchema from 'simpl-schema';\nimport { ParseSpeeds, PDFDocument } from 'pdf-lib';\nimport * as puppeteer from 'puppeteer';\nimport * as path from 'path';\n\nlet pdfCnt = 0;\n\nexport function loadPDFMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tgeneratePDF: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtml: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\torientation: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfontSize: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tupload: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileOrder: {\n\t\t\t\t\ttype: Number,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\t// console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);\n\n\t\t\t\t\tconst args = [\n\t\t\t\t\t\t\"--disable-dev-shm-usage\",\n\t\t\t\t\t\t\"--no-sandbox\",\n\t\t\t\t\t\t\"--disable-setuid-sandbox\",\n\t\t\t\t\t\t\"--disable-accelerated-2d-canvas\",\n\t\t\t\t\t\t\"--disable-gpu\",\n\t\t\t\t\t\t\"--allow-file-access-from-files\", \n\t\t\t\t\t\t\"--enable-local-file-accesses\",\n\t\t\t\t\t\t'--font-render-hinting=none'\n\t\t\t\t\t];\n\n\t\t\t\t\tconst browser = await puppeteer.launch({\n\t\t\t\t\t\theadless: 'new', // run in headless mode\n\t\t\t\t\t\tdevtools: false, // run with dev tools\n\t\t\t\t\t\tignoreHTTPSErrors: true, // ignore https error\n\t\t\t\t\t\targs,\n\t\t\t\t\t\tignoreDefaultArgs: [\"--disable-extensions\"]\n\t\t\t\t\t}); // run browser\n\t\t\t\t\t\n\t\t\t\t\tconst page = await browser.newPage(); // create new tab\n\n\t\t\t\t\tlet pathToFont = '';\n\n\t\t\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\tpathToFont = path.join(__dirname, ('../private/fonts/'));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\t\tpathToFont = path.join(this.clientDir, ('./private/fonts/'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tpathToFont = '/usr/share/fonts/dejavu/';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');\n\t\t\t\t\tlet dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');\n\t\t\t\t\tlet dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');\n\t\t\t\t\tlet dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');\n\n\t\t\t\t\tlet content = `\n\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserif_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBold_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBoldItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-size: ` + (fontSize ? fontSize : '12px') + `;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t</head>\n\t\t\t\t\t\t<body>\n\t\t\t\t\t` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';\n\n\t\t\t\t\tawait page.setContent(content, { waitUntil: ['domcontentloaded', 'load', 'networkidle0'] });\n\t\t\t\t\tawait page.evaluateHandle('document.fonts.ready');\n\t\t\t\t\t\n\t\t\t\t\tlet tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/[^0-9\\.a-zA-Z]/g), '');\t\n\t\t\t\t\n\t\t\t\t\tawait page.pdf({\n\t\t\t\t\t\tscale: 1,\n\t\t\t\t\t\tlandscape: orientation === 'portrait' ? false : true,\n\t\t\t\t\t\tformat: 'letter',\n\t\t\t\t\t\tmargin: {\n\t\t\t\t\t\t\ttop: '1cm',\n\t\t\t\t\t\t\tbottom: '1cm',\n\t\t\t\t\t\t\tleft: '1cm',\n\t\t\t\t\t\t\tright: '1cm'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprintBackground: true,\n\t\t\t\t\t\tdisplayHeaderFooter: true,\n\t\t\t\t\t\theaderTemplate: `\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t<span></span>\n\t\t\t\t\t\t`,\n\t\t\t\t\t\tfooterTemplate: `\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t<div style=\"padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;\">\n\t\t\t\t\t\t\t\tPage <span class=\"pageNumber\"></span> of <span class=\"totalPages\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`,\n\t\t\t\t\t\tpath: path.join(__dirname, (tmpFileName)),\n\t\t\t\t\t\ttimeout: 0\n\t\t\t\t\t});\n\t\t\t\t\tawait browser.close();\n\t\t\t\t\t\n\t\t\t\t\tif (fs.existsSync(path.join(__dirname, (tmpFileName)))) {\n\t\t\t\t\t\tfs.readFile(path.join(__dirname, (tmpFileName)), (errRead, data) => {\n\t\t\t\t\t\t\tif (!errRead) {\n\t\t\t\t\t\t\t\tfs.unlinkSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\t\tresolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));\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\tlet fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('No file');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treject('No tmp file');\n\t\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgeneratePDFNoPageNumber: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtml: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\torientation: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfontSize: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tupload: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileOrder: {\n\t\t\t\t\ttype: Number,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\t// console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);\n\n\t\t\t\t\tconst args = [\n\t\t\t\t\t\t\"--disable-dev-shm-usage\",\n\t\t\t\t\t\t\"--no-sandbox\",\n\t\t\t\t\t\t\"--disable-setuid-sandbox\",\n\t\t\t\t\t\t\"--disable-accelerated-2d-canvas\",\n\t\t\t\t\t\t\"--disable-gpu\",\n\t\t\t\t\t\t\"--allow-file-access-from-files\", \n\t\t\t\t\t\t\"--enable-local-file-accesses\",\n\t\t\t\t\t\t'--font-render-hinting=none'\n\t\t\t\t\t];\n\n\t\t\t\t\tconst browser = await puppeteer.launch({\n\t\t\t\t\t\theadless: 'new', // run in headless mode\n\t\t\t\t\t\tdevtools: false, // run with dev tools\n\t\t\t\t\t\tignoreHTTPSErrors: true, // ignore https error\n\t\t\t\t\t\targs,\n\t\t\t\t\t\tignoreDefaultArgs: [\"--disable-extensions\"]\n\t\t\t\t\t}); // run browser\n\t\t\t\t\t\n\t\t\t\t\tconst page = await browser.newPage(); // create new tab\n\n\t\t\t\t\tlet pathToFont = '';\n\n\t\t\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\tpathToFont = path.join(__dirname, ('../private/fonts/'));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\t\tpathToFont = path.join(this.clientDir, ('./private/fonts/'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tpathToFont = '/usr/share/fonts/dejavu/';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');\n\t\t\t\t\tlet dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');\n\t\t\t\t\tlet dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');\n\t\t\t\t\tlet dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');\n\n\t\t\t\t\tlet content = `\n\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserif_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBold_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBoldItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-size: ` + (fontSize ? fontSize : '12px') + `;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t</head>\n\t\t\t\t\t\t<body>\n\t\t\t\t\t` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';\n\n\t\t\t\t\tawait page.setContent(content, { waitUntil: ['domcontentloaded', 'load', 'networkidle0'] });\n\t\t\t\t\tawait page.evaluateHandle('document.fonts.ready');\n\t\t\t\t\t\n\t\t\t\t\tlet tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/[^0-9\\.a-zA-Z]/g), '');\t\n\t\t\t\t\n\t\t\t\t\tawait page.pdf({\n\t\t\t\t\t\tscale: 1,\n\t\t\t\t\t\tlandscape: orientation === 'portrait' ? false : true,\n\t\t\t\t\t\tformat: 'letter',\n\t\t\t\t\t\tmargin: {\n\t\t\t\t\t\t\ttop: '1cm',\n\t\t\t\t\t\t\tbottom: '1cm',\n\t\t\t\t\t\t\tleft: '1cm',\n\t\t\t\t\t\t\tright: '1cm'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprintBackground: true,\n\t\t\t\t\t\tdisplayHeaderFooter: true,\n\t\t\t\t\t\theaderTemplate: `\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t<span></span>\n\t\t\t\t\t\t`,\n\t\t\t\t\t\tfooterTemplate: `\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<div style=\"padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`,\n\t\t\t\t\t\tpath: path.join(__dirname, (tmpFileName)),\n\t\t\t\t\t\ttimeout: 0\n\t\t\t\t\t});\n\t\t\t\t\tawait browser.close();\n\t\t\t\t\t\n\t\t\t\t\tif (fs.existsSync(path.join(__dirname, (tmpFileName)))) {\n\t\t\t\t\t\tfs.readFile(path.join(__dirname, (tmpFileName)), (errRead, data) => {\n\t\t\t\t\t\t\tif (!errRead) {\n\t\t\t\t\t\t\t\tfs.unlinkSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\t\tresolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));\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\tlet fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('No file');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treject('No tmp file');\n\t\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDFResolve: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tthis.callMethodInternal('getSignedUrls', fileKeys, 900, (errSigneds, resSigneds) => {\n\t\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\t\tresSigneds.forEach((signedUrl) => {\n\t\t\t\t\t\t\t\tpromises.push(this.callMethodInternal('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tPromise.all(promises).then(async (fileDatas) => {\n\t\t\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\n\t\t\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\n\t\t\t\t\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true });\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\t\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\n\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false, (errUp, resUp) => {\n\t\t\t\t\t\t\t\t\tresolve(resUp);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'PDF Merge - getSignedUrls', [\n\t\t\t\t\t\t\t\tfileKeys,\n\t\t\t\t\t\t\t\terrSigneds\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\treject(errSigneds);\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\tmergePDFResolveNoSave: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileKeys: string[]) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tthis.callMethodInternal('getSignedUrls', fileKeys, 900, (errSigneds, resSigneds) => {\n\t\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\t\tresSigneds.forEach((signedUrl) => {\n\t\t\t\t\t\t\t\tpromises.push(this.callMethodInternal('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tPromise.all(promises).then(async (fileDatas) => {\n\t\t\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\n\t\t\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\n\t\t\t\t\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true});\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\t\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tresolve(b64PDF);\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\tthis.callMethodInternal('insertErrorLog', 'PDF Merge - getSignedUrls', [\n\t\t\t\t\t\t\t\tfileKeys,\n\t\t\t\t\t\t\t\terrSigneds\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\treject(errSigneds);\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\tmergePDFResolveHtml: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtmls: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'htmls.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tsave: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(htmls: string[], fileName: string, fileType?: string, save = true) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\tfor (let i = 0; i < htmls.length; i++) {\n\n\t\t\t\t\t\tlet fileData = htmls[i];\n\n\t\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true });\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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 if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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 if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\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\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\n\t\t\t\t\tif (save) {\n\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false, (errUp, resUp) => {\n\t\t\t\t\t\t\tresolve(resUp);\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(b64PDF);\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/pdf.ts"],"names":[],"mappings":"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","file":"pdf.js","sourcesContent":["import * as fs from 'fs';\nimport { MethodManager } from '../managers/method.manager';\nimport SimpleSchema from 'simpl-schema';\nimport { ParseSpeeds, PDFDocument } from 'pdf-lib';\nimport * as puppeteer from 'puppeteer';\nimport * as path from 'path';\n\nlet pdfCnt = 0;\n\nexport function loadPDFMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tgeneratePDF: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtml: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\torientation: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfontSize: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tupload: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileOrder: {\n\t\t\t\t\ttype: Number,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\t// console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);\n\n\t\t\t\t\tconst args = [\n\t\t\t\t\t\t\"--disable-dev-shm-usage\",\n\t\t\t\t\t\t\"--no-sandbox\",\n\t\t\t\t\t\t\"--disable-setuid-sandbox\",\n\t\t\t\t\t\t\"--disable-accelerated-2d-canvas\",\n\t\t\t\t\t\t\"--disable-gpu\",\n\t\t\t\t\t\t\"--allow-file-access-from-files\", \n\t\t\t\t\t\t\"--enable-local-file-accesses\",\n\t\t\t\t\t\t'--font-render-hinting=none'\n\t\t\t\t\t];\n\n\t\t\t\t\tconst browser = await puppeteer.launch({\n\t\t\t\t\t\theadless: 'new', // run in headless mode\n\t\t\t\t\t\tdevtools: false, // run with dev tools\n\t\t\t\t\t\tignoreHTTPSErrors: true, // ignore https error\n\t\t\t\t\t\targs,\n\t\t\t\t\t\tignoreDefaultArgs: [\"--disable-extensions\"]\n\t\t\t\t\t}); // run browser\n\t\t\t\t\t\n\t\t\t\t\tconst page = await browser.newPage(); // create new tab\n\n\t\t\t\t\tlet pathToFont = '';\n\n\t\t\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\tpathToFont = path.join(__dirname, ('../private/fonts/'));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\t\tpathToFont = path.join(this.clientDir, ('./private/fonts/'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tpathToFont = '/usr/share/fonts/dejavu/';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');\n\t\t\t\t\tlet dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');\n\t\t\t\t\tlet dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');\n\t\t\t\t\tlet dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');\n\n\t\t\t\t\tlet content = `\n\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserif_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBold_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBoldItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-size: ` + (fontSize ? fontSize : '12px') + `;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t<meta charset=\"UTF-8\">\n\t\t\t\t\t\t</head>\n\t\t\t\t\t\t<body>\n\t\t\t\t\t` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';\n\n\t\t\t\t\tawait page.setContent(content, { waitUntil: ['domcontentloaded', 'load', 'networkidle0'] });\n\t\t\t\t\tawait page.evaluateHandle('document.fonts.ready');\n\t\t\t\t\t\n\t\t\t\t\tlet tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/[^0-9\\.a-zA-Z]/g), '');\t\n\t\t\t\t\n\t\t\t\t\tawait page.pdf({\n\t\t\t\t\t\tscale: 1,\n\t\t\t\t\t\tlandscape: orientation === 'portrait' ? false : true,\n\t\t\t\t\t\tformat: 'letter',\n\t\t\t\t\t\tmargin: {\n\t\t\t\t\t\t\ttop: '1cm',\n\t\t\t\t\t\t\tbottom: '1cm',\n\t\t\t\t\t\t\tleft: '1cm',\n\t\t\t\t\t\t\tright: '1cm'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprintBackground: true,\n\t\t\t\t\t\tdisplayHeaderFooter: true,\n\t\t\t\t\t\theaderTemplate: `\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t<span></span>\n\t\t\t\t\t\t`,\n\t\t\t\t\t\tfooterTemplate: `\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t<div style=\"padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;\">\n\t\t\t\t\t\t\t\tPage <span class=\"pageNumber\"></span> of <span class=\"totalPages\"></span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`,\n\t\t\t\t\t\tpath: path.join(__dirname, (tmpFileName)),\n\t\t\t\t\t\ttimeout: 0\n\t\t\t\t\t});\n\t\t\t\t\tawait browser.close();\n\t\t\t\t\t\n\t\t\t\t\tif (fs.existsSync(path.join(__dirname, (tmpFileName)))) {\n\t\t\t\t\t\tfs.readFile(path.join(__dirname, (tmpFileName)), (errRead, data) => {\n\t\t\t\t\t\t\tif (!errRead) {\n\t\t\t\t\t\t\t\tfs.unlinkSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\t\tresolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));\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\tlet fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('No file');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treject('No tmp file');\n\t\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tgeneratePDFNoPageNumber: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtml: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\torientation: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tfontSize: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tupload: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileOrder: {\n\t\t\t\t\ttype: Number,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tuploadFileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(html, fileName, orientation = 'portrait', fontSize = '12px', upload = false, uploadFileOrder = -1, uploadFileType = '') {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\t// console.log(new Date(), 'GENERATE PDF CALL', fileName, orientation, fontSize, upload);\n\n\t\t\t\t\tconst args = [\n\t\t\t\t\t\t\"--disable-dev-shm-usage\",\n\t\t\t\t\t\t\"--no-sandbox\",\n\t\t\t\t\t\t\"--disable-setuid-sandbox\",\n\t\t\t\t\t\t\"--disable-accelerated-2d-canvas\",\n\t\t\t\t\t\t\"--disable-gpu\",\n\t\t\t\t\t\t\"--allow-file-access-from-files\", \n\t\t\t\t\t\t\"--enable-local-file-accesses\",\n\t\t\t\t\t\t'--font-render-hinting=none'\n\t\t\t\t\t];\n\n\t\t\t\t\tconst browser = await puppeteer.launch({\n\t\t\t\t\t\theadless: 'new', // run in headless mode\n\t\t\t\t\t\tdevtools: false, // run with dev tools\n\t\t\t\t\t\tignoreHTTPSErrors: true, // ignore https error\n\t\t\t\t\t\targs,\n\t\t\t\t\t\tignoreDefaultArgs: [\"--disable-extensions\"]\n\t\t\t\t\t}); // run browser\n\t\t\t\t\t\n\t\t\t\t\tconst page = await browser.newPage(); // create new tab\n\n\t\t\t\t\tlet pathToFont = '';\n\n\t\t\t\t\tif (fs.existsSync(path.join(__dirname, ('../private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\tpathToFont = path.join(__dirname, ('../private/fonts/'));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (fs.existsSync(path.join(this.clientDir, ('./private/fonts/dejavuserif.woff')))) {\n\t\t\t\t\t\t\tpathToFont = path.join(this.clientDir, ('./private/fonts/'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tpathToFont = '/usr/share/fonts/dejavu/';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet dejavuserif_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif.woff').buffer).toString('base64');\n\t\t\t\t\tlet dejavuserifBold_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bold.woff').buffer).toString('base64');\n\t\t\t\t\tlet dejavuserifItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-italic.woff').buffer).toString('base64');\n\t\t\t\t\tlet dejavuserifBoldItalic_woff = 'data:application/font-woff;base64,' + Buffer.from(fs.readFileSync(pathToFont + 'dejavuserif-bolditalic.woff').buffer).toString('base64');\n\n\t\t\t\t\tlet content = `\n\t\t\t\t\t\t<head>\n\t\t\t\t\t\t\t<style type=\"text/css\">\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserif_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: normal;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBold_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: normal;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t@font-face {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif';\n\t\t\t\t\t\t\t\t\tfont-style: italic;\n\t\t\t\t\t\t\t\t\tfont-weight: bold;\n\t\t\t\t\t\t\t\t\tsrc: url(\"` + dejavuserifBoldItalic_woff + `\") format('woff');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbody {\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif', serif;\n\t\t\t\t\t\t\t\t\tfont-size: ` + (fontSize ? fontSize : '12px') + `;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.row {\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\t\t\t\tflex-wrap: wrap;\n\t\t\t\t\t\t\t\t\t-webkit-flex-wrap: wrap;\n\t\t\t\t\t\t\t\t\tpage-break-inside: avoid !important;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.page-break {\n\t\t\t\t\t\t\t\t\tpage-break-before: always !important;\n\t\t\t\t\t\t\t\t\tpadding-top: 1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\tpadding : 2px;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.cell-no-padding {\n\t\t\t\t\t\t\t\t\tbox-sizing: border-box;\n\t\t\t\t\t\t\t\t\t-webkit-flex: 1;\n\t\t\t\t\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: center;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\ttext-align: center;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-left {\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-start;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.centered-right {\n\t\t\t\t\t\t\t\t\t-webkit-justify-content: flex-end;\n\t\t\t\t\t\t\t\t\t-webkit-align-items: center;\n\t\t\t\t\t\t\t\t\tdisplay: -webkit-flex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t.box {\n\t\t\t\t\t\t\t\t\tborder: 1px solid black;\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t.boxNoBorder {\n\t\t\t\t\t\t\t\t\tmargin: -1px 0px 0px -1px;\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tpre {\n\t\t\t\t\t\t\t\t\twhite-space: pre-wrap; /* css-3 */\n\t\t\t\t\t\t\t\t\twhite-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n\t\t\t\t\t\t\t\t\twhite-space: -pre-wrap; /* Opera 4-6 */\n\t\t\t\t\t\t\t\t\twhite-space: -o-pre-wrap; /* Opera 7 */\n\t\t\t\t\t\t\t\t\tword-wrap: break-word; /* Internet Explorer 5.5+ */\n\t\t\t\t\t\t\t\t\tfont-size: 12px;\n\t\t\t\t\t\t\t\t\tfont-family: 'Dejavu Serif'; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t<meta charset=\"UTF-8\">\n\t\t\t\t\t\t</head>\n\t\t\t\t\t\t<body>\n\t\t\t\t\t` + html.replace(new RegExp('flex-basis:', 'g'), '-webkit-flex-basis:').replace(new RegExp('flex:', 'g'), '-webkit-flex:') + '</body>';\n\n\t\t\t\t\tawait page.setContent(content, { waitUntil: ['domcontentloaded', 'load', 'networkidle0'] });\n\t\t\t\t\tawait page.evaluateHandle('document.fonts.ready');\n\t\t\t\t\t\n\t\t\t\t\tlet tmpFileName = (pdfCnt++) + '-' + fileName.replace(new RegExp(/[^0-9\\.a-zA-Z]/g), '');\t\n\t\t\t\t\n\t\t\t\t\tawait page.pdf({\n\t\t\t\t\t\tscale: 1,\n\t\t\t\t\t\tlandscape: orientation === 'portrait' ? false : true,\n\t\t\t\t\t\tformat: 'letter',\n\t\t\t\t\t\tmargin: {\n\t\t\t\t\t\t\ttop: '1cm',\n\t\t\t\t\t\t\tbottom: '1cm',\n\t\t\t\t\t\t\tleft: '1cm',\n\t\t\t\t\t\t\tright: '1cm'\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprintBackground: true,\n\t\t\t\t\t\tdisplayHeaderFooter: true,\n\t\t\t\t\t\theaderTemplate: `\n\t\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t\t#header { \n\t\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important; \n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</style>\n\t\t\t\t\t\t\t<span></span>\n\t\t\t\t\t\t`,\n\t\t\t\t\t\tfooterTemplate: `\n\t\t\t\t\t\t<style>\n\t\t\t\t\t\t\t#footer { \n\t\t\t\t\t\t\t\tpadding: 0 0 10px 10px !important;\n\t\t\t\t\t\t\t\tfont-size: 10px;\n\t\t\t\t\t\t\t\tfont-family: san-serif;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</style>\n\t\t\t\t\t\t<div style=\"padding-bottom: 2px; padding-right: 15px; text-align: right; width: 100%;\">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t`,\n\t\t\t\t\t\tpath: path.join(__dirname, (tmpFileName)),\n\t\t\t\t\t\ttimeout: 0\n\t\t\t\t\t});\n\t\t\t\t\tawait browser.close();\n\t\t\t\t\t\n\t\t\t\t\tif (fs.existsSync(path.join(__dirname, (tmpFileName)))) {\n\t\t\t\t\t\tfs.readFile(path.join(__dirname, (tmpFileName)), (errRead, data) => {\n\t\t\t\t\t\t\tif (!errRead) {\n\t\t\t\t\t\t\t\tfs.unlinkSync(path.join(__dirname, (tmpFileName)));\n\t\t\t\t\t\t\t\tif (!upload) {\n\t\t\t\t\t\t\t\t\tresolve('data:application/pdf;base64,' + Buffer.from(data).toString('base64'));\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\tlet fileData = 'data:application/pdf;base64,' + Buffer.from(data).toString('base64');\n\t\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, fileData, (4 * Math.ceil(fileData.length / 3)), uploadFileOrder !== null ? uploadFileOrder : -1, uploadFileType, false, (err, res) => {\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tresolve(res);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\treject('No file');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\treject('No tmp file');\n\t\t\t\t\t\tconsole.log('No tmp file ', tmpFileName);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tmergePDFResolve: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileKeys: string[], fileName: string, fileType?: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tthis.callMethodInternal('getSignedUrls', fileKeys, 900, (errSigneds, resSigneds) => {\n\t\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\t\tresSigneds.forEach((signedUrl) => {\n\t\t\t\t\t\t\t\tpromises.push(this.callMethodInternal('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tPromise.all(promises).then(async (fileDatas) => {\n\t\t\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\n\t\t\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\n\t\t\t\t\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true });\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\t\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\n\t\t\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false, (errUp, resUp) => {\n\t\t\t\t\t\t\t\t\tresolve(resUp);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'PDF Merge - getSignedUrls', [\n\t\t\t\t\t\t\t\tfileKeys,\n\t\t\t\t\t\t\t\terrSigneds\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\treject(errSigneds);\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\tmergePDFResolveNoSave: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tfileKeys: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'fileKeys.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(fileKeys: string[]) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tthis.callMethodInternal('getSignedUrls', fileKeys, 900, (errSigneds, resSigneds) => {\n\t\t\t\t\t\tif (resSigneds && resSigneds.length) {\n\t\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\t\tresSigneds.forEach((signedUrl) => {\n\t\t\t\t\t\t\t\tpromises.push(this.callMethodInternal('getDataURIfromURL', signedUrl));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tPromise.all(promises).then(async (fileDatas) => {\n\t\t\t\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\t\t\t\tfor (let i = 0; i < fileDatas.length; i++) {\n\n\t\t\t\t\t\t\t\t\tlet fileData = fileDatas[i];\n\n\t\t\t\t\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true});\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\t\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tresolve(b64PDF);\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\tthis.callMethodInternal('insertErrorLog', 'PDF Merge - getSignedUrls', [\n\t\t\t\t\t\t\t\tfileKeys,\n\t\t\t\t\t\t\t\terrSigneds\n\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\treject(errSigneds);\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\tmergePDFResolveHtml: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\thtmls: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'htmls.$': {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileName: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tfileType: {\n\t\t\t\t\ttype: String,\n\t\t\t\t\toptional: true\n\t\t\t\t},\n\t\t\t\tsave: {\n\t\t\t\t\ttype: Boolean,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(htmls: string[], fileName: string, fileType?: string, save = true) {\n\t\t\t\treturn new Promise(async (resolve, reject) => {\n\t\t\t\t\tconst mergedPdf = await PDFDocument.create();\n\n\t\t\t\t\tfor (let i = 0; i < htmls.length; i++) {\n\n\t\t\t\t\t\tlet fileData = htmls[i];\n\n\t\t\t\t\t\tif (fileData) {\n\t\t\t\t\t\t\tif (fileData.startsWith('data:application/pdf;base64,')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.load(fileData, { updateMetadata: false, parseSpeed: ParseSpeeds.Fastest, ignoreEncryption: true });\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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 if (fileData.startsWith('data:image/jpeg;base64,/9j/') || fileData.startsWith('data:image/png;base64,/9j/')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\tconst img = await pdf.embedJpg(fileData);\n\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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 if (fileData.startsWith('data:image/png;base64,iVBOR')) {\n\t\t\t\t\t\t\t\tconst pdf = await PDFDocument.create();\n\t\t\t\t\t\t\t\tconst img = await pdf.embedPng(fileData);\n\t\t\t\t\t\t\t\tconst page = pdf.addPage();\n\t\t\t\t\t\t\t\tlet imgDim = img.scaleToFit(page.getWidth() * 0.75, page.getHeight() * 0.75);\n\t\t\t\t\t\t\t\tpage.drawImage(img, {\n\t\t\t\t\t\t\t\t\tx: page.getWidth() / 2 - imgDim.width / 2,\n\t\t\t\t\t\t\t\t\ty: page.getHeight() / 2 - imgDim.height / 2,\n\t\t\t\t\t\t\t\t\twidth: imgDim.width,\n\t\t\t\t\t\t\t\t\theight: imgDim.height,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst copiedPages = await mergedPdf.copyPages(pdf, pdf.getPageIndices());\n\t\t\t\t\t\t\t\tcopiedPages.forEach((page) => {\n\t\t\t\t\t\t\t\t\tmergedPdf.addPage(page);\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\tconsole.log('Error - unsupported!!', fileData.slice(0, 60));\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\tconsole.log('Error - no filedata!!', fileData);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet mergedPDFUint8 = await mergedPdf.save();\n\n\t\t\t\t\tconst b64PDF = 'data:application/pdf;base64,' + Buffer.from(mergedPDFUint8).toString('base64');\n\n\t\t\t\t\tif (save) {\n\t\t\t\t\t\tthis.callMethodInternal('uploadFileAndSave', fileName, b64PDF, (4 * Math.ceil(b64PDF.length / 3)), -1, fileType, false, (errUp, resUp) => {\n\t\t\t\t\t\t\tresolve(resUp);\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(b64PDF);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}"]}
|