mongo-job-scheduler 0.1.1 → 0.1.2
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/dist/core/scheduler.js +9 -5
- package/dist/events/emitter.js +6 -2
- package/dist/events/index.js +18 -2
- package/dist/events/typed-emitter.js +7 -3
- package/dist/index.js +26 -6
- package/dist/store/in-memory-job-store.js +12 -8
- package/dist/store/index.js +19 -3
- package/dist/store/job-store.js +2 -1
- package/dist/store/mongo/connect.js +6 -3
- package/dist/store/mongo/index.js +18 -2
- package/dist/store/mongo/mongo-job-store.js +5 -1
- package/dist/store/mutex.js +5 -1
- package/dist/store/store-errors.js +7 -2
- package/dist/types/events.js +2 -1
- package/dist/types/index.js +22 -6
- package/dist/types/job.js +2 -1
- package/dist/types/lifecycle.js +2 -1
- package/dist/types/repeat.js +2 -1
- package/dist/types/retry.js +2 -1
- package/dist/types/schedule.js +2 -1
- package/dist/worker/index.js +18 -2
- package/dist/worker/repeat.js +6 -3
- package/dist/worker/retry.js +4 -1
- package/dist/worker/types.js +2 -1
- package/dist/worker/worker.js +10 -6
- package/package.json +1 -1
package/dist/core/scheduler.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Scheduler = void 0;
|
|
4
|
+
const events_1 = require("../events");
|
|
5
|
+
const worker_1 = require("../worker");
|
|
6
|
+
class Scheduler {
|
|
4
7
|
constructor(options = {}) {
|
|
5
|
-
this.emitter = new SchedulerEmitter();
|
|
8
|
+
this.emitter = new events_1.SchedulerEmitter();
|
|
6
9
|
this.workers = [];
|
|
7
10
|
this.started = false;
|
|
8
11
|
this.id = options.id ?? `scheduler-${Math.random().toString(36).slice(2)}`;
|
|
@@ -68,7 +71,7 @@ export class Scheduler {
|
|
|
68
71
|
// start workers
|
|
69
72
|
// -------------------------------
|
|
70
73
|
for (let i = 0; i < this.workerCount; i++) {
|
|
71
|
-
const worker = new Worker(this.store, this.emitter, this.handler, {
|
|
74
|
+
const worker = new worker_1.Worker(this.store, this.emitter, this.handler, {
|
|
72
75
|
pollIntervalMs: this.pollInterval,
|
|
73
76
|
lockTimeoutMs: this.lockTimeout,
|
|
74
77
|
workerId: `${this.id}-w${i}`,
|
|
@@ -95,3 +98,4 @@ export class Scheduler {
|
|
|
95
98
|
return this.id;
|
|
96
99
|
}
|
|
97
100
|
}
|
|
101
|
+
exports.Scheduler = Scheduler;
|
package/dist/events/emitter.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SchedulerEmitter = void 0;
|
|
4
|
+
const typed_emitter_1 = require("./typed-emitter");
|
|
5
|
+
class SchedulerEmitter extends typed_emitter_1.TypedEventEmitter {
|
|
3
6
|
emitSafe(event, payload) {
|
|
4
7
|
try {
|
|
5
8
|
this.emitUnsafe(event, payload);
|
|
@@ -15,3 +18,4 @@ export class SchedulerEmitter extends TypedEventEmitter {
|
|
|
15
18
|
}
|
|
16
19
|
}
|
|
17
20
|
}
|
|
21
|
+
exports.SchedulerEmitter = SchedulerEmitter;
|
package/dist/events/index.js
CHANGED
|
@@ -1,2 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./emitter"), exports);
|
|
18
|
+
__exportStar(require("./typed-emitter"), exports);
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TypedEventEmitter = void 0;
|
|
4
|
+
const events_1 = require("events");
|
|
5
|
+
class TypedEventEmitter {
|
|
3
6
|
constructor() {
|
|
4
|
-
this.emitter = new EventEmitter();
|
|
7
|
+
this.emitter = new events_1.EventEmitter();
|
|
5
8
|
}
|
|
6
9
|
on(event, listener) {
|
|
7
10
|
this.emitter.on(event, listener);
|
|
@@ -19,3 +22,4 @@ export class TypedEventEmitter {
|
|
|
19
22
|
this.emitter.emit(event, payload);
|
|
20
23
|
}
|
|
21
24
|
}
|
|
25
|
+
exports.TypedEventEmitter = TypedEventEmitter;
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,26 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.InMemoryJobStore = exports.MongoJobStore = exports.Scheduler = void 0;
|
|
18
|
+
var scheduler_1 = require("./core/scheduler");
|
|
19
|
+
Object.defineProperty(exports, "Scheduler", { enumerable: true, get: function () { return scheduler_1.Scheduler; } });
|
|
20
|
+
var mongo_job_store_1 = require("./store/mongo/mongo-job-store");
|
|
21
|
+
Object.defineProperty(exports, "MongoJobStore", { enumerable: true, get: function () { return mongo_job_store_1.MongoJobStore; } });
|
|
22
|
+
var in_memory_job_store_1 = require("./store/in-memory-job-store");
|
|
23
|
+
Object.defineProperty(exports, "InMemoryJobStore", { enumerable: true, get: function () { return in_memory_job_store_1.InMemoryJobStore; } });
|
|
24
|
+
__exportStar(require("./types/job"), exports);
|
|
25
|
+
__exportStar(require("./types/retry"), exports);
|
|
26
|
+
__exportStar(require("./types/repeat"), exports);
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InMemoryJobStore = void 0;
|
|
4
|
+
const store_errors_1 = require("./store-errors");
|
|
5
|
+
const mutex_1 = require("./mutex");
|
|
6
|
+
class InMemoryJobStore {
|
|
4
7
|
constructor() {
|
|
5
8
|
this.jobs = new Map();
|
|
6
|
-
this.mutex = new Mutex();
|
|
9
|
+
this.mutex = new mutex_1.Mutex();
|
|
7
10
|
}
|
|
8
11
|
generateId() {
|
|
9
12
|
return Math.random().toString(36).slice(2);
|
|
@@ -48,7 +51,7 @@ export class InMemoryJobStore {
|
|
|
48
51
|
async markCompleted(jobId) {
|
|
49
52
|
const job = this.jobs.get(String(jobId));
|
|
50
53
|
if (!job)
|
|
51
|
-
throw new JobNotFoundError();
|
|
54
|
+
throw new store_errors_1.JobNotFoundError();
|
|
52
55
|
job.status = "completed";
|
|
53
56
|
job.lastRunAt = new Date();
|
|
54
57
|
job.updatedAt = new Date();
|
|
@@ -56,7 +59,7 @@ export class InMemoryJobStore {
|
|
|
56
59
|
async markFailed(jobId, error) {
|
|
57
60
|
const job = this.jobs.get(String(jobId));
|
|
58
61
|
if (!job)
|
|
59
|
-
throw new JobNotFoundError();
|
|
62
|
+
throw new store_errors_1.JobNotFoundError();
|
|
60
63
|
job.status = "failed";
|
|
61
64
|
job.lastError = error;
|
|
62
65
|
job.updatedAt = new Date();
|
|
@@ -64,7 +67,7 @@ export class InMemoryJobStore {
|
|
|
64
67
|
async reschedule(jobId, nextRunAt, updates) {
|
|
65
68
|
const job = this.jobs.get(String(jobId));
|
|
66
69
|
if (!job)
|
|
67
|
-
throw new JobNotFoundError();
|
|
70
|
+
throw new store_errors_1.JobNotFoundError();
|
|
68
71
|
job.status = "pending";
|
|
69
72
|
job.nextRunAt = nextRunAt;
|
|
70
73
|
if (updates?.attempts != null) {
|
|
@@ -96,8 +99,9 @@ export class InMemoryJobStore {
|
|
|
96
99
|
async cancel(jobId) {
|
|
97
100
|
const job = this.jobs.get(String(jobId));
|
|
98
101
|
if (!job)
|
|
99
|
-
throw new JobNotFoundError();
|
|
102
|
+
throw new store_errors_1.JobNotFoundError();
|
|
100
103
|
job.status = "cancelled";
|
|
101
104
|
job.updatedAt = new Date();
|
|
102
105
|
}
|
|
103
106
|
}
|
|
107
|
+
exports.InMemoryJobStore = InMemoryJobStore;
|
package/dist/store/index.js
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./job-store"), exports);
|
|
18
|
+
__exportStar(require("./store-errors"), exports);
|
|
19
|
+
__exportStar(require("./in-memory-job-store"), exports);
|
package/dist/store/job-store.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.connectMongo = connectMongo;
|
|
4
|
+
const mongodb_1 = require("mongodb");
|
|
5
|
+
async function connectMongo(options) {
|
|
6
|
+
const client = new mongodb_1.MongoClient(options.uri);
|
|
4
7
|
await client.connect();
|
|
5
8
|
return client.db(options.dbName);
|
|
6
9
|
}
|
|
@@ -1,2 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./mongo-job-store"), exports);
|
|
18
|
+
__exportStar(require("./connect"), exports);
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MongoJobStore = void 0;
|
|
4
|
+
class MongoJobStore {
|
|
2
5
|
constructor(db, options = {}) {
|
|
3
6
|
this.collection = db.collection(options.collectionName ?? "scheduler_jobs");
|
|
4
7
|
this.defaultLockTimeoutMs = options.lockTimeoutMs ?? 30000;
|
|
@@ -131,3 +134,4 @@ export class MongoJobStore {
|
|
|
131
134
|
return result.modifiedCount;
|
|
132
135
|
}
|
|
133
136
|
}
|
|
137
|
+
exports.MongoJobStore = MongoJobStore;
|
package/dist/store/mutex.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Mutex = void 0;
|
|
4
|
+
class Mutex {
|
|
2
5
|
constructor() {
|
|
3
6
|
this.locked = false;
|
|
4
7
|
this.waiting = [];
|
|
@@ -22,3 +25,4 @@ export class Mutex {
|
|
|
22
25
|
});
|
|
23
26
|
}
|
|
24
27
|
}
|
|
28
|
+
exports.Mutex = Mutex;
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JobLockError = exports.JobNotFoundError = void 0;
|
|
4
|
+
class JobNotFoundError extends Error {
|
|
2
5
|
constructor(message = "Job not found") {
|
|
3
6
|
super(message);
|
|
4
7
|
this.name = "JobNotFoundError";
|
|
5
8
|
}
|
|
6
9
|
}
|
|
7
|
-
|
|
10
|
+
exports.JobNotFoundError = JobNotFoundError;
|
|
11
|
+
class JobLockError extends Error {
|
|
8
12
|
constructor(message = "Failed to acquire job lock") {
|
|
9
13
|
super(message);
|
|
10
14
|
this.name = "JobLockError";
|
|
11
15
|
}
|
|
12
16
|
}
|
|
17
|
+
exports.JobLockError = JobLockError;
|
package/dist/types/events.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/types/index.js
CHANGED
|
@@ -1,6 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./job"), exports);
|
|
18
|
+
__exportStar(require("./retry"), exports);
|
|
19
|
+
__exportStar(require("./repeat"), exports);
|
|
20
|
+
__exportStar(require("./lifecycle"), exports);
|
|
21
|
+
__exportStar(require("./events"), exports);
|
|
22
|
+
__exportStar(require("./schedule"), exports);
|
package/dist/types/job.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/types/lifecycle.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/types/repeat.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/types/retry.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/types/schedule.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/worker/index.js
CHANGED
|
@@ -1,2 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./worker"), exports);
|
|
18
|
+
__exportStar(require("./types"), exports);
|
package/dist/worker/repeat.js
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getNextRunAt = getNextRunAt;
|
|
4
|
+
const cron_parser_1 = require("cron-parser");
|
|
5
|
+
function getNextRunAt(repeat, base, defaultTimezone) {
|
|
3
6
|
if (repeat.every != null) {
|
|
4
7
|
return new Date(base.getTime() + repeat.every);
|
|
5
8
|
}
|
|
6
9
|
if (repeat.cron) {
|
|
7
|
-
const interval = parseExpression(repeat.cron, {
|
|
10
|
+
const interval = (0, cron_parser_1.parseExpression)(repeat.cron, {
|
|
8
11
|
currentDate: base,
|
|
9
12
|
tz: repeat.timezone ?? defaultTimezone ?? "UTC",
|
|
10
13
|
});
|
package/dist/worker/retry.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getRetryDelay = getRetryDelay;
|
|
4
|
+
function getRetryDelay(retry, attempt) {
|
|
2
5
|
if (typeof retry.delay === "function") {
|
|
3
6
|
return retry.delay(attempt);
|
|
4
7
|
}
|
package/dist/worker/types.js
CHANGED
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
package/dist/worker/worker.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Worker = void 0;
|
|
4
|
+
const retry_1 = require("./retry");
|
|
5
|
+
const repeat_1 = require("./repeat");
|
|
6
|
+
class Worker {
|
|
4
7
|
constructor(store, emitter, handler, options = {}) {
|
|
5
8
|
this.store = store;
|
|
6
9
|
this.emitter = emitter;
|
|
@@ -53,11 +56,11 @@ export class Worker {
|
|
|
53
56
|
// ---------------------------
|
|
54
57
|
if (job.repeat?.cron) {
|
|
55
58
|
let base = job.lastScheduledAt ?? job.nextRunAt ?? new Date(now);
|
|
56
|
-
let next = getNextRunAt(job.repeat, base, this.defaultTimezone);
|
|
59
|
+
let next = (0, repeat_1.getNextRunAt)(job.repeat, base, this.defaultTimezone);
|
|
57
60
|
// skip missed cron slots
|
|
58
61
|
while (next.getTime() <= now) {
|
|
59
62
|
base = next;
|
|
60
|
-
next = getNextRunAt(job.repeat, base, this.defaultTimezone);
|
|
63
|
+
next = (0, repeat_1.getNextRunAt)(job.repeat, base, this.defaultTimezone);
|
|
61
64
|
}
|
|
62
65
|
// persist schedule immediately
|
|
63
66
|
job.lastScheduledAt = next;
|
|
@@ -83,7 +86,7 @@ export class Worker {
|
|
|
83
86
|
const attempts = (job.attempts ?? 0) + 1;
|
|
84
87
|
const retry = job.retry;
|
|
85
88
|
if (retry && attempts < retry.maxAttempts) {
|
|
86
|
-
const nextRunAt = new Date(Date.now() + getRetryDelay(retry, attempts));
|
|
89
|
+
const nextRunAt = new Date(Date.now() + (0, retry_1.getRetryDelay)(retry, attempts));
|
|
87
90
|
await this.store.reschedule(job._id, nextRunAt, { attempts });
|
|
88
91
|
this.emitter.emitSafe("job:retry", {
|
|
89
92
|
...job,
|
|
@@ -100,3 +103,4 @@ export class Worker {
|
|
|
100
103
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
101
104
|
}
|
|
102
105
|
}
|
|
106
|
+
exports.Worker = Worker;
|
package/package.json
CHANGED