@shrub/queue 0.5.71 → 0.5.72
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/index.d.ts +1 -0
- package/dist/index.js +2 -1
- package/dist/manager.d.ts +21 -0
- package/dist/manager.js +46 -0
- package/dist/queue.d.ts +1 -1
- package/package.json +4 -4
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -10,7 +10,8 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
10
10
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
__exportStar(require("./manager"), exports);
|
|
13
14
|
__exportStar(require("./module"), exports);
|
|
14
15
|
__exportStar(require("./queue"), exports);
|
|
15
16
|
__exportStar(require("./service"), exports);
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsNENBQTBCO0FBQzFCLDJDQUF5QjtBQUN6QiwwQ0FBd0I7QUFDeEIsNENBQTBCIn0=
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { IJob, IJobRepeatOptions, IWorker, WorkerCallback } from "./queue";
|
|
2
|
+
import { IQueueService } from "./service";
|
|
3
|
+
export declare type JobData<T> = T extends JobType<infer TData> ? TData : never;
|
|
4
|
+
export declare type JobReturnValue<T> = T extends JobType<any, infer TReturnValue> ? TReturnValue : never;
|
|
5
|
+
export declare type JobType<TData = any, TReturnValue = void> = {};
|
|
6
|
+
export declare type JobTypes = {
|
|
7
|
+
[key: string]: JobType<any>;
|
|
8
|
+
};
|
|
9
|
+
/** A helper class responsible for managing multiple queues. The manager will maintain a single instance of each queue as they are referenced. */
|
|
10
|
+
export declare class QueueManager<TJobTypes extends JobTypes> {
|
|
11
|
+
private readonly queueService;
|
|
12
|
+
private readonly queuePrefix;
|
|
13
|
+
private readonly queues;
|
|
14
|
+
private isDisposed;
|
|
15
|
+
constructor(queueService: IQueueService, queuePrefix?: string);
|
|
16
|
+
add<T extends keyof TJobTypes>(name: T, data: JobData<TJobTypes[T]>, repeat?: IJobRepeatOptions): Promise<IJob<JobData<TJobTypes[T]>, JobReturnValue<TJobTypes[T]>> | undefined>;
|
|
17
|
+
close<T extends keyof TJobTypes>(name?: T): Promise<void>;
|
|
18
|
+
dispose(): Promise<void>;
|
|
19
|
+
process<T extends keyof TJobTypes>(name: T, callback: WorkerCallback<JobData<TJobTypes[T]>, JobReturnValue<TJobTypes[T]>>): IWorker<JobData<TJobTypes[T]>, JobReturnValue<TJobTypes[T]>> | undefined;
|
|
20
|
+
private getQueue;
|
|
21
|
+
}
|
package/dist/manager.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.QueueManager = void 0;
|
|
4
|
+
/** A helper class responsible for managing multiple queues. The manager will maintain a single instance of each queue as they are referenced. */
|
|
5
|
+
class QueueManager {
|
|
6
|
+
constructor(queueService, queuePrefix = "") {
|
|
7
|
+
this.queueService = queueService;
|
|
8
|
+
this.queuePrefix = queuePrefix;
|
|
9
|
+
this.queues = new Map();
|
|
10
|
+
this.isDisposed = false;
|
|
11
|
+
}
|
|
12
|
+
add(name, data, repeat) {
|
|
13
|
+
return !this.isDisposed ? this.getQueue(name).add({ name: name.toString(), data, repeat }) : Promise.resolve(undefined);
|
|
14
|
+
}
|
|
15
|
+
async close(name) {
|
|
16
|
+
if (name) {
|
|
17
|
+
const queue = this.queues.get(name);
|
|
18
|
+
this.queues.delete(name);
|
|
19
|
+
return queue ? queue.close() : Promise.resolve();
|
|
20
|
+
}
|
|
21
|
+
const queues = Array.from(this.queues.values());
|
|
22
|
+
this.queues.clear();
|
|
23
|
+
await Promise.all(queues.map(queue => queue.close()));
|
|
24
|
+
}
|
|
25
|
+
dispose() {
|
|
26
|
+
if (!this.isDisposed) {
|
|
27
|
+
this.isDisposed = true;
|
|
28
|
+
return this.close();
|
|
29
|
+
}
|
|
30
|
+
return Promise.resolve();
|
|
31
|
+
}
|
|
32
|
+
process(name, callback) {
|
|
33
|
+
return !this.isDisposed ? this.getQueue(name).createWorker(callback) : undefined;
|
|
34
|
+
}
|
|
35
|
+
getQueue(jobName) {
|
|
36
|
+
const queueName = this.queuePrefix + jobName;
|
|
37
|
+
let queue = this.queues.get(queueName);
|
|
38
|
+
if (!queue) {
|
|
39
|
+
queue = this.queueService.getQueue(queueName);
|
|
40
|
+
this.queues.set(queueName, queue);
|
|
41
|
+
}
|
|
42
|
+
return queue;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.QueueManager = QueueManager;
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBLGlKQUFpSjtBQUNqSixNQUFhLFlBQVk7SUFJckIsWUFDcUIsWUFBMkIsRUFDM0IsY0FBYyxFQUFFO1FBRGhCLGlCQUFZLEdBQVosWUFBWSxDQUFlO1FBQzNCLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBTHBCLFdBQU0sR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztRQUNyRCxlQUFVLEdBQUcsS0FBSyxDQUFDO0lBSzNCLENBQUM7SUFFRCxHQUFHLENBQTRCLElBQU8sRUFBRSxJQUEyQixFQUFFLE1BQTBCO1FBQzNGLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDNUgsQ0FBQztJQUVELEtBQUssQ0FBQyxLQUFLLENBQTRCLElBQVE7UUFDM0MsSUFBSSxJQUFJLEVBQUU7WUFDTixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6QixPQUFPLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDcEQ7UUFFRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3ZCO1FBRUQsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELE9BQU8sQ0FBNEIsSUFBTyxFQUFFLFFBQTZFO1FBQ3JILE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3JGLENBQUM7SUFFTyxRQUFRLENBQUMsT0FBd0I7UUFDckMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLENBQUM7UUFDN0MsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFdkMsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDckM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0o7QUFqREQsb0NBaURDIn0=
|
package/dist/queue.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IEvent } from "@sprig/event-emitter";
|
|
2
|
-
export declare type WorkerCallback<TData = any, TReturnValue =
|
|
2
|
+
export declare type WorkerCallback<TData = any, TReturnValue = void> = (job: IJob<TData, TReturnValue>) => Promise<TReturnValue>;
|
|
3
3
|
/** Defines the API for a queue. */
|
|
4
4
|
export interface IQueue<TData = any, TReturnValue = any> {
|
|
5
5
|
/** The name of the queue. */
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shrub/queue",
|
|
3
3
|
"description": "Provides a basic abstraction and support for job/task queues.",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.72",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
"test": "jest"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@shrub/core": "0.5.
|
|
29
|
-
"@shrub/logging": "0.5.
|
|
28
|
+
"@shrub/core": "0.5.72",
|
|
29
|
+
"@shrub/logging": "0.5.72",
|
|
30
30
|
"@sprig/event-emitter": "^0.2.2"
|
|
31
31
|
},
|
|
32
|
-
"gitHead": "
|
|
32
|
+
"gitHead": "9bdbe1ff5fce44852e34a8d2c42c5c072033bf86"
|
|
33
33
|
}
|