agenda-ts 1.6.9-beta.0
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/LICENSE +21 -0
- package/README.md +353 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/job/compute-next-run-at.d.ts +3 -0
- package/dist/job/compute-next-run-at.js +114 -0
- package/dist/job/compute-next-run-at.js.map +1 -0
- package/dist/job/disable.d.ts +3 -0
- package/dist/job/disable.js +9 -0
- package/dist/job/disable.js.map +1 -0
- package/dist/job/enable.d.ts +3 -0
- package/dist/job/enable.js +9 -0
- package/dist/job/enable.js.map +1 -0
- package/dist/job/fail.d.ts +3 -0
- package/dist/job/fail.js +28 -0
- package/dist/job/fail.js.map +1 -0
- package/dist/job/fetch-status.d.ts +10 -0
- package/dist/job/fetch-status.js +23 -0
- package/dist/job/fetch-status.js.map +1 -0
- package/dist/job/index.d.ts +89 -0
- package/dist/job/index.js +109 -0
- package/dist/job/index.js.map +1 -0
- package/dist/job/is-expired.d.ts +2 -0
- package/dist/job/is-expired.js +16 -0
- package/dist/job/is-expired.js.map +1 -0
- package/dist/job/is-running.d.ts +2 -0
- package/dist/job/is-running.js +21 -0
- package/dist/job/is-running.js.map +1 -0
- package/dist/job/priority.d.ts +3 -0
- package/dist/job/priority.js +10 -0
- package/dist/job/priority.js.map +1 -0
- package/dist/job/remove.d.ts +2 -0
- package/dist/job/remove.js +8 -0
- package/dist/job/remove.js.map +1 -0
- package/dist/job/repeat-at.d.ts +3 -0
- package/dist/job/repeat-at.js +9 -0
- package/dist/job/repeat-at.js.map +1 -0
- package/dist/job/repeat-every.d.ts +10 -0
- package/dist/job/repeat-every.js +21 -0
- package/dist/job/repeat-every.js.map +1 -0
- package/dist/job/run.d.ts +3 -0
- package/dist/job/run.js +92 -0
- package/dist/job/run.js.map +1 -0
- package/dist/job/save.d.ts +3 -0
- package/dist/job/save.js +8 -0
- package/dist/job/save.js.map +1 -0
- package/dist/job/schedule.d.ts +3 -0
- package/dist/job/schedule.js +12 -0
- package/dist/job/schedule.js.map +1 -0
- package/dist/job/set-shouldsaveresult.d.ts +3 -0
- package/dist/job/set-shouldsaveresult.js +9 -0
- package/dist/job/set-shouldsaveresult.js.map +1 -0
- package/dist/job/to-json.d.ts +3 -0
- package/dist/job/to-json.js +21 -0
- package/dist/job/to-json.js.map +1 -0
- package/dist/job/touch.d.ts +3 -0
- package/dist/job/touch.js +14 -0
- package/dist/job/touch.js.map +1 -0
- package/dist/job/unique.d.ts +6 -0
- package/dist/job/unique.js +10 -0
- package/dist/job/unique.js.map +1 -0
- package/dist/pulse/cancel.d.ts +3 -0
- package/dist/pulse/cancel.js +21 -0
- package/dist/pulse/cancel.js.map +1 -0
- package/dist/pulse/close.d.ts +5 -0
- package/dist/pulse/close.js +25 -0
- package/dist/pulse/close.js.map +1 -0
- package/dist/pulse/count-jobs.d.ts +5 -0
- package/dist/pulse/count-jobs.js +12 -0
- package/dist/pulse/count-jobs.js.map +1 -0
- package/dist/pulse/create.d.ts +3 -0
- package/dist/pulse/create.js +31 -0
- package/dist/pulse/create.js.map +1 -0
- package/dist/pulse/database.d.ts +4 -0
- package/dist/pulse/database.js +33 -0
- package/dist/pulse/database.js.map +1 -0
- package/dist/pulse/db-init.d.ts +3 -0
- package/dist/pulse/db-init.js +34 -0
- package/dist/pulse/db-init.js.map +1 -0
- package/dist/pulse/default-concurrency.d.ts +3 -0
- package/dist/pulse/default-concurrency.js +13 -0
- package/dist/pulse/default-concurrency.js.map +1 -0
- package/dist/pulse/default-lock-lifetime.d.ts +3 -0
- package/dist/pulse/default-lock-lifetime.js +13 -0
- package/dist/pulse/default-lock-lifetime.js.map +1 -0
- package/dist/pulse/default-lock-limit.d.ts +3 -0
- package/dist/pulse/default-lock-limit.js +13 -0
- package/dist/pulse/default-lock-limit.js.map +1 -0
- package/dist/pulse/define.d.ts +23 -0
- package/dist/pulse/define.js +34 -0
- package/dist/pulse/define.js.map +1 -0
- package/dist/pulse/disable.d.ts +3 -0
- package/dist/pulse/disable.js +22 -0
- package/dist/pulse/disable.js.map +1 -0
- package/dist/pulse/drain.d.ts +2 -0
- package/dist/pulse/drain.js +26 -0
- package/dist/pulse/drain.js.map +1 -0
- package/dist/pulse/enable.d.ts +3 -0
- package/dist/pulse/enable.js +22 -0
- package/dist/pulse/enable.js.map +1 -0
- package/dist/pulse/every.d.ts +4 -0
- package/dist/pulse/every.js +37 -0
- package/dist/pulse/every.js.map +1 -0
- package/dist/pulse/find-and-lock-next-job.d.ts +3 -0
- package/dist/pulse/find-and-lock-next-job.js +43 -0
- package/dist/pulse/find-and-lock-next-job.js.map +1 -0
- package/dist/pulse/has-mongo-protocol.d.ts +1 -0
- package/dist/pulse/has-mongo-protocol.js +8 -0
- package/dist/pulse/has-mongo-protocol.js.map +1 -0
- package/dist/pulse/index.d.ts +115 -0
- package/dist/pulse/index.js +208 -0
- package/dist/pulse/index.js.map +1 -0
- package/dist/pulse/job-processing-queue.d.ts +11 -0
- package/dist/pulse/job-processing-queue.js +51 -0
- package/dist/pulse/job-processing-queue.js.map +1 -0
- package/dist/pulse/jobs.d.ts +6 -0
- package/dist/pulse/jobs.js +14 -0
- package/dist/pulse/jobs.js.map +1 -0
- package/dist/pulse/lock-limit.d.ts +3 -0
- package/dist/pulse/lock-limit.js +13 -0
- package/dist/pulse/lock-limit.js.map +1 -0
- package/dist/pulse/max-concurrency.d.ts +3 -0
- package/dist/pulse/max-concurrency.js +13 -0
- package/dist/pulse/max-concurrency.js.map +1 -0
- package/dist/pulse/mongo.d.ts +4 -0
- package/dist/pulse/mongo.js +10 -0
- package/dist/pulse/mongo.js.map +1 -0
- package/dist/pulse/name.d.ts +3 -0
- package/dist/pulse/name.js +13 -0
- package/dist/pulse/name.js.map +1 -0
- package/dist/pulse/now.d.ts +3 -0
- package/dist/pulse/now.js +21 -0
- package/dist/pulse/now.js.map +1 -0
- package/dist/pulse/process-every.d.ts +3 -0
- package/dist/pulse/process-every.js +14 -0
- package/dist/pulse/process-every.js.map +1 -0
- package/dist/pulse/purge.d.ts +2 -0
- package/dist/pulse/purge.js +13 -0
- package/dist/pulse/purge.js.map +1 -0
- package/dist/pulse/resume-on-restart.d.ts +3 -0
- package/dist/pulse/resume-on-restart.js +39 -0
- package/dist/pulse/resume-on-restart.js.map +1 -0
- package/dist/pulse/save-job.d.ts +4 -0
- package/dist/pulse/save-job.js +104 -0
- package/dist/pulse/save-job.js.map +1 -0
- package/dist/pulse/schedule.d.ts +4 -0
- package/dist/pulse/schedule.js +36 -0
- package/dist/pulse/schedule.js.map +1 -0
- package/dist/pulse/sort.d.ts +3 -0
- package/dist/pulse/sort.js +13 -0
- package/dist/pulse/sort.js.map +1 -0
- package/dist/pulse/start.d.ts +2 -0
- package/dist/pulse/start.js +19 -0
- package/dist/pulse/start.js.map +1 -0
- package/dist/pulse/stop.d.ts +2 -0
- package/dist/pulse/stop.js +38 -0
- package/dist/pulse/stop.js.map +1 -0
- package/dist/utils/create-job.d.ts +3 -0
- package/dist/utils/create-job.js +10 -0
- package/dist/utils/create-job.js.map +1 -0
- package/dist/utils/error.d.ts +12 -0
- package/dist/utils/error.js +34 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/parse-priority.d.ts +1 -0
- package/dist/utils/parse-priority.js +31 -0
- package/dist/utils/parse-priority.js.map +1 -0
- package/dist/utils/process-jobs.d.ts +3 -0
- package/dist/utils/process-jobs.js +203 -0
- package/dist/utils/process-jobs.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.unique = void 0;
|
|
4
|
+
const unique = function (filter, options) {
|
|
5
|
+
this.attrs.uniqueQuery = filter;
|
|
6
|
+
this.attrs.uniqueOpts = options;
|
|
7
|
+
return this;
|
|
8
|
+
};
|
|
9
|
+
exports.unique = unique;
|
|
10
|
+
//# sourceMappingURL=unique.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unique.js","sourceRoot":"","sources":["../../src/job/unique.ts"],"names":[],"mappings":";;;AAcO,MAAM,MAAM,GAAiB,UAAqB,MAAM,EAAE,OAAQ;IACvE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC;IAChC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC;IAChC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAJW,QAAA,MAAM,UAIjB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cancel = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const debug = (0, debug_1.default)('pulse:cancel');
|
|
7
|
+
const cancel = async function (query) {
|
|
8
|
+
debug('attempting to cancel all Pulse jobs', query);
|
|
9
|
+
try {
|
|
10
|
+
const { deletedCount } = await this._collection.deleteMany(query);
|
|
11
|
+
this.emit('cancel', deletedCount);
|
|
12
|
+
debug('%s jobs cancelled', deletedCount);
|
|
13
|
+
return deletedCount;
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
debug('error trying to delete jobs from MongoDB');
|
|
17
|
+
throw error;
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
exports.cancel = cancel;
|
|
21
|
+
//# sourceMappingURL=cancel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cancel.js","sourceRoot":"","sources":["../../src/pulse/cancel.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAInC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,cAAc,CAAC,CAAC;AAWtC,MAAM,MAAM,GAAiB,KAAK,WAAwB,KAAK;IACpE,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAElC,KAAK,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;QACzC,OAAO,YAAY,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAClD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAZW,QAAA,MAAM,UAYjB"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.close = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const debug = (0, debug_1.default)('pulse:close');
|
|
7
|
+
const close = async function (option) {
|
|
8
|
+
debug('close db connection for this pulse instance');
|
|
9
|
+
const closeOptions = {
|
|
10
|
+
force: false,
|
|
11
|
+
...option,
|
|
12
|
+
};
|
|
13
|
+
try {
|
|
14
|
+
if (this._db) {
|
|
15
|
+
await this._db.close(closeOptions.force);
|
|
16
|
+
}
|
|
17
|
+
return this;
|
|
18
|
+
}
|
|
19
|
+
catch (error) {
|
|
20
|
+
debug('error trying to close db connection to');
|
|
21
|
+
throw error;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
exports.close = close;
|
|
25
|
+
//# sourceMappingURL=close.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"close.js","sourceRoot":"","sources":["../../src/pulse/close.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAGnC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,aAAa,CAAC,CAAC;AAgBrC,MAAM,KAAK,GAAgB,KAAK,WAAwB,MAAO;IACpE,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG;QACnB,KAAK,EAAE,KAAK;QACZ,GAAG,MAAM;KACV,CAAC;IACF,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAChD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,KAAK,SAgBhB"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { CountDocumentsOptions, Filter } from 'mongodb';
|
|
2
|
+
import { Pulse } from '.';
|
|
3
|
+
export declare const countJobsRepo: (this: Pulse, query?: {}, options?: {}) => Promise<number>;
|
|
4
|
+
export type CountJobsMethod = (query?: Filter<any>, options?: CountDocumentsOptions | undefined) => Promise<number>;
|
|
5
|
+
export declare const countJobs: (this: Pulse, query?: {}, options?: {}) => Promise<number>;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.countJobs = exports.countJobsRepo = void 0;
|
|
4
|
+
const countJobsRepo = async function (query = {}, options = {}) {
|
|
5
|
+
return await this._collection.countDocuments(query, options);
|
|
6
|
+
};
|
|
7
|
+
exports.countJobsRepo = countJobsRepo;
|
|
8
|
+
const countJobs = async function (query = {}, options = {}) {
|
|
9
|
+
return await this._collection.countDocuments(query, options);
|
|
10
|
+
};
|
|
11
|
+
exports.countJobs = countJobs;
|
|
12
|
+
//# sourceMappingURL=count-jobs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"count-jobs.js","sourceRoot":"","sources":["../../src/pulse/count-jobs.ts"],"names":[],"mappings":";;;AAGO,MAAM,aAAa,GAAG,KAAK,WAAwB,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE;IAChF,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC,CAAC;AAFW,QAAA,aAAa,iBAExB;AAWK,MAAM,SAAS,GAAG,KAAK,WAAwB,KAAK,GAAG,EAAE,EAAE,OAAO,GAAG,EAAE;IAC5E,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC/D,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.create = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const job_1 = require("../job");
|
|
7
|
+
const debug = (0, debug_1.default)('pulse:create');
|
|
8
|
+
const create = function (name, data) {
|
|
9
|
+
debug('Pulse.create(%s, [Object])', name);
|
|
10
|
+
const priority = this._definitions[name] ? this._definitions[name].priority : 0;
|
|
11
|
+
const shouldSaveResult = this._definitions[name] ? this._definitions[name].shouldSaveResult || false : false;
|
|
12
|
+
const attempts = this._definitions[name] ? this._definitions[name].attempts || 0 : 0;
|
|
13
|
+
const backoff = attempts
|
|
14
|
+
? this._definitions[name]
|
|
15
|
+
? this._definitions[name].backoff || { type: 'exponential', delay: 1000 }
|
|
16
|
+
: { type: 'exponential', delay: 1000 }
|
|
17
|
+
: undefined;
|
|
18
|
+
const job = new job_1.Job({
|
|
19
|
+
name,
|
|
20
|
+
data,
|
|
21
|
+
type: 'normal',
|
|
22
|
+
priority,
|
|
23
|
+
shouldSaveResult,
|
|
24
|
+
attempts,
|
|
25
|
+
backoff,
|
|
26
|
+
pulse: this,
|
|
27
|
+
});
|
|
28
|
+
return job;
|
|
29
|
+
};
|
|
30
|
+
exports.create = create;
|
|
31
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/pulse/create.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAEnC,gCAAgD;AAEhD,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,cAAc,CAAC,CAAC;AAUtC,MAAM,MAAM,GAAiB,UAAuB,IAAI,EAAE,IAAI;IACnE,KAAK,CAAC,4BAA4B,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAChF,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,gBAAgB,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7G,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,MAAM,OAAO,GAAG,QAAQ;QACtB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACvB,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE;YACzE,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE;QACxC,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,GAAG,GAAG,IAAI,SAAG,CAAC;QAClB,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,QAAQ;QACd,QAAQ;QACR,gBAAgB;QAChB,QAAQ;QACR,OAAO;QACP,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAvBW,QAAA,MAAM,UAuBjB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { AnyError, Collection, MongoClientOptions } from 'mongodb';
|
|
2
|
+
import { Pulse } from '.';
|
|
3
|
+
export type DatabaseMethod = (this: Pulse, url: string, collection?: string, options?: MongoClientOptions, cb?: (error: AnyError | undefined, collection: Collection<any> | null) => void) => Promise<Pulse | void>;
|
|
4
|
+
export declare const database: DatabaseMethod;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.database = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const mongodb_1 = require("mongodb");
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
const has_mongo_protocol_1 = require("./has-mongo-protocol");
|
|
9
|
+
const debug = (0, debug_1.default)('pulse:database');
|
|
10
|
+
const database = async function (url, collection, options = {}, cb) {
|
|
11
|
+
if (!(0, has_mongo_protocol_1.hasMongoProtocol)(url)) {
|
|
12
|
+
url = 'mongodb://' + url;
|
|
13
|
+
}
|
|
14
|
+
collection = collection || 'pulseJobs';
|
|
15
|
+
const client = await mongodb_1.MongoClient.connect(url, options).catch((error) => {
|
|
16
|
+
debug('error connecting to MongoDB using collection: [%s]', collection);
|
|
17
|
+
if (cb) {
|
|
18
|
+
cb(error, null);
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
throw new utils_1.BaseError(error);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
if (!client) {
|
|
25
|
+
throw new utils_1.BaseError('Mongo Client is undefined');
|
|
26
|
+
}
|
|
27
|
+
this._db = client;
|
|
28
|
+
this._mdb = client.db();
|
|
29
|
+
this.dbInit(collection, cb);
|
|
30
|
+
return this;
|
|
31
|
+
};
|
|
32
|
+
exports.database = database;
|
|
33
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/pulse/database.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AACnC,qCAAgF;AAEhF,oCAAqC;AACrC,6DAAwD;AAExD,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,gBAAgB,CAAC,CAAC;AA0BxC,MAAM,QAAQ,GAAmB,KAAK,WAAwB,GAAG,EAAE,UAAW,EAAE,OAAO,GAAG,EAAE,EAAE,EAAG;IACtG,IAAI,CAAC,IAAA,qCAAgB,EAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,GAAG,GAAG,YAAY,GAAG,GAAG,CAAC;IAC3B,CAAC;IAED,UAAU,GAAG,UAAU,IAAI,WAAW,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,qBAAW,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACrE,KAAK,CAAC,oDAAoD,EAAE,UAAU,CAAC,CAAC;QACxE,IAAI,EAAE,EAAE,CAAC;YACP,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,iBAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,iBAAS,CAAC,2BAA2B,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;IAClB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC;IACxB,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAxBW,QAAA,QAAQ,YAwBnB"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.dbInit = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const debug = (0, debug_1.default)('pulse:db_init');
|
|
7
|
+
const dbInit = function (collection = 'pulseJobs', cb) {
|
|
8
|
+
debug('init database collection using name [%s]', collection);
|
|
9
|
+
this._collection = this._mdb.collection(collection);
|
|
10
|
+
if (this._resumeOnRestart) {
|
|
11
|
+
this.resumeOnRestart(this._resumeOnRestart);
|
|
12
|
+
}
|
|
13
|
+
if (this._disableAutoIndex) {
|
|
14
|
+
debug('skipping auto index creation');
|
|
15
|
+
this.emit('ready');
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
debug('attempting index creation');
|
|
19
|
+
this._collection
|
|
20
|
+
.createIndex(this._indices, { name: 'findAndLockNextJobIndex' })
|
|
21
|
+
.then(() => {
|
|
22
|
+
debug('index creation success');
|
|
23
|
+
this.emit('ready');
|
|
24
|
+
})
|
|
25
|
+
.catch((error) => {
|
|
26
|
+
debug('index creation failed');
|
|
27
|
+
this.emit('error', error);
|
|
28
|
+
if (cb) {
|
|
29
|
+
cb(error, this._collection);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
exports.dbInit = dbInit;
|
|
34
|
+
//# sourceMappingURL=db-init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-init.js","sourceRoot":"","sources":["../../src/pulse/db-init.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAInC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,eAAe,CAAC,CAAC;AAcvC,MAAM,MAAM,GAAiB,UAAuB,UAAU,GAAG,WAAW,EAAE,EAAG;IACtF,KAAK,CAAC,0CAA0C,EAAE,UAAU,CAAC,CAAC;IAC9D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAEpD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,OAAO;IACT,CAAC;IAED,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACnC,IAAI,CAAC,WAAW;SACb,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;SAC/D,IAAI,CAAC,GAAG,EAAE;QACT,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACf,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC1B,IAAI,EAAE,EAAE,CAAC;YACP,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AA5BW,QAAA,MAAM,UA4BjB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultConcurrency = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const debug = (0, debug_1.default)('pulse:defaultConcurrency');
|
|
7
|
+
const defaultConcurrency = function (concurrency) {
|
|
8
|
+
debug('Pulse.defaultConcurrency(%d)', concurrency);
|
|
9
|
+
this._defaultConcurrency = concurrency;
|
|
10
|
+
return this;
|
|
11
|
+
};
|
|
12
|
+
exports.defaultConcurrency = defaultConcurrency;
|
|
13
|
+
//# sourceMappingURL=default-concurrency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-concurrency.js","sourceRoot":"","sources":["../../src/pulse/default-concurrency.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAGnC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,0BAA0B,CAAC,CAAC;AASlD,MAAM,kBAAkB,GAA6B,UAAuB,WAAW;IAC5F,KAAK,CAAC,8BAA8B,EAAE,WAAW,CAAC,CAAC;IACnD,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC;IACvC,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAJW,QAAA,kBAAkB,sBAI7B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultLockLifetime = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const debug = (0, debug_1.default)('pulse:defaultLockLifetime');
|
|
7
|
+
const defaultLockLifetime = function (ms) {
|
|
8
|
+
debug('Pulse.defaultLockLifetime(%d)', ms);
|
|
9
|
+
this._defaultLockLifetime = ms;
|
|
10
|
+
return this;
|
|
11
|
+
};
|
|
12
|
+
exports.defaultLockLifetime = defaultLockLifetime;
|
|
13
|
+
//# sourceMappingURL=default-lock-lifetime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-lock-lifetime.js","sourceRoot":"","sources":["../../src/pulse/default-lock-lifetime.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAGnC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,2BAA2B,CAAC,CAAC;AAWnD,MAAM,mBAAmB,GAA8B,UAAuB,EAAE;IACrF,KAAK,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;IAC/B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAJW,QAAA,mBAAmB,uBAI9B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultLockLimit = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const debug = (0, debug_1.default)('pulse:defaultLockLimit');
|
|
7
|
+
const defaultLockLimit = function (times) {
|
|
8
|
+
debug('Pulse.defaultLockLimit(%d)', times);
|
|
9
|
+
this._defaultLockLimit = times;
|
|
10
|
+
return this;
|
|
11
|
+
};
|
|
12
|
+
exports.defaultLockLimit = defaultLockLimit;
|
|
13
|
+
//# sourceMappingURL=default-lock-limit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-lock-limit.js","sourceRoot":"","sources":["../../src/pulse/default-lock-limit.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAGnC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,wBAAwB,CAAC,CAAC;AAUhD,MAAM,gBAAgB,GAA2B,UAAuB,KAAK;IAClF,KAAK,CAAC,4BAA4B,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IAC/B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAJW,QAAA,gBAAgB,oBAI3B"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Job, JobAttributesData } from '../job';
|
|
2
|
+
export declare enum JobPriority {
|
|
3
|
+
highest = 20,
|
|
4
|
+
high = 10,
|
|
5
|
+
normal = 0,
|
|
6
|
+
low = -10,
|
|
7
|
+
lowest = -20
|
|
8
|
+
}
|
|
9
|
+
export interface DefineOptions {
|
|
10
|
+
concurrency?: number;
|
|
11
|
+
lockLimit?: number;
|
|
12
|
+
lockLifetime?: number;
|
|
13
|
+
priority?: keyof typeof JobPriority;
|
|
14
|
+
shouldSaveResult?: boolean;
|
|
15
|
+
attempts?: number;
|
|
16
|
+
backoff?: {
|
|
17
|
+
type: 'exponential' | 'fixed';
|
|
18
|
+
delay: number;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export type Processor<T extends JobAttributesData> = (job: Job<T>, done: (error?: Error, result?: unknown) => void) => unknown | Promise<unknown>;
|
|
22
|
+
export type DefineMethod = <T extends JobAttributesData>(name: string, processor: Processor<T>, options?: DefineOptions) => void;
|
|
23
|
+
export declare const define: DefineMethod;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.define = exports.JobPriority = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const debug = (0, debug_1.default)('pulse:define');
|
|
7
|
+
var JobPriority;
|
|
8
|
+
(function (JobPriority) {
|
|
9
|
+
JobPriority[JobPriority["highest"] = 20] = "highest";
|
|
10
|
+
JobPriority[JobPriority["high"] = 10] = "high";
|
|
11
|
+
JobPriority[JobPriority["normal"] = 0] = "normal";
|
|
12
|
+
JobPriority[JobPriority["low"] = -10] = "low";
|
|
13
|
+
JobPriority[JobPriority["lowest"] = -20] = "lowest";
|
|
14
|
+
})(JobPriority || (exports.JobPriority = JobPriority = {}));
|
|
15
|
+
const define = function (name, processor, options) {
|
|
16
|
+
this._definitions[name] = {
|
|
17
|
+
fn: processor,
|
|
18
|
+
concurrency: options?.concurrency || this._defaultConcurrency,
|
|
19
|
+
lockLimit: options?.lockLimit || this._defaultLockLimit,
|
|
20
|
+
priority: options?.priority || JobPriority.normal,
|
|
21
|
+
lockLifetime: options?.lockLifetime || this._defaultLockLifetime,
|
|
22
|
+
running: 0,
|
|
23
|
+
locked: 0,
|
|
24
|
+
shouldSaveResult: options?.shouldSaveResult || false,
|
|
25
|
+
attempts: options?.attempts || 0,
|
|
26
|
+
backoff: options?.attempts && {
|
|
27
|
+
type: options?.backoff?.type || 'exponential',
|
|
28
|
+
delay: options?.backoff?.delay || 1000,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
debug('job [%s] defined with following options: \n%O', name, this._definitions[name]);
|
|
32
|
+
};
|
|
33
|
+
exports.define = define;
|
|
34
|
+
//# sourceMappingURL=define.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/pulse/define.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAInC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,cAAc,CAAC,CAAC;AAE7C,IAAY,WAMX;AAND,WAAY,WAAW;IACrB,oDAAY,CAAA;IACZ,8CAAS,CAAA;IACT,iDAAU,CAAA;IACV,6CAAS,CAAA;IACT,mDAAY,CAAA;AACd,CAAC,EANW,WAAW,2BAAX,WAAW,QAMtB;AA2EM,MAAM,MAAM,GAAiB,UAAuB,IAAI,EAAE,SAAS,EAAE,OAAQ;IAClF,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG;QACxB,EAAE,EAAE,SAAS;QACb,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,mBAAmB;QAC7D,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC,iBAAiB;QACvD,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,WAAW,CAAC,MAAM;QACjD,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC,oBAAoB;QAChE,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,CAAC;QACT,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,IAAI,KAAK;QACpD,QAAQ,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC;QAChC,OAAO,EAAE,OAAO,EAAE,QAAQ,IAAI;YAC5B,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,aAAa;YAC7C,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI;SACvC;KACF,CAAC;IAEF,KAAK,CAAC,+CAA+C,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;AACxF,CAAC,CAAC;AAlBW,QAAA,MAAM,UAkBjB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.disable = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const debug = (0, debug_1.default)('pulse:disable');
|
|
7
|
+
const disable = async function (query = {}) {
|
|
8
|
+
debug('attempting to disable all jobs matching query', query);
|
|
9
|
+
try {
|
|
10
|
+
const { modifiedCount } = await this._collection.updateMany(query, {
|
|
11
|
+
$set: { disabled: true },
|
|
12
|
+
});
|
|
13
|
+
debug('%s jobs disabled');
|
|
14
|
+
return modifiedCount;
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
debug('error trying to mark jobs as `disabled`');
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
exports.disable = disable;
|
|
22
|
+
//# sourceMappingURL=disable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disable.js","sourceRoot":"","sources":["../../src/pulse/disable.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAGnC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,eAAe,CAAC,CAAC;AAUvC,MAAM,OAAO,GAAkB,KAAK,WAAwB,KAAK,GAAG,EAAE;IAC3E,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE;YACjE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;SACzB,CAAC,CAAC;QACH,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC1B,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACjD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAZW,QAAA,OAAO,WAYlB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.drain = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const debug = (0, debug_1.default)('pulse:drain');
|
|
7
|
+
const drain = async function () {
|
|
8
|
+
return new Promise((resolve) => {
|
|
9
|
+
debug('Pulse.drain called, clearing interval for processJobs()');
|
|
10
|
+
clearInterval(this._processInterval);
|
|
11
|
+
this._processInterval = undefined;
|
|
12
|
+
if (this._runningJobs.length === 0) {
|
|
13
|
+
resolve();
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
debug('Pulse.drain waiting for jobs to finish');
|
|
17
|
+
this.on('complete', () => {
|
|
18
|
+
if (this._runningJobs.length === 1) {
|
|
19
|
+
resolve();
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
exports.drain = drain;
|
|
26
|
+
//# sourceMappingURL=drain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drain.js","sourceRoot":"","sources":["../../src/pulse/drain.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAGnC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,aAAa,CAAC,CAAC;AASrC,MAAM,KAAK,GAAgB,KAAK;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,KAAK,CAAC,yDAAyD,CAAC,CAAC;QACjE,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;QAElC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAChD,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE;gBAEvB,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnC,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAlBW,QAAA,KAAK,SAkBhB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.enable = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const debug = (0, debug_1.default)('pulse:enable');
|
|
7
|
+
const enable = async function (query = {}) {
|
|
8
|
+
debug('attempting to enable all jobs matching query', query);
|
|
9
|
+
try {
|
|
10
|
+
const { modifiedCount } = await this._collection.updateMany(query, {
|
|
11
|
+
$set: { disabled: false },
|
|
12
|
+
});
|
|
13
|
+
debug('%s jobs enabled', modifiedCount);
|
|
14
|
+
return modifiedCount;
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
debug('error trying to mark jobs as `enabled`');
|
|
18
|
+
throw error;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
exports.enable = enable;
|
|
22
|
+
//# sourceMappingURL=enable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enable.js","sourceRoot":"","sources":["../../src/pulse/enable.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAGnC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,cAAc,CAAC,CAAC;AAWtC,MAAM,MAAM,GAAiB,KAAK,WAAwB,KAAK,GAAG,EAAE;IACzE,KAAK,CAAC,8CAA8C,EAAE,KAAK,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE;YACjE,IAAI,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE;SAC1B,CAAC,CAAC;QACH,KAAK,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QACxC,OAAO,aAAa,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAChD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAZW,QAAA,MAAM,UAYjB"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Job, JobAttributesData } from '../job';
|
|
2
|
+
import { JobOptions } from '../job/repeat-every';
|
|
3
|
+
export type EveryMethod = <T extends JobAttributesData>(interval: string, names: string | string[], data?: T, options?: JobOptions) => Promise<Job | Job[]>;
|
|
4
|
+
export declare const every: EveryMethod;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.every = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const utils_1 = require("../utils");
|
|
7
|
+
const debug = (0, debug_1.default)('pulse:every');
|
|
8
|
+
const every = async function (interval, names, data, options) {
|
|
9
|
+
const createJob = async (interval, name, data, options) => {
|
|
10
|
+
const job = this.create(name, data || {});
|
|
11
|
+
job.attrs.type = 'single';
|
|
12
|
+
job.repeatEvery(interval, options);
|
|
13
|
+
return job.save();
|
|
14
|
+
};
|
|
15
|
+
const createJobs = async (interval, names, data, options) => {
|
|
16
|
+
try {
|
|
17
|
+
const jobs = [];
|
|
18
|
+
names.map((name) => jobs.push(createJob(interval, name, data, options)));
|
|
19
|
+
debug('every() -> all jobs created successfully');
|
|
20
|
+
return Promise.all(jobs);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
debug('every() -> error creating one or more of the jobs', error);
|
|
24
|
+
throw new utils_1.PulseError('Error creating one or more of the jobs');
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
if (Array.isArray(names)) {
|
|
28
|
+
debug('Pulse.every(%s, %s, %O)', interval, names, options);
|
|
29
|
+
const jobs = await createJobs(interval, names, data, options);
|
|
30
|
+
return jobs;
|
|
31
|
+
}
|
|
32
|
+
debug('Pulse.every(%s, %O, %O)', interval, names, options);
|
|
33
|
+
const jobs = await createJob(interval, names, data, options);
|
|
34
|
+
return jobs;
|
|
35
|
+
};
|
|
36
|
+
exports.every = every;
|
|
37
|
+
//# sourceMappingURL=every.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"every.js","sourceRoot":"","sources":["../../src/pulse/every.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAInC,oCAAsC;AAEtC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,aAAa,CAAC,CAAC;AAmBrC,MAAM,KAAK,GAAgB,KAAK,WAAwB,QAAQ,EAAE,KAAK,EAAE,IAAK,EAAE,OAAQ;IAS7F,MAAM,SAAS,GAAG,KAAK,EACrB,QAAgB,EAChB,IAAY,EACZ,IAAQ,EACR,OAAoB,EACN,EAAE;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QAE1C,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;QAC1B,GAAG,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACnC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC,CAAC;IAUF,MAAM,UAAU,GAAG,KAAK,EACtB,QAAgB,EAChB,KAAe,EACf,IAAQ,EACR,OAAoB,EACJ,EAAE;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAwB,EAAE,CAAC;YACrC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YAEzE,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAElD,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,mDAAmD,EAAE,KAAK,CAAC,CAAC;YAClE,MAAM,IAAI,kBAAU,CAAC,wCAAwC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,yBAAyB,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAE9D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,yBAAyB,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AA3DW,QAAA,KAAK,SA2DhB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.findAndLockNextJob = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const debug_1 = tslib_1.__importDefault(require("debug"));
|
|
6
|
+
const mongodb_1 = require("mongodb");
|
|
7
|
+
const utils_1 = require("../utils");
|
|
8
|
+
const debug = (0, debug_1.default)('pulse:internal:_findAndLockNextJob');
|
|
9
|
+
const findAndLockNextJob = async function (jobName, definition) {
|
|
10
|
+
const now = new Date();
|
|
11
|
+
const lockDeadline = new Date(Date.now().valueOf() - definition.lockLifetime);
|
|
12
|
+
debug('_findAndLockNextJob(%s, [Function])', jobName);
|
|
13
|
+
const JOB_PROCESS_WHERE_QUERY = {
|
|
14
|
+
$and: [
|
|
15
|
+
{
|
|
16
|
+
name: jobName,
|
|
17
|
+
disabled: { $ne: true },
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
$or: [
|
|
21
|
+
{
|
|
22
|
+
lockedAt: { $eq: null },
|
|
23
|
+
nextRunAt: { $lte: this._nextScanAt },
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
lockedAt: { $lte: lockDeadline },
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
},
|
|
30
|
+
],
|
|
31
|
+
};
|
|
32
|
+
const JOB_PROCESS_SET_QUERY = { $set: { lockedAt: now } };
|
|
33
|
+
const JOB_RETURN_QUERY = { includeResultMetadata: true, returnDocument: mongodb_1.ReturnDocument.AFTER, sort: this._sort };
|
|
34
|
+
const result = await this._collection.findOneAndUpdate(JOB_PROCESS_WHERE_QUERY, JOB_PROCESS_SET_QUERY, JOB_RETURN_QUERY);
|
|
35
|
+
let job = undefined;
|
|
36
|
+
if (result?.value) {
|
|
37
|
+
debug('found a job available to lock, creating a new job on Pulse with id [%s]', result.value._id);
|
|
38
|
+
job = (0, utils_1.createJob)(this, result.value);
|
|
39
|
+
}
|
|
40
|
+
return job;
|
|
41
|
+
};
|
|
42
|
+
exports.findAndLockNextJob = findAndLockNextJob;
|
|
43
|
+
//# sourceMappingURL=find-and-lock-next-job.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"find-and-lock-next-job.js","sourceRoot":"","sources":["../../src/pulse/find-and-lock-next-job.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AACnC,qCAAyC;AAGzC,oCAAqC;AAErC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,oCAAoC,CAAC,CAAC;AAW5D,MAAM,kBAAkB,GAAG,KAAK,WAErC,OAAe,EACf,UAAe;IAEf,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAC9E,KAAK,CAAC,qCAAqC,EAAE,OAAO,CAAC,CAAC;IAEtD,MAAM,uBAAuB,GAAG;QAC9B,IAAI,EAAE;YACJ;gBACE,IAAI,EAAE,OAAO;gBACb,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;aACxB;YACD;gBACE,GAAG,EAAE;oBACH;wBACE,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE;wBACvB,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE;qBACtC;oBACD;wBACE,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;qBACjC;iBACF;aACF;SACF;KACF,CAAC;IAMF,MAAM,qBAAqB,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC;IAO1D,MAAM,gBAAgB,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,cAAc,EAAE,wBAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAGjH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,gBAAgB,CACpD,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,CACjB,CAAC;IAEF,IAAI,GAAG,GAAoB,SAAS,CAAC;IACrC,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;QAClB,KAAK,CAAC,yEAAyE,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEnG,GAAG,GAAG,IAAA,iBAAS,EAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAxDW,QAAA,kBAAkB,sBAwD7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const hasMongoProtocol: (url: string) => boolean;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.hasMongoProtocol = void 0;
|
|
4
|
+
const hasMongoProtocol = function (url) {
|
|
5
|
+
return /mongodb(?:\+srv)?:\/\/.*/.exec(url) !== null;
|
|
6
|
+
};
|
|
7
|
+
exports.hasMongoProtocol = hasMongoProtocol;
|
|
8
|
+
//# sourceMappingURL=has-mongo-protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"has-mongo-protocol.js","sourceRoot":"","sources":["../../src/pulse/has-mongo-protocol.ts"],"names":[],"mappings":";;;AAKO,MAAM,gBAAgB,GAAG,UAAU,GAAW;IACnD,OAAO,0BAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AACvD,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
|