@shrub/queue-local 0.5.58 → 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.js +35 -26
- package/package.json +5 -5
package/dist/module.js
CHANGED
|
@@ -35,10 +35,6 @@ class QueueLocalAdapter extends queue_1.QueueAdapter {
|
|
|
35
35
|
getQueueInstance(name) {
|
|
36
36
|
let queue = this.queues.get(name);
|
|
37
37
|
if (!queue) {
|
|
38
|
-
const jobActive = new event_emitter_1.EventEmitter();
|
|
39
|
-
const jobCompleted = new event_emitter_1.EventEmitter();
|
|
40
|
-
const jobFailed = new event_emitter_1.EventEmitter();
|
|
41
|
-
const jobProgress = new event_emitter_1.EventEmitter();
|
|
42
38
|
const asyncQueue = new async_queue_1.AsyncQueue();
|
|
43
39
|
const callbacks = [];
|
|
44
40
|
let index = 0;
|
|
@@ -51,26 +47,10 @@ class QueueLocalAdapter extends queue_1.QueueAdapter {
|
|
|
51
47
|
// TODO: how to handle if there are no handlers for the queue?
|
|
52
48
|
const callback = getCallback();
|
|
53
49
|
if (callback) {
|
|
54
|
-
|
|
55
|
-
await callback(job)
|
|
56
|
-
.then(returnValue => jobCompleted.emit({ job, returnValue }))
|
|
57
|
-
.catch(error => jobFailed.emit({ job, error }))
|
|
58
|
-
.finally(() => onFinished());
|
|
50
|
+
await callback(job).finally(() => onFinished());
|
|
59
51
|
}
|
|
60
52
|
});
|
|
61
53
|
queue = {
|
|
62
|
-
get onJobActive() {
|
|
63
|
-
return jobActive.event;
|
|
64
|
-
},
|
|
65
|
-
get onJobCompleted() {
|
|
66
|
-
return jobCompleted.event;
|
|
67
|
-
},
|
|
68
|
-
get onJobFailed() {
|
|
69
|
-
return jobFailed.event;
|
|
70
|
-
},
|
|
71
|
-
get onJobProgress() {
|
|
72
|
-
return jobProgress.event;
|
|
73
|
-
},
|
|
74
54
|
add: options => {
|
|
75
55
|
let finished;
|
|
76
56
|
const waitUntilFinished = new Promise(resolve => finished = resolve);
|
|
@@ -81,7 +61,9 @@ class QueueLocalAdapter extends queue_1.QueueAdapter {
|
|
|
81
61
|
progress: 0,
|
|
82
62
|
updateProgress(progress) {
|
|
83
63
|
this.progress = progress;
|
|
84
|
-
|
|
64
|
+
if (this.worker) {
|
|
65
|
+
this.worker.emitJobProgress({ job: this, progress });
|
|
66
|
+
}
|
|
85
67
|
return Promise.resolve();
|
|
86
68
|
},
|
|
87
69
|
waitUntilFinished: () => waitUntilFinished
|
|
@@ -138,10 +120,35 @@ class QueueLocalAdapter extends queue_1.QueueAdapter {
|
|
|
138
120
|
},
|
|
139
121
|
// TODO: need to support concurrent job processing
|
|
140
122
|
createWorker: optionsOrCallback => {
|
|
123
|
+
const jobActive = new event_emitter_1.EventEmitter();
|
|
124
|
+
const jobCompleted = new event_emitter_1.EventEmitter();
|
|
125
|
+
const jobFailed = new event_emitter_1.EventEmitter();
|
|
126
|
+
const jobProgress = new event_emitter_1.EventEmitter();
|
|
141
127
|
const options = this.getWorkerOptions(optionsOrCallback);
|
|
142
|
-
const callback =
|
|
128
|
+
const callback = (job) => {
|
|
129
|
+
job.worker = worker;
|
|
130
|
+
jobActive.emit({ job });
|
|
131
|
+
return options.callback(job)
|
|
132
|
+
.then(returnValue => {
|
|
133
|
+
jobCompleted.emit({ job, returnValue });
|
|
134
|
+
return returnValue;
|
|
135
|
+
})
|
|
136
|
+
.catch(error => jobFailed.emit({ job, error }));
|
|
137
|
+
};
|
|
143
138
|
callbacks.push(callback);
|
|
144
|
-
|
|
139
|
+
const worker = {
|
|
140
|
+
get onJobActive() {
|
|
141
|
+
return jobActive.event;
|
|
142
|
+
},
|
|
143
|
+
get onJobCompleted() {
|
|
144
|
+
return jobCompleted.event;
|
|
145
|
+
},
|
|
146
|
+
get onJobFailed() {
|
|
147
|
+
return jobFailed.event;
|
|
148
|
+
},
|
|
149
|
+
get onJobProgress() {
|
|
150
|
+
return jobProgress.event;
|
|
151
|
+
},
|
|
145
152
|
close: () => {
|
|
146
153
|
for (let i = 0; i < callbacks.length; i++) {
|
|
147
154
|
if (callbacks[i] === callback) {
|
|
@@ -150,8 +157,10 @@ class QueueLocalAdapter extends queue_1.QueueAdapter {
|
|
|
150
157
|
}
|
|
151
158
|
}
|
|
152
159
|
return Promise.resolve();
|
|
153
|
-
}
|
|
160
|
+
},
|
|
161
|
+
emitJobProgress: args => jobProgress.emit(args)
|
|
154
162
|
};
|
|
163
|
+
return worker;
|
|
155
164
|
}
|
|
156
165
|
};
|
|
157
166
|
this.queues.set(name, queue);
|
|
@@ -160,4 +169,4 @@ class QueueLocalAdapter extends queue_1.QueueAdapter {
|
|
|
160
169
|
}
|
|
161
170
|
}
|
|
162
171
|
exports.QueueLocalAdapter = QueueLocalAdapter;
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL21vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxzQ0FBNkY7QUFDN0Ysd0NBR3NCO0FBQ3RCLG9EQUFnRDtBQUNoRCx3REFBb0Q7QUFDcEQsaUVBQXdDO0FBQ3hDLDZDQUE4QztBQUlqQyxRQUFBLHdCQUF3QixHQUFHLG1CQUFZLEVBQTRCLENBQUM7QUFvQmpGLE1BQWEsZ0JBQWdCO0lBQTdCO1FBQ3FCLFlBQU8sR0FBRyxJQUFJLGlCQUFpQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBRTVDLFNBQUksR0FBRyxhQUFhLENBQUM7UUFDckIsaUJBQVksR0FBRyxDQUFDLG1CQUFXLENBQUMsQ0FBQztJQVcxQyxDQUFDO0lBVEcsVUFBVSxDQUFDLElBQXdCO1FBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsZ0NBQXdCLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNsRCxRQUFRLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLG9CQUFvQixDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsaUJBQWlCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUN4RyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRCxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQXVCO1FBQ3JDLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkJBQW1CLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7Q0FDSjtBQWZELDRDQWVDO0FBRUQsTUFBYSxpQkFBa0IsU0FBUSxvQkFBWTtJQUFuRDs7UUFDcUIsV0FBTSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBdUp4RCxDQUFDO0lBckphLGdCQUFnQixDQUFDLElBQVk7UUFDbkMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FB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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shrub/queue-local",
|
|
3
3
|
"description": "Provides a job/worker queue that runs locally.",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.59",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -24,13 +24,13 @@
|
|
|
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/async-queue": "0.2.0",
|
|
31
31
|
"@sprig/event-emitter": "^0.2.0",
|
|
32
32
|
"@sprig/unique-id": "^0.2.0",
|
|
33
33
|
"cron-parser": "^4.3.0"
|
|
34
34
|
},
|
|
35
|
-
"gitHead": "
|
|
35
|
+
"gitHead": "be17fea967675b2b1cc5411debd4e276dbd46d05"
|
|
36
36
|
}
|