@shrub/queue-bullmq 0.5.56 → 0.5.59
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/module.d.ts +9 -2
- package/dist/module.js +78 -54
- package/package.json +5 -5
package/dist/module.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IModule, IModuleConfigurator, IModuleInitializer } from "@shrub/core";
|
|
2
|
-
import { LoggingModule } from "@shrub/logging";
|
|
3
|
-
import { QueueModule } from "@shrub/queue";
|
|
2
|
+
import { ILogger, LoggingModule } from "@shrub/logging";
|
|
3
|
+
import { IQueue, QueueAdapter, QueueModule } from "@shrub/queue";
|
|
4
4
|
import { ConnectionOptions } from "bullmq";
|
|
5
5
|
export { ConnectionOptions };
|
|
6
6
|
export interface IQueueBullMQConfiguration {
|
|
@@ -24,3 +24,10 @@ export declare class QueueBullMQModule implements IModule {
|
|
|
24
24
|
initialize(init: IModuleInitializer): void;
|
|
25
25
|
configure({ config, next }: IModuleConfigurator): Promise<void>;
|
|
26
26
|
}
|
|
27
|
+
export declare class QueueBullMQAdapter extends QueueAdapter {
|
|
28
|
+
private readonly logger;
|
|
29
|
+
private readonly connection?;
|
|
30
|
+
constructor(logger: ILogger, connection?: ConnectionOptions | undefined, queueNamePatterns?: string[], queueSchedulers?: string[]);
|
|
31
|
+
protected getQueueInstance(name: string): IQueue;
|
|
32
|
+
private initializeSchedulers;
|
|
33
|
+
}
|
package/dist/module.js
CHANGED
|
@@ -1,24 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.QueueBullMQModule = exports.IQueueBullMQConfiguration = void 0;
|
|
3
|
+
exports.QueueBullMQAdapter = exports.QueueBullMQModule = exports.IQueueBullMQConfiguration = void 0;
|
|
4
4
|
const core_1 = require("@shrub/core");
|
|
5
5
|
const logging_1 = require("@shrub/logging");
|
|
6
6
|
const queue_1 = require("@shrub/queue");
|
|
7
7
|
const event_emitter_1 = require("@sprig/event-emitter");
|
|
8
8
|
const bullmq_1 = require("bullmq");
|
|
9
|
-
function convertJob(job) {
|
|
10
|
-
return {
|
|
11
|
-
id: job.id || "",
|
|
12
|
-
name: job.name,
|
|
13
|
-
data: job.data,
|
|
14
|
-
get progress() {
|
|
15
|
-
return job.progress;
|
|
16
|
-
},
|
|
17
|
-
updateProgress(progress) {
|
|
18
|
-
return job.updateProgress(progress);
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
9
|
exports.IQueueBullMQConfiguration = core_1.createConfig();
|
|
23
10
|
class QueueBullMQModule {
|
|
24
11
|
constructor() {
|
|
@@ -31,7 +18,7 @@ class QueueBullMQModule {
|
|
|
31
18
|
}
|
|
32
19
|
initialize(init) {
|
|
33
20
|
init.config(exports.IQueueBullMQConfiguration).register(({ services }) => ({
|
|
34
|
-
useQueue: options => this.adapters.push(new
|
|
21
|
+
useQueue: options => this.adapters.push(new QueueBullMQAdapter(services.get(logging_1.ILogger), options && options.connection, options && options.queueNamePatterns, options && options.queueSchedulers))
|
|
35
22
|
}));
|
|
36
23
|
}
|
|
37
24
|
async configure({ config, next }) {
|
|
@@ -41,7 +28,7 @@ class QueueBullMQModule {
|
|
|
41
28
|
}
|
|
42
29
|
}
|
|
43
30
|
exports.QueueBullMQModule = QueueBullMQModule;
|
|
44
|
-
class
|
|
31
|
+
class QueueBullMQAdapter extends queue_1.QueueAdapter {
|
|
45
32
|
constructor(logger, connection, queueNamePatterns, queueSchedulers) {
|
|
46
33
|
super(queueNamePatterns || ["*"]);
|
|
47
34
|
this.logger = logger;
|
|
@@ -56,29 +43,15 @@ class BullMQQueueAdapter extends queue_1.QueueAdapter {
|
|
|
56
43
|
queueSchedulers.forEach(name => new bullmq_1.QueueScheduler(name, { connection: this.connection }));
|
|
57
44
|
}
|
|
58
45
|
}
|
|
46
|
+
exports.QueueBullMQAdapter = QueueBullMQAdapter;
|
|
59
47
|
class BullMQWrapper {
|
|
60
48
|
constructor(logger, queueName, connection) {
|
|
61
49
|
this.logger = logger;
|
|
62
50
|
this.queueName = queueName;
|
|
63
51
|
this.connection = connection;
|
|
64
|
-
this.jobActive = new QueueEventEmitter();
|
|
65
|
-
this.jobCompleted = new QueueEventEmitter();
|
|
66
|
-
this.jobFailed = new QueueEventEmitter();
|
|
67
|
-
this.jobProgress = new QueueEventEmitter();
|
|
68
52
|
this.workers = new Map();
|
|
69
53
|
this.workerId = 1;
|
|
70
|
-
|
|
71
|
-
get onJobActive() {
|
|
72
|
-
return this.jobActive.event;
|
|
73
|
-
}
|
|
74
|
-
get onJobCompleted() {
|
|
75
|
-
return this.jobCompleted.event;
|
|
76
|
-
}
|
|
77
|
-
get onJobFailed() {
|
|
78
|
-
return this.jobFailed.event;
|
|
79
|
-
}
|
|
80
|
-
get onJobProgress() {
|
|
81
|
-
return this.jobProgress.event;
|
|
54
|
+
this.events = new QueueEventsReference(queueName, connection);
|
|
82
55
|
}
|
|
83
56
|
add(options) {
|
|
84
57
|
const jobOptions = {
|
|
@@ -89,7 +62,7 @@ class BullMQWrapper {
|
|
|
89
62
|
}
|
|
90
63
|
};
|
|
91
64
|
this.instance = this.instance || new bullmq_1.Queue(this.queueName, { connection: this.connection });
|
|
92
|
-
return this.instance.add(options.name || "", options.data || {}, jobOptions).then(job => convertJob(job));
|
|
65
|
+
return this.instance.add(options.name || "", options.data || {}, jobOptions).then(job => this.convertJob(job));
|
|
93
66
|
}
|
|
94
67
|
async close() {
|
|
95
68
|
const promises = Array.from(this.workers.values()).map(worker => worker.close());
|
|
@@ -102,32 +75,32 @@ class BullMQWrapper {
|
|
|
102
75
|
}
|
|
103
76
|
createWorker(optionsOrCallback) {
|
|
104
77
|
const options = this.getWorkerOptions(optionsOrCallback);
|
|
105
|
-
const worker = new bullmq_1.Worker(this.queueName, job => options.callback(convertJob(job)), {
|
|
78
|
+
const worker = new bullmq_1.Worker(this.queueName, job => options.callback(this.convertJob(job)), {
|
|
106
79
|
concurrency: options.concurrency,
|
|
107
80
|
connection: this.connection
|
|
108
81
|
});
|
|
82
|
+
const jobActive = new WorkerEventEmitter(worker, "active", job => ({ job: this.convertJob(job) }));
|
|
83
|
+
const jobCompleted = new WorkerEventEmitter(worker, "completed", (job, returnValue) => ({ job: this.convertJob(job), returnValue }));
|
|
84
|
+
const jobFailed = new WorkerEventEmitter(worker, "failed", (job, error) => ({ job: this.convertJob(job), error }));
|
|
85
|
+
const jobProgress = new WorkerEventEmitter(worker, "progress", (job, progress) => ({ job: this.convertJob(job), progress }));
|
|
109
86
|
// BullMQ recommends attaching to 'error' and since we don't get job info pass the error to the logger
|
|
110
87
|
// https://docs.bullmq.io/guide/workers
|
|
111
88
|
worker.on("error", error => this.logger.logError(error));
|
|
112
|
-
worker.on("active", job => {
|
|
113
|
-
this.logger.logDebug({ name: "BullMQ - job active", queueName: job.queueName, job: job.id });
|
|
114
|
-
this.jobActive.tryEmit(() => ({ job: convertJob(job) }));
|
|
115
|
-
});
|
|
116
|
-
worker.on("completed", (job, returnValue) => {
|
|
117
|
-
this.logger.logDebug({ name: "BullMQ - job completed", queueName: job.queueName, job: job.id });
|
|
118
|
-
this.jobCompleted.tryEmit(() => ({ job: convertJob(job), returnValue }));
|
|
119
|
-
});
|
|
120
|
-
worker.on("failed", (job, error) => {
|
|
121
|
-
this.logger.logWarn({ name: "BullMQ - job failed", queueName: job.queueName, job: job.id, message: error.message, stack: error.stack });
|
|
122
|
-
this.jobFailed.tryEmit(() => ({ job: convertJob(job), error }));
|
|
123
|
-
});
|
|
124
|
-
worker.on("progress", (job, progress) => {
|
|
125
|
-
this.logger.logDebug({ name: "BullMQ - job progress", queueName: job.queueName, job: job.id, progress: typeof progress === "number" ? progress : JSON.stringify(progress) });
|
|
126
|
-
this.jobProgress.tryEmit(() => ({ job: convertJob(job), progress }));
|
|
127
|
-
});
|
|
128
89
|
const id = this.workerId++;
|
|
129
90
|
this.workers.set(id, worker);
|
|
130
91
|
return {
|
|
92
|
+
get onJobActive() {
|
|
93
|
+
return jobActive.event;
|
|
94
|
+
},
|
|
95
|
+
get onJobCompleted() {
|
|
96
|
+
return jobCompleted.event;
|
|
97
|
+
},
|
|
98
|
+
get onJobFailed() {
|
|
99
|
+
return jobFailed.event;
|
|
100
|
+
},
|
|
101
|
+
get onJobProgress() {
|
|
102
|
+
return jobProgress.event;
|
|
103
|
+
},
|
|
131
104
|
close: () => {
|
|
132
105
|
const worker = this.workers.get(id);
|
|
133
106
|
if (worker) {
|
|
@@ -138,13 +111,64 @@ class BullMQWrapper {
|
|
|
138
111
|
}
|
|
139
112
|
};
|
|
140
113
|
}
|
|
114
|
+
convertJob(job) {
|
|
115
|
+
return {
|
|
116
|
+
id: job.id || "",
|
|
117
|
+
name: job.name,
|
|
118
|
+
data: job.data,
|
|
119
|
+
get progress() {
|
|
120
|
+
return job.progress;
|
|
121
|
+
},
|
|
122
|
+
updateProgress: progress => job.updateProgress(progress),
|
|
123
|
+
waitUntilFinished: () => job.waitUntilFinished(this.events.getInstance()).finally(() => this.events.releaseInstance())
|
|
124
|
+
};
|
|
125
|
+
}
|
|
141
126
|
getWorkerOptions(optionsOrCallback) {
|
|
142
127
|
return typeof optionsOrCallback === "function" ? { callback: optionsOrCallback } : optionsOrCallback;
|
|
143
128
|
}
|
|
144
129
|
}
|
|
145
|
-
class
|
|
146
|
-
|
|
147
|
-
|
|
130
|
+
class WorkerEventEmitter extends event_emitter_1.EventEmitter {
|
|
131
|
+
constructor(worker, name, convertArgs) {
|
|
132
|
+
super();
|
|
133
|
+
this.worker = worker;
|
|
134
|
+
this.name = name;
|
|
135
|
+
this.convertArgs = convertArgs;
|
|
136
|
+
this.listener = ((...args) => {
|
|
137
|
+
this.emit(this.convertArgs(...args));
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
callbackRegistered() {
|
|
141
|
+
if (this.count === 1) {
|
|
142
|
+
this.worker.on(this.name, this.listener);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
callbackUnregistered() {
|
|
146
|
+
if (this.count === 0) {
|
|
147
|
+
this.worker.off(this.name, this.listener);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Manages a reference to a QueueEvents object and will close the connection when all references have been released.
|
|
153
|
+
* BullMQ uses Redis Streams so only open a connection when necessary.
|
|
154
|
+
*/
|
|
155
|
+
class QueueEventsReference {
|
|
156
|
+
constructor(queueName, connection) {
|
|
157
|
+
this.queueName = queueName;
|
|
158
|
+
this.connection = connection;
|
|
159
|
+
this.count = 0;
|
|
160
|
+
}
|
|
161
|
+
getInstance() {
|
|
162
|
+
this.events = this.events || new bullmq_1.QueueEvents(this.queueName, { connection: this.connection });
|
|
163
|
+
this.count++;
|
|
164
|
+
return this.events;
|
|
165
|
+
}
|
|
166
|
+
releaseInstance() {
|
|
167
|
+
this.count--;
|
|
168
|
+
if (!this.count && this.events) {
|
|
169
|
+
this.events.close();
|
|
170
|
+
this.events = undefined;
|
|
171
|
+
}
|
|
148
172
|
}
|
|
149
173
|
}
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
174
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzQ0FBNkY7QUFDN0YsNENBQXdEO0FBQ3hELHdDQUVzQjtBQUN0Qix3REFBb0Q7QUFDcEQsbUNBQXlIO0FBcUI1RyxRQUFBLHlCQUF5QixHQUFHLG1CQUFZLEVBQTZCLENBQUM7QUFFbkYsTUFBYSxpQkFBaUI7SUFBOUI7UUFDcUIsYUFBUSxHQUF5QixFQUFFLENBQUM7UUFFNUMsU0FBSSxHQUFHLGNBQWMsQ0FBQztRQUN0QixpQkFBWSxHQUFHO1lBQ3BCLHVCQUFhO1lBQ2IsbUJBQVc7U0FDZCxDQUFDO0lBaUJOLENBQUM7SUFmRyxVQUFVLENBQUMsSUFBd0I7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQ0FBeUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDL0QsUUFBUSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxrQkFBa0IsQ0FDMUQsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBTyxDQUFDLEVBQ3JCLE9BQU8sSUFBSSxPQUFPLENBQUMsVUFBVSxFQUM3QixPQUFPLElBQUksT0FBTyxDQUFDLGlCQUFpQixFQUNwQyxPQUFPLElBQUksT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQzNDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUF1QjtRQUNqRCxNQUFNLElBQUksRUFBRSxDQUFDO1FBQ2IsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywyQkFBbUIsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDSjtBQXhCRCw4Q0F3QkM7QUFFRCxNQUFhLGtCQUFtQixTQUFRLG9CQUFZO0lBQ2hELFlBQ3FCLE1BQWUsRUFDZixVQUE4QixFQUMvQyxpQkFBNEIsRUFDNUIsZUFBMEI7UUFDdEIsS0FBSyxDQUFDLGlCQUFpQixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUpyQixXQUFNLEdBQU4sTUFBTSxDQUFTO1FBQ2YsZUFBVSxHQUFWLFVBQVUsQ0FBb0I7UUFJM0MsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRVMsZ0JBQWdCLENBQUMsSUFBWTtRQUNuQyxPQUFPLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sb0JBQW9CLENBQUMsZUFBeUI7UUFDbEQsbURBQW1EO1FBQ25ELGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLHVCQUFjLENBQUMsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0YsQ0FBQztDQUNKO0FBbEJELGdEQWtCQztBQUVELE1BQU0sYUFBYTtJQU9mLFlBQ3FCLE1BQWUsRUFDZixTQUFpQixFQUNqQixVQUE4QjtRQUY5QixXQUFNLEdBQU4sTUFBTSxDQUFTO1FBQ2YsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQVRsQyxZQUFPLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFJN0MsYUFBUSxHQUFHLENBQUMsQ0FBQztRQU1iLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFDdEUsQ0FBQztJQUVELEdBQUcsQ0FBQyxPQUFvQjtRQUNwQixNQUFNLFVBQVUsR0FBZ0I7WUFDNUIsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO1lBQ3BCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJO2dCQUN0QixJQUFJLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJO2dCQUN6QixXQUFXLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTO2FBQ3hDO1NBQ0osQ0FBQztRQUVGLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLGNBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ25ILENBQUM7SUFFRCxLQUFLLENBQUMsS0FBSztRQUNQLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFckIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7U0FDN0I7UUFFRCxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVksQ0FBQyxpQkFBa0Q7UUFDM0QsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekQsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1lBQ3JGLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztZQUNoQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDOUIsQ0FBQyxDQUFDO1FBRUgsTUFBTSxTQUFTLEdBQUcsSUFBSSxrQkFBa0IsQ0FBZ0MsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsSSxNQUFNLFlBQVksR0FBRyxJQUFJLGtCQUFrQixDQUFzQyxNQUFNLEVBQUUsV0FBVyxFQUFFLENBQUMsR0FBRyxFQUFFLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMxSyxNQUFNLFNBQVMsR0FBRyxJQUFJLGtCQUFrQixDQUFnQyxNQUFNLEVBQUUsUUFBUSxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsSixNQUFNLFdBQVcsR0FBRyxJQUFJLGtCQUFrQixDQUFvQyxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVoSyxzR0FBc0c7UUFDdEcsdUNBQXVDO1FBQ3ZDLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV6RCxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBRTdCLE9BQU87WUFDSCxJQUFJLFdBQVc7Z0JBQ1gsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLGNBQWM7Z0JBQ2QsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDO1lBQzlCLENBQUM7WUFDRCxJQUFJLFdBQVc7Z0JBQ1gsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQzNCLENBQUM7WUFDRCxJQUFJLGFBQWE7Z0JBQ2IsT0FBTyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQzdCLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNSLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUNwQyxJQUFJLE1BQU0sRUFBRTtvQkFDUixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDeEIsT0FBTyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7aUJBQ3pCO2dCQUVELE9BQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQzdCLENBQUM7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFRO1FBQ3ZCLE9BQU87WUFDSCxFQUFFLEVBQUUsR0FBRyxDQUFDLEVBQUUsSUFBSSxFQUFFO1lBQ2hCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNkLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtZQUNkLElBQUksUUFBUTtnQkFDUixPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUM7WUFDeEIsQ0FBQztZQUNELGNBQWMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDO1lBQ3hELGlCQUFpQixFQUFFLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7U0FDekgsQ0FBQztJQUNOLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxpQkFBa0Q7UUFDdkUsT0FBTyxPQUFPLGlCQUFpQixLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUM7SUFDekcsQ0FBQztDQUNKO0FBRUQsTUFBTSxrQkFBMEQsU0FBUSw0QkFBbUI7SUFHdkYsWUFDcUIsTUFBYyxFQUNkLElBQU8sRUFDUCxXQUFrRDtRQUNuRSxLQUFLLEVBQUUsQ0FBQztRQUhTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxTQUFJLEdBQUosSUFBSSxDQUFHO1FBQ1AsZ0JBQVcsR0FBWCxXQUFXLENBQXVDO1FBRW5FLElBQUksQ0FBQyxRQUFRLEdBQXNCLENBQUMsQ0FBQyxHQUFHLElBQW1DLEVBQUUsRUFBRTtZQUMzRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVTLGtCQUFrQjtRQUN4QixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzVDO0lBQ0wsQ0FBQztJQUVTLG9CQUFvQjtRQUMxQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzdDO0lBQ0wsQ0FBQztDQUNKO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxvQkFBb0I7SUFJdEIsWUFDcUIsU0FBaUIsRUFDakIsVUFBOEI7UUFEOUIsY0FBUyxHQUFULFNBQVMsQ0FBUTtRQUNqQixlQUFVLEdBQVYsVUFBVSxDQUFvQjtRQUozQyxVQUFLLEdBQUcsQ0FBQyxDQUFDO0lBS2xCLENBQUM7SUFFRCxXQUFXO1FBQ1AsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksb0JBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBQzlGLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsZUFBZTtRQUNYLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztTQUMzQjtJQUNMLENBQUM7Q0FDSiJ9
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shrub/queue-bullmq",
|
|
3
3
|
"description": "Provides a job/worker queue using BullMQ.",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.59",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -24,14 +24,14 @@
|
|
|
24
24
|
"clean": "rimraf ./dist && rimraf tsconfig.tsbuildinfo"
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@shrub/core": "0.5.
|
|
28
|
-
"@shrub/logging": "0.5.
|
|
29
|
-
"@shrub/queue": "0.5.
|
|
27
|
+
"@shrub/core": "0.5.59",
|
|
28
|
+
"@shrub/logging": "0.5.59",
|
|
29
|
+
"@shrub/queue": "0.5.59",
|
|
30
30
|
"@sprig/event-emitter": "^0.2.0",
|
|
31
31
|
"bullmq": "^1.80.6"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/ioredis": "^4.28.2"
|
|
35
35
|
},
|
|
36
|
-
"gitHead": "
|
|
36
|
+
"gitHead": "be17fea967675b2b1cc5411debd4e276dbd46d05"
|
|
37
37
|
}
|