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 @@
|
|
|
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,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,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,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 @@
|
|
|
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,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"}
|
package/dist/job/run.js
ADDED
|
@@ -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":"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"}
|
package/dist/job/save.js
ADDED
|
@@ -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,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,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,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,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"}
|