@zudojs/queue 0.0.1
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/README.md +46 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/deadLetter/deadLetter.core.d.ts +13 -0
- package/dist/deadLetter/deadLetter.core.d.ts.map +1 -0
- package/dist/deadLetter/deadLetter.core.js +41 -0
- package/dist/deadLetter/deadLetter.core.js.map +1 -0
- package/dist/deadLetter/deadLetter.type.d.ts +33 -0
- package/dist/deadLetter/deadLetter.type.d.ts.map +1 -0
- package/dist/deadLetter/deadLetter.type.js +2 -0
- package/dist/deadLetter/deadLetter.type.js.map +1 -0
- package/dist/deadLetter/index.d.ts +9 -0
- package/dist/deadLetter/index.d.ts.map +1 -0
- package/dist/deadLetter/index.js +8 -0
- package/dist/deadLetter/index.js.map +1 -0
- package/dist/inMemoryQueue/inMemoryQueue.core.d.ts +48 -0
- package/dist/inMemoryQueue/inMemoryQueue.core.d.ts.map +1 -0
- package/dist/inMemoryQueue/inMemoryQueue.core.js +230 -0
- package/dist/inMemoryQueue/inMemoryQueue.core.js.map +1 -0
- package/dist/inMemoryQueue/inMemoryQueue.factory.d.ts +7 -0
- package/dist/inMemoryQueue/inMemoryQueue.factory.d.ts.map +1 -0
- package/dist/inMemoryQueue/inMemoryQueue.factory.js +8 -0
- package/dist/inMemoryQueue/inMemoryQueue.factory.js.map +1 -0
- package/dist/inMemoryQueue/inMemoryQueue.processing.d.ts +19 -0
- package/dist/inMemoryQueue/inMemoryQueue.processing.d.ts.map +1 -0
- package/dist/inMemoryQueue/inMemoryQueue.processing.js +112 -0
- package/dist/inMemoryQueue/inMemoryQueue.processing.js.map +1 -0
- package/dist/inMemoryQueue/inMemoryQueue.scheduling.d.ts +10 -0
- package/dist/inMemoryQueue/inMemoryQueue.scheduling.d.ts.map +1 -0
- package/dist/inMemoryQueue/inMemoryQueue.scheduling.js +38 -0
- package/dist/inMemoryQueue/inMemoryQueue.scheduling.js.map +1 -0
- package/dist/inMemoryQueue/index.d.ts +8 -0
- package/dist/inMemoryQueue/index.d.ts.map +1 -0
- package/dist/inMemoryQueue/index.js +8 -0
- package/dist/inMemoryQueue/index.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/job/index.d.ts +9 -0
- package/dist/job/index.d.ts.map +1 -0
- package/dist/job/index.js +8 -0
- package/dist/job/index.js.map +1 -0
- package/dist/job/job.core.d.ts +19 -0
- package/dist/job/job.core.d.ts.map +1 -0
- package/dist/job/job.core.js +74 -0
- package/dist/job/job.core.js.map +1 -0
- package/dist/job/job.type.d.ts +65 -0
- package/dist/job/job.type.d.ts.map +1 -0
- package/dist/job/job.type.js +2 -0
- package/dist/job/job.type.js.map +1 -0
- package/dist/jobContext/index.d.ts +8 -0
- package/dist/jobContext/index.d.ts.map +1 -0
- package/dist/jobContext/index.js +7 -0
- package/dist/jobContext/index.js.map +1 -0
- package/dist/jobContext/jobContext.core.d.ts +17 -0
- package/dist/jobContext/jobContext.core.d.ts.map +1 -0
- package/dist/jobContext/jobContext.core.js +36 -0
- package/dist/jobContext/jobContext.core.js.map +1 -0
- package/dist/jobContext/jobContext.type.d.ts +16 -0
- package/dist/jobContext/jobContext.type.d.ts.map +1 -0
- package/dist/jobContext/jobContext.type.js +2 -0
- package/dist/jobContext/jobContext.type.js.map +1 -0
- package/dist/jobOptions/index.d.ts +8 -0
- package/dist/jobOptions/index.d.ts.map +1 -0
- package/dist/jobOptions/index.js +7 -0
- package/dist/jobOptions/index.js.map +1 -0
- package/dist/jobOptions/jobOptions.core.d.ts +10 -0
- package/dist/jobOptions/jobOptions.core.d.ts.map +1 -0
- package/dist/jobOptions/jobOptions.core.js +23 -0
- package/dist/jobOptions/jobOptions.core.js.map +1 -0
- package/dist/jobOptions/jobOptions.type.d.ts +36 -0
- package/dist/jobOptions/jobOptions.type.d.ts.map +1 -0
- package/dist/jobOptions/jobOptions.type.js +2 -0
- package/dist/jobOptions/jobOptions.type.js.map +1 -0
- package/dist/jobResult/index.d.ts +8 -0
- package/dist/jobResult/index.d.ts.map +1 -0
- package/dist/jobResult/index.js +7 -0
- package/dist/jobResult/index.js.map +1 -0
- package/dist/jobResult/jobResult.core.d.ts +19 -0
- package/dist/jobResult/jobResult.core.d.ts.map +1 -0
- package/dist/jobResult/jobResult.core.js +36 -0
- package/dist/jobResult/jobResult.core.js.map +1 -0
- package/dist/jobResult/jobResult.type.d.ts +34 -0
- package/dist/jobResult/jobResult.type.d.ts.map +1 -0
- package/dist/jobResult/jobResult.type.js +2 -0
- package/dist/jobResult/jobResult.type.js.map +1 -0
- package/dist/jobTypes/index.d.ts +9 -0
- package/dist/jobTypes/index.d.ts.map +1 -0
- package/dist/jobTypes/index.js +8 -0
- package/dist/jobTypes/index.js.map +1 -0
- package/dist/jobTypes/jobTypes.type.d.ts +89 -0
- package/dist/jobTypes/jobTypes.type.d.ts.map +1 -0
- package/dist/jobTypes/jobTypes.type.js +81 -0
- package/dist/jobTypes/jobTypes.type.js.map +1 -0
- package/dist/middleware/index.d.ts +8 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +7 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/middleware.core.d.ts +16 -0
- package/dist/middleware/middleware.core.d.ts.map +1 -0
- package/dist/middleware/middleware.core.js +76 -0
- package/dist/middleware/middleware.core.js.map +1 -0
- package/dist/middleware/middleware.type.d.ts +19 -0
- package/dist/middleware/middleware.type.d.ts.map +1 -0
- package/dist/middleware/middleware.type.js +2 -0
- package/dist/middleware/middleware.type.js.map +1 -0
- package/dist/processor/index.d.ts +10 -0
- package/dist/processor/index.d.ts.map +1 -0
- package/dist/processor/index.js +9 -0
- package/dist/processor/index.js.map +1 -0
- package/dist/processor/processor.core.d.ts +6 -0
- package/dist/processor/processor.core.d.ts.map +1 -0
- package/dist/processor/processor.core.js +40 -0
- package/dist/processor/processor.core.js.map +1 -0
- package/dist/processor/processor.type.d.ts +42 -0
- package/dist/processor/processor.type.d.ts.map +1 -0
- package/dist/processor/processor.type.js +7 -0
- package/dist/processor/processor.type.js.map +1 -0
- package/dist/queue/index.d.ts +10 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/index.js +8 -0
- package/dist/queue/index.js.map +1 -0
- package/dist/queue/queue.core.d.ts +13 -0
- package/dist/queue/queue.core.d.ts.map +1 -0
- package/dist/queue/queue.core.js +23 -0
- package/dist/queue/queue.core.js.map +1 -0
- package/dist/queue/queue.type.d.ts +109 -0
- package/dist/queue/queue.type.d.ts.map +1 -0
- package/dist/queue/queue.type.js +2 -0
- package/dist/queue/queue.type.js.map +1 -0
- package/dist/queueEmitter/index.d.ts +9 -0
- package/dist/queueEmitter/index.d.ts.map +1 -0
- package/dist/queueEmitter/index.js +8 -0
- package/dist/queueEmitter/index.js.map +1 -0
- package/dist/queueEmitter/queueEmitter.core.d.ts +24 -0
- package/dist/queueEmitter/queueEmitter.core.d.ts.map +1 -0
- package/dist/queueEmitter/queueEmitter.core.js +45 -0
- package/dist/queueEmitter/queueEmitter.core.js.map +1 -0
- package/dist/queueEmitter/queueEmitter.type.d.ts +14 -0
- package/dist/queueEmitter/queueEmitter.type.d.ts.map +1 -0
- package/dist/queueEmitter/queueEmitter.type.js +2 -0
- package/dist/queueEmitter/queueEmitter.type.js.map +1 -0
- package/dist/queueEvents/index.d.ts +8 -0
- package/dist/queueEvents/index.d.ts.map +1 -0
- package/dist/queueEvents/index.js +7 -0
- package/dist/queueEvents/index.js.map +1 -0
- package/dist/queueEvents/queueEvents.core.d.ts +6 -0
- package/dist/queueEvents/queueEvents.core.d.ts.map +1 -0
- package/dist/queueEvents/queueEvents.core.js +12 -0
- package/dist/queueEvents/queueEvents.core.js.map +1 -0
- package/dist/queueEvents/queueEvents.type.d.ts +97 -0
- package/dist/queueEvents/queueEvents.type.d.ts.map +1 -0
- package/dist/queueEvents/queueEvents.type.js +2 -0
- package/dist/queueEvents/queueEvents.type.js.map +1 -0
- package/dist/queueManager/index.d.ts +8 -0
- package/dist/queueManager/index.d.ts.map +1 -0
- package/dist/queueManager/index.js +7 -0
- package/dist/queueManager/index.js.map +1 -0
- package/dist/queueManager/queueManager.core.d.ts +6 -0
- package/dist/queueManager/queueManager.core.d.ts.map +1 -0
- package/dist/queueManager/queueManager.core.js +32 -0
- package/dist/queueManager/queueManager.core.js.map +1 -0
- package/dist/queueManager/queueManager.type.d.ts +18 -0
- package/dist/queueManager/queueManager.type.d.ts.map +1 -0
- package/dist/queueManager/queueManager.type.js +2 -0
- package/dist/queueManager/queueManager.type.js.map +1 -0
- package/dist/queueRegistry/index.d.ts +8 -0
- package/dist/queueRegistry/index.d.ts.map +1 -0
- package/dist/queueRegistry/index.js +7 -0
- package/dist/queueRegistry/index.js.map +1 -0
- package/dist/queueRegistry/queueRegistry.core.d.ts +6 -0
- package/dist/queueRegistry/queueRegistry.core.d.ts.map +1 -0
- package/dist/queueRegistry/queueRegistry.core.js +41 -0
- package/dist/queueRegistry/queueRegistry.core.js.map +1 -0
- package/dist/queueRegistry/queueRegistry.type.d.ts +31 -0
- package/dist/queueRegistry/queueRegistry.type.d.ts.map +1 -0
- package/dist/queueRegistry/queueRegistry.type.js +2 -0
- package/dist/queueRegistry/queueRegistry.type.js.map +1 -0
- package/dist/retryPolicy/index.d.ts +8 -0
- package/dist/retryPolicy/index.d.ts.map +1 -0
- package/dist/retryPolicy/index.js +8 -0
- package/dist/retryPolicy/index.js.map +1 -0
- package/dist/retryPolicy/retryPolicy.core.d.ts +29 -0
- package/dist/retryPolicy/retryPolicy.core.d.ts.map +1 -0
- package/dist/retryPolicy/retryPolicy.core.js +51 -0
- package/dist/retryPolicy/retryPolicy.core.js.map +1 -0
- package/dist/serializer/index.d.ts +9 -0
- package/dist/serializer/index.d.ts.map +1 -0
- package/dist/serializer/index.js +8 -0
- package/dist/serializer/index.js.map +1 -0
- package/dist/serializer/serializer.core.d.ts +19 -0
- package/dist/serializer/serializer.core.d.ts.map +1 -0
- package/dist/serializer/serializer.core.js +53 -0
- package/dist/serializer/serializer.core.js.map +1 -0
- package/dist/serializer/serializer.type.d.ts +12 -0
- package/dist/serializer/serializer.type.d.ts.map +1 -0
- package/dist/serializer/serializer.type.js +2 -0
- package/dist/serializer/serializer.type.js.map +1 -0
- package/dist/worker/index.d.ts +9 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +8 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/worker.core.d.ts +11 -0
- package/dist/worker/worker.core.d.ts.map +1 -0
- package/dist/worker/worker.core.js +117 -0
- package/dist/worker/worker.core.js.map +1 -0
- package/dist/worker/worker.type.d.ts +61 -0
- package/dist/worker/worker.type.d.ts.map +1 -0
- package/dist/worker/worker.type.js +2 -0
- package/dist/worker/worker.type.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { JobId, QueueName } from "../jobTypes/jobTypes.type.js";
|
|
2
|
+
import type { Job } from "../job/job.type.js";
|
|
3
|
+
import type { JobOptions } from "../jobOptions/jobOptions.type.js";
|
|
4
|
+
import type { Processor } from "../processor/processor.type.js";
|
|
5
|
+
import type { Serializer } from "../serializer/serializer.type.js";
|
|
6
|
+
import type { QueueMiddleware } from "../middleware/middleware.type.js";
|
|
7
|
+
import type { QueueEventEmitter } from "../queueEmitter/queueEmitter.type.js";
|
|
8
|
+
/**
|
|
9
|
+
* Options for creating a queue.
|
|
10
|
+
*/
|
|
11
|
+
export interface QueueOptions {
|
|
12
|
+
/** Queue concurrency limit. */
|
|
13
|
+
readonly concurrency?: number;
|
|
14
|
+
/** Default job options. */
|
|
15
|
+
readonly defaultJobOptions?: Partial<JobOptions>;
|
|
16
|
+
/** Serializer for job payloads. */
|
|
17
|
+
readonly serializer?: Serializer;
|
|
18
|
+
/** Middleware for job processing. */
|
|
19
|
+
readonly middleware?: QueueMiddleware[];
|
|
20
|
+
/** Poll interval in milliseconds. */
|
|
21
|
+
readonly pollInterval?: number;
|
|
22
|
+
/** Event emitter for queue lifecycle events. */
|
|
23
|
+
readonly eventEmitter?: QueueEventEmitter;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Statistics for a queue.
|
|
27
|
+
*/
|
|
28
|
+
export interface QueueStats {
|
|
29
|
+
/** Number of waiting jobs. */
|
|
30
|
+
readonly waiting: number;
|
|
31
|
+
/** Number of active jobs. */
|
|
32
|
+
readonly active: number;
|
|
33
|
+
/** Number of completed jobs. */
|
|
34
|
+
readonly completed: number;
|
|
35
|
+
/** Number of failed jobs. */
|
|
36
|
+
readonly failed: number;
|
|
37
|
+
/** Number of delayed jobs. */
|
|
38
|
+
readonly delayed: number;
|
|
39
|
+
/** Number of retrying jobs. */
|
|
40
|
+
readonly retrying: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* A named stream of jobs.
|
|
44
|
+
*/
|
|
45
|
+
export interface Queue<TData = unknown> {
|
|
46
|
+
/** Queue name. */
|
|
47
|
+
readonly name: QueueName;
|
|
48
|
+
/** Add a job to the queue. */
|
|
49
|
+
add(name: string, data: TData, options?: JobOptions): Promise<Job<TData>>;
|
|
50
|
+
/** Process jobs with a processor. */
|
|
51
|
+
process(name: string, processor: Processor<TData>): void;
|
|
52
|
+
/** Get a job by ID. */
|
|
53
|
+
getJob(jobId: JobId): Promise<Job<TData> | null>;
|
|
54
|
+
/** Get the next available job for processing. */
|
|
55
|
+
getNextJob(): Promise<Job<TData> | null>;
|
|
56
|
+
/** Get a registered processor by job name. */
|
|
57
|
+
getProcessor(name: string): Processor<TData> | undefined;
|
|
58
|
+
/** Get queue statistics. */
|
|
59
|
+
getStats(): Promise<QueueStats>;
|
|
60
|
+
/** Pause the queue. */
|
|
61
|
+
pause(): Promise<void>;
|
|
62
|
+
/** Resume the queue. */
|
|
63
|
+
resume(): Promise<void>;
|
|
64
|
+
/** Check if the queue is paused. */
|
|
65
|
+
isPaused(): boolean;
|
|
66
|
+
/** Close the queue. */
|
|
67
|
+
close(): Promise<void>;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Event types emitted by a queue.
|
|
71
|
+
*/
|
|
72
|
+
export type QueueEventMap = {
|
|
73
|
+
"job:created": {
|
|
74
|
+
job: Job;
|
|
75
|
+
};
|
|
76
|
+
"job:started": {
|
|
77
|
+
job: Job;
|
|
78
|
+
};
|
|
79
|
+
"job:progress": {
|
|
80
|
+
job: Job;
|
|
81
|
+
progress: number;
|
|
82
|
+
};
|
|
83
|
+
"job:completed": {
|
|
84
|
+
job: Job;
|
|
85
|
+
result: unknown;
|
|
86
|
+
};
|
|
87
|
+
"job:failed": {
|
|
88
|
+
job: Job;
|
|
89
|
+
error: Error;
|
|
90
|
+
};
|
|
91
|
+
"job:retrying": {
|
|
92
|
+
job: Job;
|
|
93
|
+
attempt: number;
|
|
94
|
+
};
|
|
95
|
+
"job:cancelled": {
|
|
96
|
+
job: Job;
|
|
97
|
+
};
|
|
98
|
+
"worker:started": {
|
|
99
|
+
workerId: string;
|
|
100
|
+
};
|
|
101
|
+
"worker:stopped": {
|
|
102
|
+
workerId: string;
|
|
103
|
+
};
|
|
104
|
+
"worker:error": {
|
|
105
|
+
workerId: string;
|
|
106
|
+
error: Error;
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=queue.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.type.d.ts","sourceRoot":"","sources":["../../src/queue/queue.type.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.type.js","sourceRoot":"","sources":["../../src/queue/queue.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Queue event emitter abstraction.
|
|
3
|
+
*
|
|
4
|
+
* Provides event emission for queue and job lifecycle events.
|
|
5
|
+
* Can be implemented by different backends (in-memory, @zudojs/events, etc.).
|
|
6
|
+
*/
|
|
7
|
+
export { createNoopQueueEventEmitter, createInMemoryQueueEventEmitter, InMemoryQueueEventEmitter, } from "./queueEmitter.core.js";
|
|
8
|
+
export type { QueueEventEmitter } from "./queueEmitter.type.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queueEmitter/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAEhC,YAAY,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Queue event emitter abstraction.
|
|
3
|
+
*
|
|
4
|
+
* Provides event emission for queue and job lifecycle events.
|
|
5
|
+
* Can be implemented by different backends (in-memory, @zudojs/events, etc.).
|
|
6
|
+
*/
|
|
7
|
+
export { createNoopQueueEventEmitter, createInMemoryQueueEventEmitter, InMemoryQueueEventEmitter, } from "./queueEmitter.core.js";
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/queueEmitter/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,2BAA2B,EAC3B,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { QueueEventEmitter } from "./queueEmitter.type.js";
|
|
2
|
+
import type { QueueEventMap } from "../queue/queue.type.js";
|
|
3
|
+
type EventName = keyof QueueEventMap;
|
|
4
|
+
type Handler<T extends EventName> = (data: QueueEventMap[T]) => void;
|
|
5
|
+
/**
|
|
6
|
+
* In-memory queue event emitter.
|
|
7
|
+
*
|
|
8
|
+
* Stores handlers in memory and emits events synchronously.
|
|
9
|
+
*/
|
|
10
|
+
export declare class InMemoryQueueEventEmitter implements QueueEventEmitter {
|
|
11
|
+
private readonly handlers;
|
|
12
|
+
emit<K extends EventName>(event: K, data: QueueEventMap[K]): void;
|
|
13
|
+
on<K extends EventName>(event: K, handler: Handler<K>): () => void;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Creates an in-memory queue event emitter.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createInMemoryQueueEventEmitter(): QueueEventEmitter;
|
|
19
|
+
/**
|
|
20
|
+
* Creates a no-op queue event emitter.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createNoopQueueEventEmitter(): QueueEventEmitter;
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=queueEmitter.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueEmitter.core.d.ts","sourceRoot":"","sources":["../../src/queueEmitter/queueEmitter.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,KAAK,SAAS,GAAG,MAAM,aAAa,CAAC;AAErC,KAAK,OAAO,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;AAOrE;;;;GAIG;AACH,qBAAa,yBAA0B,YAAW,iBAAiB;IACjE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CACb;IAEZ,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAOhE;IAED,EAAE,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAYjE;CACF;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,iBAAiB,CAEnE;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,iBAAiB,CAO/D"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-memory queue event emitter.
|
|
3
|
+
*
|
|
4
|
+
* Stores handlers in memory and emits events synchronously.
|
|
5
|
+
*/
|
|
6
|
+
export class InMemoryQueueEventEmitter {
|
|
7
|
+
handlers = new Map();
|
|
8
|
+
emit(event, data) {
|
|
9
|
+
const handlers = this.handlers.get(event);
|
|
10
|
+
if (handlers) {
|
|
11
|
+
for (const handler of handlers) {
|
|
12
|
+
handler(data);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
on(event, handler) {
|
|
17
|
+
let handlers = this.handlers.get(event);
|
|
18
|
+
if (!handlers) {
|
|
19
|
+
handlers = new Set();
|
|
20
|
+
this.handlers.set(event, handlers);
|
|
21
|
+
}
|
|
22
|
+
handlers.add(handler);
|
|
23
|
+
return () => {
|
|
24
|
+
handlers.delete(handler);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Creates an in-memory queue event emitter.
|
|
30
|
+
*/
|
|
31
|
+
export function createInMemoryQueueEventEmitter() {
|
|
32
|
+
return new InMemoryQueueEventEmitter();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Creates a no-op queue event emitter.
|
|
36
|
+
*/
|
|
37
|
+
export function createNoopQueueEventEmitter() {
|
|
38
|
+
return {
|
|
39
|
+
emit() { },
|
|
40
|
+
on() {
|
|
41
|
+
return () => { };
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=queueEmitter.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueEmitter.core.js","sourceRoot":"","sources":["../../src/queueEmitter/queueEmitter.core.ts"],"names":[],"mappings":"AAaA;;;;GAIG;AACH,MAAM,OAAO,yBAAyB;IACnB,QAAQ,GACvB,IAAI,GAAG,EAAE,CAAC;IAEZ,IAAI,CAAsB,KAAQ,EAAE,IAAsB;QACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,QAAQ,EAAE,CAAC;YACb,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,EAAE,CAAsB,KAAQ,EAAE,OAAmB;QACnD,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACrC,CAAC;QAED,QAAQ,CAAC,GAAG,CAAC,OAA6B,CAAC,CAAC;QAE5C,OAAO,GAAG,EAAE;YACV,QAAS,CAAC,MAAM,CAAC,OAA6B,CAAC,CAAC;QAClD,CAAC,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,+BAA+B;IAC7C,OAAO,IAAI,yBAAyB,EAAE,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,IAAI,KAAU,CAAC;QACf,EAAE;YACA,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { QueueEventMap } from "../queue/queue.type.js";
|
|
2
|
+
/**
|
|
3
|
+
* Emitter for queue lifecycle events.
|
|
4
|
+
*
|
|
5
|
+
* Provides a simple event emission interface that can be
|
|
6
|
+
* implemented by different backends (in-memory, @zudojs/events, etc.).
|
|
7
|
+
*/
|
|
8
|
+
export interface QueueEventEmitter {
|
|
9
|
+
/** Emit an event. */
|
|
10
|
+
emit<K extends keyof QueueEventMap>(event: K, data: QueueEventMap[K]): void;
|
|
11
|
+
/** Subscribe to an event. */
|
|
12
|
+
on<K extends keyof QueueEventMap>(event: K, handler: (data: QueueEventMap[K]) => void): () => void;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=queueEmitter.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueEmitter.type.d.ts","sourceRoot":"","sources":["../../src/queueEmitter/queueEmitter.type.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,qBAAqB;IACrB,IAAI,CAAC,CAAC,SAAS,MAAM,aAAa,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC5E,6BAA6B;IAC7B,EAAE,CAAC,CAAC,SAAS,MAAM,aAAa,EAC9B,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,GACxC,MAAM,IAAI,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueEmitter.type.js","sourceRoot":"","sources":["../../src/queueEmitter/queueEmitter.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Queue event types.
|
|
3
|
+
*
|
|
4
|
+
* Provides event types for queue and job lifecycle events.
|
|
5
|
+
*/
|
|
6
|
+
export { createQueueEvent } from "./queueEvents.core.js";
|
|
7
|
+
export type { QueueEvent, JobCreatedEvent, JobStartedEvent, JobProgressEvent, JobCompletedEvent, JobFailedEvent, JobRetryingEvent, JobCancelledEvent, WorkerStartedEvent, WorkerStoppedEvent, WorkerErrorEvent, QueueEventType, QueueEventHandler, } from "./queueEvents.type.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queueEvents/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,YAAY,EACV,UAAU,EACV,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,iBAAiB,GAClB,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/queueEvents/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { QueueEvent } from "./queueEvents.type.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a queue event.
|
|
4
|
+
*/
|
|
5
|
+
export declare function createQueueEvent<T extends QueueEvent>(type: T["type"], queueName: string, data: Omit<T, "type" | "timestamp" | "queueName">): T;
|
|
6
|
+
//# sourceMappingURL=queueEvents.core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueEvents.core.d.ts","sourceRoot":"","sources":["../../src/queueEvents/queueEvents.core.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,UAAU,EACnD,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EACf,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC,GAChD,CAAC,CAOH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueEvents.core.js","sourceRoot":"","sources":["../../src/queueEvents/queueEvents.core.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAe,EACf,SAAiB,EACjB,IAAiD;IAEjD,OAAO;QACL,IAAI;QACJ,SAAS;QACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAe;QAChD,GAAG,IAAI;KACH,CAAC;AACT,CAAC"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type { Timestamp } from "@zudojs/constants";
|
|
2
|
+
import type { Job } from "../job/job.type.js";
|
|
3
|
+
/**
|
|
4
|
+
* Base event for queue operations.
|
|
5
|
+
*/
|
|
6
|
+
export interface QueueEvent {
|
|
7
|
+
/** Event type. */
|
|
8
|
+
readonly type: string;
|
|
9
|
+
/** When the event occurred. */
|
|
10
|
+
readonly timestamp: Timestamp;
|
|
11
|
+
/** Queue name. */
|
|
12
|
+
readonly queueName: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Job created event.
|
|
16
|
+
*/
|
|
17
|
+
export interface JobCreatedEvent extends QueueEvent {
|
|
18
|
+
readonly type: "job:created";
|
|
19
|
+
readonly job: Job;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Job started event.
|
|
23
|
+
*/
|
|
24
|
+
export interface JobStartedEvent extends QueueEvent {
|
|
25
|
+
readonly type: "job:started";
|
|
26
|
+
readonly job: Job;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Job progress event.
|
|
30
|
+
*/
|
|
31
|
+
export interface JobProgressEvent extends QueueEvent {
|
|
32
|
+
readonly type: "job:progress";
|
|
33
|
+
readonly job: Job;
|
|
34
|
+
readonly progress: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Job completed event.
|
|
38
|
+
*/
|
|
39
|
+
export interface JobCompletedEvent extends QueueEvent {
|
|
40
|
+
readonly type: "job:completed";
|
|
41
|
+
readonly job: Job;
|
|
42
|
+
readonly result: unknown;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Job failed event.
|
|
46
|
+
*/
|
|
47
|
+
export interface JobFailedEvent extends QueueEvent {
|
|
48
|
+
readonly type: "job:failed";
|
|
49
|
+
readonly job: Job;
|
|
50
|
+
readonly error: Error;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Job retrying event.
|
|
54
|
+
*/
|
|
55
|
+
export interface JobRetryingEvent extends QueueEvent {
|
|
56
|
+
readonly type: "job:retrying";
|
|
57
|
+
readonly job: Job;
|
|
58
|
+
readonly attempt: number;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Job cancelled event.
|
|
62
|
+
*/
|
|
63
|
+
export interface JobCancelledEvent extends QueueEvent {
|
|
64
|
+
readonly type: "job:cancelled";
|
|
65
|
+
readonly job: Job;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Worker started event.
|
|
69
|
+
*/
|
|
70
|
+
export interface WorkerStartedEvent extends QueueEvent {
|
|
71
|
+
readonly type: "worker:started";
|
|
72
|
+
readonly workerId: string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Worker stopped event.
|
|
76
|
+
*/
|
|
77
|
+
export interface WorkerStoppedEvent extends QueueEvent {
|
|
78
|
+
readonly type: "worker:stopped";
|
|
79
|
+
readonly workerId: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Worker error event.
|
|
83
|
+
*/
|
|
84
|
+
export interface WorkerErrorEvent extends QueueEvent {
|
|
85
|
+
readonly type: "worker:error";
|
|
86
|
+
readonly workerId: string;
|
|
87
|
+
readonly error: Error;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Union of all queue events.
|
|
91
|
+
*/
|
|
92
|
+
export type QueueEventType = JobCreatedEvent | JobStartedEvent | JobProgressEvent | JobCompletedEvent | JobFailedEvent | JobRetryingEvent | JobCancelledEvent | WorkerStartedEvent | WorkerStoppedEvent | WorkerErrorEvent;
|
|
93
|
+
/**
|
|
94
|
+
* Event handler function type.
|
|
95
|
+
*/
|
|
96
|
+
export type QueueEventHandler<T extends QueueEvent = QueueEvent> = (event: T) => void | Promise<void>;
|
|
97
|
+
//# sourceMappingURL=queueEvents.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueEvents.type.d.ts","sourceRoot":"","sources":["../../src/queueEvents/queueEvents.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,kBAAkB;IAClB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,kBAAkB;IAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,UAAU;IACjD,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,eAAe,GACf,eAAe,GACf,gBAAgB,GAChB,iBAAiB,GACjB,cAAc,GACd,gBAAgB,GAChB,iBAAiB,GACjB,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,CAAC;AAErB;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU,IAAI,CACjE,KAAK,EAAE,CAAC,KACL,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueEvents.type.js","sourceRoot":"","sources":["../../src/queueEvents/queueEvents.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queueManager/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/queueManager/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueManager.core.d.ts","sourceRoot":"","sources":["../../src/queueManager/queueManager.core.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAI3D;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAmCjD"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createQueue } from "../queue/queue.core.js";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a new QueueManager.
|
|
4
|
+
*/
|
|
5
|
+
export function createQueueManager() {
|
|
6
|
+
const queues = new Map();
|
|
7
|
+
return {
|
|
8
|
+
getQueue(name, options) {
|
|
9
|
+
let queue = queues.get(name);
|
|
10
|
+
if (!queue) {
|
|
11
|
+
queue = createQueue(name, options);
|
|
12
|
+
queues.set(name, queue);
|
|
13
|
+
}
|
|
14
|
+
return queue;
|
|
15
|
+
},
|
|
16
|
+
getExistingQueue(name) {
|
|
17
|
+
return queues.get(name);
|
|
18
|
+
},
|
|
19
|
+
hasQueue(name) {
|
|
20
|
+
return queues.has(name);
|
|
21
|
+
},
|
|
22
|
+
getQueueNames() {
|
|
23
|
+
return Array.from(queues.keys());
|
|
24
|
+
},
|
|
25
|
+
async closeAll() {
|
|
26
|
+
const closePromises = Array.from(queues.values()).map((queue) => queue.close());
|
|
27
|
+
await Promise.all(closePromises);
|
|
28
|
+
queues.clear();
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=queueManager.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueManager.core.js","sourceRoot":"","sources":["../../src/queueManager/queueManager.core.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAErD;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE3C,OAAO;QACL,QAAQ,CAAQ,IAAe,EAAE,OAAsB;YACrD,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAA6B,CAAC;YAEzD,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,WAAW,CAAQ,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC1C,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAc,CAAC,CAAC;YACnC,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAED,gBAAgB,CAAQ,IAAe;YACrC,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAA6B,CAAC;QACtD,CAAC;QAED,QAAQ,CAAC,IAAe;YACtB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,aAAa;YACX,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;QAED,KAAK,CAAC,QAAQ;YACZ,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9D,KAAK,CAAC,KAAK,EAAE,CACd,CAAC;YACF,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACjC,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { QueueName } from "../jobTypes/jobTypes.type.js";
|
|
2
|
+
import type { Queue, QueueOptions } from "../queue/queue.type.js";
|
|
3
|
+
/**
|
|
4
|
+
* Manages multiple queues.
|
|
5
|
+
*/
|
|
6
|
+
export interface QueueManager {
|
|
7
|
+
/** Get or create a queue by name. */
|
|
8
|
+
getQueue<TData>(name: QueueName, options?: QueueOptions): Queue<TData>;
|
|
9
|
+
/** Get an existing queue by name. */
|
|
10
|
+
getExistingQueue<TData>(name: QueueName): Queue<TData> | undefined;
|
|
11
|
+
/** Check if a queue exists. */
|
|
12
|
+
hasQueue(name: QueueName): boolean;
|
|
13
|
+
/** Get all queue names. */
|
|
14
|
+
getQueueNames(): QueueName[];
|
|
15
|
+
/** Close all queues. */
|
|
16
|
+
closeAll(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=queueManager.type.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueManager.type.d.ts","sourceRoot":"","sources":["../../src/queueManager/queueManager.type.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IACvE,qCAAqC;IACrC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;IACnE,+BAA+B;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC;IACnC,2BAA2B;IAC3B,aAAa,IAAI,SAAS,EAAE,CAAC;IAC7B,wBAAwB;IACxB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueManager.type.js","sourceRoot":"","sources":["../../src/queueManager/queueManager.type.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Queue registry for queue instances.
|
|
3
|
+
*
|
|
4
|
+
* Provides registration and lookup of queue instances.
|
|
5
|
+
*/
|
|
6
|
+
export { createQueueRegistry } from "./queueRegistry.core.js";
|
|
7
|
+
export type { QueueRegistry, QueueInfo } from "./queueRegistry.type.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/queueRegistry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/queueRegistry/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueRegistry.core.d.ts","sourceRoot":"","sources":["../../src/queueRegistry/queueRegistry.core.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAa,MAAM,yBAAyB,CAAC;AAIxE;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CA0CnD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { QueueError } from "@zudojs/errors";
|
|
2
|
+
/**
|
|
3
|
+
* Creates a new QueueRegistry.
|
|
4
|
+
*/
|
|
5
|
+
export function createQueueRegistry() {
|
|
6
|
+
const queues = new Map();
|
|
7
|
+
const infoMap = new Map();
|
|
8
|
+
return {
|
|
9
|
+
register(queue) {
|
|
10
|
+
if (queues.has(queue.name)) {
|
|
11
|
+
throw new QueueError(`Queue "${queue.name}" is already registered.`, {
|
|
12
|
+
queueName: queue.name,
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
queues.set(queue.name, queue);
|
|
16
|
+
infoMap.set(queue.name, {
|
|
17
|
+
name: queue.name,
|
|
18
|
+
registeredAt: new Date(),
|
|
19
|
+
});
|
|
20
|
+
},
|
|
21
|
+
get(name) {
|
|
22
|
+
return queues.get(name);
|
|
23
|
+
},
|
|
24
|
+
has(name) {
|
|
25
|
+
return queues.has(name);
|
|
26
|
+
},
|
|
27
|
+
getAll() {
|
|
28
|
+
return Array.from(infoMap.values());
|
|
29
|
+
},
|
|
30
|
+
unregister(name) {
|
|
31
|
+
const deleted = queues.delete(name);
|
|
32
|
+
infoMap.delete(name);
|
|
33
|
+
return deleted;
|
|
34
|
+
},
|
|
35
|
+
clear() {
|
|
36
|
+
queues.clear();
|
|
37
|
+
infoMap.clear();
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=queueRegistry.core.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queueRegistry.core.js","sourceRoot":"","sources":["../../src/queueRegistry/queueRegistry.core.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAC;IAEhD,OAAO;QACL,QAAQ,CAAQ,KAAmB;YACjC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,UAAU,CAAC,UAAU,KAAK,CAAC,IAAI,0BAA0B,EAAE;oBACnE,SAAS,EAAE,KAAK,CAAC,IAAI;iBACtB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAc,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;gBACtB,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,YAAY,EAAE,IAAI,IAAI,EAAE;aACzB,CAAC,CAAC;QACL,CAAC;QAED,GAAG,CAAQ,IAAe;YACxB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAA6B,CAAC;QACtD,CAAC;QAED,GAAG,CAAC,IAAe;YACjB,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;QAED,MAAM;YACJ,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACtC,CAAC;QAED,UAAU,CAAC,IAAe;YACxB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK;YACH,MAAM,CAAC,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,CAAC;KACF,CAAC;AACJ,CAAC"}
|