flashq 0.2.1 → 0.3.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/dist/client/connection.d.ts +27 -69
- package/dist/client/connection.d.ts.map +1 -1
- package/dist/client/connection.js +291 -272
- package/dist/client/connection.js.map +1 -1
- package/dist/client/http/request.d.ts +24 -0
- package/dist/client/http/request.d.ts.map +1 -0
- package/dist/client/http/request.js +289 -0
- package/dist/client/http/request.js.map +1 -0
- package/dist/client/http/response.d.ts +9 -0
- package/dist/client/http/response.d.ts.map +1 -0
- package/dist/client/http/response.js +80 -0
- package/dist/client/http/response.js.map +1 -0
- package/dist/client/index.d.ts +68 -562
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +186 -638
- package/dist/client/index.js.map +1 -1
- package/dist/client/{advanced.d.ts → methods/advanced.d.ts} +1 -1
- package/dist/client/methods/advanced.d.ts.map +1 -0
- package/dist/client/methods/advanced.js.map +1 -0
- package/dist/client/{core.d.ts → methods/core.d.ts} +25 -2
- package/dist/client/methods/core.d.ts.map +1 -0
- package/dist/client/{core.js → methods/core.js} +106 -1
- package/dist/client/methods/core.js.map +1 -0
- package/dist/client/{cron.d.ts → methods/cron.d.ts} +1 -1
- package/dist/client/methods/cron.d.ts.map +1 -0
- package/dist/client/methods/cron.js.map +1 -0
- package/dist/client/{dlq.d.ts → methods/dlq.d.ts} +1 -1
- package/dist/client/methods/dlq.d.ts.map +1 -0
- package/dist/client/methods/dlq.js.map +1 -0
- package/dist/client/{flows.d.ts → methods/flows.d.ts} +1 -1
- package/dist/client/methods/flows.d.ts.map +1 -0
- package/dist/client/methods/flows.js.map +1 -0
- package/dist/client/{jobs.d.ts → methods/jobs.d.ts} +2 -16
- package/dist/client/methods/jobs.d.ts.map +1 -0
- package/dist/client/{jobs.js → methods/jobs.js} +1 -15
- package/dist/client/methods/jobs.js.map +1 -0
- package/dist/client/{metrics.d.ts → methods/metrics.d.ts} +1 -1
- package/dist/client/methods/metrics.d.ts.map +1 -0
- package/dist/client/methods/metrics.js.map +1 -0
- package/dist/client/{queue.d.ts → methods/queue.d.ts} +1 -1
- package/dist/client/methods/queue.d.ts.map +1 -0
- package/dist/client/methods/queue.js.map +1 -0
- package/dist/client/types.d.ts +10 -3
- package/dist/client/types.d.ts.map +1 -1
- package/dist/errors.d.ts +105 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +223 -0
- package/dist/errors.js.map +1 -0
- package/dist/events/index.d.ts +24 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +53 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/subscriber.d.ts +30 -0
- package/dist/events/subscriber.d.ts.map +1 -0
- package/dist/{events.js → events/subscriber.js} +51 -148
- package/dist/events/subscriber.js.map +1 -0
- package/dist/events/types.d.ts +38 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +6 -0
- package/dist/events/types.js.map +1 -0
- package/dist/hooks.d.ts +166 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +73 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +9 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -2
- package/dist/index.js.map +1 -1
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +9 -5
- package/dist/queue.js.map +1 -1
- package/dist/types.d.ts +53 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +53 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +150 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/retry.d.ts +70 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +149 -0
- package/dist/utils/retry.js.map +1 -0
- package/dist/worker.d.ts +26 -5
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +157 -86
- package/dist/worker.js.map +1 -1
- package/package.json +11 -1
- package/dist/client/advanced.d.ts.map +0 -1
- package/dist/client/advanced.js.map +0 -1
- package/dist/client/core.d.ts.map +0 -1
- package/dist/client/core.js.map +0 -1
- package/dist/client/cron.d.ts.map +0 -1
- package/dist/client/cron.js.map +0 -1
- package/dist/client/dlq.d.ts.map +0 -1
- package/dist/client/dlq.js.map +0 -1
- package/dist/client/flows.d.ts.map +0 -1
- package/dist/client/flows.js.map +0 -1
- package/dist/client/jobs.d.ts.map +0 -1
- package/dist/client/jobs.js.map +0 -1
- package/dist/client/kv.d.ts +0 -63
- package/dist/client/kv.d.ts.map +0 -1
- package/dist/client/kv.js +0 -131
- package/dist/client/kv.js.map +0 -1
- package/dist/client/metrics.d.ts.map +0 -1
- package/dist/client/metrics.js.map +0 -1
- package/dist/client/pubsub.d.ts +0 -42
- package/dist/client/pubsub.d.ts.map +0 -1
- package/dist/client/pubsub.js +0 -92
- package/dist/client/pubsub.js.map +0 -1
- package/dist/client/queue.d.ts.map +0 -1
- package/dist/client/queue.js.map +0 -1
- package/dist/events.d.ts +0 -184
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js.map +0 -1
- /package/dist/client/{advanced.js → methods/advanced.js} +0 -0
- /package/dist/client/{cron.js → methods/cron.js} +0 -0
- /package/dist/client/{dlq.js → methods/dlq.js} +0 -0
- /package/dist/client/{flows.js → methods/flows.js} +0 -0
- /package/dist/client/{metrics.js → methods/metrics.js} +0 -0
- /package/dist/client/{queue.js → methods/queue.js} +0 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RetryPresets = void 0;
|
|
4
|
+
exports.isRetryable = isRetryable;
|
|
5
|
+
exports.calculateDelay = calculateDelay;
|
|
6
|
+
exports.withRetry = withRetry;
|
|
7
|
+
exports.retryable = retryable;
|
|
8
|
+
/**
|
|
9
|
+
* Retry utility for automatic retries on transient failures
|
|
10
|
+
*/
|
|
11
|
+
const errors_1 = require("../errors");
|
|
12
|
+
const DEFAULT_OPTIONS = {
|
|
13
|
+
maxRetries: 3,
|
|
14
|
+
initialDelay: 100,
|
|
15
|
+
maxDelay: 5000,
|
|
16
|
+
backoffMultiplier: 2,
|
|
17
|
+
jitter: true,
|
|
18
|
+
};
|
|
19
|
+
/** Check if an error is retryable */
|
|
20
|
+
function isRetryable(error) {
|
|
21
|
+
// FlashQ errors have retryable flag
|
|
22
|
+
if (error instanceof errors_1.FlashQError) {
|
|
23
|
+
return error.retryable;
|
|
24
|
+
}
|
|
25
|
+
// Network errors are generally retryable
|
|
26
|
+
const message = error.message.toLowerCase();
|
|
27
|
+
const retryablePatterns = [
|
|
28
|
+
'timeout',
|
|
29
|
+
'econnrefused',
|
|
30
|
+
'econnreset',
|
|
31
|
+
'epipe',
|
|
32
|
+
'enetunreach',
|
|
33
|
+
'ehostunreach',
|
|
34
|
+
'socket hang up',
|
|
35
|
+
'network',
|
|
36
|
+
'connection',
|
|
37
|
+
'aborted',
|
|
38
|
+
];
|
|
39
|
+
return retryablePatterns.some((pattern) => message.includes(pattern));
|
|
40
|
+
}
|
|
41
|
+
/** Calculate delay for next retry with exponential backoff */
|
|
42
|
+
function calculateDelay(attempt, options) {
|
|
43
|
+
const delay = Math.min(options.initialDelay * Math.pow(options.backoffMultiplier, attempt - 1), options.maxDelay);
|
|
44
|
+
if (options.jitter) {
|
|
45
|
+
// Add ±25% jitter
|
|
46
|
+
const jitterRange = delay * 0.25;
|
|
47
|
+
return delay + (Math.random() * jitterRange * 2 - jitterRange);
|
|
48
|
+
}
|
|
49
|
+
return delay;
|
|
50
|
+
}
|
|
51
|
+
/** Sleep for a given number of milliseconds */
|
|
52
|
+
function sleep(ms) {
|
|
53
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Execute a function with automatic retries on failure.
|
|
57
|
+
*
|
|
58
|
+
* @param fn - Function to execute
|
|
59
|
+
* @param options - Retry options
|
|
60
|
+
* @returns Result of the function
|
|
61
|
+
* @throws Last error after all retries exhausted
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* ```typescript
|
|
65
|
+
* const result = await withRetry(
|
|
66
|
+
* () => client.push('queue', data),
|
|
67
|
+
* { maxRetries: 3, onRetry: (err, attempt) => console.log(`Retry ${attempt}`) }
|
|
68
|
+
* );
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
async function withRetry(fn, options = {}) {
|
|
72
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
73
|
+
let lastError = null;
|
|
74
|
+
for (let attempt = 1; attempt <= opts.maxRetries + 1; attempt++) {
|
|
75
|
+
try {
|
|
76
|
+
return await fn();
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
lastError = error instanceof Error ? error : new Error(String(error));
|
|
80
|
+
// Check if we should retry
|
|
81
|
+
const shouldRetry = attempt <= opts.maxRetries &&
|
|
82
|
+
(opts.shouldRetry ? opts.shouldRetry(lastError, attempt) : isRetryable(lastError));
|
|
83
|
+
// Check retryOn filter
|
|
84
|
+
if (shouldRetry && opts.retryOn && lastError instanceof errors_1.FlashQError) {
|
|
85
|
+
if (!opts.retryOn.includes(lastError.code)) {
|
|
86
|
+
throw lastError;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (!shouldRetry) {
|
|
90
|
+
throw lastError;
|
|
91
|
+
}
|
|
92
|
+
// Calculate delay and wait
|
|
93
|
+
const delay = calculateDelay(attempt, opts);
|
|
94
|
+
// Notify callback
|
|
95
|
+
if (opts.onRetry) {
|
|
96
|
+
opts.onRetry(lastError, attempt, delay);
|
|
97
|
+
}
|
|
98
|
+
await sleep(delay);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
throw lastError;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Create a retryable version of a function.
|
|
105
|
+
*
|
|
106
|
+
* @param fn - Function to wrap
|
|
107
|
+
* @param options - Retry options
|
|
108
|
+
* @returns Wrapped function with retry logic
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* const retryablePush = retryable(
|
|
113
|
+
* (queue: string, data: any) => client.push(queue, data),
|
|
114
|
+
* { maxRetries: 3 }
|
|
115
|
+
* );
|
|
116
|
+
* await retryablePush('emails', { to: 'user@example.com' });
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
function retryable(fn, options = {}) {
|
|
120
|
+
return (...args) => withRetry(() => fn(...args), options);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Retry configuration presets
|
|
124
|
+
*/
|
|
125
|
+
exports.RetryPresets = {
|
|
126
|
+
/** Quick retries for interactive operations */
|
|
127
|
+
fast: {
|
|
128
|
+
maxRetries: 2,
|
|
129
|
+
initialDelay: 50,
|
|
130
|
+
maxDelay: 500,
|
|
131
|
+
},
|
|
132
|
+
/** Standard retries for most operations */
|
|
133
|
+
standard: {
|
|
134
|
+
maxRetries: 3,
|
|
135
|
+
initialDelay: 100,
|
|
136
|
+
maxDelay: 5000,
|
|
137
|
+
},
|
|
138
|
+
/** Aggressive retries for critical operations */
|
|
139
|
+
aggressive: {
|
|
140
|
+
maxRetries: 5,
|
|
141
|
+
initialDelay: 200,
|
|
142
|
+
maxDelay: 30000,
|
|
143
|
+
},
|
|
144
|
+
/** No retries */
|
|
145
|
+
none: {
|
|
146
|
+
maxRetries: 0,
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":";;;AAiCA,kCAsBC;AAGD,wCAgBC;AAuBD,8BAuCC;AAkBD,8BAKC;AA/JD;;GAEG;AACH,sCAAwC;AAqBxC,MAAM,eAAe,GAAwE;IAC3F,UAAU,EAAE,CAAC;IACb,YAAY,EAAE,GAAG;IACjB,QAAQ,EAAE,IAAI;IACd,iBAAiB,EAAE,CAAC;IACpB,MAAM,EAAE,IAAI;CACb,CAAC;AAEF,qCAAqC;AACrC,SAAgB,WAAW,CAAC,KAAY;IACtC,oCAAoC;IACpC,IAAI,KAAK,YAAY,oBAAW,EAAE,CAAC;QACjC,OAAO,KAAK,CAAC,SAAS,CAAC;IACzB,CAAC;IAED,yCAAyC;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,iBAAiB,GAAG;QACxB,SAAS;QACT,cAAc;QACd,YAAY;QACZ,OAAO;QACP,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,SAAS;QACT,YAAY;QACZ,SAAS;KACV,CAAC;IAEF,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,8DAA8D;AAC9D,SAAgB,cAAc,CAC5B,OAAe,EACf,OAA4E;IAE5E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CACpB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,GAAG,CAAC,CAAC,EACvE,OAAO,CAAC,QAAQ,CACjB,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,kBAAkB;QAClB,MAAM,WAAW,GAAG,KAAK,GAAG,IAAI,CAAC;QACjC,OAAO,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,GAAG,CAAC,GAAG,WAAW,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+CAA+C;AAC/C,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACI,KAAK,UAAU,SAAS,CAAI,EAAoB,EAAE,UAAwB,EAAE;IACjF,MAAM,IAAI,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;IAChD,IAAI,SAAS,GAAiB,IAAI,CAAC;IAEnC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;QAChE,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAEtE,2BAA2B;YAC3B,MAAM,WAAW,GACf,OAAO,IAAI,IAAI,CAAC,UAAU;gBAC1B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC;YAErF,uBAAuB;YACvB,IAAI,WAAW,IAAI,IAAI,CAAC,OAAO,IAAI,SAAS,YAAY,oBAAW,EAAE,CAAC;gBACpE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3C,MAAM,SAAS,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,SAAS,CAAC;YAClB,CAAC;YAED,2BAA2B;YAC3B,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAE5C,kBAAkB;YAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC;YAED,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,SAAS,CACvB,EAAwC,EACxC,UAAwB,EAAE;IAE1B,OAAO,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACU,QAAA,YAAY,GAAG;IAC1B,+CAA+C;IAC/C,IAAI,EAAE;QACJ,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,EAAE;QAChB,QAAQ,EAAE,GAAG;KACE;IAEjB,2CAA2C;IAC3C,QAAQ,EAAE;QACR,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,GAAG;QACjB,QAAQ,EAAE,IAAI;KACC;IAEjB,iDAAiD;IACjD,UAAU,EAAE;QACV,UAAU,EAAE,CAAC;QACb,YAAY,EAAE,GAAG;QACjB,QAAQ,EAAE,KAAK;KACA;IAEjB,iBAAiB;IACjB,IAAI,EAAE;QACJ,UAAU,EAAE,CAAC;KACE;CAClB,CAAC"}
|
package/dist/worker.d.ts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
2
|
import type { JobProcessor, WorkerOptions, ClientOptions } from './types';
|
|
3
|
-
|
|
3
|
+
import { type WorkerHooks } from './hooks';
|
|
4
|
+
export interface BullMQWorkerOptions extends Omit<ClientOptions, 'hooks'>, WorkerOptions {
|
|
4
5
|
/** Auto-start worker (BullMQ-compatible, default: true) */
|
|
5
6
|
autorun?: boolean;
|
|
7
|
+
/** Enable debug logging (default: false) */
|
|
8
|
+
debug?: boolean;
|
|
9
|
+
/** Graceful shutdown timeout in ms (default: 30000). Use 0 for infinite wait. */
|
|
10
|
+
closeTimeout?: number;
|
|
11
|
+
/** Worker hooks for observability */
|
|
12
|
+
workerHooks?: WorkerHooks;
|
|
6
13
|
}
|
|
7
14
|
type WorkerState = 'idle' | 'starting' | 'running' | 'stopping' | 'stopped';
|
|
8
15
|
/**
|
|
@@ -37,9 +44,11 @@ export declare class Worker<T = unknown, R = unknown> extends EventEmitter {
|
|
|
37
44
|
private processing;
|
|
38
45
|
private jobsProcessed;
|
|
39
46
|
private workers;
|
|
40
|
-
private heartbeatTimer?;
|
|
41
47
|
private startPromise;
|
|
42
48
|
private stopPromise;
|
|
49
|
+
private abortController;
|
|
50
|
+
private workerHooks?;
|
|
51
|
+
private log;
|
|
43
52
|
constructor(queues: string | string[], processor: JobProcessor<T, R>, options?: BullMQWorkerOptions);
|
|
44
53
|
/**
|
|
45
54
|
* Start processing jobs
|
|
@@ -48,13 +57,21 @@ export declare class Worker<T = unknown, R = unknown> extends EventEmitter {
|
|
|
48
57
|
private doStart;
|
|
49
58
|
/**
|
|
50
59
|
* Close the worker (BullMQ-compatible alias for stop)
|
|
60
|
+
* @param force If true, don't wait for jobs to complete (default: false)
|
|
51
61
|
*/
|
|
52
|
-
close(): Promise<void>;
|
|
62
|
+
close(force?: boolean): Promise<void>;
|
|
53
63
|
/**
|
|
54
64
|
* Stop processing jobs (graceful shutdown)
|
|
65
|
+
* @param force If true, don't wait for jobs to complete (default: false)
|
|
55
66
|
*/
|
|
56
|
-
stop(): Promise<void>;
|
|
67
|
+
stop(force?: boolean): Promise<void>;
|
|
57
68
|
private doStop;
|
|
69
|
+
/**
|
|
70
|
+
* Wait for all currently processing jobs to complete
|
|
71
|
+
* @param timeout Max wait time in ms (default: uses closeTimeout option)
|
|
72
|
+
* @returns true if all jobs completed, false if timeout
|
|
73
|
+
*/
|
|
74
|
+
waitForJobs(timeout?: number): Promise<boolean>;
|
|
58
75
|
/**
|
|
59
76
|
* Check if worker is running
|
|
60
77
|
*/
|
|
@@ -75,12 +92,16 @@ export declare class Worker<T = unknown, R = unknown> extends EventEmitter {
|
|
|
75
92
|
* Batch worker loop - pulls and processes jobs in batches for maximum throughput
|
|
76
93
|
*/
|
|
77
94
|
private batchWorkerLoop;
|
|
95
|
+
/**
|
|
96
|
+
* Process a batch of jobs - always completes even during shutdown
|
|
97
|
+
*/
|
|
98
|
+
private processJobBatch;
|
|
78
99
|
private processJob;
|
|
79
|
-
private startHeartbeat;
|
|
80
100
|
private sleep;
|
|
81
101
|
/**
|
|
82
102
|
* Update progress for the current job
|
|
83
103
|
* (Use this within your processor function)
|
|
104
|
+
* @throws Error if worker is not running
|
|
84
105
|
*/
|
|
85
106
|
updateProgress(jobId: number, progress: number, message?: string): Promise<void>;
|
|
86
107
|
}
|
package/dist/worker.d.ts.map
CHANGED
|
@@ -1 +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,
|
|
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,EAAO,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAIL,KAAK,WAAW,EAEjB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,EAAE,aAAa;IACtF,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;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,CAIb;IACF,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,WAAW,CAAC,CAAc;IAElC,OAAO,CAAC,GAAG;gBAYT,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAC7B,OAAO,GAAE,mBAAwB;IA+BnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAyBd,OAAO;IAoBrB;;;OAGG;IACG,KAAK,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzC;;;OAGG;IACG,IAAI,CAAC,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;YA2B1B,MAAM;IAmDpB;;;;OAIG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBrD;;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;IAuC7B;;OAEG;YACW,eAAe;YAwEf,UAAU;IAIxB,OAAO,CAAC,KAAK;IAIb;;;;OAIG;IACG,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAcvF;AAED,eAAe,MAAM,CAAC"}
|
package/dist/worker.js
CHANGED
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.Worker = void 0;
|
|
4
4
|
const events_1 = require("events");
|
|
5
5
|
const client_1 = require("./client");
|
|
6
|
+
const hooks_1 = require("./hooks");
|
|
6
7
|
/**
|
|
7
8
|
* FlashQ Worker (BullMQ-compatible)
|
|
8
9
|
*
|
|
@@ -35,9 +36,22 @@ class Worker extends events_1.EventEmitter {
|
|
|
35
36
|
processing = 0;
|
|
36
37
|
jobsProcessed = 0;
|
|
37
38
|
workers = [];
|
|
38
|
-
heartbeatTimer;
|
|
39
39
|
startPromise = null;
|
|
40
40
|
stopPromise = null;
|
|
41
|
+
abortController = null;
|
|
42
|
+
workerHooks;
|
|
43
|
+
log(message, data) {
|
|
44
|
+
if (!this.options.debug)
|
|
45
|
+
return;
|
|
46
|
+
const timestamp = new Date().toISOString();
|
|
47
|
+
const prefix = `[flashQ Worker ${this.options.id} ${timestamp}]`;
|
|
48
|
+
if (data !== undefined) {
|
|
49
|
+
console.log(`${prefix} ${message}`, data);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
console.log(`${prefix} ${message}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
41
55
|
constructor(queues, processor, options = {}) {
|
|
42
56
|
super();
|
|
43
57
|
this.queues = Array.isArray(queues) ? queues : [queues];
|
|
@@ -46,10 +60,12 @@ class Worker extends events_1.EventEmitter {
|
|
|
46
60
|
id: options.id ?? `worker-${Date.now()}-${Math.random().toString(36).slice(2)}`,
|
|
47
61
|
concurrency: options.concurrency ?? 10,
|
|
48
62
|
batchSize: options.batchSize ?? 100,
|
|
49
|
-
heartbeatInterval: options.heartbeatInterval ?? 1000,
|
|
50
63
|
autoAck: options.autoAck ?? true,
|
|
51
|
-
autorun: options.autorun ?? true,
|
|
64
|
+
autorun: options.autorun ?? true,
|
|
65
|
+
debug: options.debug ?? false,
|
|
66
|
+
closeTimeout: options.closeTimeout ?? 30000,
|
|
52
67
|
};
|
|
68
|
+
this.workerHooks = options.workerHooks;
|
|
53
69
|
this.clientOptions = {
|
|
54
70
|
host: options.host,
|
|
55
71
|
port: options.port,
|
|
@@ -87,16 +103,17 @@ class Worker extends events_1.EventEmitter {
|
|
|
87
103
|
}
|
|
88
104
|
}
|
|
89
105
|
async doStart() {
|
|
106
|
+
this.log('Starting worker', { queues: this.queues, concurrency: this.options.concurrency });
|
|
90
107
|
// Create a separate client for each worker (TCP pull is blocking)
|
|
91
108
|
for (let i = 0; i < this.options.concurrency; i++) {
|
|
92
|
-
const client = new client_1.FlashQ(this.clientOptions);
|
|
109
|
+
const client = new client_1.FlashQ({ ...this.clientOptions, debug: this.options.debug });
|
|
93
110
|
await client.connect();
|
|
94
111
|
this.clients.push(client);
|
|
112
|
+
this.log(`Client ${i} connected`);
|
|
95
113
|
}
|
|
96
114
|
this.state = 'running';
|
|
97
115
|
this.emit('ready');
|
|
98
|
-
|
|
99
|
-
this.startHeartbeat();
|
|
116
|
+
this.log('Worker ready');
|
|
100
117
|
// Start worker loops (each with its own client)
|
|
101
118
|
for (let i = 0; i < this.options.concurrency; i++) {
|
|
102
119
|
this.workers.push(this.batchWorkerLoop(i, this.clients[i]));
|
|
@@ -104,14 +121,16 @@ class Worker extends events_1.EventEmitter {
|
|
|
104
121
|
}
|
|
105
122
|
/**
|
|
106
123
|
* Close the worker (BullMQ-compatible alias for stop)
|
|
124
|
+
* @param force If true, don't wait for jobs to complete (default: false)
|
|
107
125
|
*/
|
|
108
|
-
async close() {
|
|
109
|
-
return this.stop();
|
|
126
|
+
async close(force = false) {
|
|
127
|
+
return this.stop(force);
|
|
110
128
|
}
|
|
111
129
|
/**
|
|
112
130
|
* Stop processing jobs (graceful shutdown)
|
|
131
|
+
* @param force If true, don't wait for jobs to complete (default: false)
|
|
113
132
|
*/
|
|
114
|
-
async stop() {
|
|
133
|
+
async stop(force = false) {
|
|
115
134
|
// Wait for starting to complete first
|
|
116
135
|
if (this.state === 'starting' && this.startPromise) {
|
|
117
136
|
await this.startPromise;
|
|
@@ -126,7 +145,7 @@ class Worker extends events_1.EventEmitter {
|
|
|
126
145
|
}
|
|
127
146
|
this.state = 'stopping';
|
|
128
147
|
this.emit('stopping');
|
|
129
|
-
this.stopPromise = this.doStop();
|
|
148
|
+
this.stopPromise = this.doStop(force);
|
|
130
149
|
try {
|
|
131
150
|
await this.stopPromise;
|
|
132
151
|
}
|
|
@@ -134,21 +153,66 @@ class Worker extends events_1.EventEmitter {
|
|
|
134
153
|
this.stopPromise = null;
|
|
135
154
|
}
|
|
136
155
|
}
|
|
137
|
-
async doStop() {
|
|
138
|
-
|
|
139
|
-
if (
|
|
140
|
-
|
|
141
|
-
this.
|
|
156
|
+
async doStop(force) {
|
|
157
|
+
this.log('Stopping worker', { processing: this.processing, force });
|
|
158
|
+
if (force) {
|
|
159
|
+
// Force close - abort immediately
|
|
160
|
+
this.abortController?.abort();
|
|
161
|
+
this.workers = [];
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
// Graceful shutdown - wait for jobs with timeout
|
|
165
|
+
const timeout = this.options.closeTimeout;
|
|
166
|
+
if (timeout > 0) {
|
|
167
|
+
const timeoutPromise = new Promise((resolve) => setTimeout(() => resolve('timeout'), timeout));
|
|
168
|
+
const result = await Promise.race([
|
|
169
|
+
Promise.all(this.workers).then(() => 'done'),
|
|
170
|
+
timeoutPromise,
|
|
171
|
+
]);
|
|
172
|
+
if (result === 'timeout') {
|
|
173
|
+
this.log('Graceful shutdown timeout reached', { timeout, processing: this.processing });
|
|
174
|
+
this.emit('error', new Error(`Shutdown timeout after ${timeout}ms with ${this.processing} jobs still processing`));
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
// Wait indefinitely
|
|
179
|
+
await Promise.all(this.workers);
|
|
180
|
+
}
|
|
142
181
|
}
|
|
143
|
-
// Wait for current jobs to finish
|
|
144
|
-
await Promise.all(this.workers);
|
|
145
182
|
this.workers = [];
|
|
183
|
+
this.log('All worker loops stopped');
|
|
146
184
|
// Close all clients
|
|
147
185
|
const clientsToClose = [...this.clients];
|
|
148
186
|
this.clients = [];
|
|
149
187
|
await Promise.all(clientsToClose.map((c) => c.close()));
|
|
188
|
+
this.log('All clients closed');
|
|
150
189
|
this.state = 'stopped';
|
|
151
190
|
this.emit('stopped');
|
|
191
|
+
this.emit('drained');
|
|
192
|
+
this.log('Worker stopped', { totalProcessed: this.jobsProcessed });
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Wait for all currently processing jobs to complete
|
|
196
|
+
* @param timeout Max wait time in ms (default: uses closeTimeout option)
|
|
197
|
+
* @returns true if all jobs completed, false if timeout
|
|
198
|
+
*/
|
|
199
|
+
async waitForJobs(timeout) {
|
|
200
|
+
if (this.processing === 0)
|
|
201
|
+
return true;
|
|
202
|
+
const waitTimeout = timeout ?? this.options.closeTimeout;
|
|
203
|
+
return new Promise((resolve) => {
|
|
204
|
+
const checkInterval = setInterval(() => {
|
|
205
|
+
if (this.processing === 0) {
|
|
206
|
+
clearInterval(checkInterval);
|
|
207
|
+
clearTimeout(timer);
|
|
208
|
+
resolve(true);
|
|
209
|
+
}
|
|
210
|
+
}, 50);
|
|
211
|
+
const timer = setTimeout(() => {
|
|
212
|
+
clearInterval(checkInterval);
|
|
213
|
+
resolve(false);
|
|
214
|
+
}, waitTimeout);
|
|
215
|
+
});
|
|
152
216
|
}
|
|
153
217
|
/**
|
|
154
218
|
* Check if worker is running
|
|
@@ -181,6 +245,7 @@ class Worker extends events_1.EventEmitter {
|
|
|
181
245
|
const batchSize = this.options.batchSize;
|
|
182
246
|
while (this.state === 'running') {
|
|
183
247
|
for (const queue of this.queues) {
|
|
248
|
+
// Check before pulling - don't start new work if stopping
|
|
184
249
|
if (this.state !== 'running')
|
|
185
250
|
break;
|
|
186
251
|
try {
|
|
@@ -190,51 +255,9 @@ class Worker extends events_1.EventEmitter {
|
|
|
190
255
|
if (!jobs || jobs.length === 0) {
|
|
191
256
|
continue;
|
|
192
257
|
}
|
|
193
|
-
|
|
194
|
-
//
|
|
195
|
-
|
|
196
|
-
const failedJobs = [];
|
|
197
|
-
// Process all jobs in parallel
|
|
198
|
-
await Promise.all(jobs.map(async (job) => {
|
|
199
|
-
this.emit('active', job, workerId);
|
|
200
|
-
try {
|
|
201
|
-
const result = await this.processJob(job);
|
|
202
|
-
successJobs.push({ job, result });
|
|
203
|
-
}
|
|
204
|
-
catch (error) {
|
|
205
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
206
|
-
failedJobs.push({ job, error: errorMessage });
|
|
207
|
-
}
|
|
208
|
-
}));
|
|
209
|
-
// Ack successful jobs with results - THEN emit completed
|
|
210
|
-
if (this.options.autoAck && successJobs.length > 0) {
|
|
211
|
-
// Use individual ack() to preserve results for finished() promise
|
|
212
|
-
await Promise.all(successJobs.map(async ({ job, result }) => {
|
|
213
|
-
await client.ack(job.id, result);
|
|
214
|
-
this.jobsProcessed++;
|
|
215
|
-
this.emit('completed', job, result, workerId);
|
|
216
|
-
}));
|
|
217
|
-
}
|
|
218
|
-
else if (!this.options.autoAck && successJobs.length > 0) {
|
|
219
|
-
// If autoAck is disabled, emit completed after processing
|
|
220
|
-
for (const { job, result } of successJobs) {
|
|
221
|
-
this.jobsProcessed++;
|
|
222
|
-
this.emit('completed', job, result, workerId);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
// Fail individual jobs that errored - THEN emit failed
|
|
226
|
-
if (this.options.autoAck && failedJobs.length > 0) {
|
|
227
|
-
await Promise.all(failedJobs.map(async ({ job, error }) => {
|
|
228
|
-
await client.fail(job.id, error);
|
|
229
|
-
this.emit('failed', job, new Error(error), workerId);
|
|
230
|
-
}));
|
|
231
|
-
}
|
|
232
|
-
else if (!this.options.autoAck && failedJobs.length > 0) {
|
|
233
|
-
for (const { job, error } of failedJobs) {
|
|
234
|
-
this.emit('failed', job, new Error(error), workerId);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
this.processing -= jobs.length;
|
|
258
|
+
// IMPORTANT: Always process pulled jobs even if state changed during pullBatch
|
|
259
|
+
// This ensures graceful shutdown completes in-flight work
|
|
260
|
+
await this.processJobBatch(workerId, client, jobs);
|
|
238
261
|
}
|
|
239
262
|
catch (error) {
|
|
240
263
|
// Timeout is expected when no jobs available - not an error
|
|
@@ -251,32 +274,70 @@ class Worker extends events_1.EventEmitter {
|
|
|
251
274
|
}
|
|
252
275
|
}
|
|
253
276
|
}
|
|
277
|
+
this.log(`Worker loop ${workerId} exited`, { state: this.state });
|
|
254
278
|
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
279
|
+
/**
|
|
280
|
+
* Process a batch of jobs - always completes even during shutdown
|
|
281
|
+
*/
|
|
282
|
+
async processJobBatch(workerId, client, jobs) {
|
|
283
|
+
this.processing += jobs.length;
|
|
284
|
+
// Track successful and failed jobs
|
|
285
|
+
const successJobs = [];
|
|
286
|
+
const failedJobs = [];
|
|
287
|
+
// Process all jobs in parallel
|
|
288
|
+
await Promise.all(jobs.map(async (job) => {
|
|
289
|
+
this.emit('active', job, workerId);
|
|
290
|
+
// Create hook context for this job
|
|
291
|
+
const hookCtx = (0, hooks_1.createHookContext)({
|
|
292
|
+
job,
|
|
293
|
+
workerId,
|
|
294
|
+
});
|
|
295
|
+
await (0, hooks_1.callHook)(this.workerHooks?.onProcess, hookCtx);
|
|
262
296
|
try {
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
body: JSON.stringify({
|
|
268
|
-
queues: this.queues,
|
|
269
|
-
concurrency: this.options.concurrency,
|
|
270
|
-
jobs_processed: this.jobsProcessed,
|
|
271
|
-
}),
|
|
272
|
-
});
|
|
297
|
+
const result = await this.processJob(job);
|
|
298
|
+
hookCtx.result = result;
|
|
299
|
+
await (0, hooks_1.callHook)(this.workerHooks?.onProcessComplete, hookCtx);
|
|
300
|
+
successJobs.push({ job, result });
|
|
273
301
|
}
|
|
274
|
-
catch {
|
|
275
|
-
|
|
302
|
+
catch (error) {
|
|
303
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
304
|
+
hookCtx.error = err;
|
|
305
|
+
await (0, hooks_1.callErrorHook)(this.workerHooks?.onProcessError, hookCtx, err);
|
|
306
|
+
failedJobs.push({ job, error: err.message });
|
|
276
307
|
}
|
|
277
|
-
};
|
|
278
|
-
|
|
279
|
-
|
|
308
|
+
}));
|
|
309
|
+
// Ack successful jobs with results - THEN emit completed
|
|
310
|
+
if (this.options.autoAck && successJobs.length > 0) {
|
|
311
|
+
// Use individual ack() to preserve results for finished() promise
|
|
312
|
+
await Promise.all(successJobs.map(async ({ job, result }) => {
|
|
313
|
+
await client.ack(job.id, result);
|
|
314
|
+
this.jobsProcessed++;
|
|
315
|
+
this.emit('completed', job, result, workerId);
|
|
316
|
+
}));
|
|
317
|
+
}
|
|
318
|
+
else if (!this.options.autoAck && successJobs.length > 0) {
|
|
319
|
+
// If autoAck is disabled, emit completed after processing
|
|
320
|
+
for (const { job, result } of successJobs) {
|
|
321
|
+
this.jobsProcessed++;
|
|
322
|
+
this.emit('completed', job, result, workerId);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
// Fail individual jobs that errored - THEN emit failed
|
|
326
|
+
if (this.options.autoAck && failedJobs.length > 0) {
|
|
327
|
+
await Promise.all(failedJobs.map(async ({ job, error }) => {
|
|
328
|
+
await client.fail(job.id, error);
|
|
329
|
+
this.emit('failed', job, new Error(error), workerId);
|
|
330
|
+
}));
|
|
331
|
+
}
|
|
332
|
+
else if (!this.options.autoAck && failedJobs.length > 0) {
|
|
333
|
+
for (const { job, error } of failedJobs) {
|
|
334
|
+
this.emit('failed', job, new Error(error), workerId);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
this.processing -= jobs.length;
|
|
338
|
+
}
|
|
339
|
+
async processJob(job) {
|
|
340
|
+
return this.processor(job);
|
|
280
341
|
}
|
|
281
342
|
sleep(ms) {
|
|
282
343
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
@@ -284,11 +345,21 @@ class Worker extends events_1.EventEmitter {
|
|
|
284
345
|
/**
|
|
285
346
|
* Update progress for the current job
|
|
286
347
|
* (Use this within your processor function)
|
|
348
|
+
* @throws Error if worker is not running
|
|
287
349
|
*/
|
|
288
350
|
async updateProgress(jobId, progress, message) {
|
|
289
|
-
if (this.
|
|
290
|
-
|
|
351
|
+
if (this.state !== 'running') {
|
|
352
|
+
const error = new Error(`Cannot update progress: worker is ${this.state}`);
|
|
353
|
+
this.log('updateProgress failed', { jobId, state: this.state });
|
|
354
|
+
throw error;
|
|
355
|
+
}
|
|
356
|
+
if (this.clients.length === 0) {
|
|
357
|
+
const error = new Error('Cannot update progress: no active clients');
|
|
358
|
+
this.log('updateProgress failed', { jobId, reason: 'no clients' });
|
|
359
|
+
throw error;
|
|
291
360
|
}
|
|
361
|
+
await this.clients[0].progress(jobId, progress, message);
|
|
362
|
+
this.log('Progress updated', { jobId, progress, message });
|
|
292
363
|
}
|
|
293
364
|
}
|
|
294
365
|
exports.Worker = Worker;
|
package/dist/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flashq",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Official TypeScript SDK for flashQ - High-Performance Job Queue (BullMQ-compatible API)",
|
|
5
5
|
"author": "Egeo Minotti",
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,6 +32,10 @@
|
|
|
32
32
|
"build": "tsc",
|
|
33
33
|
"typecheck": "tsc --noEmit",
|
|
34
34
|
"test": "bun test",
|
|
35
|
+
"lint": "eslint src tests",
|
|
36
|
+
"lint:fix": "eslint src tests --fix",
|
|
37
|
+
"format": "prettier --write \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
38
|
+
"format:check": "prettier --check \"src/**/*.ts\" \"tests/**/*.ts\"",
|
|
35
39
|
"clean": "rm -rf dist",
|
|
36
40
|
"prepublishOnly": "npm run clean && npm run build"
|
|
37
41
|
},
|
|
@@ -60,6 +64,12 @@
|
|
|
60
64
|
"@msgpack/msgpack": "^3.0.0"
|
|
61
65
|
},
|
|
62
66
|
"devDependencies": {
|
|
67
|
+
"@eslint/js": "^9.39.2",
|
|
68
|
+
"@typescript-eslint/eslint-plugin": "^8.53.1",
|
|
69
|
+
"@typescript-eslint/parser": "^8.53.1",
|
|
70
|
+
"eslint": "^9.39.2",
|
|
71
|
+
"eslint-config-prettier": "^10.1.8",
|
|
72
|
+
"prettier": "^3.8.1",
|
|
63
73
|
"typescript": "^5.0.0"
|
|
64
74
|
},
|
|
65
75
|
"peerDependencies": {
|