@resolveio/server-lib 20.12.44 → 20.12.45

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/fixtures/init.js CHANGED
@@ -52,7 +52,6 @@ var email_history_collection_1 = require("../collections/email-history.collectio
52
52
  var flag_collection_1 = require("../collections/flag.collection");
53
53
  var report_builder_report_collection_1 = require("../collections/report-builder-report.collection");
54
54
  var resolveio_server_app_1 = require("../resolveio-server-app");
55
- var chrome_cleaner_1 = require("../util/chrome-cleaner");
56
55
  function loadServerInit() {
57
56
  return __awaiter(this, void 0, void 0, function () {
58
57
  var enableDebugFlag, enableDebugFlagPDF;
@@ -83,14 +82,8 @@ function loadServerInit() {
83
82
  case 8:
84
83
  _a.sent();
85
84
  _a.label = 9;
86
- case 9:
87
- if (!(resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200')) return [3 /*break*/, 11];
88
- return [4 /*yield*/, (0, chrome_cleaner_1.cleanupExistingChromeProcesses)('server-init')];
85
+ case 9: return [4 /*yield*/, backfillReportBuilderLayouts()];
89
86
  case 10:
90
- _a.sent();
91
- _a.label = 11;
92
- case 11: return [4 /*yield*/, backfillReportBuilderLayouts()];
93
- case 12:
94
87
  _a.sent();
95
88
  return [2 /*return*/];
96
89
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/fixtures/init.ts"],"names":[],"mappings":"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","file":"init.js","sourcesContent":["import { EmailHistories } from '../collections/email-history.collection';\nimport { Flags } from '../collections/flag.collection';\nimport { ReportBuilderReports } from '../collections/report-builder-report.collection';\nimport { ResolveIOServer } from '../resolveio-server-app';\nimport { cleanupExistingChromeProcesses } from '../util/chrome-cleaner';\n\nexport async function loadServerInit() {\n\tawait EmailHistories.updateMany({status: 'processing'}, {$set: {status: 'pending'}});\n\n\tlet enableDebugFlag = await Flags.findOne({type: 'Enable Debug'});\n\n\tif (!enableDebugFlag) {\n\t\tawait Flags.insertOne({type: 'Enable Debug', value: false});\n\t}\n\n\tlet enableDebugFlagPDF = await Flags.findOne({type: 'Enable Debug PDF'});\n\n\tif (!enableDebugFlagPDF) {\n\t\tawait Flags.insertOne({type: 'Enable Debug PDF', value: false});\n\t}\n\telse if (enableDebugFlagPDF.value && ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200') {\n\t\tawait Flags.updateOne({_id: enableDebugFlagPDF._id}, {$set: {value: false}});\n\t}\n\n\t// Clean up any orphaned headless Chrome processes left from prior runs (production only).\n\tif (ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200') {\n\t\tawait cleanupExistingChromeProcesses('server-init');\n\t}\n\n\tawait backfillReportBuilderLayouts();\n}\n\nasync function backfillReportBuilderLayouts() {\n\tif (!ReportBuilderReports) {\n\t\treturn;\n\t}\n\n\tconst reports = await ReportBuilderReports.find({\n\t\t$or: [\n\t\t\t{fields_layout: {$exists: false}},\n\t\t\t{fields_layout: {$size: 0}}\n\t\t]\n\t});\n\n\tconst ops = [];\n\n\tfor (const report of reports) {\n\t\tconst fieldsSelected = report.fields_selected || [];\n\t\tconst collectionKeys = buildCollectionKeys(report);\n\n\t\tconst layout = fieldsSelected.map((field, index) => {\n\t\t\tconst header = field.columnName || field.fieldName || `Column ${index + 1}`;\n\n\t\t\tconst mappings = collectionKeys.map(key => {\n\t\t\t\tconst matchesKey = key === report.collection_root\n\t\t\t\t\t? (field.collection_name === report.collection_root)\n\t\t\t\t\t: (key === (field.lookup_as || '').trim()) || key === field.collection_name;\n\n\t\t\t\tif (matchesKey) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcollection: key,\n\t\t\t\t\t\tmode: 'variable',\n\t\t\t\t\t\tfieldPath: field.fieldPath || '',\n\t\t\t\t\t\tfieldId: field.id || `f_layout_${index}`,\n\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\tleafValueType: field.leafValueType || 'Value',\n\t\t\t\t\t\tleafFormatType: field.leafFormatType || ''\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tcollection: key,\n\t\t\t\t\tmode: 'text',\n\t\t\t\t\tfieldPath: '',\n\t\t\t\t\tfieldId: '',\n\t\t\t\t\ttext: '',\n\t\t\t\t\tleafValueType: 'Value',\n\t\t\t\t\tleafFormatType: ''\n\t\t\t\t};\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tid: field.id ? `layout_${field.id}` : `layout_${index}`,\n\t\t\t\theader,\n\t\t\t\tmappings\n\t\t\t};\n\t\t});\n\n\t\tops.push({\n\t\t\tupdateOne: {\n\t\t\t\tfilter: {_id: report._id},\n\t\t\t\tupdate: {\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tcollection_joins: report.collection_joins || [],\n\t\t\t\t\t\tfields_layout: layout\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tconsole.log(`Backfilled ${ops.length} report layouts`);\n\n\tif (ops.length) {\n\t\tawait ReportBuilderReports.bulkWrite(ops, {ordered: false}, false, true, true, true);\n\t}\n}\n\nfunction buildCollectionKeys(report: any): string[] {\n\tconst keys: string[] = [];\n\n\tif (report.collection_root) {\n\t\tkeys.push(report.collection_root);\n\t}\n\n\t(report.collection_joins || []).forEach(join => {\n\t\tif (!join) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst alias = (join.alias || '').trim();\n\t\tif (alias && !keys.includes(alias)) {\n\t\t\tkeys.push(alias);\n\t\t}\n\t\telse if (join.collection && !keys.includes(join.collection)) {\n\t\t\tkeys.push(join.collection);\n\t\t}\n\t});\n\n\treturn keys.length ? keys : ['root'];\n}\n"]}
1
+ {"version":3,"sources":["../../src/fixtures/init.ts"],"names":[],"mappings":"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","file":"init.js","sourcesContent":["import { EmailHistories } from '../collections/email-history.collection';\nimport { Flags } from '../collections/flag.collection';\nimport { ReportBuilderReports } from '../collections/report-builder-report.collection';\nimport { ResolveIOServer } from '../resolveio-server-app';\n\nexport async function loadServerInit() {\n\tawait EmailHistories.updateMany({status: 'processing'}, {$set: {status: 'pending'}});\n\n\tlet enableDebugFlag = await Flags.findOne({type: 'Enable Debug'});\n\n\tif (!enableDebugFlag) {\n\t\tawait Flags.insertOne({type: 'Enable Debug', value: false});\n\t}\n\n\tlet enableDebugFlagPDF = await Flags.findOne({type: 'Enable Debug PDF'});\n\n\tif (!enableDebugFlagPDF) {\n\t\tawait Flags.insertOne({type: 'Enable Debug PDF', value: false});\n\t}\n\telse if (enableDebugFlagPDF.value && ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200') {\n\t\tawait Flags.updateOne({_id: enableDebugFlagPDF._id}, {$set: {value: false}});\n\t}\n\n\tawait backfillReportBuilderLayouts();\n}\n\nasync function backfillReportBuilderLayouts() {\n\tif (!ReportBuilderReports) {\n\t\treturn;\n\t}\n\n\tconst reports = await ReportBuilderReports.find({\n\t\t$or: [\n\t\t\t{fields_layout: {$exists: false}},\n\t\t\t{fields_layout: {$size: 0}}\n\t\t]\n\t});\n\n\tconst ops = [];\n\n\tfor (const report of reports) {\n\t\tconst fieldsSelected = report.fields_selected || [];\n\t\tconst collectionKeys = buildCollectionKeys(report);\n\n\t\tconst layout = fieldsSelected.map((field, index) => {\n\t\t\tconst header = field.columnName || field.fieldName || `Column ${index + 1}`;\n\n\t\t\tconst mappings = collectionKeys.map(key => {\n\t\t\t\tconst matchesKey = key === report.collection_root\n\t\t\t\t\t? (field.collection_name === report.collection_root)\n\t\t\t\t\t: (key === (field.lookup_as || '').trim()) || key === field.collection_name;\n\n\t\t\t\tif (matchesKey) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcollection: key,\n\t\t\t\t\t\tmode: 'variable',\n\t\t\t\t\t\tfieldPath: field.fieldPath || '',\n\t\t\t\t\t\tfieldId: field.id || `f_layout_${index}`,\n\t\t\t\t\t\ttext: '',\n\t\t\t\t\t\tleafValueType: field.leafValueType || 'Value',\n\t\t\t\t\t\tleafFormatType: field.leafFormatType || ''\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tcollection: key,\n\t\t\t\t\tmode: 'text',\n\t\t\t\t\tfieldPath: '',\n\t\t\t\t\tfieldId: '',\n\t\t\t\t\ttext: '',\n\t\t\t\t\tleafValueType: 'Value',\n\t\t\t\t\tleafFormatType: ''\n\t\t\t\t};\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tid: field.id ? `layout_${field.id}` : `layout_${index}`,\n\t\t\t\theader,\n\t\t\t\tmappings\n\t\t\t};\n\t\t});\n\n\t\tops.push({\n\t\t\tupdateOne: {\n\t\t\t\tfilter: {_id: report._id},\n\t\t\t\tupdate: {\n\t\t\t\t\t$set: {\n\t\t\t\t\t\tcollection_joins: report.collection_joins || [],\n\t\t\t\t\t\tfields_layout: layout\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tconsole.log(`Backfilled ${ops.length} report layouts`);\n\n\tif (ops.length) {\n\t\tawait ReportBuilderReports.bulkWrite(ops, {ordered: false}, false, true, true, true);\n\t}\n}\n\nfunction buildCollectionKeys(report: any): string[] {\n\tconst keys: string[] = [];\n\n\tif (report.collection_root) {\n\t\tkeys.push(report.collection_root);\n\t}\n\n\t(report.collection_joins || []).forEach(join => {\n\t\tif (!join) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst alias = (join.alias || '').trim();\n\t\tif (alias && !keys.includes(alias)) {\n\t\t\tkeys.push(alias);\n\t\t}\n\t\telse if (join.collection && !keys.includes(join.collection)) {\n\t\t\tkeys.push(join.collection);\n\t\t}\n\t});\n\n\treturn keys.length ? keys : ['root'];\n}\n"]}
@@ -33,6 +33,8 @@ export declare class MethodManager {
33
33
  private _debugCallMethodCronJobHits;
34
34
  private _debugSendQueueHits;
35
35
  private _enableDebug;
36
+ private _localActiveCounts;
37
+ private _localWaitQueues;
36
38
  clientDir: string;
37
39
  serverConfig: Record<string, any>;
38
40
  constructor();
@@ -44,6 +46,8 @@ export declare class MethodManager {
44
46
  callMethodCron(method: string, ...methodData: any[]): Promise<any>;
45
47
  callMethod(methodName: string, ...methodData: any[]): Promise<any>;
46
48
  private callMethodInternal;
49
+ private acquireLocalConcurrency;
50
+ private createLocalRelease;
47
51
  setupEmailWatcher(): void;
48
52
  loadPendingEmails(): Promise<void>;
49
53
  tryProcessEmail(): Promise<void>;
@@ -216,6 +216,8 @@ var MethodManager = /** @class */ (function () {
216
216
  this._debugCallMethodCronJobHits = 0;
217
217
  this._debugSendQueueHits = 0;
218
218
  this._enableDebug = false;
219
+ this._localActiveCounts = new Map();
220
+ this._localWaitQueues = new Map();
219
221
  this.clientDir = '';
220
222
  this.serverConfig = {};
221
223
  }
@@ -508,7 +510,7 @@ var MethodManager = /** @class */ (function () {
508
510
  };
509
511
  MethodManager.prototype.callMethodInternal = function (correlationId, methodName, methodData) {
510
512
  return __awaiter(this, void 0, void 0, function () {
511
- var method, methodCallback, functionMethodData, session, shouldStartTransaction, executeWithExistingSession, monitor_2;
513
+ var method, releaseLocalConcurrency, methodCallback_1, functionMethodData_1, session, shouldStartTransaction, executeWithExistingSession_1, monitor_2;
512
514
  var _this = this;
513
515
  return __generator(this, function (_a) {
514
516
  switch (_a.label) {
@@ -518,6 +520,12 @@ var MethodManager = /** @class */ (function () {
518
520
  console.log('No Method: ' + methodName);
519
521
  throw new Error("No Method: ".concat(methodName));
520
522
  }
523
+ return [4 /*yield*/, this.acquireLocalConcurrency(methodName, method.maxConcurrency)];
524
+ case 1:
525
+ releaseLocalConcurrency = _a.sent();
526
+ _a.label = 2;
527
+ case 2:
528
+ _a.trys.push([2, , 7, 8]);
521
529
  if ((methodData.length > 1 || (methodData[0] && typeof methodData[0] !== 'function')) && !method.skipValidation) {
522
530
  if (!method.check) {
523
531
  console.error(new Date(), 'No Check Function For Method ' + methodName);
@@ -536,9 +544,9 @@ var MethodManager = /** @class */ (function () {
536
544
  methodName !== 'countCollectionWithQuery' &&
537
545
  methodName !== 'countWithQuery' &&
538
546
  methodName !== 'qbFetchRequests' &&
539
- methodName !== 'qbHandleResponse')) return [3 /*break*/, 4];
547
+ methodName !== 'qbHandleResponse')) return [3 /*break*/, 6];
540
548
  if (!(resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'https://resolveio.com'
541
- && resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200')) return [3 /*break*/, 1];
549
+ && resolveio_server_app_1.ResolveIOServer.getServerConfig()['ROOT_URL'] !== 'http://localhost:4200')) return [3 /*break*/, 3];
542
550
  resolveio_server_app_1.ResolveIOServer.getLocalLogManager().writeLog({
543
551
  type: 'log',
544
552
  data: {
@@ -557,8 +565,8 @@ var MethodManager = /** @class */ (function () {
557
565
  correlationId: correlationId
558
566
  }
559
567
  });
560
- return [3 /*break*/, 3];
561
- case 1: return [4 /*yield*/, log_collection_1.Logs.insertOne({
568
+ return [3 /*break*/, 5];
569
+ case 3: return [4 /*yield*/, log_collection_1.Logs.insertOne({
562
570
  _id: (0, common_1.objectIdHexString)(),
563
571
  type: 'callMethod',
564
572
  collection: '',
@@ -574,15 +582,15 @@ var MethodManager = /** @class */ (function () {
574
582
  instance_index: process.env.NODE_APP_INSTANCE || '0',
575
583
  correlationId: correlationId
576
584
  })];
577
- case 2:
585
+ case 4:
578
586
  _a.sent();
579
- _a.label = 3;
580
- case 3:
587
+ _a.label = 5;
588
+ case 5:
581
589
  ;
582
- _a.label = 4;
583
- case 4:
584
- methodCallback = typeof (methodData[methodData.length - 1]) === 'function' ? methodData[methodData.length - 1] : null;
585
- functionMethodData = methodCallback ? methodData.slice(0, -1) : methodData;
590
+ _a.label = 6;
591
+ case 6:
592
+ methodCallback_1 = typeof (methodData[methodData.length - 1]) === 'function' ? methodData[methodData.length - 1] : null;
593
+ functionMethodData_1 = methodCallback_1 ? methodData.slice(0, -1) : methodData;
586
594
  session = resolveio_server_app_1.ResolveIOServer.getMongoManager().getSession();
587
595
  shouldStartTransaction = !method.bypassSession &&
588
596
  !session &&
@@ -593,21 +601,21 @@ var MethodManager = /** @class */ (function () {
593
601
  ].includes(methodName) &&
594
602
  !methodName.startsWith('monitor-') &&
595
603
  !methodName.startsWith('log');
596
- executeWithExistingSession = function () { return __awaiter(_this, void 0, void 0, function () {
604
+ executeWithExistingSession_1 = function () { return __awaiter(_this, void 0, void 0, function () {
597
605
  var monitor, res, err_3, _a, normalizedError, resolvedCorrelationId;
598
606
  var _b;
599
607
  return __generator(this, function (_c) {
600
608
  switch (_c.label) {
601
609
  case 0:
602
- monitor = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData);
610
+ monitor = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData_1);
603
611
  _c.label = 1;
604
612
  case 1:
605
613
  _c.trys.push([1, 3, 7, 9]);
606
- return [4 /*yield*/, (_b = method.function).call.apply(_b, __spreadArray([Object.assign({}, this, MethodManager.prototype)], __read(functionMethodData), false))];
614
+ return [4 /*yield*/, (_b = method.function).call.apply(_b, __spreadArray([Object.assign({}, this, MethodManager.prototype)], __read(functionMethodData_1), false))];
607
615
  case 2:
608
616
  res = _c.sent();
609
- if (methodCallback) {
610
- methodCallback(null, res);
617
+ if (methodCallback_1) {
618
+ methodCallback_1(null, res);
611
619
  }
612
620
  return [2 /*return*/, res];
613
621
  case 3:
@@ -632,8 +640,8 @@ var MethodManager = /** @class */ (function () {
632
640
  case 4:
633
641
  _c.sent();
634
642
  normalizedError.message = "".concat(new Date().toISOString(), " - Error in Method (").concat(methodName, ") - Existing Session: ").concat(normalizedError.message);
635
- if (methodCallback) {
636
- methodCallback(normalizedError, null);
643
+ if (methodCallback_1) {
644
+ methodCallback_1(normalizedError, null);
637
645
  }
638
646
  if (!!process.env.IS_WORKER_INSTANCE) return [3 /*break*/, 6];
639
647
  return [4 /*yield*/, this.callMethod('insertErrorLog', "Error in Method: ".concat(methodName), {
@@ -668,15 +676,15 @@ var MethodManager = /** @class */ (function () {
668
676
  switch (_c.label) {
669
677
  case 0:
670
678
  // console.log(new Date(), 'Calling Method - New Session', methodName);
671
- monitor_2 = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData);
679
+ monitor_2 = this._monitorManagerFunction.startMonitorFunction('Method', methodName, this['user'] || '', '', functionMethodData_1);
672
680
  _c.label = 1;
673
681
  case 1:
674
682
  _c.trys.push([1, 3, 7, 9]);
675
- return [4 /*yield*/, (_b = method.function).call.apply(_b, __spreadArray([Object.assign({}, this, MethodManager.prototype)], __read(functionMethodData), false))];
683
+ return [4 /*yield*/, (_b = method.function).call.apply(_b, __spreadArray([Object.assign({}, this, MethodManager.prototype)], __read(functionMethodData_1), false))];
676
684
  case 2:
677
685
  res = _c.sent();
678
- if (methodCallback) {
679
- methodCallback(null, res);
686
+ if (methodCallback_1) {
687
+ methodCallback_1(null, res);
680
688
  }
681
689
  return [2 /*return*/, res];
682
690
  case 3:
@@ -701,8 +709,8 @@ var MethodManager = /** @class */ (function () {
701
709
  case 4:
702
710
  _c.sent();
703
711
  normalizedError.message = "".concat(new Date().toISOString(), " - Error in Method With Session (").concat(methodName, ") - New Session: ").concat(normalizedError.message);
704
- if (methodCallback) {
705
- methodCallback(normalizedError, null);
712
+ if (methodCallback_1) {
713
+ methodCallback_1(normalizedError, null);
706
714
  }
707
715
  if (!!process.env.IS_WORKER_INSTANCE) return [3 /*break*/, 6];
708
716
  return [4 /*yield*/, this.callMethod('insertErrorLog', "Error in Method: ".concat(methodName), {
@@ -732,19 +740,71 @@ var MethodManager = /** @class */ (function () {
732
740
  else if (method.bypassSession && session) {
733
741
  return [2 /*return*/, resolveio_server_app_1.ResolveIOServer.getMongoManager().runWithoutSession(function () { return __awaiter(_this, void 0, void 0, function () { return __generator(this, function (_a) {
734
742
  switch (_a.label) {
735
- case 0: return [4 /*yield*/, executeWithExistingSession()];
743
+ case 0: return [4 /*yield*/, executeWithExistingSession_1()];
736
744
  case 1: return [2 /*return*/, _a.sent()];
737
745
  }
738
746
  }); }); })];
739
747
  }
740
748
  else {
741
- return [2 /*return*/, executeWithExistingSession()];
749
+ return [2 /*return*/, executeWithExistingSession_1()];
742
750
  }
743
- return [2 /*return*/];
751
+ return [3 /*break*/, 8];
752
+ case 7:
753
+ releaseLocalConcurrency();
754
+ return [7 /*endfinally*/];
755
+ case 8: return [2 /*return*/];
744
756
  }
745
757
  });
746
758
  });
747
759
  };
760
+ MethodManager.prototype.acquireLocalConcurrency = function (methodName, maxConcurrency) {
761
+ return __awaiter(this, void 0, void 0, function () {
762
+ var current;
763
+ var _this = this;
764
+ return __generator(this, function (_a) {
765
+ if (!maxConcurrency || maxConcurrency < 1) {
766
+ return [2 /*return*/, function () { }];
767
+ }
768
+ current = this._localActiveCounts.get(methodName) || 0;
769
+ if (current < maxConcurrency) {
770
+ this._localActiveCounts.set(methodName, current + 1);
771
+ return [2 /*return*/, this.createLocalRelease(methodName)];
772
+ }
773
+ // eslint-disable-next-line no-restricted-syntax
774
+ return [2 /*return*/, new Promise(function (resolve) {
775
+ var queue = _this._localWaitQueues.get(methodName);
776
+ if (!queue) {
777
+ queue = [];
778
+ _this._localWaitQueues.set(methodName, queue);
779
+ }
780
+ queue.push(function () {
781
+ var curr = _this._localActiveCounts.get(methodName) || 0;
782
+ _this._localActiveCounts.set(methodName, curr + 1);
783
+ resolve(_this.createLocalRelease(methodName));
784
+ });
785
+ })];
786
+ });
787
+ });
788
+ };
789
+ MethodManager.prototype.createLocalRelease = function (methodName) {
790
+ var _this = this;
791
+ var released = false;
792
+ return function () {
793
+ if (released) {
794
+ return;
795
+ }
796
+ released = true;
797
+ var current = _this._localActiveCounts.get(methodName) || 0;
798
+ _this._localActiveCounts.set(methodName, current > 0 ? current - 1 : 0);
799
+ var queue = _this._localWaitQueues.get(methodName);
800
+ if (queue && queue.length) {
801
+ var next = queue.shift();
802
+ if (next) {
803
+ next();
804
+ }
805
+ }
806
+ };
807
+ };
748
808
  MethodManager.prototype.setupEmailWatcher = function () {
749
809
  var _this = this;
750
810
  var changeStream = email_history_collection_1.EmailHistories.watchCollection([]);