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.
Files changed (174) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +353 -0
  3. package/dist/index.d.ts +7 -0
  4. package/dist/index.js +12 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/job/compute-next-run-at.d.ts +3 -0
  7. package/dist/job/compute-next-run-at.js +114 -0
  8. package/dist/job/compute-next-run-at.js.map +1 -0
  9. package/dist/job/disable.d.ts +3 -0
  10. package/dist/job/disable.js +9 -0
  11. package/dist/job/disable.js.map +1 -0
  12. package/dist/job/enable.d.ts +3 -0
  13. package/dist/job/enable.js +9 -0
  14. package/dist/job/enable.js.map +1 -0
  15. package/dist/job/fail.d.ts +3 -0
  16. package/dist/job/fail.js +28 -0
  17. package/dist/job/fail.js.map +1 -0
  18. package/dist/job/fetch-status.d.ts +10 -0
  19. package/dist/job/fetch-status.js +23 -0
  20. package/dist/job/fetch-status.js.map +1 -0
  21. package/dist/job/index.d.ts +89 -0
  22. package/dist/job/index.js +109 -0
  23. package/dist/job/index.js.map +1 -0
  24. package/dist/job/is-expired.d.ts +2 -0
  25. package/dist/job/is-expired.js +16 -0
  26. package/dist/job/is-expired.js.map +1 -0
  27. package/dist/job/is-running.d.ts +2 -0
  28. package/dist/job/is-running.js +21 -0
  29. package/dist/job/is-running.js.map +1 -0
  30. package/dist/job/priority.d.ts +3 -0
  31. package/dist/job/priority.js +10 -0
  32. package/dist/job/priority.js.map +1 -0
  33. package/dist/job/remove.d.ts +2 -0
  34. package/dist/job/remove.js +8 -0
  35. package/dist/job/remove.js.map +1 -0
  36. package/dist/job/repeat-at.d.ts +3 -0
  37. package/dist/job/repeat-at.js +9 -0
  38. package/dist/job/repeat-at.js.map +1 -0
  39. package/dist/job/repeat-every.d.ts +10 -0
  40. package/dist/job/repeat-every.js +21 -0
  41. package/dist/job/repeat-every.js.map +1 -0
  42. package/dist/job/run.d.ts +3 -0
  43. package/dist/job/run.js +92 -0
  44. package/dist/job/run.js.map +1 -0
  45. package/dist/job/save.d.ts +3 -0
  46. package/dist/job/save.js +8 -0
  47. package/dist/job/save.js.map +1 -0
  48. package/dist/job/schedule.d.ts +3 -0
  49. package/dist/job/schedule.js +12 -0
  50. package/dist/job/schedule.js.map +1 -0
  51. package/dist/job/set-shouldsaveresult.d.ts +3 -0
  52. package/dist/job/set-shouldsaveresult.js +9 -0
  53. package/dist/job/set-shouldsaveresult.js.map +1 -0
  54. package/dist/job/to-json.d.ts +3 -0
  55. package/dist/job/to-json.js +21 -0
  56. package/dist/job/to-json.js.map +1 -0
  57. package/dist/job/touch.d.ts +3 -0
  58. package/dist/job/touch.js +14 -0
  59. package/dist/job/touch.js.map +1 -0
  60. package/dist/job/unique.d.ts +6 -0
  61. package/dist/job/unique.js +10 -0
  62. package/dist/job/unique.js.map +1 -0
  63. package/dist/pulse/cancel.d.ts +3 -0
  64. package/dist/pulse/cancel.js +21 -0
  65. package/dist/pulse/cancel.js.map +1 -0
  66. package/dist/pulse/close.d.ts +5 -0
  67. package/dist/pulse/close.js +25 -0
  68. package/dist/pulse/close.js.map +1 -0
  69. package/dist/pulse/count-jobs.d.ts +5 -0
  70. package/dist/pulse/count-jobs.js +12 -0
  71. package/dist/pulse/count-jobs.js.map +1 -0
  72. package/dist/pulse/create.d.ts +3 -0
  73. package/dist/pulse/create.js +31 -0
  74. package/dist/pulse/create.js.map +1 -0
  75. package/dist/pulse/database.d.ts +4 -0
  76. package/dist/pulse/database.js +33 -0
  77. package/dist/pulse/database.js.map +1 -0
  78. package/dist/pulse/db-init.d.ts +3 -0
  79. package/dist/pulse/db-init.js +34 -0
  80. package/dist/pulse/db-init.js.map +1 -0
  81. package/dist/pulse/default-concurrency.d.ts +3 -0
  82. package/dist/pulse/default-concurrency.js +13 -0
  83. package/dist/pulse/default-concurrency.js.map +1 -0
  84. package/dist/pulse/default-lock-lifetime.d.ts +3 -0
  85. package/dist/pulse/default-lock-lifetime.js +13 -0
  86. package/dist/pulse/default-lock-lifetime.js.map +1 -0
  87. package/dist/pulse/default-lock-limit.d.ts +3 -0
  88. package/dist/pulse/default-lock-limit.js +13 -0
  89. package/dist/pulse/default-lock-limit.js.map +1 -0
  90. package/dist/pulse/define.d.ts +23 -0
  91. package/dist/pulse/define.js +34 -0
  92. package/dist/pulse/define.js.map +1 -0
  93. package/dist/pulse/disable.d.ts +3 -0
  94. package/dist/pulse/disable.js +22 -0
  95. package/dist/pulse/disable.js.map +1 -0
  96. package/dist/pulse/drain.d.ts +2 -0
  97. package/dist/pulse/drain.js +26 -0
  98. package/dist/pulse/drain.js.map +1 -0
  99. package/dist/pulse/enable.d.ts +3 -0
  100. package/dist/pulse/enable.js +22 -0
  101. package/dist/pulse/enable.js.map +1 -0
  102. package/dist/pulse/every.d.ts +4 -0
  103. package/dist/pulse/every.js +37 -0
  104. package/dist/pulse/every.js.map +1 -0
  105. package/dist/pulse/find-and-lock-next-job.d.ts +3 -0
  106. package/dist/pulse/find-and-lock-next-job.js +43 -0
  107. package/dist/pulse/find-and-lock-next-job.js.map +1 -0
  108. package/dist/pulse/has-mongo-protocol.d.ts +1 -0
  109. package/dist/pulse/has-mongo-protocol.js +8 -0
  110. package/dist/pulse/has-mongo-protocol.js.map +1 -0
  111. package/dist/pulse/index.d.ts +115 -0
  112. package/dist/pulse/index.js +208 -0
  113. package/dist/pulse/index.js.map +1 -0
  114. package/dist/pulse/job-processing-queue.d.ts +11 -0
  115. package/dist/pulse/job-processing-queue.js +51 -0
  116. package/dist/pulse/job-processing-queue.js.map +1 -0
  117. package/dist/pulse/jobs.d.ts +6 -0
  118. package/dist/pulse/jobs.js +14 -0
  119. package/dist/pulse/jobs.js.map +1 -0
  120. package/dist/pulse/lock-limit.d.ts +3 -0
  121. package/dist/pulse/lock-limit.js +13 -0
  122. package/dist/pulse/lock-limit.js.map +1 -0
  123. package/dist/pulse/max-concurrency.d.ts +3 -0
  124. package/dist/pulse/max-concurrency.js +13 -0
  125. package/dist/pulse/max-concurrency.js.map +1 -0
  126. package/dist/pulse/mongo.d.ts +4 -0
  127. package/dist/pulse/mongo.js +10 -0
  128. package/dist/pulse/mongo.js.map +1 -0
  129. package/dist/pulse/name.d.ts +3 -0
  130. package/dist/pulse/name.js +13 -0
  131. package/dist/pulse/name.js.map +1 -0
  132. package/dist/pulse/now.d.ts +3 -0
  133. package/dist/pulse/now.js +21 -0
  134. package/dist/pulse/now.js.map +1 -0
  135. package/dist/pulse/process-every.d.ts +3 -0
  136. package/dist/pulse/process-every.js +14 -0
  137. package/dist/pulse/process-every.js.map +1 -0
  138. package/dist/pulse/purge.d.ts +2 -0
  139. package/dist/pulse/purge.js +13 -0
  140. package/dist/pulse/purge.js.map +1 -0
  141. package/dist/pulse/resume-on-restart.d.ts +3 -0
  142. package/dist/pulse/resume-on-restart.js +39 -0
  143. package/dist/pulse/resume-on-restart.js.map +1 -0
  144. package/dist/pulse/save-job.d.ts +4 -0
  145. package/dist/pulse/save-job.js +104 -0
  146. package/dist/pulse/save-job.js.map +1 -0
  147. package/dist/pulse/schedule.d.ts +4 -0
  148. package/dist/pulse/schedule.js +36 -0
  149. package/dist/pulse/schedule.js.map +1 -0
  150. package/dist/pulse/sort.d.ts +3 -0
  151. package/dist/pulse/sort.js +13 -0
  152. package/dist/pulse/sort.js.map +1 -0
  153. package/dist/pulse/start.d.ts +2 -0
  154. package/dist/pulse/start.js +19 -0
  155. package/dist/pulse/start.js.map +1 -0
  156. package/dist/pulse/stop.d.ts +2 -0
  157. package/dist/pulse/stop.js +38 -0
  158. package/dist/pulse/stop.js.map +1 -0
  159. package/dist/utils/create-job.d.ts +3 -0
  160. package/dist/utils/create-job.js +10 -0
  161. package/dist/utils/create-job.js.map +1 -0
  162. package/dist/utils/error.d.ts +12 -0
  163. package/dist/utils/error.js +34 -0
  164. package/dist/utils/error.js.map +1 -0
  165. package/dist/utils/index.d.ts +4 -0
  166. package/dist/utils/index.js +8 -0
  167. package/dist/utils/index.js.map +1 -0
  168. package/dist/utils/parse-priority.d.ts +1 -0
  169. package/dist/utils/parse-priority.js +31 -0
  170. package/dist/utils/parse-priority.js.map +1 -0
  171. package/dist/utils/process-jobs.d.ts +3 -0
  172. package/dist/utils/process-jobs.js +203 -0
  173. package/dist/utils/process-jobs.js.map +1 -0
  174. 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,3 @@
