flashq 0.1.0
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 +283 -0
- package/dist/client/advanced.d.ts +174 -0
- package/dist/client/advanced.d.ts.map +1 -0
- package/dist/client/advanced.js +248 -0
- package/dist/client/advanced.js.map +1 -0
- package/dist/client/connection.d.ts +103 -0
- package/dist/client/connection.d.ts.map +1 -0
- package/dist/client/connection.js +570 -0
- package/dist/client/connection.js.map +1 -0
- package/dist/client/core.d.ts +119 -0
- package/dist/client/core.d.ts.map +1 -0
- package/dist/client/core.js +257 -0
- package/dist/client/core.js.map +1 -0
- package/dist/client/cron.d.ts +59 -0
- package/dist/client/cron.d.ts.map +1 -0
- package/dist/client/cron.js +82 -0
- package/dist/client/cron.js.map +1 -0
- package/dist/client/dlq.d.ts +52 -0
- package/dist/client/dlq.d.ts.map +1 -0
- package/dist/client/dlq.js +73 -0
- package/dist/client/dlq.js.map +1 -0
- package/dist/client/flows.d.ts +49 -0
- package/dist/client/flows.d.ts.map +1 -0
- package/dist/client/flows.js +67 -0
- package/dist/client/flows.js.map +1 -0
- package/dist/client/index.d.ts +644 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +829 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/jobs.d.ts +183 -0
- package/dist/client/jobs.d.ts.map +1 -0
- package/dist/client/jobs.js +272 -0
- package/dist/client/jobs.js.map +1 -0
- package/dist/client/kv.d.ts +63 -0
- package/dist/client/kv.d.ts.map +1 -0
- package/dist/client/kv.js +131 -0
- package/dist/client/kv.js.map +1 -0
- package/dist/client/metrics.d.ts +34 -0
- package/dist/client/metrics.d.ts.map +1 -0
- package/dist/client/metrics.js +49 -0
- package/dist/client/metrics.js.map +1 -0
- package/dist/client/pubsub.d.ts +42 -0
- package/dist/client/pubsub.d.ts.map +1 -0
- package/dist/client/pubsub.js +92 -0
- package/dist/client/pubsub.js.map +1 -0
- package/dist/client/queue.d.ts +111 -0
- package/dist/client/queue.d.ts.map +1 -0
- package/dist/client/queue.js +160 -0
- package/dist/client/queue.js.map +1 -0
- package/dist/client/types.d.ts +23 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +3 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client.d.ts +17 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +23 -0
- package/dist/client.js.map +1 -0
- package/dist/events.d.ts +184 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +340 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/queue.d.ts +104 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +139 -0
- package/dist/queue.js.map +1 -0
- package/dist/types.d.ts +185 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/worker.d.ts +88 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +296 -0
- package/dist/worker.js.map +1 -0
- package/package.json +70 -0
package/dist/queue.d.ts
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import type { Job, ClientOptions } from './types';
|
|
2
|
+
export interface QueueOptions extends ClientOptions {
|
|
3
|
+
/** Default job options for all jobs in this queue */
|
|
4
|
+
defaultJobOptions?: JobOptions;
|
|
5
|
+
}
|
|
6
|
+
export interface JobOptions {
|
|
7
|
+
/** Job priority (higher = first) */
|
|
8
|
+
priority?: number;
|
|
9
|
+
/** Delay in ms */
|
|
10
|
+
delay?: number;
|
|
11
|
+
/** Number of retry attempts (BullMQ-compatible alias for max_attempts) */
|
|
12
|
+
attempts?: number;
|
|
13
|
+
/** Backoff configuration */
|
|
14
|
+
backoff?: number | {
|
|
15
|
+
type: 'exponential' | 'fixed';
|
|
16
|
+
delay: number;
|
|
17
|
+
};
|
|
18
|
+
/** Job timeout in ms */
|
|
19
|
+
timeout?: number;
|
|
20
|
+
/** Time-to-live in ms */
|
|
21
|
+
ttl?: number;
|
|
22
|
+
/** Unique key for deduplication */
|
|
23
|
+
jobId?: string;
|
|
24
|
+
/** Remove job on completion */
|
|
25
|
+
removeOnComplete?: boolean | number;
|
|
26
|
+
/** Remove job on failure */
|
|
27
|
+
removeOnFail?: boolean | number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* BullMQ-compatible Queue class
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* import { Queue } from 'flashq';
|
|
35
|
+
*
|
|
36
|
+
* const emailQueue = new Queue('emails');
|
|
37
|
+
*
|
|
38
|
+
* await emailQueue.add('send', { to: 'user@example.com' }, {
|
|
39
|
+
* attempts: 3,
|
|
40
|
+
* backoff: { type: 'exponential', delay: 1000 }
|
|
41
|
+
* });
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare class Queue<T = unknown> {
|
|
45
|
+
private client;
|
|
46
|
+
private defaultJobOptions;
|
|
47
|
+
readonly name: string;
|
|
48
|
+
constructor(name: string, options?: QueueOptions);
|
|
49
|
+
/**
|
|
50
|
+
* Add a job to the queue (BullMQ-compatible)
|
|
51
|
+
*/
|
|
52
|
+
add(name: string, data: T, options?: JobOptions): Promise<Job<T>>;
|
|
53
|
+
/**
|
|
54
|
+
* Add multiple jobs (BullMQ-compatible)
|
|
55
|
+
*/
|
|
56
|
+
addBulk(jobs: Array<{
|
|
57
|
+
name: string;
|
|
58
|
+
data: T;
|
|
59
|
+
opts?: JobOptions;
|
|
60
|
+
}>): Promise<Job<T>[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Get a job by ID
|
|
63
|
+
*/
|
|
64
|
+
getJob(jobId: number): Promise<Job<T> | null>;
|
|
65
|
+
/**
|
|
66
|
+
* Pause the queue
|
|
67
|
+
*/
|
|
68
|
+
pause(): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Resume the queue
|
|
71
|
+
*/
|
|
72
|
+
resume(): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Check if queue is paused
|
|
75
|
+
*/
|
|
76
|
+
isPaused(): Promise<boolean>;
|
|
77
|
+
/**
|
|
78
|
+
* Get job counts by state
|
|
79
|
+
*/
|
|
80
|
+
getJobCounts(): Promise<{
|
|
81
|
+
waiting: number;
|
|
82
|
+
active: number;
|
|
83
|
+
completed: number;
|
|
84
|
+
failed: number;
|
|
85
|
+
delayed: number;
|
|
86
|
+
}>;
|
|
87
|
+
/**
|
|
88
|
+
* Drain the queue (remove all waiting jobs)
|
|
89
|
+
*/
|
|
90
|
+
drain(): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Obliterate the queue (remove all data)
|
|
93
|
+
*/
|
|
94
|
+
obliterate(): Promise<void>;
|
|
95
|
+
/**
|
|
96
|
+
* Clean jobs by state and age
|
|
97
|
+
*/
|
|
98
|
+
clean(grace: number, limit: number, type: 'completed' | 'failed' | 'delayed' | 'waiting'): Promise<number[]>;
|
|
99
|
+
/**
|
|
100
|
+
* Close the queue connection
|
|
101
|
+
*/
|
|
102
|
+
close(): Promise<void>;
|
|
103
|
+
}
|
|
104
|
+
//# sourceMappingURL=queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAe,aAAa,EAAE,MAAM,SAAS,CAAC;AAE/D,MAAM,WAAW,YAAa,SAAQ,aAAa;IACjD,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,UAAU,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,oCAAoC;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,wBAAwB;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yBAAyB;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,gBAAgB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACpC,4BAA4B;IAC5B,YAAY,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,KAAK,CAAC,CAAC,GAAG,OAAO;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAa;IAEtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;gBAEV,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,YAAiB;IAMpD;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAyB3E;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,UAAU,CAAA;KAAE,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAuB3F;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAKnD;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;IAIlC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAIF;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC;;OAEG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAKlH;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|
package/dist/queue.js
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Queue = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* BullMQ-compatible Queue class
|
|
6
|
+
*/
|
|
7
|
+
const client_1 = require("./client");
|
|
8
|
+
/**
|
|
9
|
+
* BullMQ-compatible Queue class
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { Queue } from 'flashq';
|
|
14
|
+
*
|
|
15
|
+
* const emailQueue = new Queue('emails');
|
|
16
|
+
*
|
|
17
|
+
* await emailQueue.add('send', { to: 'user@example.com' }, {
|
|
18
|
+
* attempts: 3,
|
|
19
|
+
* backoff: { type: 'exponential', delay: 1000 }
|
|
20
|
+
* });
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
class Queue {
|
|
24
|
+
client;
|
|
25
|
+
defaultJobOptions;
|
|
26
|
+
name;
|
|
27
|
+
constructor(name, options = {}) {
|
|
28
|
+
this.name = name;
|
|
29
|
+
this.client = new client_1.FlashQ(options);
|
|
30
|
+
this.defaultJobOptions = options.defaultJobOptions || {};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Add a job to the queue (BullMQ-compatible)
|
|
34
|
+
*/
|
|
35
|
+
async add(name, data, options = {}) {
|
|
36
|
+
const opts = { ...this.defaultJobOptions, ...options };
|
|
37
|
+
// Convert BullMQ options to flashQ options
|
|
38
|
+
const pushOpts = {
|
|
39
|
+
priority: opts.priority,
|
|
40
|
+
delay: opts.delay,
|
|
41
|
+
max_attempts: opts.attempts,
|
|
42
|
+
timeout: opts.timeout,
|
|
43
|
+
ttl: opts.ttl,
|
|
44
|
+
jobId: opts.jobId,
|
|
45
|
+
};
|
|
46
|
+
// Handle backoff (BullMQ uses object, flashQ uses number)
|
|
47
|
+
if (opts.backoff) {
|
|
48
|
+
if (typeof opts.backoff === 'number') {
|
|
49
|
+
pushOpts.backoff = opts.backoff;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
pushOpts.backoff = opts.backoff.delay;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return this.client.add(this.name, { name, ...data }, pushOpts);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Add multiple jobs (BullMQ-compatible)
|
|
59
|
+
*/
|
|
60
|
+
async addBulk(jobs) {
|
|
61
|
+
const flashqJobs = jobs.map(job => {
|
|
62
|
+
const opts = { ...this.defaultJobOptions, ...job.opts };
|
|
63
|
+
return {
|
|
64
|
+
data: { name: job.name, ...job.data },
|
|
65
|
+
priority: opts.priority,
|
|
66
|
+
delay: opts.delay,
|
|
67
|
+
max_attempts: opts.attempts,
|
|
68
|
+
timeout: opts.timeout,
|
|
69
|
+
ttl: opts.ttl,
|
|
70
|
+
jobId: opts.jobId,
|
|
71
|
+
backoff: typeof opts.backoff === 'number' ? opts.backoff : opts.backoff?.delay,
|
|
72
|
+
};
|
|
73
|
+
});
|
|
74
|
+
const ids = await this.client.addBulk(this.name, flashqJobs);
|
|
75
|
+
return ids.map((id, i) => ({
|
|
76
|
+
id,
|
|
77
|
+
queue: this.name,
|
|
78
|
+
data: jobs[i].data,
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get a job by ID
|
|
83
|
+
*/
|
|
84
|
+
async getJob(jobId) {
|
|
85
|
+
const result = await this.client.getJob(jobId);
|
|
86
|
+
return result?.job;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Pause the queue
|
|
90
|
+
*/
|
|
91
|
+
async pause() {
|
|
92
|
+
await this.client.pause(this.name);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Resume the queue
|
|
96
|
+
*/
|
|
97
|
+
async resume() {
|
|
98
|
+
await this.client.resume(this.name);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Check if queue is paused
|
|
102
|
+
*/
|
|
103
|
+
async isPaused() {
|
|
104
|
+
return this.client.isPaused(this.name);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get job counts by state
|
|
108
|
+
*/
|
|
109
|
+
async getJobCounts() {
|
|
110
|
+
return this.client.getJobCounts(this.name);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Drain the queue (remove all waiting jobs)
|
|
114
|
+
*/
|
|
115
|
+
async drain() {
|
|
116
|
+
await this.client.drain(this.name);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Obliterate the queue (remove all data)
|
|
120
|
+
*/
|
|
121
|
+
async obliterate() {
|
|
122
|
+
await this.client.obliterate(this.name);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Clean jobs by state and age
|
|
126
|
+
*/
|
|
127
|
+
async clean(grace, limit, type) {
|
|
128
|
+
const count = await this.client.clean(this.name, grace, type, limit);
|
|
129
|
+
return Array(count).fill(0);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Close the queue connection
|
|
133
|
+
*/
|
|
134
|
+
async close() {
|
|
135
|
+
await this.client.close();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
exports.Queue = Queue;
|
|
139
|
+
//# sourceMappingURL=queue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,qCAAkC;AA6BlC;;;;;;;;;;;;;;GAcG;AACH,MAAa,KAAK;IACR,MAAM,CAAS;IACf,iBAAiB,CAAa;IAE7B,IAAI,CAAS;IAEtB,YAAY,IAAY,EAAE,UAAwB,EAAE;QAClD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAC,IAAY,EAAE,IAAO,EAAE,UAAsB,EAAE;QACvD,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,OAAO,EAAE,CAAC;QAEvD,2CAA2C;QAC3C,MAAM,QAAQ,GAAgB;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,IAAI,CAAC,QAAQ;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;QAEF,0DAA0D;QAC1D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;gBACrC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YACxC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,IAAc,EAAE,EAAE,QAAQ,CAAoB,CAAC;IAC9F,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,IAAyD;QACrE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAChC,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACxD,OAAO;gBACL,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,IAAc,EAAE;gBAC/C,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,YAAY,EAAE,IAAI,CAAC,QAAQ;gBAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK;aAC/E,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC7D,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACzB,EAAE;YACF,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;SACnB,CAAC,CAAa,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,MAAM,EAAE,GAAoB,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAOhB,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,KAAa,EAAE,IAAoD;QAC5F,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACrE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;CACF;AAxID,sBAwIC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* flashQ TypeScript SDK Types
|
|
3
|
+
*/
|
|
4
|
+
export interface Job<T = unknown> {
|
|
5
|
+
id: number;
|
|
6
|
+
queue: string;
|
|
7
|
+
data: T;
|
|
8
|
+
priority: number;
|
|
9
|
+
attempts: number;
|
|
10
|
+
created_at: number;
|
|
11
|
+
run_at: number;
|
|
12
|
+
started_at: number;
|
|
13
|
+
max_attempts: number;
|
|
14
|
+
backoff: number;
|
|
15
|
+
ttl: number;
|
|
16
|
+
timeout: number;
|
|
17
|
+
progress: number;
|
|
18
|
+
unique_key?: string;
|
|
19
|
+
custom_id?: string;
|
|
20
|
+
tags: string[];
|
|
21
|
+
depends_on: number[];
|
|
22
|
+
parent_id?: number;
|
|
23
|
+
children_ids: number[];
|
|
24
|
+
children_completed: number;
|
|
25
|
+
lifo: boolean;
|
|
26
|
+
remove_on_complete: boolean;
|
|
27
|
+
remove_on_fail: boolean;
|
|
28
|
+
last_heartbeat: number;
|
|
29
|
+
stall_timeout: number;
|
|
30
|
+
stall_count: number;
|
|
31
|
+
keep_completed_age: number;
|
|
32
|
+
keep_completed_count: number;
|
|
33
|
+
completed_at: number;
|
|
34
|
+
}
|
|
35
|
+
export type JobState = 'waiting' | 'delayed' | 'active' | 'completed' | 'failed';
|
|
36
|
+
export interface JobWithState<T = unknown> {
|
|
37
|
+
job: Job<T>;
|
|
38
|
+
state: JobState;
|
|
39
|
+
}
|
|
40
|
+
export interface PushOptions {
|
|
41
|
+
/** Higher = processed first (default: 0) */
|
|
42
|
+
priority?: number;
|
|
43
|
+
/** Delay in ms before job is available */
|
|
44
|
+
delay?: number;
|
|
45
|
+
/** Max retry attempts (default: 0 = no retry) */
|
|
46
|
+
max_attempts?: number;
|
|
47
|
+
/** Backoff base in ms (exponential: backoff * 2^attempt) */
|
|
48
|
+
backoff?: number;
|
|
49
|
+
/** Job timeout in ms */
|
|
50
|
+
timeout?: number;
|
|
51
|
+
/** Time-to-live in ms (job expires after) */
|
|
52
|
+
ttl?: number;
|
|
53
|
+
/** Unique key for deduplication */
|
|
54
|
+
unique_key?: string;
|
|
55
|
+
/** Custom ID for lookup */
|
|
56
|
+
jobId?: string;
|
|
57
|
+
/** Job IDs that must complete first */
|
|
58
|
+
depends_on?: number[];
|
|
59
|
+
/** Tags for filtering */
|
|
60
|
+
tags?: string[];
|
|
61
|
+
/** LIFO mode (stack) */
|
|
62
|
+
lifo?: boolean;
|
|
63
|
+
/** Remove from completed set immediately */
|
|
64
|
+
remove_on_complete?: boolean;
|
|
65
|
+
/** Remove from DLQ immediately */
|
|
66
|
+
remove_on_fail?: boolean;
|
|
67
|
+
/** Stall detection timeout in ms */
|
|
68
|
+
stall_timeout?: number;
|
|
69
|
+
/** Debounce ID for grouping */
|
|
70
|
+
debounce_id?: string;
|
|
71
|
+
/** Debounce window in ms */
|
|
72
|
+
debounce_ttl?: number;
|
|
73
|
+
/** Keep completed job result for this duration (ms) */
|
|
74
|
+
keepCompletedAge?: number;
|
|
75
|
+
/** Keep completed job in last N completed */
|
|
76
|
+
keepCompletedCount?: number;
|
|
77
|
+
}
|
|
78
|
+
export interface WorkerOptions {
|
|
79
|
+
/** Worker ID */
|
|
80
|
+
id?: string;
|
|
81
|
+
/** Parallel job processing (default: 10) */
|
|
82
|
+
concurrency?: number;
|
|
83
|
+
/** Jobs per batch (default: 100) */
|
|
84
|
+
batchSize?: number;
|
|
85
|
+
/** Heartbeat interval in ms (default: 1000) */
|
|
86
|
+
heartbeatInterval?: number;
|
|
87
|
+
/** Auto-ack on success (default: true) */
|
|
88
|
+
autoAck?: boolean;
|
|
89
|
+
}
|
|
90
|
+
export interface ClientOptions {
|
|
91
|
+
/** Server host (default: localhost) */
|
|
92
|
+
host?: string;
|
|
93
|
+
/** TCP port (default: 6789) */
|
|
94
|
+
port?: number;
|
|
95
|
+
/** HTTP port (default: 6790) */
|
|
96
|
+
httpPort?: number;
|
|
97
|
+
/** Unix socket path (alternative to TCP) */
|
|
98
|
+
socketPath?: string;
|
|
99
|
+
/** Auth token */
|
|
100
|
+
token?: string;
|
|
101
|
+
/** Connection timeout in ms (default: 5000) */
|
|
102
|
+
timeout?: number;
|
|
103
|
+
/** Use HTTP instead of TCP */
|
|
104
|
+
useHttp?: boolean;
|
|
105
|
+
/** Use binary (MessagePack) protocol */
|
|
106
|
+
useBinary?: boolean;
|
|
107
|
+
/** Enable auto-reconnect on connection loss (default: true) */
|
|
108
|
+
autoReconnect?: boolean;
|
|
109
|
+
/** Max reconnect attempts (default: 10, 0 = infinite) */
|
|
110
|
+
maxReconnectAttempts?: number;
|
|
111
|
+
/** Initial reconnect delay in ms (default: 1000) */
|
|
112
|
+
reconnectDelay?: number;
|
|
113
|
+
/** Max reconnect delay in ms (default: 30000) */
|
|
114
|
+
maxReconnectDelay?: number;
|
|
115
|
+
}
|
|
116
|
+
export interface QueueInfo {
|
|
117
|
+
name: string;
|
|
118
|
+
pending: number;
|
|
119
|
+
processing: number;
|
|
120
|
+
dlq: number;
|
|
121
|
+
paused: boolean;
|
|
122
|
+
}
|
|
123
|
+
export interface QueueStats {
|
|
124
|
+
queued: number;
|
|
125
|
+
processing: number;
|
|
126
|
+
delayed: number;
|
|
127
|
+
dlq: number;
|
|
128
|
+
}
|
|
129
|
+
export interface CronOptions {
|
|
130
|
+
queue: string;
|
|
131
|
+
data: unknown;
|
|
132
|
+
/** Cron expression: "sec min hour day month weekday" */
|
|
133
|
+
schedule?: string;
|
|
134
|
+
/** Or repeat every N ms */
|
|
135
|
+
repeat_every?: number;
|
|
136
|
+
priority?: number;
|
|
137
|
+
limit?: number;
|
|
138
|
+
}
|
|
139
|
+
export interface CronJob {
|
|
140
|
+
name: string;
|
|
141
|
+
queue: string;
|
|
142
|
+
data: unknown;
|
|
143
|
+
schedule?: string;
|
|
144
|
+
repeat_every?: number;
|
|
145
|
+
priority: number;
|
|
146
|
+
next_run: number;
|
|
147
|
+
executions: number;
|
|
148
|
+
limit?: number;
|
|
149
|
+
}
|
|
150
|
+
export interface Metrics {
|
|
151
|
+
total_pushed: number;
|
|
152
|
+
total_completed: number;
|
|
153
|
+
total_failed: number;
|
|
154
|
+
jobs_per_second: number;
|
|
155
|
+
avg_latency_ms: number;
|
|
156
|
+
queues: QueueMetrics[];
|
|
157
|
+
}
|
|
158
|
+
export interface QueueMetrics {
|
|
159
|
+
name: string;
|
|
160
|
+
pending: number;
|
|
161
|
+
processing: number;
|
|
162
|
+
dlq: number;
|
|
163
|
+
}
|
|
164
|
+
export interface FlowChild {
|
|
165
|
+
queue: string;
|
|
166
|
+
data: unknown;
|
|
167
|
+
priority?: number;
|
|
168
|
+
delay?: number;
|
|
169
|
+
}
|
|
170
|
+
export interface FlowResult {
|
|
171
|
+
parent_id: number;
|
|
172
|
+
children_ids: number[];
|
|
173
|
+
}
|
|
174
|
+
export interface JobLogEntry {
|
|
175
|
+
timestamp: number;
|
|
176
|
+
message: string;
|
|
177
|
+
level: 'info' | 'warn' | 'error';
|
|
178
|
+
}
|
|
179
|
+
export interface ApiResponse<T = unknown> {
|
|
180
|
+
ok: boolean;
|
|
181
|
+
data?: T;
|
|
182
|
+
error?: string;
|
|
183
|
+
}
|
|
184
|
+
export type JobProcessor<T = unknown, R = unknown> = (job: Job<T>) => R | Promise<R>;
|
|
185
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
|
package/dist/worker.d.ts
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import type { JobProcessor, WorkerOptions, ClientOptions } from './types';
|
|
3
|
+
export interface BullMQWorkerOptions extends WorkerOptions, ClientOptions {
|
|
4
|
+
/** Auto-start worker (BullMQ-compatible, default: true) */
|
|
5
|
+
autorun?: boolean;
|
|
6
|
+
}
|
|
7
|
+
type WorkerState = 'idle' | 'starting' | 'running' | 'stopping' | 'stopped';
|
|
8
|
+
/**
|
|
9
|
+
* FlashQ Worker (BullMQ-compatible)
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* // BullMQ-style: auto-starts by default
|
|
14
|
+
* const worker = new Worker('emails', async (job) => {
|
|
15
|
+
* await sendEmail(job.data.to);
|
|
16
|
+
* return { sent: true };
|
|
17
|
+
* });
|
|
18
|
+
*
|
|
19
|
+
* // With options
|
|
20
|
+
* const worker = new Worker('tasks', processor, {
|
|
21
|
+
* concurrency: 10,
|
|
22
|
+
* autorun: false, // disable auto-start
|
|
23
|
+
* });
|
|
24
|
+
* await worker.start();
|
|
25
|
+
*
|
|
26
|
+
* // Graceful shutdown
|
|
27
|
+
* process.on('SIGTERM', () => worker.close());
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export declare class Worker<T = unknown, R = unknown> extends EventEmitter {
|
|
31
|
+
private clients;
|
|
32
|
+
private clientOptions;
|
|
33
|
+
private queues;
|
|
34
|
+
private processor;
|
|
35
|
+
private options;
|
|
36
|
+
private state;
|
|
37
|
+
private processing;
|
|
38
|
+
private jobsProcessed;
|
|
39
|
+
private workers;
|
|
40
|
+
private heartbeatTimer?;
|
|
41
|
+
private startPromise;
|
|
42
|
+
private stopPromise;
|
|
43
|
+
constructor(queues: string | string[], processor: JobProcessor<T, R>, options?: BullMQWorkerOptions);
|
|
44
|
+
/**
|
|
45
|
+
* Start processing jobs
|
|
46
|
+
*/
|
|
47
|
+
start(): Promise<void>;
|
|
48
|
+
private doStart;
|
|
49
|
+
/**
|
|
50
|
+
* Close the worker (BullMQ-compatible alias for stop)
|
|
51
|
+
*/
|
|
52
|
+
close(): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Stop processing jobs (graceful shutdown)
|
|
55
|
+
*/
|
|
56
|
+
stop(): Promise<void>;
|
|
57
|
+
private doStop;
|
|
58
|
+
/**
|
|
59
|
+
* Check if worker is running
|
|
60
|
+
*/
|
|
61
|
+
isRunning(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Get current worker state
|
|
64
|
+
*/
|
|
65
|
+
getState(): WorkerState;
|
|
66
|
+
/**
|
|
67
|
+
* Get number of jobs currently being processed
|
|
68
|
+
*/
|
|
69
|
+
getProcessingCount(): number;
|
|
70
|
+
/**
|
|
71
|
+
* Get total number of jobs processed by this worker
|
|
72
|
+
*/
|
|
73
|
+
getJobsProcessed(): number;
|
|
74
|
+
/**
|
|
75
|
+
* Batch worker loop - pulls and processes jobs in batches for maximum throughput
|
|
76
|
+
*/
|
|
77
|
+
private batchWorkerLoop;
|
|
78
|
+
private processJob;
|
|
79
|
+
private startHeartbeat;
|
|
80
|
+
private sleep;
|
|
81
|
+
/**
|
|
82
|
+
* Update progress for the current job
|
|
83
|
+
* (Use this within your processor function)
|
|
84
|
+
*/
|
|
85
|
+
updateProgress(jobId: number, progress: number, message?: string): Promise<void>;
|
|
86
|
+
}
|
|
87
|
+
export default Worker;
|
|
88
|
+
//# sourceMappingURL=worker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAEV,YAAY,EACZ,aAAa,EACb,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,mBAAoB,SAAQ,aAAa,EAAE,aAAa;IACvE,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,KAAK,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAAE,SAAQ,YAAY;IAChE,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,OAAO,CAAiD;IAChE,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,WAAW,CAA8B;gBAG/C,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAC7B,OAAO,GAAE,mBAAwB;IA4BnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAyBd,OAAO;IAoBrB;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YA2Bb,MAAM;IAoBpB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,QAAQ,IAAI,WAAW;IAIvB;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAI5B;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;YACW,eAAe;YAqFf,UAAU;IAIxB,OAAO,CAAC,cAAc;IAuBtB,OAAO,CAAC,KAAK;IAIb;;;OAGG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKvF;AAED,eAAe,MAAM,CAAC"}
|