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 @@
1
+ {"version":3,"file":"fail.js","sourceRoot":"","sources":["../../src/job/fail.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAGnC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,WAAW,CAAC,CAAC;AAanC,MAAM,IAAI,GAAe,UAAqB,MAAM;IACzD,MAAM,UAAU,GAAG,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAErE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACzB,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,KAAK,CAAC,SAAS,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7C,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;IACrC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;IAE5C,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAEzF,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,IAAI,QAAQ,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACjH,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;IAE1C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAC9B,IAAI,QAAQ,IAAI,OAAO,IAAI,UAAU,GAAG,IAAI,GAAG,QAAQ,EAAE,CAAC;QACxD,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAC/E,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QAE5E,KAAK,CAAC,sDAAsD,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACpH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAzBW,QAAA,IAAI,QAyBf"}
@@ -0,0 +1,10 @@
1
+ interface FetchStatusResponse {
2
+ status: boolean;
3
+ reason?: string;
4
+ lastRunAt?: Date;
5
+ lockedAt?: Date;
6
+ lastFinishedAt?: Date;
7
+ }
8
+ export type FetchStatusMethod = () => Promise<FetchStatusResponse>;
9
+ export declare const fetchStatus: FetchStatusMethod;
10
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchStatus = void 0;
4
+ const fetchStatus = async function () {
5
+ const dbJob = await this.pulse.getJobsRepo({ _id: this.attrs._id });
6
+ if (!dbJob || dbJob.length === 0) {
7
+ return {
8
+ status: false,
9
+ reason: `job with id ${this.attrs._id} not found in database`,
10
+ };
11
+ }
12
+ this.attrs.lastRunAt = dbJob[0].lastRunAt;
13
+ this.attrs.lockedAt = dbJob[0].lockedAt;
14
+ this.attrs.lastFinishedAt = dbJob[0].lastFinishedAt;
15
+ return {
16
+ status: true,
17
+ lastRunAt: this.attrs.lastRunAt || dbJob[0].lastRunAt,
18
+ lockedAt: this.attrs.lockedAt || dbJob[0].lockedAt,
19
+ lastFinishedAt: this.attrs.lastFinishedAt || dbJob[0].lastFinishedAt,
20
+ };
21
+ };
22
+ exports.fetchStatus = fetchStatus;
23
+ //# sourceMappingURL=fetch-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch-status.js","sourceRoot":"","sources":["../../src/job/fetch-status.ts"],"names":[],"mappings":";;;AAYO,MAAM,WAAW,GAAsB,KAAK;IACjD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO;YACL,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,eAAe,IAAI,CAAC,KAAK,CAAC,GAAG,wBAAwB;SAC9D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACxC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IAEpD,OAAO;QACL,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;QACrD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ;QAClD,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc;KACrE,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,WAAW,eAmBtB"}
@@ -0,0 +1,89 @@
1
+ import * as mongodb from 'mongodb';
2
+ import { Pulse } from '../pulse';
3
+ import { ComputeNextRunAtMethod } from './compute-next-run-at';
4
+ import { DisableMethod } from './disable';
5
+ import { EnableMethod } from './enable';
6
+ import { FailMethod } from './fail';
7
+ import { FetchStatusMethod } from './fetch-status';
8
+ import { IsExpiredMethod } from './is-expired';
9
+ import { IsRunningMethod } from './is-running';
10
+ import { PriorityMethod } from './priority';
11
+ import { RemoveMethod } from './remove';
12
+ import { RepeatAtMethod } from './repeat-at';
13
+ import { RepeatEveryMethod } from './repeat-every';
14
+ import { RunMethod } from './run';
15
+ import { SaveMethod } from './save';
16
+ import { ScheduleMethod } from './schedule';
17
+ import { SetShouldSaveResultMethod } from './set-shouldsaveresult';
18
+ import { ToJsonMethod } from './to-json';
19
+ import { TouchMethod } from './touch';
20
+ import { UniqueMethod } from './unique';
21
+ type Modify<T, R> = Omit<T, keyof R> & R;
22
+ export interface JobAttributesData {
23
+ [key: string]: any;
24
+ }
25
+ export interface JobAttributes<T extends JobAttributesData = JobAttributesData> {
26
+ _id: mongodb.ObjectId;
27
+ pulse: Pulse;
28
+ type: string;
29
+ name: string;
30
+ disabled?: boolean;
31
+ progress?: number;
32
+ nextRunAt?: Date | null;
33
+ lockedAt?: Date | null;
34
+ priority: number | string;
35
+ data: T;
36
+ uniqueQuery?: any;
37
+ uniqueOpts?: {
38
+ insertOnly: boolean;
39
+ };
40
+ repeatInterval?: string;
41
+ repeatTimezone?: string | null;
42
+ repeatAt?: string;
43
+ lastRunAt?: Date;
44
+ runCount?: number;
45
+ lastFinishedAt?: Date;
46
+ startDate?: Date | number | null;
47
+ endDate?: Date | number | null;
48
+ skipDays?: string | null;
49
+ finishedCount?: number;
50
+ failReason?: string;
51
+ failCount?: number;
52
+ failedAt?: Date;
53
+ lastModifiedBy?: string;
54
+ shouldSaveResult?: boolean;
55
+ attempts?: number;
56
+ backoff?: {
57
+ type: 'exponential' | 'fixed';
58
+ delay: number;
59
+ };
60
+ result?: unknown;
61
+ }
62
+ declare class Job<T extends JobAttributesData = JobAttributesData> {
63
+ private _lazyBindings;
64
+ pulse: Pulse;
65
+ attrs: JobAttributes<T>;
66
+ constructor(options: Modify<JobAttributes<T>, {
67
+ _id?: mongodb.ObjectId;
68
+ }>);
69
+ get toJSON(): ToJsonMethod;
70
+ get computeNextRunAt(): ComputeNextRunAtMethod;
71
+ get repeatEvery(): RepeatEveryMethod;
72
+ get repeatAt(): RepeatAtMethod;
73
+ get disable(): DisableMethod;
74
+ get enable(): EnableMethod;
75
+ get unique(): UniqueMethod;
76
+ get schedule(): ScheduleMethod;
77
+ get priority(): PriorityMethod;
78
+ get fail(): FailMethod;
79
+ get run(): RunMethod;
80
+ get isRunning(): IsRunningMethod;
81
+ get isExpired(): IsExpiredMethod;
82
+ get save(): SaveMethod;
83
+ get remove(): RemoveMethod;
84
+ get touch(): TouchMethod;
85
+ get setShouldSaveResult(): SetShouldSaveResultMethod;
86
+ get fetchStatus(): FetchStatusMethod;
87
+ private bindMethod;
88
+ }
89
+ export { Job };
@@ -0,0 +1,109 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Job = void 0;
4
+ const define_1 = require("../pulse/define");
5
+ const utils_1 = require("../utils");
6
+ const compute_next_run_at_1 = require("./compute-next-run-at");
7
+ const disable_1 = require("./disable");
8
+ const enable_1 = require("./enable");
9
+ const fail_1 = require("./fail");
10
+ const fetch_status_1 = require("./fetch-status");
11
+ const is_expired_1 = require("./is-expired");
12
+ const is_running_1 = require("./is-running");
13
+ const priority_1 = require("./priority");
14
+ const remove_1 = require("./remove");
15
+ const repeat_at_1 = require("./repeat-at");
16
+ const repeat_every_1 = require("./repeat-every");
17
+ const run_1 = require("./run");
18
+ const save_1 = require("./save");
19
+ const schedule_1 = require("./schedule");
20
+ const set_shouldsaveresult_1 = require("./set-shouldsaveresult");
21
+ const to_json_1 = require("./to-json");
22
+ const touch_1 = require("./touch");
23
+ const unique_1 = require("./unique");
24
+ class Job {
25
+ _lazyBindings = {};
26
+ pulse;
27
+ attrs;
28
+ constructor(options) {
29
+ const { pulse, type, nextRunAt, ...args } = options ?? {};
30
+ this.pulse = pulse;
31
+ args.priority = args.priority === undefined ? define_1.JobPriority.normal : (0, utils_1.parsePriority)(args.priority);
32
+ args.shouldSaveResult = args.shouldSaveResult || false;
33
+ const attrs = {};
34
+ for (const key in args) {
35
+ if ({}.hasOwnProperty.call(args, key)) {
36
+ attrs[key] = args[key];
37
+ }
38
+ }
39
+ this.attrs = {
40
+ ...attrs,
41
+ name: attrs.name || '',
42
+ priority: attrs.priority,
43
+ type: type || 'once',
44
+ nextRunAt: nextRunAt || new Date(),
45
+ };
46
+ }
47
+ get toJSON() {
48
+ return this.bindMethod('toJSON', to_json_1.toJson);
49
+ }
50
+ get computeNextRunAt() {
51
+ return this.bindMethod('computeNextRunAt', compute_next_run_at_1.computeNextRunAt);
52
+ }
53
+ get repeatEvery() {
54
+ return this.bindMethod('repeatEvery', repeat_every_1.repeatEvery);
55
+ }
56
+ get repeatAt() {
57
+ return this.bindMethod('repeatAt', repeat_at_1.repeatAt);
58
+ }
59
+ get disable() {
60
+ return this.bindMethod('disable', disable_1.disable);
61
+ }
62
+ get enable() {
63
+ return this.bindMethod('enable', enable_1.enable);
64
+ }
65
+ get unique() {
66
+ return this.bindMethod('unique', unique_1.unique);
67
+ }
68
+ get schedule() {
69
+ return this.bindMethod('schedule', schedule_1.schedule);
70
+ }
71
+ get priority() {
72
+ return this.bindMethod('priority', priority_1.priority);
73
+ }
74
+ get fail() {
75
+ return this.bindMethod('fail', fail_1.fail);
76
+ }
77
+ get run() {
78
+ return this.bindMethod('run', run_1.run);
79
+ }
80
+ get isRunning() {
81
+ return this.bindMethod('isRunning', is_running_1.isRunning);
82
+ }
83
+ get isExpired() {
84
+ return this.bindMethod('isExpired', is_expired_1.isExpired);
85
+ }
86
+ get save() {
87
+ return this.bindMethod('save', save_1.save);
88
+ }
89
+ get remove() {
90
+ return this.bindMethod('remove', remove_1.remove);
91
+ }
92
+ get touch() {
93
+ return this.bindMethod('touch', touch_1.touch);
94
+ }
95
+ get setShouldSaveResult() {
96
+ return this.bindMethod('setShouldSaveResult', set_shouldsaveresult_1.setShouldSaveResult);
97
+ }
98
+ get fetchStatus() {
99
+ return this.bindMethod('fetchStatus', fetch_status_1.fetchStatus);
100
+ }
101
+ bindMethod(methodName, fn) {
102
+ if (!this._lazyBindings[methodName]) {
103
+ this._lazyBindings[methodName] = fn.bind(this);
104
+ }
105
+ return this._lazyBindings[methodName];
106
+ }
107
+ }
108
+ exports.Job = Job;
109
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/job/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export type IsExpiredMethod = (useRealStatus?: boolean) => boolean;
2
+ export declare const isExpired: IsExpiredMethod;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isExpired = void 0;
4
+ const isExpired = function (useRealStatus = false) {
5
+ if (useRealStatus) {
6
+ this.fetchStatus();
7
+ }
8
+ const definition = this.pulse._definitions[this.attrs.name];
9
+ const lockDeadline = new Date(Date.now() - definition.lockLifetime);
10
+ if (this.attrs.lockedAt && this.attrs.lockedAt < lockDeadline) {
11
+ return true;
12
+ }
13
+ return false;
14
+ };
15
+ exports.isExpired = isExpired;
16
+ //# sourceMappingURL=is-expired.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-expired.js","sourceRoot":"","sources":["../../src/job/is-expired.ts"],"names":[],"mappings":";;;AAGO,MAAM,SAAS,GAAoB,UAAqB,aAAa,GAAG,KAAK;IAClF,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE5D,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IAEpE,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,YAAY,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAZW,QAAA,SAAS,aAYpB"}
@@ -0,0 +1,2 @@
1
+ export type IsRunningMethod = (useRealStatus?: boolean) => boolean;
2
+ export declare const isRunning: IsRunningMethod;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isRunning = void 0;
4
+ const isRunning = function (useRealStatus = false) {
5
+ if (useRealStatus) {
6
+ this.fetchStatus();
7
+ }
8
+ ``;
9
+ if (!this.attrs.lastRunAt) {
10
+ return false;
11
+ }
12
+ if (!this.attrs.lastFinishedAt) {
13
+ return true;
14
+ }
15
+ if (this.attrs.lockedAt && this.attrs.lastRunAt.getTime() > this.attrs.lastFinishedAt.getTime()) {
16
+ return true;
17
+ }
18
+ return false;
19
+ };
20
+ exports.isRunning = isRunning;
21
+ //# sourceMappingURL=is-running.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-running.js","sourceRoot":"","sources":["../../src/job/is-running.ts"],"names":[],"mappings":";;;AAYO,MAAM,SAAS,GAAoB,UAAqB,aAAa,GAAG,KAAK;IAClF,IAAI,aAAa,EAAE,CAAC;QAClB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IACD,EAAE,CAAC;IACH,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAlBW,QAAA,SAAS,aAkBpB"}
@@ -0,0 +1,3 @@
1
+ import { Job } from '.';
2
+ export type PriorityMethod = (priority: string) => Job;
3
+ export declare const priority: PriorityMethod;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.priority = void 0;
4
+ const utils_1 = require("../utils");
5
+ const priority = function (priority) {
6
+ this.attrs.priority = (0, utils_1.parsePriority)(priority);
7
+ return this;
8
+ };
9
+ exports.priority = priority;
10
+ //# sourceMappingURL=priority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priority.js","sourceRoot":"","sources":["../../src/job/priority.ts"],"names":[],"mappings":";;;AACA,oCAAyC;AAOlC,MAAM,QAAQ,GAAmB,UAAqB,QAAQ;IACnE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAA,qBAAa,EAAC,QAAQ,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAHW,QAAA,QAAQ,YAGnB"}
@@ -0,0 +1,2 @@
1
+ export type RemoveMethod = () => Promise<number | undefined>;
2
+ export declare const remove: RemoveMethod;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.remove = void 0;
4
+ const remove = async function () {
5
+ return this.pulse.cancel({ _id: this.attrs._id });
6
+ };
7
+ exports.remove = remove;
8
+ //# sourceMappingURL=remove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remove.js","sourceRoot":"","sources":["../../src/job/remove.ts"],"names":[],"mappings":";;;AAQO,MAAM,MAAM,GAAiB,KAAK;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;AACpD,CAAC,CAAC;AAFW,QAAA,MAAM,UAEjB"}
@@ -0,0 +1,3 @@
1
+ import { Job } from '.';
2
+ export type RepeatAtMethod = (time: string) => Job;
3
+ export declare const repeatAt: RepeatAtMethod;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.repeatAt = void 0;
4
+ const repeatAt = function (time) {
5
+ this.attrs.repeatAt = time;
6
+ return this;
7
+ };
8
+ exports.repeatAt = repeatAt;
9
+ //# sourceMappingURL=repeat-at.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repeat-at.js","sourceRoot":"","sources":["../../src/job/repeat-at.ts"],"names":[],"mappings":";;;AASO,MAAM,QAAQ,GAAmB,UAAqB,IAAI;IAC/D,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC3B,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAHW,QAAA,QAAQ,YAGnB"}
@@ -0,0 +1,10 @@
1
+ import { Job } from '.';
2
+ export interface JobOptions {
3
+ timezone?: string;
4
+ startDate?: Date | number;
5
+ endDate?: Date | number;
6
+ skipDays?: string;
7
+ skipImmediate?: boolean;
8
+ }
9
+ export type RepeatEveryMethod = (interval: string, options?: JobOptions) => Job;
10
+ export declare const repeatEvery: RepeatEveryMethod;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.repeatEvery = void 0;
4
+ const repeatEvery = function (interval, options = {}) {
5
+ this.attrs.repeatInterval = interval;
6
+ this.attrs.repeatTimezone = options.timezone ? options.timezone : null;
7
+ this.attrs.startDate = options.startDate ?? null;
8
+ this.attrs.endDate = options.endDate ?? null;
9
+ this.attrs.skipDays = options.skipDays ?? null;
10
+ if (options.skipImmediate) {
11
+ this.attrs.lastRunAt = this.attrs.nextRunAt || new Date();
12
+ this.computeNextRunAt();
13
+ this.attrs.lastRunAt = undefined;
14
+ }
15
+ else {
16
+ this.computeNextRunAt();
17
+ }
18
+ return this;
19
+ };
20
+ exports.repeatEvery = repeatEvery;
21
+ //# sourceMappingURL=repeat-every.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repeat-every.js","sourceRoot":"","sources":["../../src/job/repeat-every.ts"],"names":[],"mappings":";;;AAkBO,MAAM,WAAW,GAAsB,UAAqB,QAAQ,EAAE,OAAO,GAAG,EAAE;IACvF,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,QAAQ,CAAC;IACrC,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAGvE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IACjD,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IAC7C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;IAC/C,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;QAE1B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IACnC,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAlBW,QAAA,WAAW,eAkBtB"}
@@ -0,0 +1,3 @@
1
+ import { Job } from '.';
2
+ export type RunMethod = () => Promise<Job>;
3
+ export declare const run: RunMethod;
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.run = 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:job');
8
+ const run = async function () {
9
+ const { pulse } = this;
10
+ const definition = pulse._definitions[this.attrs.name];
11
+ return new Promise(async (resolve, reject) => {
12
+ this.attrs.lastRunAt = new Date();
13
+ const previousRunAt = this.attrs.nextRunAt;
14
+ debug('[%s:%s] setting lastRunAt to: %s', this.attrs.name, this.attrs._id, this.attrs.lastRunAt.toISOString());
15
+ this.computeNextRunAt();
16
+ await this.save();
17
+ let finished = false;
18
+ let resumeOnRestartSkipped = false;
19
+ const jobCallback = async (error, result) => {
20
+ if (finished) {
21
+ return;
22
+ }
23
+ finished = true;
24
+ if (error) {
25
+ this.fail(error);
26
+ }
27
+ else {
28
+ if (!resumeOnRestartSkipped) {
29
+ this.attrs.lastFinishedAt = new Date();
30
+ this.attrs.finishedCount = (this.attrs.finishedCount || 0) + 1;
31
+ if (this.attrs.shouldSaveResult && result) {
32
+ this.attrs.result = result;
33
+ }
34
+ }
35
+ }
36
+ this.attrs.lockedAt = null;
37
+ await this.save().catch((error) => {
38
+ debug('[%s:%s] failed to be saved to MongoDB', this.attrs.name, this.attrs._id);
39
+ reject(error);
40
+ });
41
+ debug('[%s:%s] was saved successfully to MongoDB', this.attrs.name, this.attrs._id);
42
+ if (error) {
43
+ pulse.emit('fail', error, this);
44
+ pulse.emit('fail:' + this.attrs.name, error, this);
45
+ debug('[%s:%s] has failed [%s]', this.attrs.name, this.attrs._id, error.message);
46
+ }
47
+ else {
48
+ pulse.emit('success', this);
49
+ pulse.emit('success:' + this.attrs.name, this);
50
+ debug('[%s:%s] has succeeded', this.attrs.name, this.attrs._id);
51
+ }
52
+ pulse.emit('complete', this);
53
+ pulse.emit('complete:' + this.attrs.name, this);
54
+ debug('[%s:%s] job finished at [%s] and was unlocked', this.attrs.name, this.attrs._id, this.attrs.lastFinishedAt);
55
+ resolve(this);
56
+ };
57
+ try {
58
+ pulse.emit('start', this);
59
+ pulse.emit('start:' + this.attrs.name, this);
60
+ debug('[%s:%s] starting job', this.attrs.name, this.attrs._id);
61
+ if (!definition) {
62
+ debug('[%s:%s] has no definition, can not run', this.attrs.name, this.attrs._id);
63
+ throw new utils_1.JobError('Undefined job');
64
+ }
65
+ if (!this.pulse._resumeOnRestart &&
66
+ previousRunAt &&
67
+ this.pulse._readyAt >= previousRunAt &&
68
+ this.attrs.nextRunAt) {
69
+ debug('[%s:%s] job resumeOnRestart skipped', this.attrs.name, this.attrs._id);
70
+ resumeOnRestartSkipped = true;
71
+ await jobCallback(undefined, 'skipped');
72
+ return;
73
+ }
74
+ this.attrs.runCount = (this.attrs.runCount || 0) + 1;
75
+ if (definition.fn.length === 2) {
76
+ debug('[%s:%s] process function being called', this.attrs.name, this.attrs._id);
77
+ await definition.fn(this, jobCallback);
78
+ }
79
+ else {
80
+ debug('[%s:%s] process function being called', this.attrs.name, this.attrs._id);
81
+ const result = await definition.fn(this);
82
+ await jobCallback(undefined, result);
83
+ }
84
+ }
85
+ catch (error) {
86
+ debug('[%s:%s] unknown error occurred', this.attrs.name, this.attrs._id);
87
+ await jobCallback(error);
88
+ }
89
+ });
90
+ };
91
+ exports.run = run;
92
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/job/run.ts"],"names":[],"mappings":";;;;AAAA,0DAAmC;AAEnC,oCAAoC;AAEpC,MAAM,KAAK,GAAG,IAAA,eAAc,EAAC,WAAW,CAAC,CAAC;AAQnC,MAAM,GAAG,GAAc,KAAK;IACjC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,MAAM,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEvD,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAElC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAC3C,KAAK,CAAC,kCAAkC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/G,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAElB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,sBAAsB,GAAG,KAAK,CAAC;QACnC,MAAM,WAAW,GAAG,KAAK,EAAE,KAAa,EAAE,MAAgB,EAAE,EAAE;YAE5D,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO;YACT,CAAC;YAED,QAAQ,GAAG,IAAI,CAAC;YAEhB,IAAI,KAAK,EAAE,CAAC;gBACV,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,sBAAsB,EAAE,CAAC;oBAC5B,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBAE/D,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,IAAI,MAAM,EAAE,CAAC;wBAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;oBAC7B,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YAE3B,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAY,EAAE,EAAE;gBACvC,KAAK,CAAC,uCAAuC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChF,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,2CAA2C,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAEpF,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;gBACnD,KAAK,CAAC,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACnF,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC/C,KAAK,CAAC,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClE,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC7B,KAAK,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAChD,KAAK,CACH,+CAA+C,EAC/C,IAAI,CAAC,KAAK,CAAC,IAAI,EACf,IAAI,CAAC,KAAK,CAAC,GAAG,EACd,IAAI,CAAC,KAAK,CAAC,cAAc,CAC1B,CAAC;YAGF,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC1B,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7C,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,KAAK,CAAC,wCAAwC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjF,MAAM,IAAI,gBAAQ,CAAC,eAAe,CAAC,CAAC;YACtC,CAAC;YAGD,IACE,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB;gBAC5B,aAAa;gBACb,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,aAAa;gBACpC,IAAI,CAAC,KAAK,CAAC,SAAS,EACpB,CAAC;gBACD,KAAK,CAAC,qCAAqC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC9E,sBAAsB,GAAG,IAAI,CAAC;gBAC9B,MAAM,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;gBACxC,OAAO;YACT,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAErD,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,KAAK,CAAC,uCAAuC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChF,MAAM,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;YACzC,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,uCAAuC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChF,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,KAAK,CAAC,gCAAgC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzE,MAAM,WAAW,CAAC,KAAc,CAAC,CAAC;QACpC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAvGW,QAAA,GAAG,OAuGd"}
@@ -0,0 +1,3 @@
1
+ import { Job } from '.';
2
+ export type SaveMethod = () => Promise<Job>;
3
+ export declare const save: SaveMethod;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.save = void 0;
4
+ const save = async function () {
5
+ return this.pulse.saveJob(this);
6
+ };
7
+ exports.save = save;
8
+ //# sourceMappingURL=save.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"save.js","sourceRoot":"","sources":["../../src/job/save.ts"],"names":[],"mappings":";;;AASO,MAAM,IAAI,GAAe,KAAK;IACnC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC,CAAC;AAFW,QAAA,IAAI,QAEf"}
@@ -0,0 +1,3 @@
1
+ import { Job } from '.';
2
+ export type ScheduleMethod = (time: string | Date) => Job;
3
+ export declare const schedule: ScheduleMethod;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.schedule = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const date_js_1 = tslib_1.__importDefault(require("date.js"));
6
+ const schedule = function (time) {
7
+ const d = new Date(time);
8
+ this.attrs.nextRunAt = Number.isNaN(d.getTime()) ? (0, date_js_1.default)(time) : d;
9
+ return this;
10
+ };
11
+ exports.schedule = schedule;
12
+ //# sourceMappingURL=schedule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedule.js","sourceRoot":"","sources":["../../src/job/schedule.ts"],"names":[],"mappings":";;;;AACA,8DAA2B;AAUpB,MAAM,QAAQ,GAAmB,UAAqB,IAAI;IAC/D,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,IAAA,iBAAI,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAJW,QAAA,QAAQ,YAInB"}
@@ -0,0 +1,3 @@
1
+ import { Job } from '.';
2
+ export type SetShouldSaveResultMethod = (shouldSaveResult: boolean) => Job;
3
+ export declare const setShouldSaveResult: SetShouldSaveResultMethod;
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setShouldSaveResult = void 0;
4
+ const setShouldSaveResult = function (shouldSaveResult) {
5
+ this.attrs.shouldSaveResult = shouldSaveResult;
6
+ return this;
7
+ };
8
+ exports.setShouldSaveResult = setShouldSaveResult;
9
+ //# sourceMappingURL=set-shouldsaveresult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-shouldsaveresult.js","sourceRoot":"","sources":["../../src/job/set-shouldsaveresult.ts"],"names":[],"mappings":";;;AAOO,MAAM,mBAAmB,GAA8B,UAAqB,gBAAgB;IACjG,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAHW,QAAA,mBAAmB,uBAG9B"}
@@ -0,0 +1,3 @@
1
+ import { JobAttributes } from '.';
2
+ export type ToJsonMethod = () => Partial<JobAttributes>;
3
+ export declare const toJson: ToJsonMethod;
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toJson = void 0;
4
+ const toJson = function () {
5
+ const attrs = this.attrs || {};
6
+ const result = {};
7
+ for (const prop in attrs) {
8
+ if ({}.hasOwnProperty.call(attrs, prop)) {
9
+ result[prop] = attrs[prop];
10
+ }
11
+ }
12
+ const dates = ['lastRunAt', 'lastFinishedAt', 'nextRunAt', 'failedAt', 'lockedAt'];
13
+ dates.forEach((d) => {
14
+ if (result[d]) {
15
+ result[d] = new Date(result[d]);
16
+ }
17
+ });
18
+ return result;
19
+ };
20
+ exports.toJson = toJson;
21
+ //# sourceMappingURL=to-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-json.js","sourceRoot":"","sources":["../../src/job/to-json.ts"],"names":[],"mappings":";;;AASO,MAAM,MAAM,GAAiB;IAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;YAExC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IACnF,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAElB,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAEd,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AArBW,QAAA,MAAM,UAqBjB"}
@@ -0,0 +1,3 @@
1
+ import { Job } from '.';
2
+ export type TouchMethod = (progress?: number) => Promise<Job>;
3
+ export declare const touch: TouchMethod;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.touch = void 0;
4
+ const utils_1 = require("../utils");
5
+ const touch = async function (progress) {
6
+ if (progress && (progress < 0 || progress > 100)) {
7
+ throw new utils_1.JobError('Progress must be a number between 0 and 100');
8
+ }
9
+ this.attrs.lockedAt = new Date();
10
+ this.attrs.progress = progress;
11
+ return this.save();
12
+ };
13
+ exports.touch = touch;
14
+ //# sourceMappingURL=touch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"touch.js","sourceRoot":"","sources":["../../src/job/touch.ts"],"names":[],"mappings":";;;AACA,oCAAoC;AAS7B,MAAM,KAAK,GAAgB,KAAK,WAAsB,QAAS;IACpE,IAAI,QAAQ,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,gBAAQ,CAAC,6CAA6C,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC/B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;AACrB,CAAC,CAAC;AAPW,QAAA,KAAK,SAOhB"}
@@ -0,0 +1,6 @@
1
+ import { Document, Filter } from 'mongodb';
2
+ import { Job } from '.';
3
+ export type UniqueMethod<TSchema extends Document = Document> = (filter: Filter<TSchema>, options?: {
4
+ insertOnly: boolean;
5
+ }) => Job;
6
+ export declare const unique: UniqueMethod;