1
+ import { Document, Filter } from 'mongodb';
2
+ export type CancelMethod = (query: Filter<Document>) => Promise<number | undefined>;
3
+ export declare const cancel: CancelMethod;
@@ -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,5 @@
1
+ import { Pulse } from '.';
2
+ export type CloseMethod = (option?: {
3
+ force: boolean;
4
+ }) => Promise<Pulse>;
5
+ export declare const close: CloseMethod;
@@ -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,3 @@
1
+ import { Job, JobAttributesData } from '../job';
2
+ export type CreateMethod = <T extends JobAttributesData>(name: string, data: T) => Job<T>;
3
+ export declare const create: CreateMethod;
@@ -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,3 @@
1
+ import { AnyError, Collection } from 'mongodb';
2
+ export type DbInitMethod = (collection?: string, cb?: (error: AnyError | undefined, collection: Collection<any> | null) => void) => void;
3
+ export declare const dbInit: DbInitMethod;
@@ -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,3 @@
1
+ import { Pulse } from '.';
2
+ export type DefaultConcurrencyMethod = (concurrency: number) => Pulse;
3
+ export declare const defaultConcurrency: DefaultConcurrencyMethod;
@@ -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,3 @@
1
+ import { Pulse } from '.';
2
+ export type DefaultLockLifetimeMethod = (ms: number) => Pulse;
3
+ export declare const defaultLockLifetime: DefaultLockLifetimeMethod;
@@ -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,3 @@
1
+ import { Pulse } from '.';
2
+ export type DefaultLockLimitMethod = (times: number) => Pulse;
3
+ export declare const defaultLockLimit: DefaultLockLimitMethod;
@@ -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,3 @@
1
+ import { Filter } from 'mongodb';
2
+ export type DisableMethod = (query?: Filter<unknown>) => Promise<number>;
3
+ export declare const disable: DisableMethod;
@@ -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,2 @@
1
+ export type DrainMethod = () => Promise<void>;
2
+ export declare const drain: DrainMethod;
@@ -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,3 @@
1
+ import { Filter } from 'mongodb';
2
+ export type EnableMethod = (query?: Filter<unknown>) => Promise<number>;
3
+ export declare const enable: EnableMethod;
@@ -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,3 @@
1
+ import { Pulse } from '.';
2
+ import { Job } from '../job';
3
+ export declare const findAndLockNextJob: (this: Pulse, jobName: string, definition: any) => Promise<Job | undefined>;
@@ -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"}