flashq 0.3.4 → 0.3.6
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 +3 -1
- package/dist/client/connection.d.ts.map +1 -1
- package/dist/client/connection.js +18 -15
- package/dist/client/connection.js.map +1 -1
- package/dist/client/index.d.ts +2 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +4 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/methods/core.d.ts.map +1 -1
- package/dist/client/methods/core.js +22 -79
- package/dist/client/methods/core.js.map +1 -1
- package/dist/client/methods/jobs.d.ts +18 -0
- package/dist/client/methods/jobs.d.ts.map +1 -1
- package/dist/client/methods/jobs.js +29 -2
- package/dist/client/methods/jobs.js.map +1 -1
- package/dist/client/reconnect.d.ts.map +1 -1
- package/dist/client/reconnect.js +4 -1
- package/dist/client/reconnect.js.map +1 -1
- package/dist/client/tcp/handler.d.ts +44 -4
- package/dist/client/tcp/handler.d.ts.map +1 -1
- package/dist/client/tcp/handler.js +76 -10
- package/dist/client/tcp/handler.js.map +1 -1
- package/dist/client/tcp/index.d.ts +1 -1
- package/dist/client/tcp/index.d.ts.map +1 -1
- package/dist/client/tcp/index.js +2 -1
- package/dist/client/tcp/index.js.map +1 -1
- package/dist/client/validation.d.ts +43 -0
- package/dist/client/validation.d.ts.map +1 -1
- package/dist/client/validation.js +43 -2
- package/dist/client/validation.js.map +1 -1
- package/dist/constants.d.ts +67 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +79 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -1
- package/dist/index.js.map +1 -1
- package/dist/queue.d.ts +16 -1
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +3 -0
- package/dist/queue.js.map +1 -1
- package/dist/utils/retry.d.ts +1 -1
- package/dist/utils/retry.d.ts.map +1 -1
- package/dist/utils/retry.js +11 -10
- package/dist/utils/retry.js.map +1 -1
- package/dist/worker.d.ts +54 -3
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +40 -32
- package/dist/worker.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* SDK Constants
|
|
4
|
+
*
|
|
5
|
+
* Centralized configuration constants to avoid magic numbers
|
|
6
|
+
* and ensure consistency across the codebase.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.DEFAULT_HOST = exports.DEFAULT_HTTP_PORT = exports.DEFAULT_TCP_PORT = exports.DEFAULT_STALL_TIMEOUT = exports.DEFAULT_JOB_PRIORITY = exports.DEFAULT_MAX_QUEUED_REQUESTS = exports.DEFAULT_COMPRESSION_THRESHOLD = exports.DEFAULT_COMPRESSION_ENABLED = exports.RETRY_JITTER_FACTOR = exports.DEFAULT_BACKOFF_MULTIPLIER = exports.DEFAULT_RETRY_MAX_DELAY = exports.DEFAULT_RETRY_INITIAL_DELAY = exports.DEFAULT_RETRY_MAX_ATTEMPTS = exports.RECONNECT_JITTER_FACTOR = exports.DEFAULT_MAX_RECONNECT_ATTEMPTS = exports.DEFAULT_MAX_RECONNECT_DELAY = exports.DEFAULT_RECONNECT_DELAY = exports.WORKER_JOB_CHECK_INTERVAL = exports.DEFAULT_CLOSE_TIMEOUT = exports.WORKER_ERROR_RETRY_DELAY = exports.WORKER_PULL_TIMEOUT = exports.DEFAULT_WORKER_BATCH_SIZE = exports.DEFAULT_WORKER_CONCURRENCY = exports.DEFAULT_FINISHED_TIMEOUT = exports.CLIENT_TIMEOUT_BUFFER = exports.DEFAULT_PULL_TIMEOUT = exports.DEFAULT_CONNECTION_TIMEOUT = exports.MAX_QUEUE_NAME_LENGTH = exports.MAX_BATCH_SIZE = exports.MAX_JOB_DATA_SIZE = void 0;
|
|
10
|
+
// ============== Validation Limits ==============
|
|
11
|
+
/** Maximum allowed job data size in bytes (1MB) */
|
|
12
|
+
exports.MAX_JOB_DATA_SIZE = 1024 * 1024;
|
|
13
|
+
/** Maximum number of jobs per batch operation */
|
|
14
|
+
exports.MAX_BATCH_SIZE = 1000;
|
|
15
|
+
/** Maximum queue name length */
|
|
16
|
+
exports.MAX_QUEUE_NAME_LENGTH = 256;
|
|
17
|
+
// ============== Timeouts ==============
|
|
18
|
+
/** Default connection timeout in ms */
|
|
19
|
+
exports.DEFAULT_CONNECTION_TIMEOUT = 5000;
|
|
20
|
+
/** Default server-side pull timeout in ms */
|
|
21
|
+
exports.DEFAULT_PULL_TIMEOUT = 60000;
|
|
22
|
+
/** Additional client timeout buffer over server timeout */
|
|
23
|
+
exports.CLIENT_TIMEOUT_BUFFER = 5000;
|
|
24
|
+
/** Default job completion wait timeout in ms */
|
|
25
|
+
exports.DEFAULT_FINISHED_TIMEOUT = 30000;
|
|
26
|
+
// ============== Worker Defaults ==============
|
|
27
|
+
/** Default worker concurrency */
|
|
28
|
+
exports.DEFAULT_WORKER_CONCURRENCY = 10;
|
|
29
|
+
/** Default worker batch size */
|
|
30
|
+
exports.DEFAULT_WORKER_BATCH_SIZE = 100;
|
|
31
|
+
/** Worker pull timeout for responsive shutdown (ms) */
|
|
32
|
+
exports.WORKER_PULL_TIMEOUT = 500;
|
|
33
|
+
/** Worker error retry delay (ms) */
|
|
34
|
+
exports.WORKER_ERROR_RETRY_DELAY = 1000;
|
|
35
|
+
/** Default graceful shutdown timeout (ms) */
|
|
36
|
+
exports.DEFAULT_CLOSE_TIMEOUT = 30000;
|
|
37
|
+
/** Worker job completion check interval (ms) */
|
|
38
|
+
exports.WORKER_JOB_CHECK_INTERVAL = 50;
|
|
39
|
+
// ============== Reconnection ==============
|
|
40
|
+
/** Default initial reconnect delay in ms */
|
|
41
|
+
exports.DEFAULT_RECONNECT_DELAY = 1000;
|
|
42
|
+
/** Default max reconnect delay in ms */
|
|
43
|
+
exports.DEFAULT_MAX_RECONNECT_DELAY = 30000;
|
|
44
|
+
/** Default max reconnect attempts (0 = infinite) */
|
|
45
|
+
exports.DEFAULT_MAX_RECONNECT_ATTEMPTS = 10;
|
|
46
|
+
/** Reconnect jitter factor (0.3 = 30% of base delay) */
|
|
47
|
+
exports.RECONNECT_JITTER_FACTOR = 0.3;
|
|
48
|
+
// ============== Retry ==============
|
|
49
|
+
/** Default retry max attempts */
|
|
50
|
+
exports.DEFAULT_RETRY_MAX_ATTEMPTS = 3;
|
|
51
|
+
/** Default retry initial delay in ms */
|
|
52
|
+
exports.DEFAULT_RETRY_INITIAL_DELAY = 100;
|
|
53
|
+
/** Default retry max delay in ms */
|
|
54
|
+
exports.DEFAULT_RETRY_MAX_DELAY = 5000;
|
|
55
|
+
/** Default backoff multiplier */
|
|
56
|
+
exports.DEFAULT_BACKOFF_MULTIPLIER = 2;
|
|
57
|
+
/** Jitter range factor (0.25 = ±25%) */
|
|
58
|
+
exports.RETRY_JITTER_FACTOR = 0.25;
|
|
59
|
+
// ============== Compression ==============
|
|
60
|
+
/** Default compression enabled state */
|
|
61
|
+
exports.DEFAULT_COMPRESSION_ENABLED = false;
|
|
62
|
+
/** Default minimum payload size to compress in bytes */
|
|
63
|
+
exports.DEFAULT_COMPRESSION_THRESHOLD = 1024;
|
|
64
|
+
// ============== Request Queue ==============
|
|
65
|
+
/** Default max queued requests during disconnect */
|
|
66
|
+
exports.DEFAULT_MAX_QUEUED_REQUESTS = 100;
|
|
67
|
+
// ============== Job Defaults ==============
|
|
68
|
+
/** Default job priority */
|
|
69
|
+
exports.DEFAULT_JOB_PRIORITY = 0;
|
|
70
|
+
/** Default stall detection timeout in ms */
|
|
71
|
+
exports.DEFAULT_STALL_TIMEOUT = 30000;
|
|
72
|
+
// ============== Ports ==============
|
|
73
|
+
/** Default TCP port */
|
|
74
|
+
exports.DEFAULT_TCP_PORT = 6789;
|
|
75
|
+
/** Default HTTP port */
|
|
76
|
+
exports.DEFAULT_HTTP_PORT = 6790;
|
|
77
|
+
/** Default host */
|
|
78
|
+
exports.DEFAULT_HOST = 'localhost';
|
|
79
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,kDAAkD;AAElD,mDAAmD;AACtC,QAAA,iBAAiB,GAAG,IAAI,GAAG,IAAI,CAAC;AAE7C,iDAAiD;AACpC,QAAA,cAAc,GAAG,IAAI,CAAC;AAEnC,gCAAgC;AACnB,QAAA,qBAAqB,GAAG,GAAG,CAAC;AAEzC,yCAAyC;AAEzC,uCAAuC;AAC1B,QAAA,0BAA0B,GAAG,IAAI,CAAC;AAE/C,6CAA6C;AAChC,QAAA,oBAAoB,GAAG,KAAK,CAAC;AAE1C,2DAA2D;AAC9C,QAAA,qBAAqB,GAAG,IAAI,CAAC;AAE1C,gDAAgD;AACnC,QAAA,wBAAwB,GAAG,KAAK,CAAC;AAE9C,gDAAgD;AAEhD,iCAAiC;AACpB,QAAA,0BAA0B,GAAG,EAAE,CAAC;AAE7C,gCAAgC;AACnB,QAAA,yBAAyB,GAAG,GAAG,CAAC;AAE7C,uDAAuD;AAC1C,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC,oCAAoC;AACvB,QAAA,wBAAwB,GAAG,IAAI,CAAC;AAE7C,6CAA6C;AAChC,QAAA,qBAAqB,GAAG,KAAK,CAAC;AAE3C,gDAAgD;AACnC,QAAA,yBAAyB,GAAG,EAAE,CAAC;AAE5C,6CAA6C;AAE7C,4CAA4C;AAC/B,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAE5C,wCAAwC;AAC3B,QAAA,2BAA2B,GAAG,KAAK,CAAC;AAEjD,oDAAoD;AACvC,QAAA,8BAA8B,GAAG,EAAE,CAAC;AAEjD,wDAAwD;AAC3C,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAE3C,sCAAsC;AAEtC,iCAAiC;AACpB,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAE5C,wCAAwC;AAC3B,QAAA,2BAA2B,GAAG,GAAG,CAAC;AAE/C,oCAAoC;AACvB,QAAA,uBAAuB,GAAG,IAAI,CAAC;AAE5C,iCAAiC;AACpB,QAAA,0BAA0B,GAAG,CAAC,CAAC;AAE5C,wCAAwC;AAC3B,QAAA,mBAAmB,GAAG,IAAI,CAAC;AAExC,4CAA4C;AAE5C,wCAAwC;AAC3B,QAAA,2BAA2B,GAAG,KAAK,CAAC;AAEjD,wDAAwD;AAC3C,QAAA,6BAA6B,GAAG,IAAI,CAAC;AAElD,8CAA8C;AAE9C,oDAAoD;AACvC,QAAA,2BAA2B,GAAG,GAAG,CAAC;AAE/C,6CAA6C;AAE7C,2BAA2B;AACd,QAAA,oBAAoB,GAAG,CAAC,CAAC;AAEtC,4CAA4C;AAC/B,QAAA,qBAAqB,GAAG,KAAK,CAAC;AAE3C,sCAAsC;AAEtC,uBAAuB;AACV,QAAA,gBAAgB,GAAG,IAAI,CAAC;AAErC,wBAAwB;AACX,QAAA,iBAAiB,GAAG,IAAI,CAAC;AAEtC,mBAAmB;AACN,QAAA,YAAY,GAAG,WAAW,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,12 +19,14 @@
|
|
|
19
19
|
* @packageDocumentation
|
|
20
20
|
*/
|
|
21
21
|
export { Queue } from './queue';
|
|
22
|
-
export type { QueueOptions, JobOptions } from './queue';
|
|
22
|
+
export type { QueueOptions, JobOptions, JobReference } from './queue';
|
|
23
23
|
export { Worker } from './worker';
|
|
24
|
-
export type { BullMQWorkerOptions } from './worker';
|
|
24
|
+
export type { BullMQWorkerOptions, WorkerEvents, TypedWorkerEmitter } from './worker';
|
|
25
25
|
export { FlashQ, FlashQ as default } from './client';
|
|
26
26
|
export { MAX_BATCH_SIZE, MAX_JOB_DATA_SIZE } from './client/methods/core';
|
|
27
|
-
export { validateQueueName, validateJobDataSize } from './client/connection';
|
|
27
|
+
export { validateQueueName, validateJobDataSize, mapJobToPayload } from './client/connection';
|
|
28
|
+
export type { JobPayload } from './client/connection';
|
|
29
|
+
export * as Constants from './constants';
|
|
28
30
|
export { EventSubscriber } from './events';
|
|
29
31
|
export { FlashQError, ConnectionError, AuthenticationError, TimeoutError, ValidationError, ServerError, JobNotFoundError, QueueNotFoundError, DuplicateJobError, QueuePausedError, RateLimitError, ConcurrencyLimitError, BatchError, Errors, } from './errors';
|
|
30
32
|
export { withRetry, retryable, isRetryable, RetryPresets } from './utils/retry';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEtE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAGtF,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,UAAU,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC9F,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAG3C,OAAO,EACL,WAAW,EACX,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,UAAU,EACV,MAAM,GACP,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAChF,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAGlD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAClF,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGpF,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClF,YAAY,EACV,WAAW,EACX,WAAW,EACX,WAAW,EACX,eAAe,EACf,eAAe,EACf,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,SAAS,CAAC;AAGjB,YAAY,EACV,GAAG,EACH,QAAQ,EACR,WAAW,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAe,GAChB,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -19,8 +19,41 @@
|
|
|
19
19
|
*
|
|
20
20
|
* @packageDocumentation
|
|
21
21
|
*/
|
|
22
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
23
|
+
if (k2 === undefined) k2 = k;
|
|
24
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
25
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
26
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
27
|
+
}
|
|
28
|
+
Object.defineProperty(o, k2, desc);
|
|
29
|
+
}) : (function(o, m, k, k2) {
|
|
30
|
+
if (k2 === undefined) k2 = k;
|
|
31
|
+
o[k2] = m[k];
|
|
32
|
+
}));
|
|
33
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
34
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
35
|
+
}) : function(o, v) {
|
|
36
|
+
o["default"] = v;
|
|
37
|
+
});
|
|
38
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
39
|
+
var ownKeys = function(o) {
|
|
40
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
41
|
+
var ar = [];
|
|
42
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
43
|
+
return ar;
|
|
44
|
+
};
|
|
45
|
+
return ownKeys(o);
|
|
46
|
+
};
|
|
47
|
+
return function (mod) {
|
|
48
|
+
if (mod && mod.__esModule) return mod;
|
|
49
|
+
var result = {};
|
|
50
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
51
|
+
__setModuleDefault(result, mod);
|
|
52
|
+
return result;
|
|
53
|
+
};
|
|
54
|
+
})();
|
|
22
55
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
-
exports.getDuration = exports.createHookContext = exports.callErrorHook = exports.callHook = exports.setGlobalLogger = exports.getLogger = exports.createLogger = exports.Logger = exports.RetryPresets = exports.isRetryable = exports.retryable = exports.withRetry = exports.Errors = exports.BatchError = exports.ConcurrencyLimitError = exports.RateLimitError = exports.QueuePausedError = exports.DuplicateJobError = exports.QueueNotFoundError = exports.JobNotFoundError = exports.ServerError = exports.ValidationError = exports.TimeoutError = exports.AuthenticationError = exports.ConnectionError = exports.FlashQError = exports.EventSubscriber = exports.validateJobDataSize = exports.validateQueueName = exports.MAX_JOB_DATA_SIZE = exports.MAX_BATCH_SIZE = exports.default = exports.FlashQ = exports.Worker = exports.Queue = void 0;
|
|
56
|
+
exports.getDuration = exports.createHookContext = exports.callErrorHook = exports.callHook = exports.setGlobalLogger = exports.getLogger = exports.createLogger = exports.Logger = exports.RetryPresets = exports.isRetryable = exports.retryable = exports.withRetry = exports.Errors = exports.BatchError = exports.ConcurrencyLimitError = exports.RateLimitError = exports.QueuePausedError = exports.DuplicateJobError = exports.QueueNotFoundError = exports.JobNotFoundError = exports.ServerError = exports.ValidationError = exports.TimeoutError = exports.AuthenticationError = exports.ConnectionError = exports.FlashQError = exports.EventSubscriber = exports.Constants = exports.mapJobToPayload = exports.validateJobDataSize = exports.validateQueueName = exports.MAX_JOB_DATA_SIZE = exports.MAX_BATCH_SIZE = exports.default = exports.FlashQ = exports.Worker = exports.Queue = void 0;
|
|
24
57
|
// BullMQ-compatible API
|
|
25
58
|
var queue_1 = require("./queue");
|
|
26
59
|
Object.defineProperty(exports, "Queue", { enumerable: true, get: function () { return queue_1.Queue; } });
|
|
@@ -37,6 +70,9 @@ Object.defineProperty(exports, "MAX_JOB_DATA_SIZE", { enumerable: true, get: fun
|
|
|
37
70
|
var connection_1 = require("./client/connection");
|
|
38
71
|
Object.defineProperty(exports, "validateQueueName", { enumerable: true, get: function () { return connection_1.validateQueueName; } });
|
|
39
72
|
Object.defineProperty(exports, "validateJobDataSize", { enumerable: true, get: function () { return connection_1.validateJobDataSize; } });
|
|
73
|
+
Object.defineProperty(exports, "mapJobToPayload", { enumerable: true, get: function () { return connection_1.mapJobToPayload; } });
|
|
74
|
+
// All constants for advanced configuration
|
|
75
|
+
exports.Constants = __importStar(require("./constants"));
|
|
40
76
|
// Optional: Real-time events
|
|
41
77
|
var events_1 = require("./events");
|
|
42
78
|
Object.defineProperty(exports, "EventSubscriber", { enumerable: true, get: function () { return events_1.EventSubscriber; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,wBAAwB;AACxB,iCAAgC;AAAvB,8FAAA,KAAK,OAAA;AAGd,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AAGf,gBAAgB;AAChB,mCAAqD;AAA5C,gGAAA,MAAM,OAAA;AAAE,iGAAA,MAAM,OAAW;AAElC,qCAAqC;AACrC,8CAA0E;AAAjE,sGAAA,cAAc,OAAA;AAAE,yGAAA,iBAAiB,OAAA;AAC1C,kDAA8F;AAArF,+GAAA,iBAAiB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAAE,6GAAA,eAAe,OAAA;AAGhE,2CAA2C;AAC3C,yDAAyC;AAEzC,6BAA6B;AAC7B,mCAA2C;AAAlC,yGAAA,eAAe,OAAA;AAExB,SAAS;AACT,mCAekB;AAdhB,qGAAA,WAAW,OAAA;AACX,yGAAA,eAAe,OAAA;AACf,6GAAA,mBAAmB,OAAA;AACnB,sGAAA,YAAY,OAAA;AACZ,yGAAA,eAAe,OAAA;AACf,qGAAA,WAAW,OAAA;AACX,0GAAA,gBAAgB,OAAA;AAChB,4GAAA,kBAAkB,OAAA;AAClB,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA;AAChB,wGAAA,cAAc,OAAA;AACd,+GAAA,qBAAqB,OAAA;AACrB,oGAAA,UAAU,OAAA;AACV,gGAAA,MAAM,OAAA;AAGR,kBAAkB;AAClB,uCAAgF;AAAvE,kGAAA,SAAS,OAAA;AAAE,kGAAA,SAAS,OAAA;AAAE,oGAAA,WAAW,OAAA;AAAE,qGAAA,YAAY,OAAA;AAGxD,mBAAmB;AACnB,yCAAkF;AAAzE,gGAAA,MAAM,OAAA;AAAE,sGAAA,YAAY,OAAA;AAAE,mGAAA,SAAS,OAAA;AAAE,yGAAA,eAAe,OAAA;AAGzD,gDAAgD;AAChD,iCAAkF;AAAzE,iGAAA,QAAQ,OAAA;AAAE,sGAAA,aAAa,OAAA;AAAE,0GAAA,iBAAiB,OAAA;AAAE,oGAAA,WAAW,OAAA"}
|
package/dist/queue.d.ts
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
1
|
import type { Job, ClientOptions } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Minimal job reference returned from bulk operations.
|
|
4
|
+
* Contains only the essential fields available immediately after creation.
|
|
5
|
+
*/
|
|
6
|
+
export interface JobReference<T = unknown> {
|
|
7
|
+
/** Server-assigned job ID */
|
|
8
|
+
id: number;
|
|
9
|
+
/** Queue name */
|
|
10
|
+
queue: string;
|
|
11
|
+
/** Original job data */
|
|
12
|
+
data: T;
|
|
13
|
+
}
|
|
2
14
|
export interface QueueOptions extends ClientOptions {
|
|
3
15
|
/** Default job options for all jobs in this queue */
|
|
4
16
|
defaultJobOptions?: JobOptions;
|
|
@@ -58,12 +70,15 @@ export declare class Queue<T = unknown> {
|
|
|
58
70
|
add(name: string, data: T, options?: JobOptions): Promise<Job<T>>;
|
|
59
71
|
/**
|
|
60
72
|
* Add multiple jobs (BullMQ-compatible)
|
|
73
|
+
*
|
|
74
|
+
* @returns Array of job references with id, queue, and data.
|
|
75
|
+
* Use getJob() if you need full job details.
|
|
61
76
|
*/
|
|
62
77
|
addBulk(jobs: Array<{
|
|
63
78
|
name: string;
|
|
64
79
|
data: T;
|
|
65
80
|
opts?: JobOptions;
|
|
66
|
-
}>): Promise<
|
|
81
|
+
}>): Promise<JobReference<T>[]>;
|
|
67
82
|
/**
|
|
68
83
|
* Get a job by ID
|
|
69
84
|
*/
|
package/dist/queue.d.ts.map
CHANGED
|
@@ -1 +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;IAChC,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,yBAAyB;IACzB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;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;IAkC3E
|
|
1
|
+
{"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
|
package/dist/queue.js
CHANGED
|
@@ -63,6 +63,9 @@ class Queue {
|
|
|
63
63
|
}
|
|
64
64
|
/**
|
|
65
65
|
* Add multiple jobs (BullMQ-compatible)
|
|
66
|
+
*
|
|
67
|
+
* @returns Array of job references with id, queue, and data.
|
|
68
|
+
* Use getJob() if you need full job details.
|
|
66
69
|
*/
|
|
67
70
|
async addBulk(jobs) {
|
|
68
71
|
const flashqJobs = jobs.map((job) => {
|
package/dist/queue.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,qCAAkC;
|
|
1
|
+
{"version":3,"file":"queue.js","sourceRoot":"","sources":["../src/queue.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/retry.d.ts
CHANGED
|
@@ -60,7 +60,7 @@ export declare function retryable<TArgs extends unknown[], TResult>(fn: (...args
|
|
|
60
60
|
export declare const RetryPresets: {
|
|
61
61
|
/** Quick retries for interactive operations */
|
|
62
62
|
fast: RetryOptions;
|
|
63
|
-
/** Standard retries for most operations */
|
|
63
|
+
/** Standard retries for most operations (uses SDK defaults) */
|
|
64
64
|
standard: RetryOptions;
|
|
65
65
|
/** Aggressive retries for critical operations */
|
|
66
66
|
aggressive: RetryOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,6BAA6B;IAC7B,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IACzD,6BAA6B;IAC7B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CAClE;AAUD,qCAAqC;AACrC,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAsBjD;AAED,8DAA8D;AAC9D,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC,CAAC,GAC3E,MAAM,CAaR;AAOD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,CAAC,CAAC,CAuC/F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,KAAK,SAAS,OAAO,EAAE,EAAE,OAAO,EACxD,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,EACxC,OAAO,GAAE,YAAiB,GACzB,CAAC,GAAG,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,CAEtC;AAED;;GAEG;AACH,eAAO,MAAM,YAAY;IACvB,+CAA+C;UAK1C,YAAY;IAEjB,+DAA+D;cAK1D,YAAY;IAEjB,iDAAiD;gBAK5C,YAAY;IAEjB,iBAAiB;UAGZ,YAAY;CAClB,CAAC"}
|
package/dist/utils/retry.js
CHANGED
|
@@ -9,11 +9,12 @@ exports.retryable = retryable;
|
|
|
9
9
|
* Retry utility for automatic retries on transient failures
|
|
10
10
|
*/
|
|
11
11
|
const errors_1 = require("../errors");
|
|
12
|
+
const constants_1 = require("../constants");
|
|
12
13
|
const DEFAULT_OPTIONS = {
|
|
13
|
-
maxRetries:
|
|
14
|
-
initialDelay:
|
|
15
|
-
maxDelay:
|
|
16
|
-
backoffMultiplier:
|
|
14
|
+
maxRetries: constants_1.DEFAULT_RETRY_MAX_ATTEMPTS,
|
|
15
|
+
initialDelay: constants_1.DEFAULT_RETRY_INITIAL_DELAY,
|
|
16
|
+
maxDelay: constants_1.DEFAULT_RETRY_MAX_DELAY,
|
|
17
|
+
backoffMultiplier: constants_1.DEFAULT_BACKOFF_MULTIPLIER,
|
|
17
18
|
jitter: true,
|
|
18
19
|
};
|
|
19
20
|
/** Check if an error is retryable */
|
|
@@ -42,8 +43,8 @@ function isRetryable(error) {
|
|
|
42
43
|
function calculateDelay(attempt, options) {
|
|
43
44
|
const delay = Math.min(options.initialDelay * Math.pow(options.backoffMultiplier, attempt - 1), options.maxDelay);
|
|
44
45
|
if (options.jitter) {
|
|
45
|
-
// Add ±25%
|
|
46
|
-
const jitterRange = delay *
|
|
46
|
+
// Add ±RETRY_JITTER_FACTOR jitter (default: ±25%)
|
|
47
|
+
const jitterRange = delay * constants_1.RETRY_JITTER_FACTOR;
|
|
47
48
|
return delay + (Math.random() * jitterRange * 2 - jitterRange);
|
|
48
49
|
}
|
|
49
50
|
return delay;
|
|
@@ -129,11 +130,11 @@ exports.RetryPresets = {
|
|
|
129
130
|
initialDelay: 50,
|
|
130
131
|
maxDelay: 500,
|
|
131
132
|
},
|
|
132
|
-
/** Standard retries for most operations */
|
|
133
|
+
/** Standard retries for most operations (uses SDK defaults) */
|
|
133
134
|
standard: {
|
|
134
|
-
maxRetries:
|
|
135
|
-
initialDelay:
|
|
136
|
-
maxDelay:
|
|
135
|
+
maxRetries: constants_1.DEFAULT_RETRY_MAX_ATTEMPTS,
|
|
136
|
+
initialDelay: constants_1.DEFAULT_RETRY_INITIAL_DELAY,
|
|
137
|
+
maxDelay: constants_1.DEFAULT_RETRY_MAX_DELAY,
|
|
137
138
|
},
|
|
138
139
|
/** Aggressive retries for critical operations */
|
|
139
140
|
aggressive: {
|
package/dist/utils/retry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/utils/retry.ts"],"names":[],"mappings":"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"}
|
package/dist/worker.d.ts
CHANGED
|
@@ -1,6 +1,52 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
-
import type { JobProcessor, WorkerOptions, ClientOptions } from './types';
|
|
2
|
+
import type { Job, JobProcessor, WorkerOptions, ClientOptions } from './types';
|
|
3
3
|
import { type WorkerHooks } from './hooks';
|
|
4
|
+
/**
|
|
5
|
+
* Typed event map for Worker events.
|
|
6
|
+
* Use with worker.on() for type-safe event handling.
|
|
7
|
+
*/
|
|
8
|
+
export interface WorkerEvents<T = unknown, R = unknown> {
|
|
9
|
+
/** Emitted when worker is ready to process jobs */
|
|
10
|
+
ready: [];
|
|
11
|
+
/** Emitted when a job starts processing */
|
|
12
|
+
active: [job: Job & {
|
|
13
|
+
data: T;
|
|
14
|
+
}, workerId: number];
|
|
15
|
+
/** Emitted when a job completes successfully */
|
|
16
|
+
completed: [job: Job & {
|
|
17
|
+
data: T;
|
|
18
|
+
}, result: R, workerId: number];
|
|
19
|
+
/** Emitted when a job fails */
|
|
20
|
+
failed: [job: Job & {
|
|
21
|
+
data: T;
|
|
22
|
+
}, error: Error, workerId: number];
|
|
23
|
+
/** Emitted when worker starts stopping */
|
|
24
|
+
stopping: [];
|
|
25
|
+
/** Emitted when worker has fully stopped */
|
|
26
|
+
stopped: [];
|
|
27
|
+
/** Emitted when all jobs are drained */
|
|
28
|
+
drained: [];
|
|
29
|
+
/** Emitted on worker errors (connection, timeout, etc.) */
|
|
30
|
+
error: [error: unknown];
|
|
31
|
+
/** Emitted during reconnection attempts */
|
|
32
|
+
reconnecting: [info: {
|
|
33
|
+
attempt: number;
|
|
34
|
+
delay: number;
|
|
35
|
+
}];
|
|
36
|
+
/** Emitted after successful reconnection */
|
|
37
|
+
reconnected: [];
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Typed EventEmitter for Worker with proper event signatures.
|
|
41
|
+
*/
|
|
42
|
+
export interface TypedWorkerEmitter<T = unknown, R = unknown> {
|
|
43
|
+
on<K extends keyof WorkerEvents<T, R>>(event: K, listener: (...args: WorkerEvents<T, R>[K]) => void): this;
|
|
44
|
+
once<K extends keyof WorkerEvents<T, R>>(event: K, listener: (...args: WorkerEvents<T, R>[K]) => void): this;
|
|
45
|
+
emit<K extends keyof WorkerEvents<T, R>>(event: K, ...args: WorkerEvents<T, R>[K]): boolean;
|
|
46
|
+
off<K extends keyof WorkerEvents<T, R>>(event: K, listener: (...args: WorkerEvents<T, R>[K]) => void): this;
|
|
47
|
+
removeListener<K extends keyof WorkerEvents<T, R>>(event: K, listener: (...args: WorkerEvents<T, R>[K]) => void): this;
|
|
48
|
+
removeAllListeners<K extends keyof WorkerEvents<T, R>>(event?: K): this;
|
|
49
|
+
}
|
|
4
50
|
export interface BullMQWorkerOptions extends Omit<ClientOptions, 'hooks'>, WorkerOptions {
|
|
5
51
|
/** Auto-start worker (BullMQ-compatible, default: true) */
|
|
6
52
|
autorun?: boolean;
|
|
@@ -30,11 +76,16 @@ type WorkerState = 'idle' | 'starting' | 'running' | 'stopping' | 'stopped';
|
|
|
30
76
|
* });
|
|
31
77
|
* await worker.start();
|
|
32
78
|
*
|
|
79
|
+
* // Type-safe event handling
|
|
80
|
+
* worker.on('completed', (job, result, workerId) => {
|
|
81
|
+
* console.log(`Job ${job.id} completed by worker ${workerId}:`, result);
|
|
82
|
+
* });
|
|
83
|
+
*
|
|
33
84
|
* // Graceful shutdown
|
|
34
85
|
* process.on('SIGTERM', () => worker.close());
|
|
35
86
|
* ```
|
|
36
87
|
*/
|
|
37
|
-
export declare class Worker<T = unknown, R = unknown> extends EventEmitter {
|
|
88
|
+
export declare class Worker<T = unknown, R = unknown> extends EventEmitter implements TypedWorkerEmitter<T, R> {
|
|
38
89
|
private clients;
|
|
39
90
|
private clientOptions;
|
|
40
91
|
private queues;
|
|
@@ -48,7 +99,7 @@ export declare class Worker<T = unknown, R = unknown> extends EventEmitter {
|
|
|
48
99
|
private stopPromise;
|
|
49
100
|
private abortController;
|
|
50
101
|
private workerHooks?;
|
|
51
|
-
private
|
|
102
|
+
private logger;
|
|
52
103
|
constructor(queues: string | string[], processor: JobProcessor<T, R>, options?: BullMQWorkerOptions);
|
|
53
104
|
/**
|
|
54
105
|
* Start processing jobs
|
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,EAAE,GAAG,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAIL,KAAK,WAAW,EAEjB,MAAM,SAAS,CAAC;AAWjB;;;GAGG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IACpD,mDAAmD;IACnD,KAAK,EAAE,EAAE,CAAC;IACV,2CAA2C;IAC3C,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACnD,gDAAgD;IAChD,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjE,+BAA+B;IAC/B,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjE,0CAA0C;IAC1C,QAAQ,EAAE,EAAE,CAAC;IACb,4CAA4C;IAC5C,OAAO,EAAE,EAAE,CAAC;IACZ,wCAAwC;IACxC,OAAO,EAAE,EAAE,CAAC;IACZ,2DAA2D;IAC3D,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxB,2CAA2C;IAC3C,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACzD,4CAA4C;IAC5C,WAAW,EAAE,EAAE,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IAC1D,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EACnC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GACjD,IAAI,CAAC;IACR,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EACrC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GACjD,IAAI,CAAC;IACR,IAAI,CAAC,CAAC,SAAS,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;IAC5F,GAAG,CAAC,CAAC,SAAS,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EACpC,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GACjD,IAAI,CAAC;IACR,cAAc,CAAC,CAAC,SAAS,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAC/C,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GACjD,IAAI,CAAC;IACR,kBAAkB,CAAC,CAAC,SAAS,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;CACzE;AAED,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;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,MAAM,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CAC1C,SAAQ,YACR,YAAW,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;IAEnC,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;IAClC,OAAO,CAAC,MAAM,CAAS;gBAGrB,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,EACzB,SAAS,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAC7B,OAAO,GAAE,mBAAwB;IAwCnC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAyBd,OAAO;IAuBrB;;;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;IAsDpB;;;;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
|
@@ -4,6 +4,8 @@ exports.Worker = void 0;
|
|
|
4
4
|
const events_1 = require("events");
|
|
5
5
|
const client_1 = require("./client");
|
|
6
6
|
const hooks_1 = require("./hooks");
|
|
7
|
+
const logger_1 = require("./utils/logger");
|
|
8
|
+
const constants_1 = require("./constants");
|
|
7
9
|
/**
|
|
8
10
|
* FlashQ Worker (BullMQ-compatible)
|
|
9
11
|
*
|
|
@@ -22,6 +24,11 @@ const hooks_1 = require("./hooks");
|
|
|
22
24
|
* });
|
|
23
25
|
* await worker.start();
|
|
24
26
|
*
|
|
27
|
+
* // Type-safe event handling
|
|
28
|
+
* worker.on('completed', (job, result, workerId) => {
|
|
29
|
+
* console.log(`Job ${job.id} completed by worker ${workerId}:`, result);
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
25
32
|
* // Graceful shutdown
|
|
26
33
|
* process.on('SIGTERM', () => worker.close());
|
|
27
34
|
* ```
|
|
@@ -40,31 +47,26 @@ class Worker extends events_1.EventEmitter {
|
|
|
40
47
|
stopPromise = null;
|
|
41
48
|
abortController = null;
|
|
42
49
|
workerHooks;
|
|
43
|
-
|
|
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
|
-
}
|
|
50
|
+
logger;
|
|
55
51
|
constructor(queues, processor, options = {}) {
|
|
56
52
|
super();
|
|
57
53
|
this.queues = Array.isArray(queues) ? queues : [queues];
|
|
58
54
|
this.processor = processor;
|
|
55
|
+
const workerId = options.id ?? `worker-${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
59
56
|
this.options = {
|
|
60
|
-
id:
|
|
61
|
-
concurrency: options.concurrency ??
|
|
62
|
-
batchSize: options.batchSize ??
|
|
57
|
+
id: workerId,
|
|
58
|
+
concurrency: options.concurrency ?? constants_1.DEFAULT_WORKER_CONCURRENCY,
|
|
59
|
+
batchSize: options.batchSize ?? constants_1.DEFAULT_WORKER_BATCH_SIZE,
|
|
63
60
|
autoAck: options.autoAck ?? true,
|
|
64
61
|
autorun: options.autorun ?? true,
|
|
65
62
|
debug: options.debug ?? false,
|
|
66
|
-
closeTimeout: options.closeTimeout ??
|
|
63
|
+
closeTimeout: options.closeTimeout ?? constants_1.DEFAULT_CLOSE_TIMEOUT,
|
|
67
64
|
};
|
|
65
|
+
// Initialize logger with worker-specific prefix
|
|
66
|
+
this.logger = new logger_1.Logger({
|
|
67
|
+
level: this.options.debug ? 'debug' : 'silent',
|
|
68
|
+
prefix: `flashQ:worker:${workerId}`,
|
|
69
|
+
});
|
|
68
70
|
this.workerHooks = options.workerHooks;
|
|
69
71
|
this.clientOptions = {
|
|
70
72
|
host: options.host,
|
|
@@ -103,17 +105,20 @@ class Worker extends events_1.EventEmitter {
|
|
|
103
105
|
}
|
|
104
106
|
}
|
|
105
107
|
async doStart() {
|
|
106
|
-
this.
|
|
108
|
+
this.logger.info('Starting worker', {
|
|
109
|
+
queues: this.queues,
|
|
110
|
+
concurrency: this.options.concurrency,
|
|
111
|
+
});
|
|
107
112
|
// Create a separate client for each worker (TCP pull is blocking)
|
|
108
113
|
for (let i = 0; i < this.options.concurrency; i++) {
|
|
109
114
|
const client = new client_1.FlashQ({ ...this.clientOptions, debug: this.options.debug });
|
|
110
115
|
await client.connect();
|
|
111
116
|
this.clients.push(client);
|
|
112
|
-
this.
|
|
117
|
+
this.logger.debug(`Client ${i} connected`);
|
|
113
118
|
}
|
|
114
119
|
this.state = 'running';
|
|
115
120
|
this.emit('ready');
|
|
116
|
-
this.
|
|
121
|
+
this.logger.info('Worker ready');
|
|
117
122
|
// Start worker loops (each with its own client)
|
|
118
123
|
for (let i = 0; i < this.options.concurrency; i++) {
|
|
119
124
|
this.workers.push(this.batchWorkerLoop(i, this.clients[i]));
|
|
@@ -154,7 +159,7 @@ class Worker extends events_1.EventEmitter {
|
|
|
154
159
|
}
|
|
155
160
|
}
|
|
156
161
|
async doStop(force) {
|
|
157
|
-
this.
|
|
162
|
+
this.logger.info('Stopping worker', { processing: this.processing, force });
|
|
158
163
|
if (force) {
|
|
159
164
|
// Force close - abort immediately
|
|
160
165
|
this.abortController?.abort();
|
|
@@ -170,7 +175,10 @@ class Worker extends events_1.EventEmitter {
|
|
|
170
175
|
timeoutPromise,
|
|
171
176
|
]);
|
|
172
177
|
if (result === 'timeout') {
|
|
173
|
-
this.
|
|
178
|
+
this.logger.warn('Graceful shutdown timeout reached', {
|
|
179
|
+
timeout,
|
|
180
|
+
processing: this.processing,
|
|
181
|
+
});
|
|
174
182
|
this.emit('error', new Error(`Shutdown timeout after ${timeout}ms with ${this.processing} jobs still processing`));
|
|
175
183
|
}
|
|
176
184
|
}
|
|
@@ -180,16 +188,16 @@ class Worker extends events_1.EventEmitter {
|
|
|
180
188
|
}
|
|
181
189
|
}
|
|
182
190
|
this.workers = [];
|
|
183
|
-
this.
|
|
191
|
+
this.logger.debug('All worker loops stopped');
|
|
184
192
|
// Close all clients
|
|
185
193
|
const clientsToClose = [...this.clients];
|
|
186
194
|
this.clients = [];
|
|
187
195
|
await Promise.all(clientsToClose.map((c) => c.close()));
|
|
188
|
-
this.
|
|
196
|
+
this.logger.debug('All clients closed');
|
|
189
197
|
this.state = 'stopped';
|
|
190
198
|
this.emit('stopped');
|
|
191
199
|
this.emit('drained');
|
|
192
|
-
this.
|
|
200
|
+
this.logger.info('Worker stopped', { totalProcessed: this.jobsProcessed });
|
|
193
201
|
}
|
|
194
202
|
/**
|
|
195
203
|
* Wait for all currently processing jobs to complete
|
|
@@ -207,7 +215,7 @@ class Worker extends events_1.EventEmitter {
|
|
|
207
215
|
clearTimeout(timer);
|
|
208
216
|
resolve(true);
|
|
209
217
|
}
|
|
210
|
-
},
|
|
218
|
+
}, constants_1.WORKER_JOB_CHECK_INTERVAL);
|
|
211
219
|
const timer = setTimeout(() => {
|
|
212
220
|
clearInterval(checkInterval);
|
|
213
221
|
resolve(false);
|
|
@@ -249,8 +257,8 @@ class Worker extends events_1.EventEmitter {
|
|
|
249
257
|
if (this.state !== 'running')
|
|
250
258
|
break;
|
|
251
259
|
try {
|
|
252
|
-
// Batch pull with SHORT timeout
|
|
253
|
-
const jobs = await client.pullBatch(queue, batchSize,
|
|
260
|
+
// Batch pull with SHORT timeout for responsive shutdown
|
|
261
|
+
const jobs = await client.pullBatch(queue, batchSize, constants_1.WORKER_PULL_TIMEOUT);
|
|
254
262
|
// No jobs available - continue polling
|
|
255
263
|
if (!jobs || jobs.length === 0) {
|
|
256
264
|
continue;
|
|
@@ -269,12 +277,12 @@ class Worker extends events_1.EventEmitter {
|
|
|
269
277
|
// Connection error - wait before retry
|
|
270
278
|
if (this.state === 'running') {
|
|
271
279
|
this.emit('error', error);
|
|
272
|
-
await this.sleep(
|
|
280
|
+
await this.sleep(constants_1.WORKER_ERROR_RETRY_DELAY);
|
|
273
281
|
}
|
|
274
282
|
}
|
|
275
283
|
}
|
|
276
284
|
}
|
|
277
|
-
this.
|
|
285
|
+
this.logger.debug(`Worker loop ${workerId} exited`, { state: this.state });
|
|
278
286
|
}
|
|
279
287
|
/**
|
|
280
288
|
* Process a batch of jobs - always completes even during shutdown
|
|
@@ -350,16 +358,16 @@ class Worker extends events_1.EventEmitter {
|
|
|
350
358
|
async updateProgress(jobId, progress, message) {
|
|
351
359
|
if (this.state !== 'running') {
|
|
352
360
|
const error = new Error(`Cannot update progress: worker is ${this.state}`);
|
|
353
|
-
this.
|
|
361
|
+
this.logger.warn('updateProgress failed', { jobId, state: this.state });
|
|
354
362
|
throw error;
|
|
355
363
|
}
|
|
356
364
|
if (this.clients.length === 0) {
|
|
357
365
|
const error = new Error('Cannot update progress: no active clients');
|
|
358
|
-
this.
|
|
366
|
+
this.logger.warn('updateProgress failed', { jobId, reason: 'no clients' });
|
|
359
367
|
throw error;
|
|
360
368
|
}
|
|
361
369
|
await this.clients[0].progress(jobId, progress, message);
|
|
362
|
-
this.
|
|
370
|
+
this.logger.debug('Progress updated', { jobId, progress, message });
|
|
363
371
|
}
|
|
364
372
|
}
|
|
365
373
|
exports.Worker = Worker;
|