@resolveio/server-lib 12.7.20 → 12.8.1
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/managers/cron.manager.js +82 -67
- package/managers/cron.manager.js.map +1 -1
- package/managers/mongo.manager.js +17 -10
- package/managers/mongo.manager.js.map +1 -1
- package/managers/subscription.manager.d.ts +1 -1
- package/managers/subscription.manager.js +141 -120
- package/managers/subscription.manager.js.map +1 -1
- package/package.json +1 -1
- package/server-app.js +17 -8
- package/server-app.js.map +1 -1
package/managers/cron.manager.js
CHANGED
|
@@ -52,77 +52,92 @@ var CronManager = /** @class */ (function () {
|
|
|
52
52
|
return __awaiter(this, void 0, void 0, function () {
|
|
53
53
|
var _this = this;
|
|
54
54
|
return __generator(this, function (_a) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
55
|
+
switch (_a.label) {
|
|
56
|
+
case 0:
|
|
57
|
+
if (this._watchCrons$ && !this._watchCrons$.closed) {
|
|
58
|
+
this._watchCrons$.removeAllListeners();
|
|
59
|
+
this._watchCrons$.close();
|
|
60
|
+
this._watchCrons$ = null;
|
|
61
|
+
}
|
|
62
|
+
return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, 1000); })];
|
|
63
|
+
case 1:
|
|
64
|
+
_a.sent();
|
|
65
|
+
if (!this._watchCrons$ || this._watchCrons$.closed) {
|
|
66
|
+
cron_job_collection_1.CronJobs.find().then(function (res) {
|
|
67
|
+
_this._jobs = res;
|
|
68
|
+
_this._jobs.forEach(function (job) {
|
|
69
|
+
_this.addCronJob(job);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
this._watchCrons$ = cron_job_collection_1.CronJobs.watchCollection([], { fullDocument: 'updateLookup' });
|
|
73
|
+
this._watchCrons$.on('change', function (doc) { return __awaiter(_this, void 0, void 0, function () {
|
|
74
|
+
var oldDoc, job, job;
|
|
75
|
+
return __generator(this, function (_a) {
|
|
76
|
+
if (doc.operationType === 'insert') {
|
|
77
|
+
if (doc.fullDocument) {
|
|
78
|
+
if (!this._jobs.some(function (a) { return a._id === doc.documentKey['_id']; })) {
|
|
79
|
+
this._jobs.push(doc.fullDocument);
|
|
80
|
+
}
|
|
81
81
|
this.addCronJob(doc.fullDocument);
|
|
82
82
|
}
|
|
83
|
-
else if (oldDoc.time_to_run !== doc.fullDocument.time_to_run ||
|
|
84
|
-
oldDoc.timezone !== doc.fullDocument.timezone) {
|
|
85
|
-
this.updateCronJob(doc.fullDocument);
|
|
86
|
-
}
|
|
87
83
|
}
|
|
88
|
-
else {
|
|
89
|
-
|
|
90
|
-
|
|
84
|
+
else if (doc.operationType === 'replace' || doc.operationType === 'update') {
|
|
85
|
+
if (doc.fullDocument) {
|
|
86
|
+
oldDoc = this._jobs.filter(function (a) { return a._id === doc.documentKey['_id']; })[0];
|
|
87
|
+
if (oldDoc) {
|
|
88
|
+
this._jobs.splice(this._jobs.map(function (a) { return a._id; }).indexOf(doc.documentKey['_id']), 1, doc.fullDocument);
|
|
89
|
+
if (oldDoc.name !== doc.fullDocument.name) {
|
|
90
|
+
this.removeCronJob(oldDoc.name);
|
|
91
|
+
this.addCronJob(doc.fullDocument);
|
|
92
|
+
}
|
|
93
|
+
else if (oldDoc.time_to_run !== doc.fullDocument.time_to_run ||
|
|
94
|
+
oldDoc.timezone !== doc.fullDocument.timezone) {
|
|
95
|
+
this.updateCronJob(doc.fullDocument);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
this._jobs.push(doc.fullDocument);
|
|
100
|
+
this.addCronJob(doc.fullDocument);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
if (this._jobs.some(function (a) { return a._id === doc.documentKey['_id']; })) {
|
|
105
|
+
job = this._jobs.filter(function (a) { return a._id === doc.documentKey['_id']; })[0];
|
|
106
|
+
this.removeCronJob(job.name);
|
|
107
|
+
this._jobs.splice(this._jobs.map(function (a) { return a._id; }).indexOf(doc.documentKey['_id']), 1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
91
110
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
111
|
+
else if (doc.operationType === 'delete') {
|
|
112
|
+
if (this._jobs.some(function (a) { return a._id === doc.documentKey['_id']; })) {
|
|
113
|
+
job = this._jobs.filter(function (a) { return a._id === doc.documentKey['_id']; })[0];
|
|
114
|
+
this.removeCronJob(job.name);
|
|
115
|
+
this._jobs.splice(this._jobs.map(function (a) { return a._id; }).indexOf(doc.documentKey['_id']), 1);
|
|
116
|
+
}
|
|
98
117
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
}
|
|
122
|
-
else {
|
|
123
|
-
this._watchCrons$.close();
|
|
118
|
+
return [2 /*return*/];
|
|
119
|
+
});
|
|
120
|
+
}); })
|
|
121
|
+
.on('error', function (err) {
|
|
122
|
+
_this._watchCrons$.removeAllListeners();
|
|
123
|
+
_this._watchCrons$.close();
|
|
124
|
+
_this._watchCrons$ = null;
|
|
125
|
+
_this.watchCrons();
|
|
126
|
+
})
|
|
127
|
+
.on('end', function () {
|
|
128
|
+
_this._watchCrons$.removeAllListeners();
|
|
129
|
+
_this._watchCrons$.close();
|
|
130
|
+
_this._watchCrons$ = null;
|
|
131
|
+
_this.watchCrons();
|
|
132
|
+
})
|
|
133
|
+
.on('close', function () {
|
|
134
|
+
_this._watchCrons$.removeAllListeners();
|
|
135
|
+
_this._watchCrons$ = null;
|
|
136
|
+
_this.watchCrons();
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return [2 /*return*/];
|
|
124
140
|
}
|
|
125
|
-
return [2 /*return*/];
|
|
126
141
|
});
|
|
127
142
|
});
|
|
128
143
|
};
|
|
@@ -137,7 +152,7 @@ var CronManager = /** @class */ (function () {
|
|
|
137
152
|
if (!this.doesCronJobExist(cron)) {
|
|
138
153
|
this._cronManager.add(cron.name, cron.time_to_run, function () { return _this.runCronJob(cron); }, null, true, cron.timezone, null, false);
|
|
139
154
|
var nextDate = new Date(this._cronManager.getJob(cron.name).nextDate()['ts']);
|
|
140
|
-
if (cron.running || !cron.next_run ||
|
|
155
|
+
if (cron.running || (nextDate && !cron.next_run || nextDate.getTime() !== cron.next_run.getTime())) {
|
|
141
156
|
cron_job_collection_1.CronJobs.updateOne({ _id: cron._id }, { $set: { running: false, next_run: nextDate || null } });
|
|
142
157
|
}
|
|
143
158
|
}
|
|
@@ -147,7 +162,7 @@ var CronManager = /** @class */ (function () {
|
|
|
147
162
|
if (this.doesCronJobExist(cron)) {
|
|
148
163
|
this._cronManager.update(cron.name, cron.time_to_run, function () { return _this.runCronJob(cron); }, null, true, cron.timezone);
|
|
149
164
|
var nextDate = new Date(this._cronManager.getJob(cron.name).nextDate()['ts']);
|
|
150
|
-
if (!cron.next_run ||
|
|
165
|
+
if (nextDate && (!cron.next_run || nextDate.getTime() !== cron.next_run.getTime())) {
|
|
151
166
|
cron_job_collection_1.CronJobs.updateOne({ _id: cron._id }, { $set: { next_run: nextDate } });
|
|
152
167
|
}
|
|
153
168
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/managers/cron.manager.ts"],"names":[],"mappings":"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","file":"cron.manager.js","sourcesContent":["import { CronJobModel } from '../models/cron-job.model';\nimport { CronJobs } from '../collections/cron-job.collection';\nimport ResolveIOMainServer from '../server-app';\nimport { CronJobManager } from '../cron/cron';\nimport * as moment from 'moment';\nimport { ChangeStream, ChangeStreamDocument } from 'mongodb';\nimport { CronJobHistories } from '../collections/cron-job-history.collection';\nimport { objectIdHexString } from '../managers/mongo.manager';\nimport { CronJobHistoryModel } from '../models/cron-job-history.model';\n\nexport class CronManager {\n\tprivate _cronManager: CronJobManager;\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _watchCrons$: ChangeStream;\n\tprivate _jobs: CronJobModel[] = [];\n\n\tconstructor(mainServer) {\n\t\tthis._mainServer = mainServer;\n\t\tthis._cronManager = new CronJobManager();\n\n\t\tthis.watchCrons();\n\t}\n\n\tpublic async watchCrons() {\n\t\tif (!this._watchCrons$ || this._watchCrons$.closed) {\n\t\t\tCronJobs.find().then(res => {\n\t\t\t\tthis._jobs = res;\n\n\t\t\t\tthis._jobs.forEach(job => {\n\t\t\t\t\tthis.addCronJob(job);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis._watchCrons$ = CronJobs.watchCollection([], {fullDocument: 'updateLookup'});\n\n\t\t\tthis._watchCrons$.on('change', async (doc: ChangeStreamDocument<CronJobModel>) => {\n\t\t\t\tif (doc.operationType === 'insert') {\n\t\t\t\t\tif (doc.fullDocument) {\n\t\t\t\t\t\tif (!this._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tthis._jobs.push(doc.fullDocument);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'replace' || doc.operationType === 'update') {\n\t\t\t\t\tif (doc.fullDocument) {\n\t\t\t\t\t\tlet oldDoc = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\tif (oldDoc) {\n\t\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1, doc.fullDocument);\n\n\t\t\t\t\t\t\tif (oldDoc.name !== doc.fullDocument.name) {\n\t\t\t\t\t\t\t\tthis.removeCronJob(oldDoc.name);\n\t\t\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (oldDoc.time_to_run !== doc.fullDocument.time_to_run || \n\t\t\t\t\t\t\t\toldDoc.timezone !== doc.fullDocument.timezone\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tthis.updateCronJob(doc.fullDocument);\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._jobs.push(doc.fullDocument);\n\t\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\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._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tlet job = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\t\tthis.removeCronJob(job.name);\n\t\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1);\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 === 'delete') {\n\t\t\t\t\tif (this._jobs.some(a => a._id === (<any>doc).documentKey['_id'])) {\n\t\t\t\t\t\tlet job = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\tthis.removeCronJob(job.name);\n\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('error', (err) => {\n\t\t\t\tthis._watchCrons$.close();\n\t\t\t})\n\t\t\t.on('end', () => {\n\t\t\t\tthis._watchCrons$.close();\n\t\t\t})\n\t\t\t.on('close', () => {\n\t\t\t\tthis._watchCrons$ = null;\n\t\t\t\tthis.watchCrons();\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tthis._watchCrons$.close();\n\t\t}\n\t}\n\n\tprivate doesCronJobExist(cron: CronJobModel) {\n\t\treturn this._cronManager.exists(cron.name);\n\t}\n\n\tprivate doesCronJobNameExist(cron_name: string) {\n\t\treturn this._cronManager.exists(cron_name);\n\t}\n\n\tprivate addCronJob(cron: CronJobModel) {\n\t\tif (!this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.add(\n\t\t\t\tcron.name,\n\t\t\t\tcron.time_to_run,\n\t\t\t\t() => this.runCronJob(cron),\n\t\t\t\tnull,\n\t\t\t\ttrue,\n\t\t\t\tcron.timezone,\n\t\t\t\tnull, \n\t\t\t\tfalse\n\t\t\t);\n\n\t\t\tlet nextDate = new Date(this._cronManager.getJob(cron.name).nextDate()['ts']);\n\n\t\t\tif (cron.running || !cron.next_run || (nextDate && nextDate.getTime() !== cron.next_run.getTime())) {\n\t\t\t\tCronJobs.updateOne({_id: cron._id}, {$set: {running: false, next_run: nextDate || null}});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate updateCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.update(cron.name, cron.time_to_run, () => this.runCronJob(cron), null, true, cron.timezone);\n\n\t\t\tlet nextDate = new Date(this._cronManager.getJob(cron.name).nextDate()['ts']);\n\n\t\t\tif (!cron.next_run || (nextDate && nextDate.getTime() !== cron.next_run.getTime())) {\n\t\t\t\tCronJobs.updateOne({_id: cron._id}, {$set: {next_run: nextDate}});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate removeCronJob(cron_name: string) {\n\t\tif (this.doesCronJobNameExist(cron_name)) {\n\t\t\tthis._cronManager.delete(cron_name);\n\t\t}\n\t}\n\n\tprivate startCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.start(cron.name);\n\t\t}\n\t}\n\n\tprivate stopCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.stop(cron.name);\n\t\t}\n\t}\n\n\tprivate stopAllCronJobs() {\n\t\tthis._cronManager.stopAll();\n\t}\n\n\tprivate runCronJob(cron: CronJobModel) {\n\t\tlet now = new Date();\n\n\t\tCronJobs.findOneAndUpdate({\n\t\t\t$and: [\n\t\t\t\t{_id: cron._id},\n\t\t\t\t{running: false},\n\t\t\t\t{\n\t\t\t\t\t$or: [\n\t\t\t\t\t\t{next_run: {$exists: false}},\n\t\t\t\t\t\t{next_run: null},\n\t\t\t\t\t\t{next_run: {$lte: now}}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}, {$set: {running: true}}).then(async res => {\n\t\t\tif (res) {\n\t\t\t\tlet cronHistory: CronJobHistoryModel = {\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tname: res.name,\n\t\t\t\t\treoccuring: res.repeat,\n\t\t\t\t\ttime_to_run: res.time_to_run,\n\t\t\t\t\tmethod_name: res.method_run,\n\t\t\t\t\tid_cronjob: res._id,\n\t\t\t\t\tserver_restart: true,\n\t\t\t\t\tpassed: true,\n\t\t\t\t\terror: '',\n\t\t\t\t\tdate_scheduled: res.next_run,\n\t\t\t\t\tdate_start: new Date(),\n\t\t\t\t\tdate_end: null,\n\t\t\t\t\tdate_next: null\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tawait CronJobHistories.create(cronHistory);\n\n\t\t\t\ttry {\n\t\t\t\t\tif (res.method_run_data) {\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run, res.method_run_data);\t\n\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (res.method_complete) {\n\t\t\t\t\t\tif (res.method_complete_data) {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete, res.method_complete_data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.log(new Date(), 'Cron Error', JSON.stringify(err, null, 2));\n\t\t\t\t\tcronHistory.error = JSON.stringify(err, null, 2);\n\t\t\t\t\tcronHistory.passed = false;\n\t\t\t\t}\n\n\t\t\t\tif (res.repeat) {\n\t\t\t\t\tlet nextDate = new Date(this._cronManager.getJob(res.name).nextDate()['ts']);\n\t\t\t\t\tcronHistory.date_next = nextDate;\n\t\t\t\t\tCronJobs.updateOne({_id: res._id}, {$set: {running: false, next_run: nextDate}});\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\tCronJobs.deleteOne({_id: res._id});\n\t\t\t\t}\n\n\t\t\t\tCronJobHistories.updateOne({_id: cronHistory._id}, {$set: {\n\t\t\t\t\tserver_restart: false,\n\t\t\t\t\tpassed: cronHistory.passed,\n\t\t\t\t\terror: cronHistory.error,\n\t\t\t\t\tdate_end: new Date(),\n\t\t\t\t\tdate_next: cronHistory.date_next\n\t\t\t\t}});\n\t\t\t}\n\t\t}, () => {});\n\t}\n}"]}
|
|
1
|
+
{"version":3,"sources":["../../src/managers/cron.manager.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,0EAA8D;AAE9D,qCAA8C;AAG9C,0FAA8E;AAC9E,2DAA8D;AAG9D;IAMC,qBAAY,UAAU;QAFd,UAAK,GAAmB,EAAE,CAAC;QAGlC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,qBAAc,EAAE,CAAC;QAEzC,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAEY,gCAAU,GAAvB;;;;;;wBACC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;4BACnD,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;4BACvC,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;4BAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;yBACzB;wBAED,qBAAM,IAAI,OAAO,CAAC,UAAA,OAAO,IAAI,OAAA,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,EAAzB,CAAyB,CAAC,EAAA;;wBAAvD,SAAuD,CAAC;wBAExD,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;4BACnD,8BAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAA,GAAG;gCACvB,KAAI,CAAC,KAAK,GAAG,GAAG,CAAC;gCAEjB,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,GAAG;oCACrB,KAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gCACtB,CAAC,CAAC,CAAC;4BACJ,CAAC,CAAC,CAAC;4BAEH,IAAI,CAAC,YAAY,GAAG,8BAAQ,CAAC,eAAe,CAAC,EAAE,EAAE,EAAC,YAAY,EAAE,cAAc,EAAC,CAAC,CAAC;4BAEjF,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAO,GAAuC;;;oCAC5E,IAAI,GAAG,CAAC,aAAa,KAAK,QAAQ,EAAE;wCACnC,IAAI,GAAG,CAAC,YAAY,EAAE;4CACrB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,KAAU,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAArC,CAAqC,CAAC,EAAE;gDACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;6CAClC;4CAED,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;yCAClC;qCACD;yCACI,IAAI,GAAG,CAAC,aAAa,KAAK,SAAS,IAAI,GAAG,CAAC,aAAa,KAAK,QAAQ,EAAE;wCAC3E,IAAI,GAAG,CAAC,YAAY,EAAE;4CACjB,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,KAAU,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAArC,CAAqC,CAAC,CAAC,CAAC,CAAC,CAAC;4CAC9E,IAAI,MAAM,EAAE;gDACX,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,EAAL,CAAK,CAAC,CAAC,OAAO,CAAM,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;gDAExG,IAAI,MAAM,CAAC,IAAI,KAAK,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE;oDAC1C,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oDAChC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;iDAClC;qDACI,IAAI,MAAM,CAAC,WAAW,KAAK,GAAG,CAAC,YAAY,CAAC,WAAW;oDAC3D,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC,YAAY,CAAC,QAAQ,EAC5C;oDACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;iDACrC;6CACD;iDACI;gDACJ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gDAClC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;6CAClC;yCACD;6CACI;4CACJ,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,KAAU,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAArC,CAAqC,CAAC,EAAE;gDAC5D,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,KAAU,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAArC,CAAqC,CAAC,CAAC,CAAC,CAAC,CAAC;gDAC3E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gDAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,EAAL,CAAK,CAAC,CAAC,OAAO,CAAM,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;6CACtF;yCACD;qCACD;yCACI,IAAI,GAAG,CAAC,aAAa,KAAK,QAAQ,EAAE;wCACxC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,KAAW,GAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAvC,CAAuC,CAAC,EAAE;4CAC9D,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,KAAU,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAArC,CAAqC,CAAC,CAAC,CAAC,CAAC,CAAC;4CAC3E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4CAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,EAAL,CAAK,CAAC,CAAC,OAAO,CAAM,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;yCACtF;qCACD;;;iCACD,CAAC;iCACD,EAAE,CAAC,OAAO,EAAE,UAAC,GAAG;gCAChB,KAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;gCACvC,KAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gCAC1B,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gCACzB,KAAI,CAAC,UAAU,EAAE,CAAC;4BACnB,CAAC,CAAC;iCACD,EAAE,CAAC,KAAK,EAAE;gCACV,KAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;gCACvC,KAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gCAC1B,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gCACzB,KAAI,CAAC,UAAU,EAAE,CAAC;4BACnB,CAAC,CAAC;iCACD,EAAE,CAAC,OAAO,EAAE;gCACZ,KAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;gCACvC,KAAI,CAAC,YAAY,GAAG,IAAI,CAAC;gCACzB,KAAI,CAAC,UAAU,EAAE,CAAC;4BACnB,CAAC,CAAC,CAAC;yBACH;;;;;KACD;IAEO,sCAAgB,GAAxB,UAAyB,IAAkB;QAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEO,0CAAoB,GAA5B,UAA6B,SAAiB;QAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAEO,gCAAU,GAAlB,UAAmB,IAAkB;QAArC,iBAmBC;QAlBA,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YACjC,IAAI,CAAC,YAAY,CAAC,GAAG,CACpB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,EAChB,cAAM,OAAA,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAArB,CAAqB,EAC3B,IAAI,EACJ,IAAI,EACJ,IAAI,CAAC,QAAQ,EACb,IAAI,EACJ,KAAK,CACL,CAAC;YAEF,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAE9E,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE;gBACnG,8BAAQ,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAE,EAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,IAAI,IAAI,EAAC,EAAC,CAAC,CAAC;aAC1F;SACD;IACF,CAAC;IAEO,mCAAa,GAArB,UAAsB,IAAkB;QAAxC,iBAUC;QATA,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,cAAM,OAAA,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAArB,CAAqB,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE9G,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;YAE9E,IAAI,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE;gBACnF,8BAAQ,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAE,EAAC,QAAQ,EAAE,QAAQ,EAAC,EAAC,CAAC,CAAC;aAClE;SACD;IACF,CAAC;IAEO,mCAAa,GAArB,UAAsB,SAAiB;QACtC,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE;YACzC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACpC;IACF,CAAC;IAEO,kCAAY,GAApB,UAAqB,IAAkB;QACtC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnC;IACF,CAAC;IAEO,iCAAW,GAAnB,UAAoB,IAAkB;QACrC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAClC;IACF,CAAC;IAEO,qCAAe,GAAvB;QACC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,gCAAU,GAAlB,UAAmB,IAAkB;QAArC,iBA6EC;QA5EA,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QAErB,8BAAQ,CAAC,gBAAgB,CAAC;YACzB,IAAI,EAAE;gBACL,EAAC,GAAG,EAAE,IAAI,CAAC,GAAG,EAAC;gBACf,EAAC,OAAO,EAAE,KAAK,EAAC;gBAChB;oBACC,GAAG,EAAE;wBACJ,EAAC,QAAQ,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,EAAC;wBAC5B,EAAC,QAAQ,EAAE,IAAI,EAAC;wBAChB,EAAC,QAAQ,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,EAAC;qBACvB;iBACD;aACD;SACD,EAAE,EAAC,IAAI,EAAE,EAAC,OAAO,EAAE,IAAI,EAAC,EAAC,CAAC,CAAC,IAAI,CAAC,UAAM,GAAG;;;;;6BACrC,GAAG,EAAH,yBAAG;wBACF,WAAW,GAAwB;4BACtC,GAAG,EAAE,IAAA,iCAAiB,GAAE;4BACxB,IAAI,EAAE,GAAG,CAAC,IAAI;4BACd,UAAU,EAAE,GAAG,CAAC,MAAM;4BACtB,WAAW,EAAE,GAAG,CAAC,WAAW;4BAC5B,WAAW,EAAE,GAAG,CAAC,UAAU;4BAC3B,UAAU,EAAE,GAAG,CAAC,GAAG;4BACnB,cAAc,EAAE,IAAI;4BACpB,MAAM,EAAE,IAAI;4BACZ,KAAK,EAAE,EAAE;4BACT,cAAc,EAAE,GAAG,CAAC,QAAQ;4BAC5B,UAAU,EAAE,IAAI,IAAI,EAAE;4BACtB,QAAQ,EAAE,IAAI;4BACd,SAAS,EAAE,IAAI;yBACf,CAAC;wBAEF,qBAAM,8CAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAA;;wBAA1C,SAA0C,CAAC;;;;6BAGtC,GAAG,CAAC,eAAe,EAAnB,wBAAmB;wBACtB,qBAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,eAAe,CAAC,EAAA;;wBAA7F,SAA6F,CAAC;;4BAI9F,qBAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,EAAA;;wBAAxE,SAAwE,CAAC;;;6BAGtE,GAAG,CAAC,eAAe,EAAnB,yBAAmB;6BAClB,GAAG,CAAC,oBAAoB,EAAxB,wBAAwB;wBAC3B,qBAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,oBAAoB,CAAC,EAAA;;wBAAvG,SAAuG,CAAC;;4BAGxG,qBAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,eAAe,CAAC,EAAA;;wBAA7E,SAA6E,CAAC;;;;;wBAKhF,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,KAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;wBACpE,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;wBACjD,WAAW,CAAC,MAAM,GAAG,KAAK,CAAC;;;wBAG5B,IAAI,GAAG,CAAC,MAAM,EAAE;4BACX,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;4BAC7E,WAAW,CAAC,SAAS,GAAG,QAAQ,CAAC;4BACjC,8BAAQ,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAE,EAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAC,EAAC,CAAC,CAAC;yBACjF;6BACI;4BACJ,8BAAQ,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAC,CAAC,CAAC;yBACnC;wBAED,8CAAgB,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,WAAW,CAAC,GAAG,EAAC,EAAE,EAAC,IAAI,EAAE;gCACzD,cAAc,EAAE,KAAK;gCACrB,MAAM,EAAE,WAAW,CAAC,MAAM;gCAC1B,KAAK,EAAE,WAAW,CAAC,KAAK;gCACxB,QAAQ,EAAE,IAAI,IAAI,EAAE;gCACpB,SAAS,EAAE,WAAW,CAAC,SAAS;6BAChC,EAAC,CAAC,CAAC;;;;;aAEL,EAAE,cAAO,CAAC,CAAC,CAAC;IACd,CAAC;IACF,kBAAC;AAAD,CAjPA,AAiPC,IAAA;AAjPY,kCAAW","file":"cron.manager.js","sourcesContent":["import { CronJobModel } from '../models/cron-job.model';\nimport { CronJobs } from '../collections/cron-job.collection';\nimport ResolveIOMainServer from '../server-app';\nimport { CronJobManager } from '../cron/cron';\nimport * as moment from 'moment';\nimport { ChangeStream, ChangeStreamDocument } from 'mongodb';\nimport { CronJobHistories } from '../collections/cron-job-history.collection';\nimport { objectIdHexString } from '../managers/mongo.manager';\nimport { CronJobHistoryModel } from '../models/cron-job-history.model';\n\nexport class CronManager {\n\tprivate _cronManager: CronJobManager;\n\tprivate _mainServer: ResolveIOMainServer;\n\tprivate _watchCrons$: ChangeStream;\n\tprivate _jobs: CronJobModel[] = [];\n\n\tconstructor(mainServer) {\n\t\tthis._mainServer = mainServer;\n\t\tthis._cronManager = new CronJobManager();\n\n\t\tthis.watchCrons();\n\t}\n\n\tpublic async watchCrons() {\n\t\tif (this._watchCrons$ && !this._watchCrons$.closed) {\n\t\t\tthis._watchCrons$.removeAllListeners();\n\t\t\tthis._watchCrons$.close();\n\t\t\tthis._watchCrons$ = null;\n\t\t}\n\t\n\t\tawait new Promise(resolve => setTimeout(resolve, 1000));\n\t\n\t\tif (!this._watchCrons$ || this._watchCrons$.closed) {\t\t\t\n\t\t\tCronJobs.find().then(res => {\n\t\t\t\tthis._jobs = res;\n\n\t\t\t\tthis._jobs.forEach(job => {\n\t\t\t\t\tthis.addCronJob(job);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tthis._watchCrons$ = CronJobs.watchCollection([], {fullDocument: 'updateLookup'});\n\n\t\t\tthis._watchCrons$.on('change', async (doc: ChangeStreamDocument<CronJobModel>) => {\n\t\t\t\tif (doc.operationType === 'insert') {\n\t\t\t\t\tif (doc.fullDocument) {\n\t\t\t\t\t\tif (!this._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tthis._jobs.push(doc.fullDocument);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (doc.operationType === 'replace' || doc.operationType === 'update') {\n\t\t\t\t\tif (doc.fullDocument) {\n\t\t\t\t\t\tlet oldDoc = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\tif (oldDoc) {\n\t\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1, doc.fullDocument);\n\n\t\t\t\t\t\t\tif (oldDoc.name !== doc.fullDocument.name) {\n\t\t\t\t\t\t\t\tthis.removeCronJob(oldDoc.name);\n\t\t\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (oldDoc.time_to_run !== doc.fullDocument.time_to_run || \n\t\t\t\t\t\t\t\toldDoc.timezone !== doc.fullDocument.timezone\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tthis.updateCronJob(doc.fullDocument);\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._jobs.push(doc.fullDocument);\n\t\t\t\t\t\t\tthis.addCronJob(doc.fullDocument);\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._jobs.some(a => a._id === <any>doc.documentKey['_id'])) {\n\t\t\t\t\t\t\tlet job = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\t\tthis.removeCronJob(job.name);\n\t\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1);\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 === 'delete') {\n\t\t\t\t\tif (this._jobs.some(a => a._id === (<any>doc).documentKey['_id'])) {\n\t\t\t\t\t\tlet job = this._jobs.filter(a => a._id === <any>doc.documentKey['_id'])[0];\n\t\t\t\t\t\tthis.removeCronJob(job.name);\n\t\t\t\t\t\tthis._jobs.splice(this._jobs.map(a => a._id).indexOf(<any>doc.documentKey['_id']), 1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.on('error', (err) => {\n\t\t\t\tthis._watchCrons$.removeAllListeners();\n\t\t\t\tthis._watchCrons$.close();\n\t\t\t\tthis._watchCrons$ = null;\n\t\t\t\tthis.watchCrons();\n\t\t\t})\n\t\t\t.on('end', () => {\n\t\t\t\tthis._watchCrons$.removeAllListeners();\n\t\t\t\tthis._watchCrons$.close();\n\t\t\t\tthis._watchCrons$ = null;\n\t\t\t\tthis.watchCrons();\n\t\t\t})\n\t\t\t.on('close', () => {\n\t\t\t\tthis._watchCrons$.removeAllListeners();\n\t\t\t\tthis._watchCrons$ = null;\n\t\t\t\tthis.watchCrons();\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate doesCronJobExist(cron: CronJobModel) {\n\t\treturn this._cronManager.exists(cron.name);\n\t}\n\n\tprivate doesCronJobNameExist(cron_name: string) {\n\t\treturn this._cronManager.exists(cron_name);\n\t}\n\n\tprivate addCronJob(cron: CronJobModel) {\n\t\tif (!this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.add(\n\t\t\t\tcron.name,\n\t\t\t\tcron.time_to_run,\n\t\t\t\t() => this.runCronJob(cron),\n\t\t\t\tnull,\n\t\t\t\ttrue,\n\t\t\t\tcron.timezone,\n\t\t\t\tnull, \n\t\t\t\tfalse\n\t\t\t);\n\n\t\t\tlet nextDate = new Date(this._cronManager.getJob(cron.name).nextDate()['ts']);\n\n\t\t\tif (cron.running || (nextDate && !cron.next_run || nextDate.getTime() !== cron.next_run.getTime())) {\n\t\t\t\tCronJobs.updateOne({_id: cron._id}, {$set: {running: false, next_run: nextDate || null}});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate updateCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.update(cron.name, cron.time_to_run, () => this.runCronJob(cron), null, true, cron.timezone);\n\n\t\t\tlet nextDate = new Date(this._cronManager.getJob(cron.name).nextDate()['ts']);\n\n\t\t\tif (nextDate && (!cron.next_run || nextDate.getTime() !== cron.next_run.getTime())) {\n\t\t\t\tCronJobs.updateOne({_id: cron._id}, {$set: {next_run: nextDate}});\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate removeCronJob(cron_name: string) {\n\t\tif (this.doesCronJobNameExist(cron_name)) {\n\t\t\tthis._cronManager.delete(cron_name);\n\t\t}\n\t}\n\n\tprivate startCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.start(cron.name);\n\t\t}\n\t}\n\n\tprivate stopCronJob(cron: CronJobModel) {\n\t\tif (this.doesCronJobExist(cron)) {\n\t\t\tthis._cronManager.stop(cron.name);\n\t\t}\n\t}\n\n\tprivate stopAllCronJobs() {\n\t\tthis._cronManager.stopAll();\n\t}\n\n\tprivate runCronJob(cron: CronJobModel) {\n\t\tlet now = new Date();\n\n\t\tCronJobs.findOneAndUpdate({\n\t\t\t$and: [\n\t\t\t\t{_id: cron._id},\n\t\t\t\t{running: false},\n\t\t\t\t{\n\t\t\t\t\t$or: [\n\t\t\t\t\t\t{next_run: {$exists: false}},\n\t\t\t\t\t\t{next_run: null},\n\t\t\t\t\t\t{next_run: {$lte: now}}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}, {$set: {running: true}}).then(async res => {\n\t\t\tif (res) {\n\t\t\t\tlet cronHistory: CronJobHistoryModel = {\n\t\t\t\t\t_id: objectIdHexString(),\n\t\t\t\t\tname: res.name,\n\t\t\t\t\treoccuring: res.repeat,\n\t\t\t\t\ttime_to_run: res.time_to_run,\n\t\t\t\t\tmethod_name: res.method_run,\n\t\t\t\t\tid_cronjob: res._id,\n\t\t\t\t\tserver_restart: true,\n\t\t\t\t\tpassed: true,\n\t\t\t\t\terror: '',\n\t\t\t\t\tdate_scheduled: res.next_run,\n\t\t\t\t\tdate_start: new Date(),\n\t\t\t\t\tdate_end: null,\n\t\t\t\t\tdate_next: null\n\t\t\t\t};\n\t\t\t\t\n\t\t\t\tawait CronJobHistories.create(cronHistory);\n\n\t\t\t\ttry {\n\t\t\t\t\tif (res.method_run_data) {\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run, res.method_run_data);\t\n\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_run);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (res.method_complete) {\n\t\t\t\t\t\tif (res.method_complete_data) {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete, res.method_complete_data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tawait this._mainServer.getMethodManager().callMethodCron(res.method_complete);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcatch (err) {\n\t\t\t\t\tconsole.log(new Date(), 'Cron Error', JSON.stringify(err, null, 2));\n\t\t\t\t\tcronHistory.error = JSON.stringify(err, null, 2);\n\t\t\t\t\tcronHistory.passed = false;\n\t\t\t\t}\n\n\t\t\t\tif (res.repeat) {\n\t\t\t\t\tlet nextDate = new Date(this._cronManager.getJob(res.name).nextDate()['ts']);\n\t\t\t\t\tcronHistory.date_next = nextDate;\n\t\t\t\t\tCronJobs.updateOne({_id: res._id}, {$set: {running: false, next_run: nextDate}});\n\t\t\t\t} \n\t\t\t\telse {\n\t\t\t\t\tCronJobs.deleteOne({_id: res._id});\n\t\t\t\t}\n\n\t\t\t\tCronJobHistories.updateOne({_id: cronHistory._id}, {$set: {\n\t\t\t\t\tserver_restart: false,\n\t\t\t\t\tpassed: cronHistory.passed,\n\t\t\t\t\terror: cronHistory.error,\n\t\t\t\t\tdate_end: new Date(),\n\t\t\t\t\tdate_next: cronHistory.date_next\n\t\t\t\t}});\n\t\t\t}\n\t\t}, () => {});\n\t}\n}"]}
|
|
@@ -548,6 +548,14 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
548
548
|
stream.on('end', function (ev) {
|
|
549
549
|
monitor.finish();
|
|
550
550
|
return ev;
|
|
551
|
+
})
|
|
552
|
+
.on('error', function (ev) {
|
|
553
|
+
monitor.finish();
|
|
554
|
+
return ev;
|
|
555
|
+
})
|
|
556
|
+
.on('close', function (ev) {
|
|
557
|
+
monitor.finish();
|
|
558
|
+
return ev;
|
|
551
559
|
});
|
|
552
560
|
return stream;
|
|
553
561
|
};
|
|
@@ -889,6 +897,7 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
889
897
|
var cursor = index_1.ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).find(filter, options);
|
|
890
898
|
cursor.on('close', function (ev) {
|
|
891
899
|
monitor.finish();
|
|
900
|
+
cursor.removeAllListeners();
|
|
892
901
|
return ev;
|
|
893
902
|
});
|
|
894
903
|
return cursor;
|
|
@@ -900,6 +909,14 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
900
909
|
stream.on('end', function (ev) {
|
|
901
910
|
monitor.finish();
|
|
902
911
|
return ev;
|
|
912
|
+
})
|
|
913
|
+
.on('error', function (ev) {
|
|
914
|
+
monitor.finish();
|
|
915
|
+
return ev;
|
|
916
|
+
})
|
|
917
|
+
.on('close', function (ev) {
|
|
918
|
+
monitor.finish();
|
|
919
|
+
return ev;
|
|
903
920
|
});
|
|
904
921
|
return stream;
|
|
905
922
|
};
|
|
@@ -1931,23 +1948,13 @@ var MongoManagerCollection = /** @class */ (function () {
|
|
|
1931
1948
|
}); });
|
|
1932
1949
|
};
|
|
1933
1950
|
MongoManagerCollection.prototype.watchCollection = function (pipeline, options) {
|
|
1934
|
-
var _this = this;
|
|
1935
1951
|
if (pipeline === void 0) { pipeline = []; }
|
|
1936
1952
|
var stream = index_1.ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).watch(pipeline, options);
|
|
1937
|
-
stream.on('change', function (evData) {
|
|
1938
|
-
index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(_this.collectionName);
|
|
1939
|
-
return evData;
|
|
1940
|
-
});
|
|
1941
1953
|
return stream;
|
|
1942
1954
|
};
|
|
1943
1955
|
MongoManagerCollection.prototype.watchCollectionWithAggregate = function (pipeline, options) {
|
|
1944
|
-
var _this = this;
|
|
1945
1956
|
if (pipeline === void 0) { pipeline = []; }
|
|
1946
1957
|
var stream = index_1.ResolveIOServer.getMainDB().collection(this.collectionName, this.collectionOptions).watch(pipeline, options);
|
|
1947
|
-
stream.on('change', function (evData) {
|
|
1948
|
-
index_1.ResolveIOServer.getMongoManager().invalidateQueryCache(_this.collectionName);
|
|
1949
|
-
return evData;
|
|
1950
|
-
});
|
|
1951
1958
|
return stream;
|
|
1952
1959
|
};
|
|
1953
1960
|
var _a;
|