@resolveio/server-lib 9.0.21 → 9.0.23
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.
|
@@ -214,7 +214,7 @@ var Collection = /** @class */ (function () {
|
|
|
214
214
|
collection: this.collectionName,
|
|
215
215
|
id_document: doc['_id'],
|
|
216
216
|
payload: common_1.getBinarySize(JSON.stringify([doc, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',
|
|
217
|
-
method: '
|
|
217
|
+
method: 'deleteOne',
|
|
218
218
|
id_user: '',
|
|
219
219
|
user: '',
|
|
220
220
|
messageId: '',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/mongo.manager.ts"],"names":[],"mappings":"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","file":"mongo.manager.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { ChangeStreamOptions, ClientSession, CollectionAggregationOptions, CollectionInsertManyOptions, CollectionInsertOneOptions, CommonOptions, FilterQuery, FindOneAndDeleteOption, FindOneAndReplaceOption, FindOneAndUpdateOption, FindOneOptions, IndexOptions, IndexSpecification, MongoCountPreferences, MongoDistinctPreferences, ReadPreferenceOrMode, ReplaceOneOptions, UpdateManyOptions, UpdateOneOptions, UpdateQuery, ObjectId } from 'mongodb';\nimport { LookupTables } from '../models/report-builder.model';\nimport { ResolveIOServer } from '../index';\nimport { Users } from '../collections/user.collection';\nimport { buildRbLookups, buildRbSchema, deepCopy, getBinarySize } from '../util/common';\nimport { UserModel } from '../models/user.model';\nimport { Logs } from '../collections/log.collection';\nconst crypto = require('crypto');\nconst scmp = require('scmp');\n\nexport class MongoManager {\n\tprivate _server;\n\tprivate _collections: Collection<any>[] = [];\n\n\tconstructor(mainServer) {\n\t\tthis._server = mainServer;\n\t}\n\n\tregisterCollection(collection: Collection<any>) {\n\t\tthis._collections.push(collection);\n\t}\n\n\tcollections() {\n\t\treturn this._collections;\n\t}\n\n\tcollection(collectionName: string): Collection<any> | UserCollection<any> {\n\t\treturn this._collections.filter(a => a.collectionName === collectionName)[0];\n\t}\n}\n\nexport class Model<T> {\n\tcollection_main: Collection<T> | UserCollection<T> = null;\n\tcollection_version: Collection<T> | UserCollection<T> = null;\n\n\tconstructor(collectionName: string, schema: object, useVersionCollection = false, useReportBuilder = true, reportBuilderLookupTables: LookupTables[] = [], timestamps = true, createLogs = true) {\n\t\tif (collectionName === 'users') {\n\t\t\tthis.collection_main = new UserCollection<T>(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps, createLogs);\n\t\t}\n\t\telse {\n\t\t\tthis.collection_main = new Collection<T>(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps, createLogs);\n\t\t}\n\n\t\tif (useVersionCollection) {\n\t\t\tlet versionSchema = deepCopy(schema);\n\t\t\tversionSchema['_id'].type = 'Object';\n\t\t\tversionSchema['_id'].blackbox = true;\n\n\t\t\tif (collectionName === 'users') {\n\t\t\t\tthis.collection_version = new UserCollection<T>(collectionName + '.versions', versionSchema, false, [], true, false);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.collection_version = new Collection<T>(collectionName + '.versions', versionSchema, false, [], true, false);\n\t\t\t}\n\t\t\tthis.collection_version.createIndex({'_id.__v': 1, '_id._id': 1});\n\t\t\tthis.collection_main.versionCollection = collectionName + '.versions';\n\t\t}\n\t}\n}\n\nexport class Collection<T> {\n\tcollectionName = '';\n\tsimplschema = null;\n\trbSchema = null;\n\ttimestamps = false;\n\tversionKey = '';\n\tversionCollection = '';\n\tcreateLogs = true;\n\tuseRB = false;\n\t\n\tconstructor(collectionName: string, schema: object, useReportBuilder, reportBuilderLookupTables: LookupTables[], timestamps, createLogs) {\n\t\tthis.collectionName = collectionName;\n\t\tthis.simplschema = new SimpleSchema(schema);\n\t\tthis.timestamps = timestamps;\n\t\tthis.createLogs = createLogs;\n\n\t\tif (useReportBuilder) {\n\t\t\tthis.useRB = true;\n\t\t\tlet schemaCopy = deepCopy(schema);\n\t\t\tlet rbSchema = buildRbLookups(reportBuilderLookupTables, schemaCopy, []);\n\t\t\tthis.rbSchema = buildRbSchema(rbSchema);\n\t\t}\n\n\t\tlet interval = setInterval(() => {\n\t\t\tif (ResolveIOServer && ResolveIOServer.getMainServer() && ResolveIOServer.getMainServer().getMongoManager()) {\n\t\t\t\tResolveIOServer.getMainServer().getMongoManager().registerCollection(this);\n\t\t\t\tclearInterval(interval);\n\t\t\t}\n\t\t}, 0);\n\t}\n\n\taggregate(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).toArray();\n\t}\n\n\taggregateCount(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).count();\n\t}\n\n\taggregateCursor(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options);\n\t}\n\n\taggregateStream(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).stream();\n\t}\n\n\tcountDocuments(filter: FilterQuery<T> = {}, options?: MongoCountPreferences) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).countDocuments(filter, options);\n\t}\n\n\tcreate(f_docs: T | T[], options?: CollectionInsertManyOptions): Promise<T | T[]> {\n\t\tlet docs = [];\n\n\t\tif (!Array.isArray(f_docs)) {\n\t\t\treturn this.insertOne(f_docs, options);\n\t\t}\n\n\t\treturn this.insertMany(docs, options);\n\t}\n\n\tcreateIndex(fieldOrSpec: any, options?: IndexOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).createIndex(fieldOrSpec, options);\n\t}\n\n\tcreateIndexes(indexSpecs: IndexSpecification[], options?: { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).createIndexes(indexSpecs, options);\n\t}\n\n\tasync deleteMany(filter: FilterQuery<T> = {}, options?: CommonOptions) {\n\t\tif (this.createLogs) {\n\t\t\tlet docs = await this.find(filter);\n\n\t\t\tdocs.forEach(doc => {\n\t\t\t\tLogs.create({\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, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'deleteMany',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).deleteMany(filter, options);\n\t}\n\n\tasync deleteOne(filter: FilterQuery<T> = {}, options?: CommonOptions & { bypassDocumentValidation?: boolean; }) {\n\t\tif (this.createLogs) {\n\t\t\tlet doc = await this.findOne(filter);\n\n\t\t\tif (doc) {\n\t\t\t\tLogs.create({\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, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'deleteMany',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).deleteOne(filter, options);\n\t}\n\n\tdistinct(key: string, filter?: FilterQuery<T>, options?: MongoDistinctPreferences): Promise<T[]> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).distinct(key, filter, options);\n\t}\n\n\tdrop(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).drop(options);\n\t}\n\n\tdropIndex(indexName: string, options?: CommonOptions & { maxTimeMS?: number; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).dropIndex(indexName, options);\n\t}\n\n\tdropIndexes(options?: { session?: ClientSession; maxTimeMS?: number; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).dropIndexes(options);\n\t}\n\n\tfind(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>): Promise<T[]> {\n\t\tif (this.createLogs) {\n\t\t\tLogs.create({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\ttype: 'query',\n\t\t\t\tcollection: this.collectionName,\n\t\t\t\tid_document: '',\n\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, options])) < 200000 ? JSON.stringify([filter, options], null, 2) : 'Too Big',\n\t\t\t\tmethod: 'find',\n\t\t\t\tid_user: '',\n\t\t\t\tuser: '',\n\t\t\t\tmessageId: '',\n\t\t\t\troute: ''\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options).toArray();\n\t}\n\n\tfindById(id: string, options?: FindOneOptions<T>): Promise<T> {\n\t\tif (this.createLogs) {\n\t\t\tLogs.create({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\ttype: 'query',\n\t\t\t\tcollection: this.collectionName,\n\t\t\t\tid_document: id,\n\t\t\t\tpayload: getBinarySize(JSON.stringify([id, options])) < 200000 ? JSON.stringify([id, options], null, 2) : 'Too Big',\n\t\t\t\tmethod: 'findById',\n\t\t\t\tid_user: '',\n\t\t\t\tuser: '',\n\t\t\t\tmessageId: '',\n\t\t\t\troute: ''\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).findOne({_id: id}, <T>options);\n\t}\n\n\tfindCount(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>) {\n\t\tif (this.createLogs) {\n\t\t\tLogs.create({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\ttype: 'query',\n\t\t\t\tcollection: this.collectionName,\n\t\t\t\tid_document: '',\n\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, options])) < 200000 ? JSON.stringify([filter, options], null, 2) : 'Too Big',\n\t\t\t\tmethod: 'findCount',\n\t\t\t\tid_user: '',\n\t\t\t\tuser: '',\n\t\t\t\tmessageId: '',\n\t\t\t\troute: ''\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options).count();\n\t}\n\n\tfindCursor(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options);\n\t}\n\n\tfindStream(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>, streamOptions?: any) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options).stream(streamOptions);\n\t}\n\n\tfindOne(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>): Promise<T> {\n\t\tif (this.createLogs) {\n\t\t\tLogs.create({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\ttype: 'query',\n\t\t\t\tcollection: this.collectionName,\n\t\t\t\tid_document: '',\n\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, options])) < 200000 ? JSON.stringify([filter, options], null, 2) : 'Too Big',\n\t\t\t\tmethod: 'findOne',\n\t\t\t\tid_user: '',\n\t\t\t\tuser: '',\n\t\t\t\tmessageId: '',\n\t\t\t\troute: ''\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).findOne(filter, <T>options);\n\t}\n\n\tasync findOneAndDelete(filter: FilterQuery<T> = {}, options?: FindOneAndDeleteOption<T>): Promise<T> {\n\t\tif (this.createLogs) {\n\t\t\tlet doc = await this.findOne(filter);\n\n\t\t\tif (doc) {\n\t\t\t\tLogs.create({\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, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'findOneAndDelete',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndDelete(filter, options).then(res => {\n\t\t\t\tresolve(res.value);\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndReplace(filter: FilterQuery<T> = {}, replacement: T, options?: FindOneAndReplaceOption<T>): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\treplacement['updatedAt'] = new Date();\n\n\t\t\tif (this.createLogs) {\n\t\t\t\tlet doc = await this.findOne(filter);\n\n\t\t\t\tif (doc) {\n\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndReplace',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: '',\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndReplace(filter, <any>replacement, options).then(res => {\n\t\t\t\tresolve(res.value);\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndUpdate(filter: FilterQuery<T> = {}, update: any, options?: FindOneAndUpdateOption<T>): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!update['$set']) {\n\t\t\t\tupdate['$set'] = {updatedAt: new Date()};\n\t\t\t}\n\t\t\telse {\n\t\t\t\tupdate['$set']['updatedAt'] = new Date();\n\t\t\t}\n\n\t\t\tif (this.createLogs) {\n\t\t\t\tlet doc = await this.findOne(filter);\n\n\t\t\t\tif (doc) {\n\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndUpdate',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: '',\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndUpdate(filter, update, options).then(res => {\n\t\t\t\tresolve(res.value);\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tindexes(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).indexes(options);\n\t}\n\n\tindexExists(indexes: string | string[], options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).indexExists(indexes, options);\n\t}\n\n\tinsertMany(docs: T[], options?: CollectionInsertManyOptions): Promise<T[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (this.timestamps) {\n\t\t\t\tdocs.forEach(doc => {\n\t\t\t\t\tdoc['createdAt'] = new Date();\n\t\t\t\t\tdoc['updatedAt'] = new Date();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this.createLogs) {\n\t\t\t\tdocs.forEach(doc => {\n\t\t\t\t\tLogs.create({\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: '',\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).insertMany(docs, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(docs);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tinsertOne(doc: T, options?: CollectionInsertOneOptions): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (this.timestamps) {\n\t\t\t\tdoc['createdAt'] = new Date();\n\t\t\t\tdoc['updatedAt'] = new Date();\n\t\t\t}\n\n\t\t\tif (this.createLogs) {\n\t\t\t\tLogs.create({\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: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).insertOne(doc, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(doc);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tlistIndexes(options?: { batchSize?: number; readPreference?: ReadPreferenceOrMode; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).listIndexes(options);\n\t}\n\n\treIndex(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).reIndex(options);\n\t}\n\n\trename(newName: string, options?: { dropTarget?: boolean; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).rename(newName, options);\n\t}\n\n\tasync replaceOne(filter: FilterQuery<T>, replacement: T, options?: ReplaceOneOptions) {\n\t\tif (this.createLogs) {\n\t\t\tlet doc = await this.findOne(filter);\n\n\t\t\tif (doc) {\n\t\t\t\tLogs.create({\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, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).replaceOne(filter, replacement, options);\n\t}\n\n\tstats(options?: { scale: number; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).stats(options);\n\t}\n\n\tasync updateMany(filter: FilterQuery<T>, update: UpdateQuery<T> | Partial<T>, options?: UpdateManyOptions) {\n\t\tif (!update['$set']) {\n\t\t\tupdate['$set'] = {updatedAt: new Date()};\n\t\t}\n\t\telse {\n\t\t\tupdate['$set']['updatedAt'] = new Date();\n\t\t}\n\n\t\tif (this.createLogs) {\n\t\t\tlet docs = await this.find(filter);\n\n\t\t\tdocs.forEach(doc => {\n\t\t\t\tLogs.create({\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, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'updateMany',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).updateMany(filter, update, options);\n\t}\n\n\tasync updateOne(filter: FilterQuery<T>, update: UpdateQuery<T> | Partial<T>, options?: UpdateOneOptions) {\n\t\tif (!update['$set']) {\n\t\t\tupdate['$set'] = {updatedAt: new Date()};\n\t\t}\n\t\telse {\n\t\t\tupdate['$set']['updatedAt'] = new Date();\n\t\t}\n\n\t\tif (this.createLogs) {\n\t\t\tlet doc = await this.findOne(filter);\n\n\t\t\tif (doc) {\n\t\t\t\tLogs.create({\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, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).updateOne(filter, update, options);\n\t}\n\t\n\twatchCollection(options?: ChangeStreamOptions & { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).watch(options);\n\t}\n\n\twatchCollectionWithAggregate(pipeline?: object[], options?: ChangeStreamOptions & { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).watch(pipeline, options);\n\t}\n}\n\nexport class UserCollection<T> extends Collection<T> {\n\tauthenticateStrategy() {\n\t\treturn async (username, password, cb) => {\n\t\t\tlet user = await Users.findOne({username: username});\n\t\t\tthis.authenticate(user, password).then(authUser => {\n\t\t\t\tif (authUser.data) {\n\t\t\t\t\tcb(null, user, null);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcb(null, null, authUser.error);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tcb(err, null, null);\n\t\t\t})\n\t\t};\n\t}\n\n\tauthenticate(user: UserModel, password: string): Promise<{data: UserModel, error: string}> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tconst attemptsInterval = Math.pow(100, Math.log(user.attempts + 1));\n\t\t\tconst calculatedInterval = attemptsInterval < 300000 ? attemptsInterval : 300000;\n\t\t\n\t\t\tif (Date.now() - user.last.getTime() < calculatedInterval) {\n\t\t\t\tuser.last = new Date();\n\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last}});\n\t\t\t\tresolve({\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: 'Attempt Too Soon'\n\t\t\t\t});\n\n\t\t\t\treturn;\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\tawait Users.updateOne({_id: user._id}, {$set: {hash: hash, salt: salt, services: {}}});\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);\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}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/managers/mongo.manager.ts"],"names":[],"mappings":"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","file":"mongo.manager.js","sourcesContent":["import SimpleSchema from 'simpl-schema';\nimport { ChangeStreamOptions, ClientSession, CollectionAggregationOptions, CollectionInsertManyOptions, CollectionInsertOneOptions, CommonOptions, FilterQuery, FindOneAndDeleteOption, FindOneAndReplaceOption, FindOneAndUpdateOption, FindOneOptions, IndexOptions, IndexSpecification, MongoCountPreferences, MongoDistinctPreferences, ReadPreferenceOrMode, ReplaceOneOptions, UpdateManyOptions, UpdateOneOptions, UpdateQuery, ObjectId } from 'mongodb';\nimport { LookupTables } from '../models/report-builder.model';\nimport { ResolveIOServer } from '../index';\nimport { Users } from '../collections/user.collection';\nimport { buildRbLookups, buildRbSchema, deepCopy, getBinarySize } from '../util/common';\nimport { UserModel } from '../models/user.model';\nimport { Logs } from '../collections/log.collection';\nconst crypto = require('crypto');\nconst scmp = require('scmp');\n\nexport class MongoManager {\n\tprivate _server;\n\tprivate _collections: Collection<any>[] = [];\n\n\tconstructor(mainServer) {\n\t\tthis._server = mainServer;\n\t}\n\n\tregisterCollection(collection: Collection<any>) {\n\t\tthis._collections.push(collection);\n\t}\n\n\tcollections() {\n\t\treturn this._collections;\n\t}\n\n\tcollection(collectionName: string): Collection<any> | UserCollection<any> {\n\t\treturn this._collections.filter(a => a.collectionName === collectionName)[0];\n\t}\n}\n\nexport class Model<T> {\n\tcollection_main: Collection<T> | UserCollection<T> = null;\n\tcollection_version: Collection<T> | UserCollection<T> = null;\n\n\tconstructor(collectionName: string, schema: object, useVersionCollection = false, useReportBuilder = true, reportBuilderLookupTables: LookupTables[] = [], timestamps = true, createLogs = true) {\n\t\tif (collectionName === 'users') {\n\t\t\tthis.collection_main = new UserCollection<T>(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps, createLogs);\n\t\t}\n\t\telse {\n\t\t\tthis.collection_main = new Collection<T>(collectionName, schema, useReportBuilder, reportBuilderLookupTables, timestamps, createLogs);\n\t\t}\n\n\t\tif (useVersionCollection) {\n\t\t\tlet versionSchema = deepCopy(schema);\n\t\t\tversionSchema['_id'].type = 'Object';\n\t\t\tversionSchema['_id'].blackbox = true;\n\n\t\t\tif (collectionName === 'users') {\n\t\t\t\tthis.collection_version = new UserCollection<T>(collectionName + '.versions', versionSchema, false, [], true, false);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.collection_version = new Collection<T>(collectionName + '.versions', versionSchema, false, [], true, false);\n\t\t\t}\n\t\t\tthis.collection_version.createIndex({'_id.__v': 1, '_id._id': 1});\n\t\t\tthis.collection_main.versionCollection = collectionName + '.versions';\n\t\t}\n\t}\n}\n\nexport class Collection<T> {\n\tcollectionName = '';\n\tsimplschema = null;\n\trbSchema = null;\n\ttimestamps = false;\n\tversionKey = '';\n\tversionCollection = '';\n\tcreateLogs = true;\n\tuseRB = false;\n\t\n\tconstructor(collectionName: string, schema: object, useReportBuilder, reportBuilderLookupTables: LookupTables[], timestamps, createLogs) {\n\t\tthis.collectionName = collectionName;\n\t\tthis.simplschema = new SimpleSchema(schema);\n\t\tthis.timestamps = timestamps;\n\t\tthis.createLogs = createLogs;\n\n\t\tif (useReportBuilder) {\n\t\t\tthis.useRB = true;\n\t\t\tlet schemaCopy = deepCopy(schema);\n\t\t\tlet rbSchema = buildRbLookups(reportBuilderLookupTables, schemaCopy, []);\n\t\t\tthis.rbSchema = buildRbSchema(rbSchema);\n\t\t}\n\n\t\tlet interval = setInterval(() => {\n\t\t\tif (ResolveIOServer && ResolveIOServer.getMainServer() && ResolveIOServer.getMainServer().getMongoManager()) {\n\t\t\t\tResolveIOServer.getMainServer().getMongoManager().registerCollection(this);\n\t\t\t\tclearInterval(interval);\n\t\t\t}\n\t\t}, 0);\n\t}\n\n\taggregate(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).toArray();\n\t}\n\n\taggregateCount(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).count();\n\t}\n\n\taggregateCursor(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options);\n\t}\n\n\taggregateStream(pipeline: object[], options?: CollectionAggregationOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).aggregate(pipeline, options).stream();\n\t}\n\n\tcountDocuments(filter: FilterQuery<T> = {}, options?: MongoCountPreferences) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).countDocuments(filter, options);\n\t}\n\n\tcreate(f_docs: T | T[], options?: CollectionInsertManyOptions): Promise<T | T[]> {\n\t\tlet docs = [];\n\n\t\tif (!Array.isArray(f_docs)) {\n\t\t\treturn this.insertOne(f_docs, options);\n\t\t}\n\n\t\treturn this.insertMany(docs, options);\n\t}\n\n\tcreateIndex(fieldOrSpec: any, options?: IndexOptions) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).createIndex(fieldOrSpec, options);\n\t}\n\n\tcreateIndexes(indexSpecs: IndexSpecification[], options?: { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).createIndexes(indexSpecs, options);\n\t}\n\n\tasync deleteMany(filter: FilterQuery<T> = {}, options?: CommonOptions) {\n\t\tif (this.createLogs) {\n\t\t\tlet docs = await this.find(filter);\n\n\t\t\tdocs.forEach(doc => {\n\t\t\t\tLogs.create({\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, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'deleteMany',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).deleteMany(filter, options);\n\t}\n\n\tasync deleteOne(filter: FilterQuery<T> = {}, options?: CommonOptions & { bypassDocumentValidation?: boolean; }) {\n\t\tif (this.createLogs) {\n\t\t\tlet doc = await this.findOne(filter);\n\n\t\t\tif (doc) {\n\t\t\t\tLogs.create({\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, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'deleteOne',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).deleteOne(filter, options);\n\t}\n\n\tdistinct(key: string, filter?: FilterQuery<T>, options?: MongoDistinctPreferences): Promise<T[]> {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).distinct(key, filter, options);\n\t}\n\n\tdrop(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).drop(options);\n\t}\n\n\tdropIndex(indexName: string, options?: CommonOptions & { maxTimeMS?: number; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).dropIndex(indexName, options);\n\t}\n\n\tdropIndexes(options?: { session?: ClientSession; maxTimeMS?: number; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).dropIndexes(options);\n\t}\n\n\tfind(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>): Promise<T[]> {\n\t\tif (this.createLogs) {\n\t\t\tLogs.create({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\ttype: 'query',\n\t\t\t\tcollection: this.collectionName,\n\t\t\t\tid_document: '',\n\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, options])) < 200000 ? JSON.stringify([filter, options], null, 2) : 'Too Big',\n\t\t\t\tmethod: 'find',\n\t\t\t\tid_user: '',\n\t\t\t\tuser: '',\n\t\t\t\tmessageId: '',\n\t\t\t\troute: ''\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options).toArray();\n\t}\n\n\tfindById(id: string, options?: FindOneOptions<T>): Promise<T> {\n\t\tif (this.createLogs) {\n\t\t\tLogs.create({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\ttype: 'query',\n\t\t\t\tcollection: this.collectionName,\n\t\t\t\tid_document: id,\n\t\t\t\tpayload: getBinarySize(JSON.stringify([id, options])) < 200000 ? JSON.stringify([id, options], null, 2) : 'Too Big',\n\t\t\t\tmethod: 'findById',\n\t\t\t\tid_user: '',\n\t\t\t\tuser: '',\n\t\t\t\tmessageId: '',\n\t\t\t\troute: ''\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).findOne({_id: id}, <T>options);\n\t}\n\n\tfindCount(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>) {\n\t\tif (this.createLogs) {\n\t\t\tLogs.create({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\ttype: 'query',\n\t\t\t\tcollection: this.collectionName,\n\t\t\t\tid_document: '',\n\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, options])) < 200000 ? JSON.stringify([filter, options], null, 2) : 'Too Big',\n\t\t\t\tmethod: 'findCount',\n\t\t\t\tid_user: '',\n\t\t\t\tuser: '',\n\t\t\t\tmessageId: '',\n\t\t\t\troute: ''\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options).count();\n\t}\n\n\tfindCursor(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options);\n\t}\n\n\tfindStream(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>, streamOptions?: any) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).find(filter, <T>options).stream(streamOptions);\n\t}\n\n\tfindOne(filter: FilterQuery<T> = {}, options?: FindOneOptions<T>): Promise<T> {\n\t\tif (this.createLogs) {\n\t\t\tLogs.create({\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\ttype: 'query',\n\t\t\t\tcollection: this.collectionName,\n\t\t\t\tid_document: '',\n\t\t\t\tpayload: getBinarySize(JSON.stringify([filter, options])) < 200000 ? JSON.stringify([filter, options], null, 2) : 'Too Big',\n\t\t\t\tmethod: 'findOne',\n\t\t\t\tid_user: '',\n\t\t\t\tuser: '',\n\t\t\t\tmessageId: '',\n\t\t\t\troute: ''\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).findOne(filter, <T>options);\n\t}\n\n\tasync findOneAndDelete(filter: FilterQuery<T> = {}, options?: FindOneAndDeleteOption<T>): Promise<T> {\n\t\tif (this.createLogs) {\n\t\t\tlet doc = await this.findOne(filter);\n\n\t\t\tif (doc) {\n\t\t\t\tLogs.create({\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, filter, options])) < 200000 ? JSON.stringify([doc, filter, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'findOneAndDelete',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndDelete(filter, options).then(res => {\n\t\t\t\tresolve(res.value);\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndReplace(filter: FilterQuery<T> = {}, replacement: T, options?: FindOneAndReplaceOption<T>): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\treplacement['updatedAt'] = new Date();\n\n\t\t\tif (this.createLogs) {\n\t\t\t\tlet doc = await this.findOne(filter);\n\n\t\t\t\tif (doc) {\n\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndReplace',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: '',\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndReplace(filter, <any>replacement, options).then(res => {\n\t\t\t\tresolve(res.value);\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tfindOneAndUpdate(filter: FilterQuery<T> = {}, update: any, options?: FindOneAndUpdateOption<T>): Promise<T> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tif (!update['$set']) {\n\t\t\t\tupdate['$set'] = {updatedAt: new Date()};\n\t\t\t}\n\t\t\telse {\n\t\t\t\tupdate['$set']['updatedAt'] = new Date();\n\t\t\t}\n\n\t\t\tif (this.createLogs) {\n\t\t\t\tlet doc = await this.findOne(filter);\n\n\t\t\t\tif (doc) {\n\t\t\t\t\tLogs.create({\n\t\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\t\ttype: 'document',\n\t\t\t\t\t\tcollection: this.collectionName,\n\t\t\t\t\t\tid_document: doc['_id'],\n\t\t\t\t\t\tpayload: getBinarySize(JSON.stringify([doc, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\t\tmethod: 'findOneAndUpdate',\n\t\t\t\t\t\tid_user: '',\n\t\t\t\t\t\tuser: '',\n\t\t\t\t\t\tmessageId: '',\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).findOneAndUpdate(filter, update, options).then(res => {\n\t\t\t\tresolve(res.value);\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tindexes(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).indexes(options);\n\t}\n\n\tindexExists(indexes: string | string[], options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).indexExists(indexes, options);\n\t}\n\n\tinsertMany(docs: T[], options?: CollectionInsertManyOptions): Promise<T[]> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (this.timestamps) {\n\t\t\t\tdocs.forEach(doc => {\n\t\t\t\t\tdoc['createdAt'] = new Date();\n\t\t\t\t\tdoc['updatedAt'] = new Date();\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this.createLogs) {\n\t\t\t\tdocs.forEach(doc => {\n\t\t\t\t\tLogs.create({\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: '',\n\t\t\t\t\t\troute: ''\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).insertMany(docs, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(docs);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tinsertOne(doc: T, options?: CollectionInsertOneOptions): Promise<T> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tif (this.timestamps) {\n\t\t\t\tdoc['createdAt'] = new Date();\n\t\t\t\tdoc['updatedAt'] = new Date();\n\t\t\t}\n\n\t\t\tif (this.createLogs) {\n\t\t\t\tLogs.create({\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: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tResolveIOServer.getMainDB().collection(this.collectionName).insertOne(doc, options).then(res => {\n\t\t\t\tif (res.result.ok) {\n\t\t\t\t\tresolve(doc);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treject(res.result.ok);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\treject(err);\n\t\t\t});\n\t\t});\n\t}\n\n\tlistIndexes(options?: { batchSize?: number; readPreference?: ReadPreferenceOrMode; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).listIndexes(options);\n\t}\n\n\treIndex(options?: { session: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).reIndex(options);\n\t}\n\n\trename(newName: string, options?: { dropTarget?: boolean; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).rename(newName, options);\n\t}\n\n\tasync replaceOne(filter: FilterQuery<T>, replacement: T, options?: ReplaceOneOptions) {\n\t\tif (this.createLogs) {\n\t\t\tlet doc = await this.findOne(filter);\n\n\t\t\tif (doc) {\n\t\t\t\tLogs.create({\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, filter, replacement, options])) < 200000 ? JSON.stringify([doc, filter, replacement, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'replaceOne',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).replaceOne(filter, replacement, options);\n\t}\n\n\tstats(options?: { scale: number; session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).stats(options);\n\t}\n\n\tasync updateMany(filter: FilterQuery<T>, update: UpdateQuery<T> | Partial<T>, options?: UpdateManyOptions) {\n\t\tif (!update['$set']) {\n\t\t\tupdate['$set'] = {updatedAt: new Date()};\n\t\t}\n\t\telse {\n\t\t\tupdate['$set']['updatedAt'] = new Date();\n\t\t}\n\n\t\tif (this.createLogs) {\n\t\t\tlet docs = await this.find(filter);\n\n\t\t\tdocs.forEach(doc => {\n\t\t\t\tLogs.create({\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, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'updateMany',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).updateMany(filter, update, options);\n\t}\n\n\tasync updateOne(filter: FilterQuery<T>, update: UpdateQuery<T> | Partial<T>, options?: UpdateOneOptions) {\n\t\tif (!update['$set']) {\n\t\t\tupdate['$set'] = {updatedAt: new Date()};\n\t\t}\n\t\telse {\n\t\t\tupdate['$set']['updatedAt'] = new Date();\n\t\t}\n\n\t\tif (this.createLogs) {\n\t\t\tlet doc = await this.findOne(filter);\n\n\t\t\tif (doc) {\n\t\t\t\tLogs.create({\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, filter, update, options])) < 200000 ? JSON.stringify([doc, filter, update, options], null, 2) : 'Too Big',\n\t\t\t\t\tmethod: 'updateOne',\n\t\t\t\t\tid_user: '',\n\t\t\t\t\tuser: '',\n\t\t\t\t\tmessageId: '',\n\t\t\t\t\troute: ''\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).updateOne(filter, update, options);\n\t}\n\t\n\twatchCollection(options?: ChangeStreamOptions & { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).watch(options);\n\t}\n\n\twatchCollectionWithAggregate(pipeline?: object[], options?: ChangeStreamOptions & { session?: ClientSession; }) {\n\t\treturn ResolveIOServer.getMainDB().collection(this.collectionName).watch(pipeline, options);\n\t}\n}\n\nexport class UserCollection<T> extends Collection<T> {\n\tauthenticateStrategy() {\n\t\treturn async (username, password, cb) => {\n\t\t\tlet user = await Users.findOne({username: username});\n\t\t\tthis.authenticate(user, password).then(authUser => {\n\t\t\t\tif (authUser.data) {\n\t\t\t\t\tcb(null, user, null);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tcb(null, null, authUser.error);\n\t\t\t\t}\n\t\t\t}, err => {\n\t\t\t\tcb(err, null, null);\n\t\t\t})\n\t\t};\n\t}\n\n\tauthenticate(user: UserModel, password: string): Promise<{data: UserModel, error: string}> {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tconst attemptsInterval = Math.pow(100, Math.log(user.attempts + 1));\n\t\t\tconst calculatedInterval = attemptsInterval < 300000 ? attemptsInterval : 300000;\n\t\t\n\t\t\tif (Date.now() - user.last.getTime() < calculatedInterval) {\n\t\t\t\tuser.last = new Date();\n\t\t\t\tawait Users.updateOne({_id: user._id}, {$set: {last: user.last}});\n\t\t\t\tresolve({\n\t\t\t\t\tdata: null,\n\t\t\t\t\terror: 'Attempt Too Soon'\n\t\t\t\t});\n\n\t\t\t\treturn;\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\tawait Users.updateOne({_id: user._id}, {$set: {hash: hash, salt: salt, services: {}}});\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);\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}"]}
|
|
@@ -490,9 +490,9 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
490
490
|
oplog = uniqueOplog_1[i];
|
|
491
491
|
_loop_5 = function (j) {
|
|
492
492
|
var sub, _a, i_1;
|
|
493
|
-
var _b;
|
|
494
|
-
return __generator(this, function (
|
|
495
|
-
switch (
|
|
493
|
+
var _b, _c;
|
|
494
|
+
return __generator(this, function (_d) {
|
|
495
|
+
switch (_d.label) {
|
|
496
496
|
case 0:
|
|
497
497
|
sub = that._subscriptions[j];
|
|
498
498
|
if (!sub) return [3 /*break*/, 5];
|
|
@@ -507,9 +507,9 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
507
507
|
if (!that._publications[sub.publication].preFunction) return [3 /*break*/, 4];
|
|
508
508
|
if (!sub.clients.length) return [3 /*break*/, 2];
|
|
509
509
|
_a = sub;
|
|
510
|
-
return [4 /*yield*/, that._publications[sub.publication].preFunction(sub.subscriptionData)];
|
|
510
|
+
return [4 /*yield*/, (_b = that._publications[sub.publication]).preFunction.apply(_b, sub.subscriptionData)];
|
|
511
511
|
case 1:
|
|
512
|
-
_a.preSubscriptionData =
|
|
512
|
+
_a.preSubscriptionData = _d.sent();
|
|
513
513
|
if (that._publications[sub.publication].fetchFunction(oplog.doc, sub.preSubscriptionData)) {
|
|
514
514
|
sub['oplog'] = oplog;
|
|
515
515
|
uniquePubs.push(common_1.deepCopy(sub));
|
|
@@ -525,11 +525,11 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
525
525
|
if (that._subscriptions.findIndex(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); }) >= 0) {
|
|
526
526
|
that._subscriptions.splice(that._subscriptions.findIndex(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); }), 1);
|
|
527
527
|
}
|
|
528
|
-
|
|
528
|
+
_d.label = 3;
|
|
529
529
|
case 3: return [3 /*break*/, 5];
|
|
530
530
|
case 4:
|
|
531
531
|
if (that._publications[sub.publication].fetchFunction) {
|
|
532
|
-
if ((
|
|
532
|
+
if ((_c = that._publications[sub.publication]).fetchFunction.apply(_c, __spreadArrays([oplog.doc], sub.subscriptionData))) {
|
|
533
533
|
sub['oplog'] = oplog;
|
|
534
534
|
uniquePubs.push(common_1.deepCopy(sub));
|
|
535
535
|
}
|
|
@@ -538,7 +538,7 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
538
538
|
sub['oplog'] = oplog;
|
|
539
539
|
uniquePubs.push(common_1.deepCopy(sub));
|
|
540
540
|
}
|
|
541
|
-
|
|
541
|
+
_d.label = 5;
|
|
542
542
|
case 5: return [2 /*return*/];
|
|
543
543
|
}
|
|
544
544
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/subscription.manager.ts"],"names":[],"mappings":"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","file":"subscription.manager.js","sourcesContent":["import { ServerResponseModel } from '../models/server-response.model';\nimport { ActiveSubscriptionModel, SubscriptionModel } from '../models/subscription.model';\nimport * as WebSocket from 'ws';\nimport { loadLogPublications } from '../publications/logs';\nimport { loadAppStatusPublications } from '../publications/app-status';\nimport { loadAppVersionPublications } from '../publications/app-version';\nimport { loadFilePublications } from '../publications/files';\nimport { loadSuperAdminPublications } from '../publications/super-admin';\nimport { LoggedInUsers } from '../collections/logged-in-users.collection';\nimport { loadCronJobPublications } from '../publications/cron-jobs';\nimport { loadFlagsPublications } from '../publications/flags';\nimport { loadMethodCallsPublications } from '../publications/method-calls';\nimport { loadMethodResponsePublications } from '../publications/method-responses';\nimport ResolveIOMainServer from '../server-app';\nimport { ResolveIOServer } from '../index';\nimport { loadNotificationPublications } from '../publications/notifications';\nimport { deepCopy } from '../util/common';\nimport * as moment from 'moment';\nimport { loadReportBuilderReportPublications } from '../publications/report-builder-reports';\nimport { LoggedInUserModel } from '../models/logged-in-users.model';\n\nimport * as NodeCache from 'node-cache';\nimport { ChangeStream } from 'mongodb';\nimport { loadReportBuilderLibraryPublications } from '../publications/report-builder-libraries';\nimport { loadUserGroupPublications } from '../publications/user-groups';\nimport { loadUserGuidePublications } from '../publications/user-guides';\nimport { loadReportBuilderDashboardBuilderPublications } from '../publications/report-builder-dashboard-builders';\nimport { objectIdHexString } from './mongo.manager';\n\nexport class SubscriptionManager {\n\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _publications: SubscriptionModel = {};\n\tprivate _subscriptions: ActiveSubscriptionModel[] = [];\n\tprivate _wss: WebSocket.Server;\n\tprivate _loggedInUsers: LoggedInUserModel[] = [];\n\t\n\tprivate _oplogQueue = [];\n\tprivate _subCache = [];\n\tprivate _nodeCache;\n\tprivate _cacheId = 0;\n\tprivate _sendQueue = [];\n\tprivate _runningQueue = false;\n\n\tprivate _oplog: ChangeStream;\n\n\tprivate serverConfig;\n\n\tconstructor(mainServer, wss: WebSocket.Server, serverConfig) {\n\t\tthis._mainServer = mainServer;\n\n\t\tthis._nodeCache = new NodeCache( { stdTTL: 0, checkperiod: 0 } );\n\n\t\tthis.serverConfig = serverConfig;\n\t\tthis._wss = wss;\n\n\t\t// Publications\n\t\tloadSuperAdminPublications(this);\n\t\tloadAppVersionPublications(this);\n\t\tloadAppStatusPublications(this);\n\t\tloadLogPublications(this);\n\t\tloadFilePublications(this);\n\t\tloadCronJobPublications(this);\n\t\tloadFlagsPublications(this);\n\t\tloadMethodCallsPublications(this);\n\t\tloadMethodResponsePublications(this);\n\t\tloadNotificationPublications(this);\n\t\tloadReportBuilderReportPublications(this);\n\t\tloadReportBuilderLibraryPublications(this);\n\t\tloadUserGroupPublications(this);\n\t\tloadUserGuidePublications(this);\n\t\tloadReportBuilderDashboardBuilderPublications(this);\n\n\t\tthis.tailOpLog();\n\t\tthis.runOpLogQueue();\n\n\t\tsetInterval(() => {\n\t\t\tconsole.log(new Date());\n\t\t\tconsole.log('Sub Cache Length: ' + this._subCache.length);\n\t\t\tconsole.log('Sub Length: ' + this._subscriptions.length);\n\t\t\tconsole.log(this._nodeCache.getStats().vsize);\n\t\t}, 43200000);\n\n\t\tsetInterval(() => {\n\t\t\tif (!this._runningQueue) {\n\t\t\t\tif (this._sendQueue.length) {\n\t\t\t\t\tthis._runningQueue = true;\n\t\t\t\t\tfor (let i = this._sendQueue.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tlet ws = this._mainServer.getWS(this._sendQueue[i].id_ws);\n\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\tif (ws.bufferedAmount < 20480) {\n\t\t\t\t\t\t\t\tlet sendItem = this._sendQueue.pop();\n\t\t\t\t\t\t\t\tws.send(JSON.stringify(sendItem.data), (error) => {\n\t\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\t\tthis.unsubscribeAll(ws);\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\telse {\n\t\t\t\t\t\t\tthis._sendQueue.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._runningQueue = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}, 25);\n\n\t\tsetInterval(async () => {\n\t\t\tthis._loggedInUsers = await LoggedInUsers.find();\n\t\n\t\t\tlet userCopy = deepCopy(this._loggedInUsers);\n\t\t\tfor (let i = this._loggedInUsers.length - 1; i >= 0; i--) {\n\t\t\t\tlet loggedInUser = userCopy[i];\n\n\t\t\t\tif (!loggedInUser.date || moment().diff(moment(loggedInUser.date), 'seconds') >= 60) {\n\t\t\t\t\tif (this._mainServer.getWS(loggedInUser.id_ws)) {\n\t\t\t\t\t\tthis.unsubscribeAll(this._mainServer.getWS(loggedInUser.id_ws));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._subscriptions.forEach(sub => {\n\t\t\t\t\t\t\tfor (let j = sub.clients.length - 1; j >= 0; j--) {\n\t\t\t\t\t\t\t\tlet client = sub.clients[j];\n\n\t\t\t\t\t\t\t\tif (client.id_socket === loggedInUser.id_ws) {\n\t\t\t\t\t\t\t\t\tsub.clients.splice(j, 1);\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\n\t\t\t\t\t\tif (await LoggedInUsers.findById(loggedInUser._id)) {\n\t\t\t\t\t\t\tLoggedInUsers.deleteOne({_id: loggedInUser._id});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._loggedInUsers.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < this._subscriptions.length; i++) {\n\t\t\t\tlet sub = this._subscriptions[i];\n\n\t\t\t\tfor (let j = sub.clients.length - 1; j >= 0; j--) {\n\t\t\t\t\tlet client = sub.clients[j];\n\n\t\t\t\t\tif (!this._loggedInUsers.some(a => a.id_ws === client.id_socket)) {\n\t\t\t\t\t\tsub.clients.splice(j, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 60000);\n\t}\n\n\t// Add all files to publications private object\n\tpublic publications(method: SubscriptionModel) {\n\t\tthis._publications = Object.assign(this._publications, method);\n\t}\n\n\tpublic async loggedInLatency(ws: WebSocket) {\n\t\tlet date = new Date();\n\n\t\tlet loggedInUser = this._loggedInUsers.filter(a => a.id_ws === ws['id_socket'])[0];\n\n\t\tif (loggedInUser) {\n\t\t\tloggedInUser.date = date;\n\t\t}\n\n\t\tLoggedInUsers.findOneAndUpdate({id_ws: ws['id_socket']}, {$set: {latency: ws['latency'], date: date}}).then(res => {\n\t\t\tif (!res) {\n\t\t\t\tthis.unsubscribeAll(ws);\n\t\t\t}\n\t\t}, err => {\n\t\t\tthis.unsubscribeAll(ws);\n\t\t});\n\t}\n\n\t// Subscribe to publication\n\tpublic async subscribe(messageDate: Date, ws: WebSocket, messageId: number, publication: string, ...subscriptionData: any[]) {\n\t\tlet that = this;\n\n\t\tlet pub = that._publications[publication];\n\n\t\tif (!pub) {\n\t\t\tconsole.error('No Publication: ' + publication);\n\t\t\treturn;\n\t\t}\n\t\telse {\n\t\t\tif (subscriptionData.length > 1 || subscriptionData[0]) {\n\t\t\t\tif (!pub.check) {\n\t\t\t\t\tconsole.error('No Check Function For Pub ' + publication);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse if (!pub.check._schema) {\n\t\t\t\t\tconsole.error('No Check Schema For Pub ' + publication);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet valObj = {};\n\t\t\t\t\tlet valKeys = Object.keys(pub.check._schema);\n\n\t\t\t\t\tlet rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 0; i < subscriptionData.length; i++) {\n\t\t\t\t\t\tvalObj[rootKeys[i]] = subscriptionData[i];\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpub.check.validate(valObj);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\tif (errors) {\n\t\t\t\t\t\t\tconsole.error('Error in Pub Check (' + publication + ')', errors);\n\t\t\t\t\t\t\treturn;\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 sub = that._subscriptions.filter(a => a.publication === publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscriptionData))[0];\n\n\t\t\t// If sub found (another user watching same data), add client to same sub\n\t\t\tif (sub) {\n\t\t\t\tsub.clients.push({\n\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\tid_socket: ws['id_socket']\n\t\t\t\t});\n\t\t\t}\n\t\t\t// If sub not found, create new sub\n\t\t\telse {\n\t\t\t\tthat._subscriptions.push({\n\t\t\t\t\tpublication: publication,\n\t\t\t\t\tsubscriptionData: subscriptionData,\n\t\t\t\t\tcollections: that.getPublicationCollections(publication),\n\t\t\t\t\tclients: [{\n\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\tid_socket: ws['id_socket']\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!sub) {\n\t\t\t\tsub = that._subscriptions.filter(a => a.publication === publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscriptionData))[0];\n\t\t\t}\n\n\t\t\t// console.log('Subscribe', new Date(), 'Success', sub);\n\n\t\t\t// Send pub data to client who just subscribed only, don't want to send to existing clients since nothing has changed\n\t\t\tthat.sendPubDataOnce(ws, messageId, sub, 'newSub', that.getPublicationCollections(publication)[0]);\n\n\t\t\tif (that._publications[sub.publication].preFunction && !sub.preSubscriptionData) {\n\t\t\t\tsub.preSubscriptionData = await that._publications[sub.publication].preFunction(...sub.subscriptionData);\n\t\t\t}\n\t\t}\n\n\t\tif (publication === 'appversion') {\n\t\t\tlet newLoggedInUser = {\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t__v: 0,\n\t\t\t\tdate: new Date(),\n\t\t\t\tid_user: ws['id_user'],\n\t\t\t\tuser: ws['user'],\n\t\t\t\tid_ws: ws['id_socket']\n\t\t\t};\n\n\t\t\tthis._loggedInUsers.push(newLoggedInUser);\n\n\t\t\tLoggedInUsers.create(newLoggedInUser);\n\n\t\t\tif (ws['user'] !== 'Admin' && this.serverConfig['CLIENT_NAME'] !== 'ResolveIO') {\n\t\t\t\tthis._mainServer.getMethodManager().callMethodInternal('supportCreateBillingUser', {\n\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\tdate: new Date(),\n\t\t\t\t\tclient: ResolveIOServer.getClientName()\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// Unsubscribe from publication \n\tpublic async unsubscribe(messageDate: Date, ws: WebSocket, messageId: number, publication: string, ...subscriptionData: any[]) {\n\t\tlet that = this;\n\n\t\t// console.log('Before');\n\t\t// console.dir(this._subscriptions.map(a => a.publication));\n\n\t\tif (!that._publications[publication]) {\n\t\t\tconsole.log('No Publication: ' + publication);\n\t\t\treturn;\n\t\t}\n\t\telse {\n\t\t\tlet sub = that._subscriptions.filter(a => a.publication === publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscriptionData))[0];\n\n\t\t\tif (sub) {\n\t\t\t\tfor (let i = sub.clients.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (sub.clients[i].id_user === ws['id_user'] && sub.clients[i].messageId === messageId && sub.clients[i].id_socket === ws['id_socket']) {\n\t\t\t\t\t\tsub.clients.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Unsubscribe from publication\n\tpublic async unsubscribeAll(ws: WebSocket) {\n\t\tlet that = this;\n\n\t\t// console.log('Before');\n\t\t// console.dir(this._subscriptions.map(a => a.publication));\n\n\t\tlet loggedInUser = await LoggedInUsers.findOne({id_ws: ws['id_socket']});\n\n\t\tif (loggedInUser) {\t\n\t\t\tif (this._loggedInUsers.map(a => a._id).indexOf(loggedInUser._id) >= 0) {\n\t\t\t\tthis._loggedInUsers.splice(this._loggedInUsers.map(a => a._id).indexOf(loggedInUser._id), 1);\n\t\t\t}\n\t\t\t\n\t\t\tLoggedInUsers.deleteOne({_id: loggedInUser._id});\n\t\t}\n\n\t\tlet userSubs = that._subscriptions.filter(a => a.clients.some(b => b.id_user === ws['id_user'] && b.id_socket === ws['id_socket']));\n\n\t\tfor (let i = userSubs.length - 1; i >= 0; i--) {\n\t\t\tlet sub = userSubs[i];\n\n\t\t\tfor (let j = sub.clients.length - 1; j >= 0; j--) {\n\t\t\t\tif (sub.clients[j].id_socket === ws['id_socket']) {\n\t\t\t\t\tsub.clients.splice(j, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tws.terminate();\n\n\t\t// console.log('After');\n\t\t// console.dir(this._subscriptions.map(a => a.publication));\n\t}\n\n\t// Get publication collection\n\tprivate getPublicationCollections(publication: string) {\n\t\treturn this._publications[publication].collections;\n\t}\n\n\t// Watch (tail) Mongo's operation log on the entire database (all insert/modify/delete will trigger this function)\n\tprivate tailOpLog() {\n\t\tthis._oplog = ResolveIOServer.getMainDB().watch([], {fullDocument: 'updateLookup'});\n\n\t\tthis._oplog.on('change', (doc: any) => {\n\t\t\tlet collection = doc.ns.coll;\n\n\t\t\tif (collection && !collection.endsWith('.versions') && !collection.startsWith('monitor-')) {\n\t\t\t\tif (doc.operationType === 'insert') {\n\t\t\t\t\tif (collection === 'queue-methods') {\n\t\t\t\t\t\tthis._mainServer.getQueueManager().runMethodQueue();\n\t\t\t\t\t}\n\t\t\t\t\telse if (collection === 'queue-responses') {\n\t\t\t\t\t\tthis._mainServer.getQueueManager().runMethodResponse();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (collection === 'cron-jobs') {\n\t\t\t\t\t\t\tthis._mainServer.getCronManager().checkCronJobsForUpdates();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (collection === 'support-tickets') {\n\t\t\t\t\t\t\tif (this.serverConfig['ROOT_URL'] === 'https://resolveio.com') {\n\t\t\t\t\t\t\t\tthis._mainServer.getMethodManager().callMethodInternal('sendSupportTicketEmail', doc.fullDocument._id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._oplogQueue.push({\n\t\t\t\t\t\t\ttype: 'insert',\n\t\t\t\t\t\t\tcollection: collection,\n\t\t\t\t\t\t\tdoc: doc.fullDocument\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'update' || doc.operationType === 'replace') {\n\t\t\t\t\tif (collection === 'cron-jobs') {\n\t\t\t\t\t\tthis._mainServer.getCronManager().checkCronJobsForUpdates();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis._oplogQueue.push({\n\t\t\t\t\t\ttype: 'update',\n\t\t\t\t\t\tcollection: collection,\n\t\t\t\t\t\tdoc: doc.fullDocument\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'delete') {\n\t\t\t\t\tthis.resendPubsForDelete(collection);\n\n\t\t\t\t\tif (collection === 'cron-jobs') {\n\t\t\t\t\t\tthis._mainServer.getCronManager().checkCronJobsForUpdates();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis._oplog.on('error', error => {\n\t\t\tconsole.log('oplog error', error);\n\n\t\t\tprocess.exit();\n\t\t});\n\t\t\n\t\tthis._oplog.on('end', () => {\n\t\t\tconsole.log('oplog ended');\n\n\t\t\tprocess.exit();\n\t\t});\n\t}\n\n\tprivate runOpLogQueue() {\n\t\tlet that = this;\n\t\tsetInterval(async () => {\n\t\t\tif (this._oplogQueue.length) {\n\t\t\t\tlet uniqueOplog = deepCopy(this._oplogQueue);\n\t\t\t\tthis._oplogQueue = [];\n\n\t\t\t\tlet uniquePubs = [];\n\n\t\t\t\tfor (let i = uniqueOplog.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (!that._subscriptions.some(a => a.collections.includes(uniqueOplog[i].collection))) {\n\t\t\t\t\t\tfor (let j = this._subCache.length - 1; j >= 0; j--) {\n\t\t\t\t\t\t\tif (this._subCache[j].collection === uniqueOplog[i].collection) {\n\t\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[j].id);\n\t\t\t\t\t\t\t\tthis._subCache.splice(j, 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tuniqueOplog.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (let i = uniqueOplog.length - 1; i >= 0; i--) {\n\t\t\t\t\tlet oplog = uniqueOplog[i];\n\n\t\t\t\t\tfor (let j = that._subscriptions.length - 1; j >= 0; j--) {\n\t\t\t\t\t\tlet sub = that._subscriptions[j];\n\n\t\t\t\t\t\tif (sub) {\n\t\t\t\t\t\t\tif (sub.collections.includes(oplog.collection) && !uniquePubs.filter(a => a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData)).length) {\n\t\t\t\t\t\t\t\tif (sub.preSubscriptionData) {\n\t\t\t\t\t\t\t\t\tif (that._publications[sub.publication].fetchFunction(oplog.doc, sub.preSubscriptionData)) {\n\t\t\t\t\t\t\t\t\t\tsub['oplog'] = oplog;\n\t\t\t\t\t\t\t\t\t\tuniquePubs.push(deepCopy(sub));\n\n\t\t\t\t\t\t\t\t\t\tcontinue;\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\tif (that._publications[sub.publication].preFunction) {\n\t\t\t\t\t\t\t\t\tif (sub.clients.length) {\n\t\t\t\t\t\t\t\t\t\tsub.preSubscriptionData = await that._publications[sub.publication].preFunction(sub.subscriptionData);\n\t\t\t\t\t\t\t\t\t\tif (that._publications[sub.publication].fetchFunction(oplog.doc, sub.preSubscriptionData)) {\n\t\t\t\t\t\t\t\t\t\t\tsub['oplog'] = oplog;\n\t\t\t\t\t\t\t\t\t\t\tuniquePubs.push(deepCopy(sub));\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\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\t\t\t\t\t\t\t\t\tif (this._subCache[i].publication === sub.publication && JSON.stringify(this._subCache[i].subscriptionData) === JSON.stringify(sub.subscriptionData)) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\t\t\t\t\t\t\t\t\tthis._subCache.splice(i, 1);\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\n\t\t\t\t\t\t\t\t\t\tif (that._subscriptions.findIndex(a => a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData)) >= 0) {\n\t\t\t\t\t\t\t\t\t\t\tthat._subscriptions.splice(that._subscriptions.findIndex(a => a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData)), 1);\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\telse {\n\t\t\t\t\t\t\t\t\tif (that._publications[sub.publication].fetchFunction) {\n\t\t\t\t\t\t\t\t\t\tif (that._publications[sub.publication].fetchFunction(oplog.doc, ...sub.subscriptionData)) {\n\t\t\t\t\t\t\t\t\t\t\tsub['oplog'] = oplog;\n\t\t\t\t\t\t\t\t\t\t\tuniquePubs.push(deepCopy(sub));\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\tsub['oplog'] = oplog;\n\t\t\t\t\t\t\t\t\t\tuniquePubs.push(deepCopy(sub));\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\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < uniquePubs.length; i++) {\n\t\t\t\t\tlet pub = uniquePubs[i];\n\t\t\t\t\tthis.checkPubsForChanges(pub['oplog'].collection, pub['oplog'].doc, pub['oplog'].type, pub);\n\t\t\t\t}\n\t\t\t}\n\t\t}, 250);\n\t}\n\n\tprivate async resendPubsForDelete(collection: string) {\n\t\tlet that = this;\n\n\t\tlet subCopy = deepCopy(that._subscriptions.filter(a => a.collections.includes(collection)));\n\n\t\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\tif (this._subCache[i].collection === collection || subCopy.some(a => a.publication === this._subCache[i].publication)) {\n\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\tthis._subCache.splice(i, 1);\n\t\t\t}\n\t\t}\n\n\t\tfor (let zz = subCopy.length - 1; zz >= 0; zz--) {\n\t\t\tlet sub = subCopy[zz];\n\n\t\t\tif (that._publications[sub.publication].ws_specific) {\n\t\t\t\tfor (let aa = 0; aa < sub.clients.length; aa++) {\n\t\t\t\t\tlet client = sub.clients[aa];\n\t\t\t\t\tfor (let bb = 0; bb < that._wss.clients.size; bb++) {\n\t\t\t\t\t\tlet ws = Array.from(that._wss.clients)[bb];\n\t\t\t\t\t\tif (ws['id_socket'] === client.id_socket) {\n\t\t\t\t\t\t\tthat.sendPubDataOnce(ws, client.messageId, sub, 'delete', collection);\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\telse {\n\t\t\t\tthat.sendPubData(sub, 'delete', collection);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Document: Inserted/Modified Document\n\t// Collection: Collection Document Lives In\n\t// Check to see if any pubs need to refetch due to Mongo operation\n\tprivate async checkPubsForChanges(collection: string, document: Object, type: string, sub: ActiveSubscriptionModel) {\n\t\tlet that = this;\n\n\t\tif (sub.preSubscriptionData) {\n\t\t\tif (that._publications[sub.publication].fetchFunction(document, sub.preSubscriptionData)) {\n\t\t\t\tthat.sendPubData(sub, type, collection);\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (!that._publications[sub.publication].preFunction) {\n\t\t\tif (that._publications[sub.publication].ws_specific) {\n\t\t\t\tfor (let k = 0; k < sub.clients.length; k++) {\n\t\t\t\t\tlet client = sub.clients[k];\n\t\t\t\t\tif (that._publications[sub.publication].fetchFunction) {\n\t\t\t\t\t\tif (that._publications[sub.publication].fetchFunction(document, client.id_user, ...sub.subscriptionData)) {\n\t\t\t\t\t\t\tfor (let j = 0; j < that._wss.clients.size; j++) {\n\t\t\t\t\t\t\t\tlet ws = Array.from(that._wss.clients)[j];\n\t\t\t\t\t\t\t\tif (ws['id_socket'] === client.id_socket) {\n\t\t\t\t\t\t\t\t\tthat.sendPubDataOnce(ws, client.messageId, sub, type, collection);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tfor (let j = 0; j < that._wss.clients.size; j++) {\n\t\t\t\t\t\t\tlet ws = Array.from(that._wss.clients)[j];\n\t\t\t\t\t\t\tif (ws['id_socket'] === client.id_socket) {\n\t\t\t\t\t\t\t\tthat.sendPubDataOnce(ws, client.messageId, sub, type, collection);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (that._publications[sub.publication].fetchFunction) {\n\t\t\t\t\tif (that._publications[sub.publication].fetchFunction(document, ...sub.subscriptionData)) {\n\t\t\t\t\t\tthat.sendPubData(sub, type, collection);\n\t\t\t\t\t}\n\t\t\t\t\t// else\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthat.sendPubData(sub, type, collection);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Fetch pub once, send to all clients linked to this pub\n\tprivate sendPubDataOnce(ws: WebSocket, messageId: number, subscription: ActiveSubscriptionModel, type: string, collection: string) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tlet that = this;\n\n\t\t\tif (!that._publications[subscription.publication].ws_specific) { // Same pub for all users\n\t\t\t\tif (this._subCache.some(a => a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData))) {\n\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\tdata: this._nodeCache.get(this._subCache.filter(a => a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData))[0].id)\n\t\t\t\t\t};\n\n\t\t\t\t\tthis.sendWS(ws, serverRes);\n\n\t\t\t\t\tresolve(true);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (subscription.publication !== 'superadminAPM' && subscription.publication !== 'loggedInUsers') {\n\t\t\t\t\t\tthat._mainServer.getMethodManager().callMethodInternal('insertSubscriptionLog', type, subscription.publication, collection, JSON.stringify(subscription.subscriptionData));\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (this._subCache[i].publication === subscription.publication && JSON.stringify(this._subCache[i].subscriptionData) === JSON.stringify(subscription.subscriptionData)) {\n\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\t\t\t\tthis._subCache.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthat._publications[subscription.publication].function.call(Object.assign({}, that, SubscriptionManager.prototype), ...subscription.subscriptionData).then(res => {\n\t\t\t\t\t\tlet nodeCacheSize = this._nodeCache.getStats().vsize;\n\n\t\t\t\t\t\tif (nodeCacheSize > 500000000) {\n\t\t\t\t\t\t\tlet neededSizeIndex = 0;\n\n\t\t\t\t\t\t\tfor (let zz = 0; zz < this._subCache.length; zz++) {\n\t\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[zz].id);\n\n\t\t\t\t\t\t\t\tif (this._nodeCache.getStats().vsize < 500000000) {\n\t\t\t\t\t\t\t\t\tneededSizeIndex = zz;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// console.log('Cache1: ' + 'Too Big - ' + subscription.publication + ' - ' + getBinarySize(JSON.stringify(this._subCache)));\n\t\t\t\t\t\t\tthis._subCache.splice(0, neededSizeIndex);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\t\t\t\t\tif (this._subCache[i].publication === subscription.publication && JSON.stringify(this._subCache[i].subscriptionData) === JSON.stringify(subscription.subscriptionData)) {\n\t\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\t\t\t\t\tthis._subCache.splice(i, 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this._subscriptions.some(a => a.collections.includes(collection) && a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData))) {\n\t\t\t\t\t\t\tlet cacheId = this._cacheId++;\n\t\t\t\t\t\t\tthis._nodeCache.set(cacheId, res);\n\t\t\t\t\t\t\tthis._subCache.push({collection: collection, publication: subscription.publication, subscriptionData: subscription.subscriptionData, id: cacheId});\n\n\t\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\t\tdata: res\n\t\t\t\t\t\t\t};\n\t\n\t\t\t\t\t\t\tthis.sendWS(ws, serverRes);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\t\tdata: err\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tthis.sendWS(ws, serverRes);\n\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse { // Pub is different for each user (Look at users publication) [MUCH SLOWER, RE-RUNS FOR EACH USER]\n\t\t\t\tthat._publications[subscription.publication].function.call(Object.assign({}, that, SubscriptionManager.prototype), ws['id_user'], ...subscription.subscriptionData).then(res => {\n\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\tdata: res\n\t\t\t\t\t};\n\n\t\t\t\t\t// console.log('Send Pub Data Once 2', new Date(), 'Success', subscription);\n\n\t\t\t\t\tthis.sendWS(ws, serverRes);\n\n\t\t\t\t\tresolve(true);\n\n\t\t\t\t}, err => {\n\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\tdata: err\n\t\t\t\t\t};\n\n\t\t\t\t\t// console.log('Send Pub Data Once 2', new Date(), 'Error', subscription);\n\n\t\t\t\t\tthis.sendWS(ws, serverRes);\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\t// Fetch pub once, send to all clients linked to this pub\n\tprivate sendPubData(subscription: ActiveSubscriptionModel, type: string, collection: string) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tlet that = this;\n\n\t\t\tif (!subscription.clients.length) {\n\t\t\t\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (this._subCache[i].publication === subscription.publication && JSON.stringify(this._subCache[i].subscriptionData) === JSON.stringify(subscription.subscriptionData)) {\n\t\t\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\t\t\tthis._subCache.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (that._subscriptions.findIndex(a => a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData)) >= 0) {\n\t\t\t\t\tthat._subscriptions.splice(that._subscriptions.findIndex(a => a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData)), 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (subscription.publication !== 'superadminAPM' && subscription.publication !== 'loggedInUsers') {\n\t\t\t\t\tthat._mainServer.getMethodManager().callMethodInternal('insertSubscriptionLog', type, subscription.publication, collection, JSON.stringify(subscription.subscriptionData));\n\t\t\t\t}\n\n\t\t\t\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (this._subCache[i].publication === subscription.publication && JSON.stringify(this._subCache[i].subscriptionData) === JSON.stringify(subscription.subscriptionData)) {\n\t\t\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\t\t\tthis._subCache.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthat._publications[subscription.publication].function.call(Object.assign({}, that, SubscriptionManager.prototype), ...subscription.subscriptionData).then(res => {\n\t\t\t\t\tlet nodeCacheSize = this._nodeCache.getStats().vsize;\n\t\t\t\t\t\n\t\t\t\t\tif (nodeCacheSize > 500000000) {\n\t\t\t\t\t\tlet neededSizeIndex = 0;\n\n\t\t\t\t\t\tfor (let zz = 0; zz < this._subCache.length; zz++) {\n\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[zz].id);\n\n\t\t\t\t\t\t\tif (this._nodeCache.getStats().vsize < 500000000) {\n\t\t\t\t\t\t\t\tneededSizeIndex = zz;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// console.log('Cache: ' + 'Too Big - ' + subscription.publication + ' - ' + getBinarySize(JSON.stringify(this._subCache)));\n\t\t\t\t\t\tthis._subCache.splice(0, neededSizeIndex);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (this._subCache[i].publication === subscription.publication && JSON.stringify(this._subCache[i].subscriptionData) === JSON.stringify(subscription.subscriptionData)) {\n\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\t\t\t\tthis._subCache.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!subscription.clients.length) {\n\t\t\t\t\t\tif (that._subscriptions.findIndex(a => a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData)) >= 0) {\n\t\t\t\t\t\t\tthat._subscriptions.splice(that._subscriptions.findIndex(a => a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData)), 1);\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 (this._subscriptions.some(a => a.collections.includes(collection) && a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData))) {\n\t\t\t\t\t\t\tlet cacheId = this._cacheId++;\n\t\t\t\t\t\t\tthis._nodeCache.set(cacheId, res);\n\t\t\t\t\t\t\tthis._subCache.push({collection: collection, publication: subscription.publication, subscriptionData: subscription.subscriptionData, id: cacheId});\n\n\t\t\t\t\t\t\tsubscription.clients.forEach(client => {\n\t\t\t\t\t\t\t\tthat._wss.clients.forEach(ws => {\n\t\t\t\t\t\t\t\t\tif (ws['id_socket'] === client.id_socket) {\n\t\t\t\t\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\t\t\t\t\tmessageId: client.messageId,\n\t\t\t\t\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\t\t\t\t\tdata: res\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tthis.sendWS(ws, serverRes);\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\tresolve(true);\n\t\t\t\t}, err => {\n\t\t\t\t\tsubscription.clients.forEach(client => {\n\t\t\t\t\t\tthat._wss.clients.forEach(ws => {\n\t\t\t\t\t\t\tif (ws['id_socket'] === client.id_socket) {\n\t\t\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\t\t\tmessageId: client.messageId,\n\t\t\t\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\t\t\t\tdata: err\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\tthis.sendWS(ws, serverRes);\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\treject(err);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate sendWS(ws: WebSocket, data: ServerResponseModel) {\n\t\tthis._sendQueue.splice(0, 0, {\n\t\t\tid_ws: ws['id_socket'],\n\t\t\tdata: data\n\t\t});\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/managers/subscription.manager.ts"],"names":[],"mappings":"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","file":"subscription.manager.js","sourcesContent":["import { ServerResponseModel } from '../models/server-response.model';\nimport { ActiveSubscriptionModel, SubscriptionModel } from '../models/subscription.model';\nimport * as WebSocket from 'ws';\nimport { loadLogPublications } from '../publications/logs';\nimport { loadAppStatusPublications } from '../publications/app-status';\nimport { loadAppVersionPublications } from '../publications/app-version';\nimport { loadFilePublications } from '../publications/files';\nimport { loadSuperAdminPublications } from '../publications/super-admin';\nimport { LoggedInUsers } from '../collections/logged-in-users.collection';\nimport { loadCronJobPublications } from '../publications/cron-jobs';\nimport { loadFlagsPublications } from '../publications/flags';\nimport { loadMethodCallsPublications } from '../publications/method-calls';\nimport { loadMethodResponsePublications } from '../publications/method-responses';\nimport ResolveIOMainServer from '../server-app';\nimport { ResolveIOServer } from '../index';\nimport { loadNotificationPublications } from '../publications/notifications';\nimport { deepCopy } from '../util/common';\nimport * as moment from 'moment';\nimport { loadReportBuilderReportPublications } from '../publications/report-builder-reports';\nimport { LoggedInUserModel } from '../models/logged-in-users.model';\n\nimport * as NodeCache from 'node-cache';\nimport { ChangeStream } from 'mongodb';\nimport { loadReportBuilderLibraryPublications } from '../publications/report-builder-libraries';\nimport { loadUserGroupPublications } from '../publications/user-groups';\nimport { loadUserGuidePublications } from '../publications/user-guides';\nimport { loadReportBuilderDashboardBuilderPublications } from '../publications/report-builder-dashboard-builders';\nimport { objectIdHexString } from './mongo.manager';\n\nexport class SubscriptionManager {\n\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _publications: SubscriptionModel = {};\n\tprivate _subscriptions: ActiveSubscriptionModel[] = [];\n\tprivate _wss: WebSocket.Server;\n\tprivate _loggedInUsers: LoggedInUserModel[] = [];\n\t\n\tprivate _oplogQueue = [];\n\tprivate _subCache = [];\n\tprivate _nodeCache;\n\tprivate _cacheId = 0;\n\tprivate _sendQueue = [];\n\tprivate _runningQueue = false;\n\n\tprivate _oplog: ChangeStream;\n\n\tprivate serverConfig;\n\n\tconstructor(mainServer, wss: WebSocket.Server, serverConfig) {\n\t\tthis._mainServer = mainServer;\n\n\t\tthis._nodeCache = new NodeCache( { stdTTL: 0, checkperiod: 0 } );\n\n\t\tthis.serverConfig = serverConfig;\n\t\tthis._wss = wss;\n\n\t\t// Publications\n\t\tloadSuperAdminPublications(this);\n\t\tloadAppVersionPublications(this);\n\t\tloadAppStatusPublications(this);\n\t\tloadLogPublications(this);\n\t\tloadFilePublications(this);\n\t\tloadCronJobPublications(this);\n\t\tloadFlagsPublications(this);\n\t\tloadMethodCallsPublications(this);\n\t\tloadMethodResponsePublications(this);\n\t\tloadNotificationPublications(this);\n\t\tloadReportBuilderReportPublications(this);\n\t\tloadReportBuilderLibraryPublications(this);\n\t\tloadUserGroupPublications(this);\n\t\tloadUserGuidePublications(this);\n\t\tloadReportBuilderDashboardBuilderPublications(this);\n\n\t\tthis.tailOpLog();\n\t\tthis.runOpLogQueue();\n\n\t\tsetInterval(() => {\n\t\t\tconsole.log(new Date());\n\t\t\tconsole.log('Sub Cache Length: ' + this._subCache.length);\n\t\t\tconsole.log('Sub Length: ' + this._subscriptions.length);\n\t\t\tconsole.log(this._nodeCache.getStats().vsize);\n\t\t}, 43200000);\n\n\t\tsetInterval(() => {\n\t\t\tif (!this._runningQueue) {\n\t\t\t\tif (this._sendQueue.length) {\n\t\t\t\t\tthis._runningQueue = true;\n\t\t\t\t\tfor (let i = this._sendQueue.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tlet ws = this._mainServer.getWS(this._sendQueue[i].id_ws);\n\t\t\t\t\t\tif (ws && ws.readyState === ws.OPEN) {\n\t\t\t\t\t\t\tif (ws.bufferedAmount < 20480) {\n\t\t\t\t\t\t\t\tlet sendItem = this._sendQueue.pop();\n\t\t\t\t\t\t\t\tws.send(JSON.stringify(sendItem.data), (error) => {\n\t\t\t\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\t\t\tconsole.log('Error on WS: ', error);\n\t\t\t\t\t\t\t\t\t\tthis.unsubscribeAll(ws);\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\telse {\n\t\t\t\t\t\t\tthis._sendQueue.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis._runningQueue = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\t\n\t\t}, 25);\n\n\t\tsetInterval(async () => {\n\t\t\tthis._loggedInUsers = await LoggedInUsers.find();\n\t\n\t\t\tlet userCopy = deepCopy(this._loggedInUsers);\n\t\t\tfor (let i = this._loggedInUsers.length - 1; i >= 0; i--) {\n\t\t\t\tlet loggedInUser = userCopy[i];\n\n\t\t\t\tif (!loggedInUser.date || moment().diff(moment(loggedInUser.date), 'seconds') >= 60) {\n\t\t\t\t\tif (this._mainServer.getWS(loggedInUser.id_ws)) {\n\t\t\t\t\t\tthis.unsubscribeAll(this._mainServer.getWS(loggedInUser.id_ws));\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._subscriptions.forEach(sub => {\n\t\t\t\t\t\t\tfor (let j = sub.clients.length - 1; j >= 0; j--) {\n\t\t\t\t\t\t\t\tlet client = sub.clients[j];\n\n\t\t\t\t\t\t\t\tif (client.id_socket === loggedInUser.id_ws) {\n\t\t\t\t\t\t\t\t\tsub.clients.splice(j, 1);\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\n\t\t\t\t\t\tif (await LoggedInUsers.findById(loggedInUser._id)) {\n\t\t\t\t\t\t\tLoggedInUsers.deleteOne({_id: loggedInUser._id});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._loggedInUsers.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < this._subscriptions.length; i++) {\n\t\t\t\tlet sub = this._subscriptions[i];\n\n\t\t\t\tfor (let j = sub.clients.length - 1; j >= 0; j--) {\n\t\t\t\t\tlet client = sub.clients[j];\n\n\t\t\t\t\tif (!this._loggedInUsers.some(a => a.id_ws === client.id_socket)) {\n\t\t\t\t\t\tsub.clients.splice(j, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 60000);\n\t}\n\n\t// Add all files to publications private object\n\tpublic publications(method: SubscriptionModel) {\n\t\tthis._publications = Object.assign(this._publications, method);\n\t}\n\n\tpublic async loggedInLatency(ws: WebSocket) {\n\t\tlet date = new Date();\n\n\t\tlet loggedInUser = this._loggedInUsers.filter(a => a.id_ws === ws['id_socket'])[0];\n\n\t\tif (loggedInUser) {\n\t\t\tloggedInUser.date = date;\n\t\t}\n\n\t\tLoggedInUsers.findOneAndUpdate({id_ws: ws['id_socket']}, {$set: {latency: ws['latency'], date: date}}).then(res => {\n\t\t\tif (!res) {\n\t\t\t\tthis.unsubscribeAll(ws);\n\t\t\t}\n\t\t}, err => {\n\t\t\tthis.unsubscribeAll(ws);\n\t\t});\n\t}\n\n\t// Subscribe to publication\n\tpublic async subscribe(messageDate: Date, ws: WebSocket, messageId: number, publication: string, ...subscriptionData: any[]) {\n\t\tlet that = this;\n\n\t\tlet pub = that._publications[publication];\n\n\t\tif (!pub) {\n\t\t\tconsole.error('No Publication: ' + publication);\n\t\t\treturn;\n\t\t}\n\t\telse {\n\t\t\tif (subscriptionData.length > 1 || subscriptionData[0]) {\n\t\t\t\tif (!pub.check) {\n\t\t\t\t\tconsole.error('No Check Function For Pub ' + publication);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse if (!pub.check._schema) {\n\t\t\t\t\tconsole.error('No Check Schema For Pub ' + publication);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlet valObj = {};\n\t\t\t\t\tlet valKeys = Object.keys(pub.check._schema);\n\n\t\t\t\t\tlet rootKeys = valKeys.filter(a => !a.includes('.'));\n\t\t\t\t\t\n\t\t\t\t\tfor (let i = 0; i < subscriptionData.length; i++) {\n\t\t\t\t\t\tvalObj[rootKeys[i]] = subscriptionData[i];\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tpub.check.validate(valObj);\n\t\t\t\t\t}\n\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\tif (errors) {\n\t\t\t\t\t\t\tconsole.error('Error in Pub Check (' + publication + ')', errors);\n\t\t\t\t\t\t\treturn;\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 sub = that._subscriptions.filter(a => a.publication === publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscriptionData))[0];\n\n\t\t\t// If sub found (another user watching same data), add client to same sub\n\t\t\tif (sub) {\n\t\t\t\tsub.clients.push({\n\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\tid_socket: ws['id_socket']\n\t\t\t\t});\n\t\t\t}\n\t\t\t// If sub not found, create new sub\n\t\t\telse {\n\t\t\t\tthat._subscriptions.push({\n\t\t\t\t\tpublication: publication,\n\t\t\t\t\tsubscriptionData: subscriptionData,\n\t\t\t\t\tcollections: that.getPublicationCollections(publication),\n\t\t\t\t\tclients: [{\n\t\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\tid_socket: ws['id_socket']\n\t\t\t\t\t}]\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!sub) {\n\t\t\t\tsub = that._subscriptions.filter(a => a.publication === publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscriptionData))[0];\n\t\t\t}\n\n\t\t\t// console.log('Subscribe', new Date(), 'Success', sub);\n\n\t\t\t// Send pub data to client who just subscribed only, don't want to send to existing clients since nothing has changed\n\t\t\tthat.sendPubDataOnce(ws, messageId, sub, 'newSub', that.getPublicationCollections(publication)[0]);\n\n\t\t\tif (that._publications[sub.publication].preFunction && !sub.preSubscriptionData) {\n\t\t\t\tsub.preSubscriptionData = await that._publications[sub.publication].preFunction(...sub.subscriptionData);\n\t\t\t}\n\t\t}\n\n\t\tif (publication === 'appversion') {\n\t\t\tlet newLoggedInUser = {\n\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t__v: 0,\n\t\t\t\tdate: new Date(),\n\t\t\t\tid_user: ws['id_user'],\n\t\t\t\tuser: ws['user'],\n\t\t\t\tid_ws: ws['id_socket']\n\t\t\t};\n\n\t\t\tthis._loggedInUsers.push(newLoggedInUser);\n\n\t\t\tLoggedInUsers.create(newLoggedInUser);\n\n\t\t\tif (ws['user'] !== 'Admin' && this.serverConfig['CLIENT_NAME'] !== 'ResolveIO') {\n\t\t\t\tthis._mainServer.getMethodManager().callMethodInternal('supportCreateBillingUser', {\n\t\t\t\t\tid_user: ws['id_user'],\n\t\t\t\t\tuser: ws['user'],\n\t\t\t\t\tdate: new Date(),\n\t\t\t\t\tclient: ResolveIOServer.getClientName()\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\t// Unsubscribe from publication \n\tpublic async unsubscribe(messageDate: Date, ws: WebSocket, messageId: number, publication: string, ...subscriptionData: any[]) {\n\t\tlet that = this;\n\n\t\t// console.log('Before');\n\t\t// console.dir(this._subscriptions.map(a => a.publication));\n\n\t\tif (!that._publications[publication]) {\n\t\t\tconsole.log('No Publication: ' + publication);\n\t\t\treturn;\n\t\t}\n\t\telse {\n\t\t\tlet sub = that._subscriptions.filter(a => a.publication === publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscriptionData))[0];\n\n\t\t\tif (sub) {\n\t\t\t\tfor (let i = sub.clients.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (sub.clients[i].id_user === ws['id_user'] && sub.clients[i].messageId === messageId && sub.clients[i].id_socket === ws['id_socket']) {\n\t\t\t\t\t\tsub.clients.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Unsubscribe from publication\n\tpublic async unsubscribeAll(ws: WebSocket) {\n\t\tlet that = this;\n\n\t\t// console.log('Before');\n\t\t// console.dir(this._subscriptions.map(a => a.publication));\n\n\t\tlet loggedInUser = await LoggedInUsers.findOne({id_ws: ws['id_socket']});\n\n\t\tif (loggedInUser) {\t\n\t\t\tif (this._loggedInUsers.map(a => a._id).indexOf(loggedInUser._id) >= 0) {\n\t\t\t\tthis._loggedInUsers.splice(this._loggedInUsers.map(a => a._id).indexOf(loggedInUser._id), 1);\n\t\t\t}\n\t\t\t\n\t\t\tLoggedInUsers.deleteOne({_id: loggedInUser._id});\n\t\t}\n\n\t\tlet userSubs = that._subscriptions.filter(a => a.clients.some(b => b.id_user === ws['id_user'] && b.id_socket === ws['id_socket']));\n\n\t\tfor (let i = userSubs.length - 1; i >= 0; i--) {\n\t\t\tlet sub = userSubs[i];\n\n\t\t\tfor (let j = sub.clients.length - 1; j >= 0; j--) {\n\t\t\t\tif (sub.clients[j].id_socket === ws['id_socket']) {\n\t\t\t\t\tsub.clients.splice(j, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tws.terminate();\n\n\t\t// console.log('After');\n\t\t// console.dir(this._subscriptions.map(a => a.publication));\n\t}\n\n\t// Get publication collection\n\tprivate getPublicationCollections(publication: string) {\n\t\treturn this._publications[publication].collections;\n\t}\n\n\t// Watch (tail) Mongo's operation log on the entire database (all insert/modify/delete will trigger this function)\n\tprivate tailOpLog() {\n\t\tthis._oplog = ResolveIOServer.getMainDB().watch([], {fullDocument: 'updateLookup'});\n\n\t\tthis._oplog.on('change', (doc: any) => {\n\t\t\tlet collection = doc.ns.coll;\n\n\t\t\tif (collection && !collection.endsWith('.versions') && !collection.startsWith('monitor-')) {\n\t\t\t\tif (doc.operationType === 'insert') {\n\t\t\t\t\tif (collection === 'queue-methods') {\n\t\t\t\t\t\tthis._mainServer.getQueueManager().runMethodQueue();\n\t\t\t\t\t}\n\t\t\t\t\telse if (collection === 'queue-responses') {\n\t\t\t\t\t\tthis._mainServer.getQueueManager().runMethodResponse();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (collection === 'cron-jobs') {\n\t\t\t\t\t\t\tthis._mainServer.getCronManager().checkCronJobsForUpdates();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (collection === 'support-tickets') {\n\t\t\t\t\t\t\tif (this.serverConfig['ROOT_URL'] === 'https://resolveio.com') {\n\t\t\t\t\t\t\t\tthis._mainServer.getMethodManager().callMethodInternal('sendSupportTicketEmail', doc.fullDocument._id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._oplogQueue.push({\n\t\t\t\t\t\t\ttype: 'insert',\n\t\t\t\t\t\t\tcollection: collection,\n\t\t\t\t\t\t\tdoc: doc.fullDocument\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'update' || doc.operationType === 'replace') {\n\t\t\t\t\tif (collection === 'cron-jobs') {\n\t\t\t\t\t\tthis._mainServer.getCronManager().checkCronJobsForUpdates();\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\tthis._oplogQueue.push({\n\t\t\t\t\t\ttype: 'update',\n\t\t\t\t\t\tcollection: collection,\n\t\t\t\t\t\tdoc: doc.fullDocument\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'delete') {\n\t\t\t\t\tthis.resendPubsForDelete(collection);\n\n\t\t\t\t\tif (collection === 'cron-jobs') {\n\t\t\t\t\t\tthis._mainServer.getCronManager().checkCronJobsForUpdates();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\t\n\t\tthis._oplog.on('error', error => {\n\t\t\tconsole.log('oplog error', error);\n\n\t\t\tprocess.exit();\n\t\t});\n\t\t\n\t\tthis._oplog.on('end', () => {\n\t\t\tconsole.log('oplog ended');\n\n\t\t\tprocess.exit();\n\t\t});\n\t}\n\n\tprivate runOpLogQueue() {\n\t\tlet that = this;\n\t\tsetInterval(async () => {\n\t\t\tif (this._oplogQueue.length) {\n\t\t\t\tlet uniqueOplog = deepCopy(this._oplogQueue);\n\t\t\t\tthis._oplogQueue = [];\n\n\t\t\t\tlet uniquePubs = [];\n\n\t\t\t\tfor (let i = uniqueOplog.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (!that._subscriptions.some(a => a.collections.includes(uniqueOplog[i].collection))) {\n\t\t\t\t\t\tfor (let j = this._subCache.length - 1; j >= 0; j--) {\n\t\t\t\t\t\t\tif (this._subCache[j].collection === uniqueOplog[i].collection) {\n\t\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[j].id);\n\t\t\t\t\t\t\t\tthis._subCache.splice(j, 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tuniqueOplog.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfor (let i = uniqueOplog.length - 1; i >= 0; i--) {\n\t\t\t\t\tlet oplog = uniqueOplog[i];\n\n\t\t\t\t\tfor (let j = that._subscriptions.length - 1; j >= 0; j--) {\n\t\t\t\t\t\tlet sub = that._subscriptions[j];\n\n\t\t\t\t\t\tif (sub) {\n\t\t\t\t\t\t\tif (sub.collections.includes(oplog.collection) && !uniquePubs.filter(a => a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData)).length) {\n\t\t\t\t\t\t\t\tif (sub.preSubscriptionData) {\n\t\t\t\t\t\t\t\t\tif (that._publications[sub.publication].fetchFunction(oplog.doc, sub.preSubscriptionData)) {\n\t\t\t\t\t\t\t\t\t\tsub['oplog'] = oplog;\n\t\t\t\t\t\t\t\t\t\tuniquePubs.push(deepCopy(sub));\n\n\t\t\t\t\t\t\t\t\t\tcontinue;\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\tif (that._publications[sub.publication].preFunction) {\n\t\t\t\t\t\t\t\t\tif (sub.clients.length) {\n\t\t\t\t\t\t\t\t\t\tsub.preSubscriptionData = await that._publications[sub.publication].preFunction(...sub.subscriptionData);\n\t\t\t\t\t\t\t\t\t\tif (that._publications[sub.publication].fetchFunction(oplog.doc, sub.preSubscriptionData)) {\n\t\t\t\t\t\t\t\t\t\t\tsub['oplog'] = oplog;\n\t\t\t\t\t\t\t\t\t\t\tuniquePubs.push(deepCopy(sub));\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\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\t\t\t\t\t\t\t\t\tif (this._subCache[i].publication === sub.publication && JSON.stringify(this._subCache[i].subscriptionData) === JSON.stringify(sub.subscriptionData)) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\t\t\t\t\t\t\t\t\tthis._subCache.splice(i, 1);\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\n\t\t\t\t\t\t\t\t\t\tif (that._subscriptions.findIndex(a => a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData)) >= 0) {\n\t\t\t\t\t\t\t\t\t\t\tthat._subscriptions.splice(that._subscriptions.findIndex(a => a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData)), 1);\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\telse {\n\t\t\t\t\t\t\t\t\tif (that._publications[sub.publication].fetchFunction) {\n\t\t\t\t\t\t\t\t\t\tif (that._publications[sub.publication].fetchFunction(oplog.doc, ...sub.subscriptionData)) {\n\t\t\t\t\t\t\t\t\t\t\tsub['oplog'] = oplog;\n\t\t\t\t\t\t\t\t\t\t\tuniquePubs.push(deepCopy(sub));\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\tsub['oplog'] = oplog;\n\t\t\t\t\t\t\t\t\t\tuniquePubs.push(deepCopy(sub));\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\t\t\t\t}\n\n\t\t\t\tfor (let i = 0; i < uniquePubs.length; i++) {\n\t\t\t\t\tlet pub = uniquePubs[i];\n\t\t\t\t\tthis.checkPubsForChanges(pub['oplog'].collection, pub['oplog'].doc, pub['oplog'].type, pub);\n\t\t\t\t}\n\t\t\t}\n\t\t}, 250);\n\t}\n\n\tprivate async resendPubsForDelete(collection: string) {\n\t\tlet that = this;\n\n\t\tlet subCopy = deepCopy(that._subscriptions.filter(a => a.collections.includes(collection)));\n\n\t\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\tif (this._subCache[i].collection === collection || subCopy.some(a => a.publication === this._subCache[i].publication)) {\n\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\tthis._subCache.splice(i, 1);\n\t\t\t}\n\t\t}\n\n\t\tfor (let zz = subCopy.length - 1; zz >= 0; zz--) {\n\t\t\tlet sub = subCopy[zz];\n\n\t\t\tif (that._publications[sub.publication].ws_specific) {\n\t\t\t\tfor (let aa = 0; aa < sub.clients.length; aa++) {\n\t\t\t\t\tlet client = sub.clients[aa];\n\t\t\t\t\tfor (let bb = 0; bb < that._wss.clients.size; bb++) {\n\t\t\t\t\t\tlet ws = Array.from(that._wss.clients)[bb];\n\t\t\t\t\t\tif (ws['id_socket'] === client.id_socket) {\n\t\t\t\t\t\t\tthat.sendPubDataOnce(ws, client.messageId, sub, 'delete', collection);\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\telse {\n\t\t\t\tthat.sendPubData(sub, 'delete', collection);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Document: Inserted/Modified Document\n\t// Collection: Collection Document Lives In\n\t// Check to see if any pubs need to refetch due to Mongo operation\n\tprivate async checkPubsForChanges(collection: string, document: Object, type: string, sub: ActiveSubscriptionModel) {\n\t\tlet that = this;\n\n\t\tif (sub.preSubscriptionData) {\n\t\t\tif (that._publications[sub.publication].fetchFunction(document, sub.preSubscriptionData)) {\n\t\t\t\tthat.sendPubData(sub, type, collection);\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t\n\t\tif (!that._publications[sub.publication].preFunction) {\n\t\t\tif (that._publications[sub.publication].ws_specific) {\n\t\t\t\tfor (let k = 0; k < sub.clients.length; k++) {\n\t\t\t\t\tlet client = sub.clients[k];\n\t\t\t\t\tif (that._publications[sub.publication].fetchFunction) {\n\t\t\t\t\t\tif (that._publications[sub.publication].fetchFunction(document, client.id_user, ...sub.subscriptionData)) {\n\t\t\t\t\t\t\tfor (let j = 0; j < that._wss.clients.size; j++) {\n\t\t\t\t\t\t\t\tlet ws = Array.from(that._wss.clients)[j];\n\t\t\t\t\t\t\t\tif (ws['id_socket'] === client.id_socket) {\n\t\t\t\t\t\t\t\t\tthat.sendPubDataOnce(ws, client.messageId, sub, type, collection);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tfor (let j = 0; j < that._wss.clients.size; j++) {\n\t\t\t\t\t\t\tlet ws = Array.from(that._wss.clients)[j];\n\t\t\t\t\t\t\tif (ws['id_socket'] === client.id_socket) {\n\t\t\t\t\t\t\t\tthat.sendPubDataOnce(ws, client.messageId, sub, type, collection);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (that._publications[sub.publication].fetchFunction) {\n\t\t\t\t\tif (that._publications[sub.publication].fetchFunction(document, ...sub.subscriptionData)) {\n\t\t\t\t\t\tthat.sendPubData(sub, type, collection);\n\t\t\t\t\t}\n\t\t\t\t\t// else\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthat.sendPubData(sub, type, collection);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Fetch pub once, send to all clients linked to this pub\n\tprivate sendPubDataOnce(ws: WebSocket, messageId: number, subscription: ActiveSubscriptionModel, type: string, collection: string) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tlet that = this;\n\n\t\t\tif (!that._publications[subscription.publication].ws_specific) { // Same pub for all users\n\t\t\t\tif (this._subCache.some(a => a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData))) {\n\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\tdata: this._nodeCache.get(this._subCache.filter(a => a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData))[0].id)\n\t\t\t\t\t};\n\n\t\t\t\t\tthis.sendWS(ws, serverRes);\n\n\t\t\t\t\tresolve(true);\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif (subscription.publication !== 'superadminAPM' && subscription.publication !== 'loggedInUsers') {\n\t\t\t\t\t\tthat._mainServer.getMethodManager().callMethodInternal('insertSubscriptionLog', type, subscription.publication, collection, JSON.stringify(subscription.subscriptionData));\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (this._subCache[i].publication === subscription.publication && JSON.stringify(this._subCache[i].subscriptionData) === JSON.stringify(subscription.subscriptionData)) {\n\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\t\t\t\tthis._subCache.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthat._publications[subscription.publication].function.call(Object.assign({}, that, SubscriptionManager.prototype), ...subscription.subscriptionData).then(res => {\n\t\t\t\t\t\tlet nodeCacheSize = this._nodeCache.getStats().vsize;\n\n\t\t\t\t\t\tif (nodeCacheSize > 500000000) {\n\t\t\t\t\t\t\tlet neededSizeIndex = 0;\n\n\t\t\t\t\t\t\tfor (let zz = 0; zz < this._subCache.length; zz++) {\n\t\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[zz].id);\n\n\t\t\t\t\t\t\t\tif (this._nodeCache.getStats().vsize < 500000000) {\n\t\t\t\t\t\t\t\t\tneededSizeIndex = zz;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// console.log('Cache1: ' + 'Too Big - ' + subscription.publication + ' - ' + getBinarySize(JSON.stringify(this._subCache)));\n\t\t\t\t\t\t\tthis._subCache.splice(0, neededSizeIndex);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\t\t\t\t\tif (this._subCache[i].publication === subscription.publication && JSON.stringify(this._subCache[i].subscriptionData) === JSON.stringify(subscription.subscriptionData)) {\n\t\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\t\t\t\t\tthis._subCache.splice(i, 1);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (this._subscriptions.some(a => a.collections.includes(collection) && a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData))) {\n\t\t\t\t\t\t\tlet cacheId = this._cacheId++;\n\t\t\t\t\t\t\tthis._nodeCache.set(cacheId, res);\n\t\t\t\t\t\t\tthis._subCache.push({collection: collection, publication: subscription.publication, subscriptionData: subscription.subscriptionData, id: cacheId});\n\n\t\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\t\tdata: res\n\t\t\t\t\t\t\t};\n\t\n\t\t\t\t\t\t\tthis.sendWS(ws, serverRes);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tresolve(true);\n\t\t\t\t\t}, err => {\n\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\t\tdata: err\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tthis.sendWS(ws, serverRes);\n\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse { // Pub is different for each user (Look at users publication) [MUCH SLOWER, RE-RUNS FOR EACH USER]\n\t\t\t\tthat._publications[subscription.publication].function.call(Object.assign({}, that, SubscriptionManager.prototype), ws['id_user'], ...subscription.subscriptionData).then(res => {\n\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\tdata: res\n\t\t\t\t\t};\n\n\t\t\t\t\t// console.log('Send Pub Data Once 2', new Date(), 'Success', subscription);\n\n\t\t\t\t\tthis.sendWS(ws, serverRes);\n\n\t\t\t\t\tresolve(true);\n\n\t\t\t\t}, err => {\n\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\tmessageId: messageId,\n\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\tdata: err\n\t\t\t\t\t};\n\n\t\t\t\t\t// console.log('Send Pub Data Once 2', new Date(), 'Error', subscription);\n\n\t\t\t\t\tthis.sendWS(ws, serverRes);\n\n\t\t\t\t\treject(err);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\t// Fetch pub once, send to all clients linked to this pub\n\tprivate sendPubData(subscription: ActiveSubscriptionModel, type: string, collection: string) {\n\t\treturn new Promise(async (resolve, reject) => {\n\t\t\tlet that = this;\n\n\t\t\tif (!subscription.clients.length) {\n\t\t\t\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (this._subCache[i].publication === subscription.publication && JSON.stringify(this._subCache[i].subscriptionData) === JSON.stringify(subscription.subscriptionData)) {\n\t\t\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\t\t\tthis._subCache.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (that._subscriptions.findIndex(a => a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData)) >= 0) {\n\t\t\t\t\tthat._subscriptions.splice(that._subscriptions.findIndex(a => a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData)), 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (subscription.publication !== 'superadminAPM' && subscription.publication !== 'loggedInUsers') {\n\t\t\t\t\tthat._mainServer.getMethodManager().callMethodInternal('insertSubscriptionLog', type, subscription.publication, collection, JSON.stringify(subscription.subscriptionData));\n\t\t\t\t}\n\n\t\t\t\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\t\t\tif (this._subCache[i].publication === subscription.publication && JSON.stringify(this._subCache[i].subscriptionData) === JSON.stringify(subscription.subscriptionData)) {\n\t\t\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\t\t\tthis._subCache.splice(i, 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tthat._publications[subscription.publication].function.call(Object.assign({}, that, SubscriptionManager.prototype), ...subscription.subscriptionData).then(res => {\n\t\t\t\t\tlet nodeCacheSize = this._nodeCache.getStats().vsize;\n\t\t\t\t\t\n\t\t\t\t\tif (nodeCacheSize > 500000000) {\n\t\t\t\t\t\tlet neededSizeIndex = 0;\n\n\t\t\t\t\t\tfor (let zz = 0; zz < this._subCache.length; zz++) {\n\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[zz].id);\n\n\t\t\t\t\t\t\tif (this._nodeCache.getStats().vsize < 500000000) {\n\t\t\t\t\t\t\t\tneededSizeIndex = zz;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// console.log('Cache: ' + 'Too Big - ' + subscription.publication + ' - ' + getBinarySize(JSON.stringify(this._subCache)));\n\t\t\t\t\t\tthis._subCache.splice(0, neededSizeIndex);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (let i = this._subCache.length - 1; i >= 0; i--) {\n\t\t\t\t\t\tif (this._subCache[i].publication === subscription.publication && JSON.stringify(this._subCache[i].subscriptionData) === JSON.stringify(subscription.subscriptionData)) {\n\t\t\t\t\t\t\tthis._nodeCache.del(this._subCache[i].id);\n\t\t\t\t\t\t\tthis._subCache.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!subscription.clients.length) {\n\t\t\t\t\t\tif (that._subscriptions.findIndex(a => a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData)) >= 0) {\n\t\t\t\t\t\t\tthat._subscriptions.splice(that._subscriptions.findIndex(a => a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData)), 1);\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 (this._subscriptions.some(a => a.collections.includes(collection) && a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData))) {\n\t\t\t\t\t\t\tlet cacheId = this._cacheId++;\n\t\t\t\t\t\t\tthis._nodeCache.set(cacheId, res);\n\t\t\t\t\t\t\tthis._subCache.push({collection: collection, publication: subscription.publication, subscriptionData: subscription.subscriptionData, id: cacheId});\n\n\t\t\t\t\t\t\tsubscription.clients.forEach(client => {\n\t\t\t\t\t\t\t\tthat._wss.clients.forEach(ws => {\n\t\t\t\t\t\t\t\t\tif (ws['id_socket'] === client.id_socket) {\n\t\t\t\t\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\t\t\t\t\tmessageId: client.messageId,\n\t\t\t\t\t\t\t\t\t\t\thasError: false,\n\t\t\t\t\t\t\t\t\t\t\tdata: res\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\n\t\t\t\t\t\t\t\t\t\tthis.sendWS(ws, serverRes);\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\tresolve(true);\n\t\t\t\t}, err => {\n\t\t\t\t\tsubscription.clients.forEach(client => {\n\t\t\t\t\t\tthat._wss.clients.forEach(ws => {\n\t\t\t\t\t\t\tif (ws['id_socket'] === client.id_socket) {\n\t\t\t\t\t\t\t\tlet serverRes: ServerResponseModel = {\n\t\t\t\t\t\t\t\t\tmessageId: client.messageId,\n\t\t\t\t\t\t\t\t\thasError: true,\n\t\t\t\t\t\t\t\t\tdata: err\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\tthis.sendWS(ws, serverRes);\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\treject(err);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate sendWS(ws: WebSocket, data: ServerResponseModel) {\n\t\tthis._sendQueue.splice(0, 0, {\n\t\t\tid_ws: ws['id_socket'],\n\t\t\tdata: data\n\t\t});\n\t}\n}\n"]}
|
package/methods/collections.js
CHANGED
|
@@ -12,7 +12,7 @@ function loadCollectionMethods(methodManager) {
|
|
|
12
12
|
skipQueue: true,
|
|
13
13
|
function: function () {
|
|
14
14
|
return new Promise(function (resolve, reject) {
|
|
15
|
-
resolve(index_1.ResolveIOServer.getMainServer().getMongoManager().collections().map(function (a) { return a.collectionName; }));
|
|
15
|
+
resolve(index_1.ResolveIOServer.getMainServer().getMongoManager().collections().map(function (a) { return a.collectionName; }).sort(function (a, b) { return a.localeCompare(b); }));
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
18
|
},
|
|
@@ -20,7 +20,7 @@ function loadCollectionMethods(methodManager) {
|
|
|
20
20
|
skipQueue: true,
|
|
21
21
|
function: function () {
|
|
22
22
|
return new Promise(function (resolve, reject) {
|
|
23
|
-
resolve(index_1.ResolveIOServer.getMainServer().getMongoManager().collections().filter(function (a) { return a.useRB; }).map(function (a) { return a.collectionName; }));
|
|
23
|
+
resolve(index_1.ResolveIOServer.getMainServer().getMongoManager().collections().filter(function (a) { return a.useRB; }).map(function (a) { return a.collectionName; }).sort(function (a, b) { return a.localeCompare(b); }));
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/methods/collections.ts"],"names":[],"mappings":"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","file":"collections.js","sourcesContent":["import { MethodManager } from '../managers/method.manager';\nimport { getMongoUpdates, deepCopy, getMongoMergeUpdatedDoc, getBinarySize } from '../util/common';\nimport SimpleSchema from 'simpl-schema';\nimport { PaginationOptionsSchema, PaginationOptions } from '../models/pagination.model';\nimport { ResolveIOServer } from '../index';\nimport { objectIdHexString } from '../managers/mongo.manager';\n\nexport function loadCollectionMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tcollectionListAll: {\n\t\t\tskipQueue: true,\n\t\t\tfunction: function() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tresolve(ResolveIOServer.getMainServer().getMongoManager().collections().map(a => a.collectionName));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcollectionListRB: {\n\t\t\tskipQueue: true,\n\t\t\tfunction: function() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tresolve(ResolveIOServer.getMainServer().getMongoManager().collections().filter(a => a.useRB).map(a => a.collectionName));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t// Query database for any collection and query\n\t\tfindOne: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tquery: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, query = {}) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).findOne(query).then(res => resolve(res), err => reject(err));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tfind: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tquery: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tsort: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, query = {}, sortQuery = {}) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).find(query, {sort: sortQuery}).then(res => resolve(res), err => reject(err));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tfindWithOptions: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tquery: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\ttype: PaginationOptionsSchema\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, query: Object, options: PaginationOptions) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet optionsQuery = {};\n\n\t\t\t\t\t\tif (options.fields && Object.keys(options.fields).length) {\n\t\t\t\t\t\t\toptionsQuery['projection'] = options.fields;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.sort && Object.keys(options.sort).length) {\n\t\t\t\t\t\t\toptionsQuery['sort'] = options.sort;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.limit) {\n\t\t\t\t\t\t\toptionsQuery['limit'] = options.limit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.skip) {\n\t\t\t\t\t\t\toptionsQuery['skip'] = options.skip;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).find(query, optionsQuery).then(res => resolve(res), err => reject(err));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t// Insert 1 document\n\t\t// @Inputs: collection, document\n\t\t// @Outputs: res = _id of new document, err = not inserted\n\t\tinsertDocument: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tdocument: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, document: Object) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet schemaErrors = null;\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection)['simplschema'].validate(document);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\t\tschemaErrors = errors;\n\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'Schema Failed on insert - ' + collection, [schemaErrors, document]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (schemaErrors) {\n\t\t\t\t\t\t\tconsole.log(schemaErrors);\n\t\t\t\t\t\t\treject('Schema Errors');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet id = objectIdHexString();\n\t\t\t\t\t\t\tdocument['_id'] = id;\n\t\t\t\t\t\t\tdocument['__v'] = 0;\n\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).insertOne(document).then(() => resolve(id), err => reject(err));\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\t// Insert 1 document\n\t\t// @Inputs: collection, document\n\t\t// @Outputs: res = _id of new document, err = not inserted\n\t\tinsertManyDocuments: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tdocuments: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'documents.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, documents: Object[]) {\n\t\t\t\treturn new Promise((res, rej) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\trej('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\tfor (let i = 0; i < documents.length; i++) {\n\t\t\t\t\t\t\tlet document = documents[i];\n\n\t\t\t\t\t\t\tpromises.push(new Promise((resolve, reject) => {\n\t\t\t\t\t\t\t\tlet schemaErrors = null;\n\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection)['simplschema'].validate(document);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\t\t\t\tschemaErrors = errors;\n\t\t\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'Schema Failed on insert - ' + collection, [schemaErrors, document]);\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\tif (schemaErrors) {\n\t\t\t\t\t\t\t\t\tconsole.log(schemaErrors);\n\t\t\t\t\t\t\t\t\treject('Schema Errors');\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 id = objectIdHexString();\n\t\t\t\t\t\t\t\t\tdocument['_id'] = id;\n\t\t\t\t\t\t\t\t\tdocument['__v'] = 0;\n\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).insertOne(document).then(() => resolve(id), err => reject(err));\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\n\t\t\t\t\t\tPromise.all(promises).then(vals => res(vals), err => rej(err));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t// Replaces 1 document with new document (from _id)\n\t\t// @Inputs: collection, document id\n\t\t// @Outputs: res = 1 (updated 1), res = 0 (not updated), err = not updated/wrong version\n\t\t// Search for doc, check version, if found then try and update\n\t\tupdateDocument: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tf_document: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, f_document: Object) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).findOne({_id: f_document['_id']}).then(currDoc => {\n\t\t\t\t\t\t\tif (currDoc) {\n\t\t\t\t\t\t\t\tif (currDoc.__v === f_document['__v']) {\n\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\tlet schemaErrors = null;\n\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection)['simplschema'].validate(f_document);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\t\t\t\t\tschemaErrors = errors;\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'Schema Failed on updateDocument - ' + collection, [schemaErrors, f_document]);\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 (schemaErrors) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(schemaErrors);\n\t\t\t\t\t\t\t\t\t\treject('Schema Errors');\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\tlet updates = getMongoUpdates(currDoc, f_document, true);\n\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: f_document['_id']}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: f_document['_id']}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\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}\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\tconsole.log('invalid version - ' + collection, currDoc.__v, f_document['__v']);\n\n\t\t\t\t\t\t\t\t\tif (ResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions')) {\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').findOne({\n\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': f_document['__v']}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}).then(oldDoc => {\n\t\t\t\t\t\t\t\t\t\t\tlet newCurrDocId = currDoc._id;\n\n\t\t\t\t\t\t\t\t\t\t\tif (oldDoc) {\n\t\t\t\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\t\t\tlet updatedDoc = getMongoMergeUpdatedDoc(f_document, currDoc, oldDoc);\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedDoc._id = newCurrDocId;\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedDoc.__v++;\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedDoc.updatedAt = new Date();\n\n\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).replaceOne({_id: newCurrDocId}, updatedDoc).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': versionDoc._id._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: versionDoc._id.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\treject('Invalid Version And Could Not Find History - DB: ' + currDoc.__v + ', Trying to update with :' + f_document['__v']);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}, errOldDoc => {});\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\treject('Invalid Version And We Are NOT Using Versions On This Collection!');\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 Document');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, errDoc => {\n\t\t\t\t\t\t\treject('No Document');\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\t// Updates 1 document's props (from _id)\n\t\t// @Inputs: collection, document id, document version, update paramters ({prop: 'xxx', data: 'yyy})\n\t\t// @Outputs: res = 1 (updated 1), res = 0 (not updated), err = not updated/wrong version\n\t\t// Search for doc, check version, if found then try and update props\n\t\tupdateDocumentProps: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tdoc_id: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tupdateParams: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'updateParams.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tdoc__v: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, doc_id: string, updateParams: any[], doc__v: number) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).findOne({_id: doc_id}).then(currDoc => {\n\t\t\t\t\t\t\tif (currDoc) {\n\t\t\t\t\t\t\t\tlet modifiedDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\tupdateParams.forEach(data => {\n\t\t\t\t\t\t\t\t\tmodifiedDoc[data.prop] = data.data;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (modifiedDoc.__v === doc__v) {\n\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\t\t\n\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tlet schemaErrors = null;\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection)['simplschema'].validate(modifiedDoc);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\t\t\t\t\tschemaErrors = errors;\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'Schema Failed on updateDocumentProps - ' + collection, [schemaErrors, modifiedDoc]);\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 (schemaErrors) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(schemaErrors);\n\t\t\t\t\t\t\t\t\t\treject('Schema Errors');\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\tlet updates = getMongoUpdates(currDoc, modifiedDoc, true);\n\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: modifiedDoc._id}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.ok);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: modifiedDoc._id}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.n);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\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}\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\tconsole.log(new Date(), 'invalid version - ' + collection, currDoc.__v, doc__v);\n\n\t\t\t\t\t\t\t\t\tif (ResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions')) {\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').findOne({\n\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': doc__v}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}).then(oldDoc => {\n\t\t\t\t\t\t\t\t\t\t\tlet newCurrDocId = currDoc._id;\n\n\t\t\t\t\t\t\t\t\t\t\tif (oldDoc) {\n\t\t\t\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\t\t\tlet updatedDoc = getMongoMergeUpdatedDoc(modifiedDoc, currDoc, oldDoc);\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedDoc._id = newCurrDocId;\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedDoc.__v++;\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedDoc.updatedAt = new Date();\n\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).replaceOne({_id: newCurrDocId}, updatedDoc).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': versionDoc._id._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: versionDoc._id.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\treject('Invalid Version And Could Not Find History Props - DB: ' + currDoc.__v + ', Trying to update with :' + doc__v);\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}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\treject('Invalid Version And We Are NOT Using Versions On This Collection!');\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 Document');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, () => {});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tupdateDocumentOffline: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tf_document: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tf_oldDocument: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, f_document: Object, f_oldDocument: Object) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).findOne({_id: f_document['_id']}).then(currDoc => {\n\t\t\t\t\t\t\tif (currDoc) {\n\t\t\t\t\t\t\t\tif (currDoc.__v === f_document['__v']) {\n\n\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\tlet schemaErrors = null;\n\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection)['simplschema'].validate(f_document);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\t\t\t\t\tschemaErrors = errors;\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'Schema Failed on updateDocument - ' + collection, [schemaErrors, f_document]);\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 (schemaErrors) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(schemaErrors);\n\t\t\t\t\t\t\t\t\t\treject('Schema Errors');\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\tlet updates = getMongoUpdates(currDoc, f_document, true);\n\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: f_document['_id']}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: f_document['_id']}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\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}\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\tconsole.log('OFFLINE - invalid version - ' + collection, currDoc.__v, f_document['__v']);\n\n\t\t\t\t\t\t\t\t\tlet newCurrDocId = currDoc._id;\n\n\t\t\t\t\t\t\t\t\tif (f_oldDocument) {\n\t\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\tlet updatedDoc = getMongoMergeUpdatedDoc(f_document, currDoc, f_oldDocument);\n\t\t\t\t\t\t\t\t\t\tupdatedDoc._id = newCurrDocId;\n\t\t\t\t\t\t\t\t\t\tupdatedDoc.__v++;\n\t\t\t\t\t\t\t\t\t\tupdatedDoc.updatedAt = new Date();\n\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).replaceOne({_id: newCurrDocId}, updatedDoc).then(res => {\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': versionDoc._id._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: versionDoc._id.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\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\treject('OFFLINE - Invalid Version And Could Not Find History - DB: ' + currDoc.__v + ', Trying to update with :' + f_document['__v']);\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 Document');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, () => {});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t// Updates 1 document's props (from _id)\n\t\t// @Inputs: collection, document id, document version, update paramters ({prop: 'xxx', data: 'yyy})\n\t\t// @Outputs: res = 1 (updated 1), res = 0 (not updated), err = not updated/wrong version\n\t\t// Search for doc, check version, if found then try and update props\n\t\tupdateDocumentPropsOffline: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tdoc_id: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tupdateParams: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'updateParams.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tdoc__v: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tf_oldDocument: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, doc_id: string, updateParams: any[], doc__v: number, f_oldDocument: Object) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).findOne({_id: doc_id}).then(currDoc => {\n\t\t\t\t\t\t\tif (currDoc) {\n\t\t\t\t\t\t\t\tlet modifiedDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\tupdateParams.forEach(data => {\n\t\t\t\t\t\t\t\t\tmodifiedDoc[data.prop] = data.data;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (modifiedDoc.__v === doc__v) {\n\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\t\t\n\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tlet schemaErrors = null;\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection)['simplschema'].validate(modifiedDoc);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\t\t\t\t\tschemaErrors = errors;\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'Schema Failed on updateDocumentProps - ' + collection, [schemaErrors, modifiedDoc]);\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 (schemaErrors) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(schemaErrors);\n\t\t\t\t\t\t\t\t\t\treject('Schema Errors');\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\tlet updates = getMongoUpdates(currDoc, modifiedDoc, true);\n\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: modifiedDoc._id}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.ok);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: modifiedDoc._id}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.ok);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\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}\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\tconsole.log('OFFLINE - invalid version - ' + collection, currDoc.__v, doc__v);\n\n\t\t\t\t\t\t\t\t\tlet newCurrDocId = currDoc._id;\n\n\t\t\t\t\t\t\t\t\tif (f_oldDocument) {\n\t\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\tlet updatedDoc = getMongoMergeUpdatedDoc(modifiedDoc, currDoc, f_oldDocument);\n\t\t\t\t\t\t\t\t\t\tupdatedDoc._id = newCurrDocId;\n\t\t\t\t\t\t\t\t\t\tupdatedDoc.__v++;\n\t\t\t\t\t\t\t\t\t\tupdatedDoc.updatedAt = new Date();\n\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).replaceOne({_id: newCurrDocId}, updatedDoc).then(res => {\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': versionDoc._id._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: versionDoc._id.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\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\treject('OFFLINE - Invalid Version And Could Not Find History Props - DB: ' + currDoc.__v + ', Trying to update with :' + modifiedDoc.__v);\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 Document');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, () => {});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t// Removes 1 document (from _id)\n\t\t// @Inputs: collection, document id\n\t\t// @Outputs: res = 1 (deleted), res = 0 (not deleted), err = not deleted\n\t\t// Search for doc, if found then try and remove\n\t\tremoveDocument: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tdoc_id: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, doc_id: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).deleteOne({_id: doc_id}).then(res => {\n\t\t\t\t\t\t\tresolve(res.result.ok);\n\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tremoveDocumentWithQuery: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tquery: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, query: Object) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).deleteOne(query).then(res => {\n\t\t\t\t\t\t\tresolve(res.result.ok);\n\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tremoveDocumentsWithQuery: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tquery: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, query: Object) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).deleteMany(query).then(res => {\n\t\t\t\t\t\t\tresolve(res.result.ok);\n\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/methods/collections.ts"],"names":[],"mappings":"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","file":"collections.js","sourcesContent":["import { MethodManager } from '../managers/method.manager';\nimport { getMongoUpdates, deepCopy, getMongoMergeUpdatedDoc, getBinarySize } from '../util/common';\nimport SimpleSchema from 'simpl-schema';\nimport { PaginationOptionsSchema, PaginationOptions } from '../models/pagination.model';\nimport { ResolveIOServer } from '../index';\nimport { objectIdHexString } from '../managers/mongo.manager';\n\nexport function loadCollectionMethods(methodManager: MethodManager) {\n\tmethodManager.methods({\n\t\tcollectionListAll: {\n\t\t\tskipQueue: true,\n\t\t\tfunction: function() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tresolve(ResolveIOServer.getMainServer().getMongoManager().collections().map(a => a.collectionName).sort((a, b) => a.localeCompare(b)));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tcollectionListRB: {\n\t\t\tskipQueue: true,\n\t\t\tfunction: function() {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tresolve(ResolveIOServer.getMainServer().getMongoManager().collections().filter(a => a.useRB).map(a => a.collectionName).sort((a, b) => a.localeCompare(b)));\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t// Query database for any collection and query\n\t\tfindOne: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tquery: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, query = {}) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).findOne(query).then(res => resolve(res), err => reject(err));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tfind: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tquery: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tsort: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true,\n\t\t\t\t\toptional: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, query = {}, sortQuery = {}) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).find(query, {sort: sortQuery}).then(res => resolve(res), err => reject(err));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tfindWithOptions: {\n\t\t\tskipQueue: true,\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tquery: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\ttype: PaginationOptionsSchema\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, query: Object, options: PaginationOptions) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet optionsQuery = {};\n\n\t\t\t\t\t\tif (options.fields && Object.keys(options.fields).length) {\n\t\t\t\t\t\t\toptionsQuery['projection'] = options.fields;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.sort && Object.keys(options.sort).length) {\n\t\t\t\t\t\t\toptionsQuery['sort'] = options.sort;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.limit) {\n\t\t\t\t\t\t\toptionsQuery['limit'] = options.limit;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (options.skip) {\n\t\t\t\t\t\t\toptionsQuery['skip'] = options.skip;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).find(query, optionsQuery).then(res => resolve(res), err => reject(err));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t// Insert 1 document\n\t\t// @Inputs: collection, document\n\t\t// @Outputs: res = _id of new document, err = not inserted\n\t\tinsertDocument: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tdocument: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, document: Object) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet schemaErrors = null;\n\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection)['simplschema'].validate(document);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\t\tschemaErrors = errors;\n\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'Schema Failed on insert - ' + collection, [schemaErrors, document]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t\t\tif (schemaErrors) {\n\t\t\t\t\t\t\tconsole.log(schemaErrors);\n\t\t\t\t\t\t\treject('Schema Errors');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tlet id = objectIdHexString();\n\t\t\t\t\t\t\tdocument['_id'] = id;\n\t\t\t\t\t\t\tdocument['__v'] = 0;\n\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).insertOne(document).then(() => resolve(id), err => reject(err));\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\t// Insert 1 document\n\t\t// @Inputs: collection, document\n\t\t// @Outputs: res = _id of new document, err = not inserted\n\t\tinsertManyDocuments: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tdocuments: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'documents.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, documents: Object[]) {\n\t\t\t\treturn new Promise((res, rej) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\trej('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet promises = [];\n\n\t\t\t\t\t\tfor (let i = 0; i < documents.length; i++) {\n\t\t\t\t\t\t\tlet document = documents[i];\n\n\t\t\t\t\t\t\tpromises.push(new Promise((resolve, reject) => {\n\t\t\t\t\t\t\t\tlet schemaErrors = null;\n\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection)['simplschema'].validate(document);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\t\t\t\tschemaErrors = errors;\n\t\t\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'Schema Failed on insert - ' + collection, [schemaErrors, document]);\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\tif (schemaErrors) {\n\t\t\t\t\t\t\t\t\tconsole.log(schemaErrors);\n\t\t\t\t\t\t\t\t\treject('Schema Errors');\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 id = objectIdHexString();\n\t\t\t\t\t\t\t\t\tdocument['_id'] = id;\n\t\t\t\t\t\t\t\t\tdocument['__v'] = 0;\n\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).insertOne(document).then(() => resolve(id), err => reject(err));\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\n\t\t\t\t\t\tPromise.all(promises).then(vals => res(vals), err => rej(err));\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t// Replaces 1 document with new document (from _id)\n\t\t// @Inputs: collection, document id\n\t\t// @Outputs: res = 1 (updated 1), res = 0 (not updated), err = not updated/wrong version\n\t\t// Search for doc, check version, if found then try and update\n\t\tupdateDocument: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tf_document: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, f_document: Object) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).findOne({_id: f_document['_id']}).then(currDoc => {\n\t\t\t\t\t\t\tif (currDoc) {\n\t\t\t\t\t\t\t\tif (currDoc.__v === f_document['__v']) {\n\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\tlet schemaErrors = null;\n\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection)['simplschema'].validate(f_document);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\t\t\t\t\tschemaErrors = errors;\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'Schema Failed on updateDocument - ' + collection, [schemaErrors, f_document]);\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 (schemaErrors) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(schemaErrors);\n\t\t\t\t\t\t\t\t\t\treject('Schema Errors');\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\tlet updates = getMongoUpdates(currDoc, f_document, true);\n\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: f_document['_id']}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: f_document['_id']}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\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}\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\tconsole.log('invalid version - ' + collection, currDoc.__v, f_document['__v']);\n\n\t\t\t\t\t\t\t\t\tif (ResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions')) {\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').findOne({\n\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': f_document['__v']}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}).then(oldDoc => {\n\t\t\t\t\t\t\t\t\t\t\tlet newCurrDocId = currDoc._id;\n\n\t\t\t\t\t\t\t\t\t\t\tif (oldDoc) {\n\t\t\t\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\t\t\tlet updatedDoc = getMongoMergeUpdatedDoc(f_document, currDoc, oldDoc);\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedDoc._id = newCurrDocId;\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedDoc.__v++;\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedDoc.updatedAt = new Date();\n\n\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).replaceOne({_id: newCurrDocId}, updatedDoc).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': versionDoc._id._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: versionDoc._id.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\treject('Invalid Version And Could Not Find History - DB: ' + currDoc.__v + ', Trying to update with :' + f_document['__v']);\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}, errOldDoc => {});\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\treject('Invalid Version And We Are NOT Using Versions On This Collection!');\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 Document');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, errDoc => {\n\t\t\t\t\t\t\treject('No Document');\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\t// Updates 1 document's props (from _id)\n\t\t// @Inputs: collection, document id, document version, update paramters ({prop: 'xxx', data: 'yyy})\n\t\t// @Outputs: res = 1 (updated 1), res = 0 (not updated), err = not updated/wrong version\n\t\t// Search for doc, check version, if found then try and update props\n\t\tupdateDocumentProps: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tdoc_id: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tupdateParams: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'updateParams.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tdoc__v: {\n\t\t\t\t\ttype: Number\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, doc_id: string, updateParams: any[], doc__v: number) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).findOne({_id: doc_id}).then(currDoc => {\n\t\t\t\t\t\t\tif (currDoc) {\n\t\t\t\t\t\t\t\tlet modifiedDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\tupdateParams.forEach(data => {\n\t\t\t\t\t\t\t\t\tmodifiedDoc[data.prop] = data.data;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (modifiedDoc.__v === doc__v) {\n\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\t\t\n\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tlet schemaErrors = null;\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection)['simplschema'].validate(modifiedDoc);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\t\t\t\t\tschemaErrors = errors;\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'Schema Failed on updateDocumentProps - ' + collection, [schemaErrors, modifiedDoc]);\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 (schemaErrors) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(schemaErrors);\n\t\t\t\t\t\t\t\t\t\treject('Schema Errors');\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\tlet updates = getMongoUpdates(currDoc, modifiedDoc, true);\n\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: modifiedDoc._id}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.ok);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: modifiedDoc._id}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.n);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\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}\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\tconsole.log(new Date(), 'invalid version - ' + collection, currDoc.__v, doc__v);\n\n\t\t\t\t\t\t\t\t\tif (ResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions')) {\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').findOne({\n\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': doc__v}\n\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}).then(oldDoc => {\n\t\t\t\t\t\t\t\t\t\t\tlet newCurrDocId = currDoc._id;\n\n\t\t\t\t\t\t\t\t\t\t\tif (oldDoc) {\n\t\t\t\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\t\t\tlet updatedDoc = getMongoMergeUpdatedDoc(modifiedDoc, currDoc, oldDoc);\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedDoc._id = newCurrDocId;\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedDoc.__v++;\n\t\t\t\t\t\t\t\t\t\t\t\tupdatedDoc.updatedAt = new Date();\n\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).replaceOne({_id: newCurrDocId}, updatedDoc).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': versionDoc._id._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: versionDoc._id.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\treject('Invalid Version And Could Not Find History Props - DB: ' + currDoc.__v + ', Trying to update with :' + doc__v);\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}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\treject('Invalid Version And We Are NOT Using Versions On This Collection!');\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 Document');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, () => {});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tupdateDocumentOffline: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tf_document: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tf_oldDocument: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, f_document: Object, f_oldDocument: Object) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).findOne({_id: f_document['_id']}).then(currDoc => {\n\t\t\t\t\t\t\tif (currDoc) {\n\t\t\t\t\t\t\t\tif (currDoc.__v === f_document['__v']) {\n\n\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\tlet schemaErrors = null;\n\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection)['simplschema'].validate(f_document);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\t\t\t\t\tschemaErrors = errors;\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'Schema Failed on updateDocument - ' + collection, [schemaErrors, f_document]);\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 (schemaErrors) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(schemaErrors);\n\t\t\t\t\t\t\t\t\t\treject('Schema Errors');\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\tlet updates = getMongoUpdates(currDoc, f_document, true);\n\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: f_document['_id']}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: f_document['_id']}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\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}\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\tconsole.log('OFFLINE - invalid version - ' + collection, currDoc.__v, f_document['__v']);\n\n\t\t\t\t\t\t\t\t\tlet newCurrDocId = currDoc._id;\n\n\t\t\t\t\t\t\t\t\tif (f_oldDocument) {\n\t\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\tlet updatedDoc = getMongoMergeUpdatedDoc(f_document, currDoc, f_oldDocument);\n\t\t\t\t\t\t\t\t\t\tupdatedDoc._id = newCurrDocId;\n\t\t\t\t\t\t\t\t\t\tupdatedDoc.__v++;\n\t\t\t\t\t\t\t\t\t\tupdatedDoc.updatedAt = new Date();\n\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).replaceOne({_id: newCurrDocId}, updatedDoc).then(res => {\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': versionDoc._id._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: versionDoc._id.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\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\treject('OFFLINE - Invalid Version And Could Not Find History - DB: ' + currDoc.__v + ', Trying to update with :' + f_document['__v']);\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 Document');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, () => {});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t// Updates 1 document's props (from _id)\n\t\t// @Inputs: collection, document id, document version, update paramters ({prop: 'xxx', data: 'yyy})\n\t\t// @Outputs: res = 1 (updated 1), res = 0 (not updated), err = not updated/wrong version\n\t\t// Search for doc, check version, if found then try and update props\n\t\tupdateDocumentPropsOffline: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tdoc_id: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tupdateParams: {\n\t\t\t\t\ttype: Array\n\t\t\t\t},\n\t\t\t\t'updateParams.$': {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t},\n\t\t\t\tdoc__v: {\n\t\t\t\t\ttype: Number\n\t\t\t\t},\n\t\t\t\tf_oldDocument: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, doc_id: string, updateParams: any[], doc__v: number, f_oldDocument: Object) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).findOne({_id: doc_id}).then(currDoc => {\n\t\t\t\t\t\t\tif (currDoc) {\n\t\t\t\t\t\t\t\tlet modifiedDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\tupdateParams.forEach(data => {\n\t\t\t\t\t\t\t\t\tmodifiedDoc[data.prop] = data.data;\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif (modifiedDoc.__v === doc__v) {\n\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\t\t\n\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\tlet schemaErrors = null;\n\t\t\t\t\t\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection)['simplschema'].validate(modifiedDoc);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcatch (errors) {\n\t\t\t\t\t\t\t\t\t\tschemaErrors = errors;\n\t\t\t\t\t\t\t\t\t\tthis.callMethodInternal('insertErrorLog', 'Schema Failed on updateDocumentProps - ' + collection, [schemaErrors, modifiedDoc]);\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 (schemaErrors) {\n\t\t\t\t\t\t\t\t\t\tconsole.log(schemaErrors);\n\t\t\t\t\t\t\t\t\t\treject('Schema Errors');\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\tlet updates = getMongoUpdates(currDoc, modifiedDoc, true);\n\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: modifiedDoc._id}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.ok);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': currDoc._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: currDoc.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\tif (updates) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).updateOne({_id: modifiedDoc._id}, updates).then(res => {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.ok);\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\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}\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\tconsole.log('OFFLINE - invalid version - ' + collection, currDoc.__v, doc__v);\n\n\t\t\t\t\t\t\t\t\tlet newCurrDocId = currDoc._id;\n\n\t\t\t\t\t\t\t\t\tif (f_oldDocument) {\n\t\t\t\t\t\t\t\t\t\tlet versionDoc = deepCopy(currDoc);\n\n\t\t\t\t\t\t\t\t\t\tversionDoc._id = {\n\t\t\t\t\t\t\t\t\t\t\t_id: currDoc._id,\n\t\t\t\t\t\t\t\t\t\t\t__v: currDoc.__v\n\t\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t\t\t\tlet updatedDoc = getMongoMergeUpdatedDoc(modifiedDoc, currDoc, f_oldDocument);\n\t\t\t\t\t\t\t\t\t\tupdatedDoc._id = newCurrDocId;\n\t\t\t\t\t\t\t\t\t\tupdatedDoc.__v++;\n\t\t\t\t\t\t\t\t\t\tupdatedDoc.updatedAt = new Date();\n\n\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).replaceOne({_id: newCurrDocId}, updatedDoc).then(res => {\n\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').create(versionDoc).then(doc => {\n\t\t\t\t\t\t\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection + '.versions').deleteMany({\n\t\t\t\t\t\t\t\t\t\t\t\t\t$and: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id._id': versionDoc._id._id},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{'_id.__v': {$lte: versionDoc._id.__v - 4}}\n\t\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(res.result.nModified);\n\t\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}, err => reject(err));\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\treject('OFFLINE - Invalid Version And Could Not Find History Props - DB: ' + currDoc.__v + ', Trying to update with :' + modifiedDoc.__v);\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 Document');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, () => {});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\t// Removes 1 document (from _id)\n\t\t// @Inputs: collection, document id\n\t\t// @Outputs: res = 1 (deleted), res = 0 (not deleted), err = not deleted\n\t\t// Search for doc, if found then try and remove\n\t\tremoveDocument: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tdoc_id: {\n\t\t\t\t\ttype: String\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, doc_id: string) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).deleteOne({_id: doc_id}).then(res => {\n\t\t\t\t\t\t\tresolve(res.result.ok);\n\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tremoveDocumentWithQuery: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tquery: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, query: Object) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).deleteOne(query).then(res => {\n\t\t\t\t\t\t\tresolve(res.result.ok);\n\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tremoveDocumentsWithQuery: {\n\t\t\tcheck: new SimpleSchema({\n\t\t\t\tcollection: {\n\t\t\t\t\ttype: String\n\t\t\t\t},\n\t\t\t\tquery: {\n\t\t\t\t\ttype: Object,\n\t\t\t\t\tblackbox: true\n\t\t\t\t}\n\t\t\t}),\n\t\t\tfunction: function(collection: string, query: Object) {\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tif (!ResolveIOServer.getMainServer().getMongoManager().collection(collection)) {\n\t\t\t\t\t\treject('Invalid collection');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tResolveIOServer.getMainServer().getMongoManager().collection(collection).deleteMany(query).then(res => {\n\t\t\t\t\t\t\tresolve(res.result.ok);\n\t\t\t\t\t\t}, err => {\n\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t});\n}"]}
|