atomic-queues 1.4.1 → 1.6.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 +300 -283
- package/dist/decorators/constants.d.ts +17 -0
- package/dist/decorators/constants.d.ts.map +1 -0
- package/dist/decorators/constants.js +23 -0
- package/dist/decorators/constants.js.map +1 -0
- package/dist/decorators/entity.decorators.d.ts +88 -0
- package/dist/decorators/entity.decorators.d.ts.map +1 -0
- package/dist/decorators/entity.decorators.js +150 -0
- package/dist/decorators/entity.decorators.js.map +1 -0
- package/dist/decorators/index.d.ts +9 -1
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/index.js +9 -1
- package/dist/decorators/index.js.map +1 -1
- package/dist/decorators/interfaces.d.ts +130 -0
- package/dist/decorators/interfaces.d.ts.map +1 -0
- package/dist/decorators/interfaces.js +3 -0
- package/dist/decorators/interfaces.js.map +1 -0
- package/dist/decorators/job.decorators.d.ts +60 -0
- package/dist/decorators/job.decorators.d.ts.map +1 -0
- package/dist/decorators/job.decorators.js +97 -0
- package/dist/decorators/job.decorators.js.map +1 -0
- package/dist/decorators/legacy.decorators.d.ts +36 -0
- package/dist/decorators/legacy.decorators.d.ts.map +1 -0
- package/dist/decorators/legacy.decorators.js +61 -0
- package/dist/decorators/legacy.decorators.js.map +1 -0
- package/dist/decorators/metadata-readers.d.ts +31 -0
- package/dist/decorators/metadata-readers.d.ts.map +1 -0
- package/dist/decorators/metadata-readers.js +53 -0
- package/dist/decorators/metadata-readers.js.map +1 -0
- package/dist/decorators/registry.d.ts +2 -0
- package/dist/decorators/registry.d.ts.map +1 -0
- package/dist/decorators/registry.js +6 -0
- package/dist/decorators/registry.js.map +1 -0
- package/dist/decorators/scaler.decorators.d.ts +65 -0
- package/dist/decorators/scaler.decorators.d.ts.map +1 -0
- package/dist/decorators/scaler.decorators.js +103 -0
- package/dist/decorators/scaler.decorators.js.map +1 -0
- package/dist/decorators/type-guards.d.ts +18 -0
- package/dist/decorators/type-guards.d.ts.map +1 -0
- package/dist/decorators/type-guards.js +32 -0
- package/dist/decorators/type-guards.js.map +1 -0
- package/dist/decorators/utils.d.ts +20 -0
- package/dist/decorators/utils.d.ts.map +1 -0
- package/dist/decorators/utils.js +98 -0
- package/dist/decorators/utils.js.map +1 -0
- package/dist/decorators/worker.decorators.d.ts +58 -0
- package/dist/decorators/worker.decorators.d.ts.map +1 -0
- package/dist/decorators/worker.decorators.js +92 -0
- package/dist/decorators/worker.decorators.js.map +1 -0
- package/dist/domain/interfaces/config.interfaces.d.ts +188 -0
- package/dist/domain/interfaces/config.interfaces.d.ts.map +1 -0
- package/dist/domain/interfaces/config.interfaces.js +3 -0
- package/dist/domain/interfaces/config.interfaces.js.map +1 -0
- package/dist/domain/interfaces/cqrs.interfaces.d.ts +7 -0
- package/dist/domain/interfaces/cqrs.interfaces.d.ts.map +1 -0
- package/dist/domain/interfaces/cqrs.interfaces.js +3 -0
- package/dist/domain/interfaces/cqrs.interfaces.js.map +1 -0
- package/dist/domain/interfaces/event.interfaces.d.ts +71 -0
- package/dist/domain/interfaces/event.interfaces.d.ts.map +1 -0
- package/dist/domain/interfaces/event.interfaces.js +3 -0
- package/dist/domain/interfaces/event.interfaces.js.map +1 -0
- package/dist/domain/interfaces/index-tracking.interfaces.d.ts +69 -0
- package/dist/domain/interfaces/index-tracking.interfaces.d.ts.map +1 -0
- package/dist/domain/interfaces/index-tracking.interfaces.js +3 -0
- package/dist/domain/interfaces/index-tracking.interfaces.js.map +1 -0
- package/dist/domain/interfaces/index.d.ts +12 -0
- package/dist/domain/interfaces/index.d.ts.map +1 -0
- package/dist/domain/interfaces/index.js +28 -0
- package/dist/domain/interfaces/index.js.map +1 -0
- package/dist/domain/interfaces/job.interfaces.d.ts +76 -0
- package/dist/domain/interfaces/job.interfaces.d.ts.map +1 -0
- package/dist/domain/interfaces/job.interfaces.js +3 -0
- package/dist/domain/interfaces/job.interfaces.js.map +1 -0
- package/dist/domain/interfaces/lock.interfaces.d.ts +54 -0
- package/dist/domain/interfaces/lock.interfaces.d.ts.map +1 -0
- package/dist/domain/interfaces/lock.interfaces.js +3 -0
- package/dist/domain/interfaces/lock.interfaces.js.map +1 -0
- package/dist/domain/interfaces/process.interfaces.d.ts +44 -0
- package/dist/domain/interfaces/process.interfaces.d.ts.map +1 -0
- package/dist/domain/interfaces/process.interfaces.js +3 -0
- package/dist/domain/interfaces/process.interfaces.js.map +1 -0
- package/dist/domain/interfaces/queue.interfaces.d.ts +46 -0
- package/dist/domain/interfaces/queue.interfaces.d.ts.map +1 -0
- package/dist/domain/interfaces/queue.interfaces.js +3 -0
- package/dist/domain/interfaces/queue.interfaces.js.map +1 -0
- package/dist/domain/interfaces/scaling.interfaces.d.ts +62 -0
- package/dist/domain/interfaces/scaling.interfaces.d.ts.map +1 -0
- package/dist/domain/interfaces/scaling.interfaces.js +3 -0
- package/dist/domain/interfaces/scaling.interfaces.js.map +1 -0
- package/dist/domain/interfaces/utility.types.d.ts +15 -0
- package/dist/domain/interfaces/utility.types.d.ts.map +1 -0
- package/dist/domain/interfaces/utility.types.js +3 -0
- package/dist/domain/interfaces/utility.types.js.map +1 -0
- package/dist/domain/interfaces/worker.interfaces.d.ts +120 -0
- package/dist/domain/interfaces/worker.interfaces.d.ts.map +1 -0
- package/dist/domain/interfaces/worker.interfaces.js +3 -0
- package/dist/domain/interfaces/worker.interfaces.js.map +1 -0
- package/dist/module/atomic-queues.module.d.ts.map +1 -1
- package/dist/module/atomic-queues.module.js +5 -0
- package/dist/module/atomic-queues.module.js.map +1 -1
- package/dist/services/cron-manager/cron-manager.service.d.ts +5 -4
- package/dist/services/cron-manager/cron-manager.service.d.ts.map +1 -1
- package/dist/services/cron-manager/cron-manager.service.js +26 -57
- package/dist/services/cron-manager/cron-manager.service.js.map +1 -1
- package/dist/services/index-manager/index-manager.service.d.ts +0 -4
- package/dist/services/index-manager/index-manager.service.d.ts.map +1 -1
- package/dist/services/index-manager/index-manager.service.js +4 -16
- package/dist/services/index-manager/index-manager.service.js.map +1 -1
- package/dist/services/index.d.ts +1 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -0
- package/dist/services/index.js.map +1 -1
- package/dist/services/processor-discovery/decorator-discovery.service.d.ts +40 -0
- package/dist/services/processor-discovery/decorator-discovery.service.d.ts.map +1 -0
- package/dist/services/processor-discovery/decorator-discovery.service.js +191 -0
- package/dist/services/processor-discovery/decorator-discovery.service.js.map +1 -0
- package/dist/services/processor-discovery/index.d.ts +4 -0
- package/dist/services/processor-discovery/index.d.ts.map +1 -1
- package/dist/services/processor-discovery/index.js +4 -0
- package/dist/services/processor-discovery/index.js.map +1 -1
- package/dist/services/processor-discovery/processor-discovery.service.d.ts +30 -138
- package/dist/services/processor-discovery/processor-discovery.service.d.ts.map +1 -1
- package/dist/services/processor-discovery/processor-discovery.service.js +125 -502
- package/dist/services/processor-discovery/processor-discovery.service.js.map +1 -1
- package/dist/services/processor-discovery/processor-registry.d.ts +58 -0
- package/dist/services/processor-discovery/processor-registry.d.ts.map +1 -0
- package/dist/services/processor-discovery/processor-registry.js +74 -0
- package/dist/services/processor-discovery/processor-registry.js.map +1 -0
- package/dist/services/processor-discovery/scaling-registration.service.d.ts +60 -0
- package/dist/services/processor-discovery/scaling-registration.service.d.ts.map +1 -0
- package/dist/services/processor-discovery/scaling-registration.service.js +261 -0
- package/dist/services/processor-discovery/scaling-registration.service.js.map +1 -0
- package/dist/services/processor-discovery/worker-factory.service.d.ts +54 -0
- package/dist/services/processor-discovery/worker-factory.service.d.ts.map +1 -0
- package/dist/services/processor-discovery/worker-factory.service.js +185 -0
- package/dist/services/processor-discovery/worker-factory.service.js.map +1 -0
- package/dist/services/queue-bus/entity-target.d.ts +58 -0
- package/dist/services/queue-bus/entity-target.d.ts.map +1 -0
- package/dist/services/queue-bus/entity-target.js +109 -0
- package/dist/services/queue-bus/entity-target.js.map +1 -0
- package/dist/services/queue-bus/index.d.ts +4 -0
- package/dist/services/queue-bus/index.d.ts.map +1 -1
- package/dist/services/queue-bus/index.js +4 -0
- package/dist/services/queue-bus/index.js.map +1 -1
- package/dist/services/queue-bus/queue-bus.service.d.ts +9 -145
- package/dist/services/queue-bus/queue-bus.service.d.ts.map +1 -1
- package/dist/services/queue-bus/queue-bus.service.js +23 -311
- package/dist/services/queue-bus/queue-bus.service.js.map +1 -1
- package/dist/services/queue-bus/queue-bus.types.d.ts +40 -0
- package/dist/services/queue-bus/queue-bus.types.d.ts.map +1 -0
- package/dist/services/queue-bus/queue-bus.types.js +3 -0
- package/dist/services/queue-bus/queue-bus.types.js.map +1 -0
- package/dist/services/queue-bus/queue-bus.utils.d.ts +34 -0
- package/dist/services/queue-bus/queue-bus.utils.d.ts.map +1 -0
- package/dist/services/queue-bus/queue-bus.utils.js +82 -0
- package/dist/services/queue-bus/queue-bus.utils.js.map +1 -0
- package/dist/services/queue-bus/queue-target.d.ts +61 -0
- package/dist/services/queue-bus/queue-target.d.ts.map +1 -0
- package/dist/services/queue-bus/queue-target.js +123 -0
- package/dist/services/queue-bus/queue-target.js.map +1 -0
- package/dist/services/queue-events-manager/queue-events-manager.service.d.ts +23 -6
- package/dist/services/queue-events-manager/queue-events-manager.service.d.ts.map +1 -1
- package/dist/services/queue-events-manager/queue-events-manager.service.js +69 -37
- package/dist/services/queue-events-manager/queue-events-manager.service.js.map +1 -1
- package/dist/services/resource-lock/resource-lock.service.d.ts +0 -4
- package/dist/services/resource-lock/resource-lock.service.d.ts.map +1 -1
- package/dist/services/resource-lock/resource-lock.service.js +4 -16
- package/dist/services/resource-lock/resource-lock.service.js.map +1 -1
- package/dist/services/service-queue/index.d.ts +1 -0
- package/dist/services/service-queue/index.d.ts.map +1 -1
- package/dist/services/service-queue/index.js +1 -0
- package/dist/services/service-queue/index.js.map +1 -1
- package/dist/services/service-queue/service-queue.service.d.ts +2 -35
- package/dist/services/service-queue/service-queue.service.d.ts.map +1 -1
- package/dist/services/service-queue/service-queue.service.js +17 -49
- package/dist/services/service-queue/service-queue.service.js.map +1 -1
- package/dist/services/service-queue/service-queue.types.d.ts +32 -0
- package/dist/services/service-queue/service-queue.types.d.ts.map +1 -0
- package/dist/services/service-queue/service-queue.types.js +27 -0
- package/dist/services/service-queue/service-queue.types.js.map +1 -0
- package/dist/services/spawn-queue/index.d.ts +2 -0
- package/dist/services/spawn-queue/index.d.ts.map +1 -0
- package/dist/services/spawn-queue/index.js +18 -0
- package/dist/services/spawn-queue/index.js.map +1 -0
- package/dist/services/spawn-queue/spawn-queue.service.d.ts +119 -0
- package/dist/services/spawn-queue/spawn-queue.service.d.ts.map +1 -0
- package/dist/services/spawn-queue/spawn-queue.service.js +273 -0
- package/dist/services/spawn-queue/spawn-queue.service.js.map +1 -0
- package/dist/services/worker-manager/worker-manager.service.d.ts +18 -3
- package/dist/services/worker-manager/worker-manager.service.d.ts.map +1 -1
- package/dist/services/worker-manager/worker-manager.service.js +46 -21
- package/dist/services/worker-manager/worker-manager.service.js.map +1 -1
- package/dist/utils/async.utils.d.ts +51 -0
- package/dist/utils/async.utils.d.ts.map +1 -0
- package/dist/utils/async.utils.js +87 -0
- package/dist/utils/async.utils.js.map +1 -0
- package/dist/utils/helpers.d.ts +4 -123
- package/dist/utils/helpers.d.ts.map +1 -1
- package/dist/utils/helpers.js +18 -226
- package/dist/utils/helpers.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/job.utils.d.ts +50 -0
- package/dist/utils/job.utils.d.ts.map +1 -0
- package/dist/utils/job.utils.js +89 -0
- package/dist/utils/job.utils.js.map +1 -0
- package/dist/utils/naming.utils.d.ts +21 -0
- package/dist/utils/naming.utils.d.ts.map +1 -0
- package/dist/utils/naming.utils.js +38 -0
- package/dist/utils/naming.utils.js.map +1 -0
- package/dist/utils/rate-limit.utils.d.ts +9 -0
- package/dist/utils/rate-limit.utils.d.ts.map +1 -0
- package/dist/utils/rate-limit.utils.js +30 -0
- package/dist/utils/rate-limit.utils.js.map +1 -0
- package/dist/utils/redis.utils.d.ts +3 -0
- package/dist/utils/redis.utils.d.ts.map +1 -0
- package/dist/utils/redis.utils.js +14 -0
- package/dist/utils/redis.utils.js.map +1 -0
- package/package.json +17 -17
- package/dist/decorators/decorators.d.ts +0 -489
- package/dist/decorators/decorators.d.ts.map +0 -1
- package/dist/decorators/decorators.js +0 -680
- package/dist/decorators/decorators.js.map +0 -1
- package/dist/domain/interfaces.d.ts +0 -748
- package/dist/domain/interfaces.d.ts.map +0 -1
- package/dist/domain/interfaces.js +0 -19
- package/dist/domain/interfaces.js.map +0 -1
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sleep = sleep;
|
|
4
|
+
exports.retry = retry;
|
|
5
|
+
exports.batch = batch;
|
|
6
|
+
exports.createTimeout = createTimeout;
|
|
7
|
+
exports.withTimeout = withTimeout;
|
|
8
|
+
/**
|
|
9
|
+
* Sleep utility for async operations.
|
|
10
|
+
*/
|
|
11
|
+
function sleep(ms) {
|
|
12
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Retry utility with exponential backoff.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const result = await retry(
|
|
20
|
+
* () => someUnreliableOperation(),
|
|
21
|
+
* { maxAttempts: 3, baseDelay: 1000 },
|
|
22
|
+
* );
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
async function retry(fn, options) {
|
|
26
|
+
const { maxAttempts, baseDelay, maxDelay = 30000, exponential = true, onRetry } = options;
|
|
27
|
+
let lastError;
|
|
28
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
29
|
+
try {
|
|
30
|
+
return await fn();
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
lastError = error;
|
|
34
|
+
if (attempt === maxAttempts) {
|
|
35
|
+
throw lastError;
|
|
36
|
+
}
|
|
37
|
+
if (onRetry) {
|
|
38
|
+
onRetry(attempt, lastError);
|
|
39
|
+
}
|
|
40
|
+
const delay = exponential
|
|
41
|
+
? Math.min(baseDelay * Math.pow(2, attempt - 1), maxDelay)
|
|
42
|
+
: baseDelay;
|
|
43
|
+
await sleep(delay);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
throw lastError;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Batch utility for processing items in chunks.
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* await batch(items, 10, async (chunk) => {
|
|
54
|
+
* await Promise.all(chunk.map(processItem));
|
|
55
|
+
* });
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
async function batch(items, batchSize, processor) {
|
|
59
|
+
for (let i = 0; i < items.length; i += batchSize) {
|
|
60
|
+
const chunk = items.slice(i, i + batchSize);
|
|
61
|
+
await processor(chunk);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Create a timeout promise that rejects after specified ms.
|
|
66
|
+
*/
|
|
67
|
+
function createTimeout(ms, message = 'Operation timed out') {
|
|
68
|
+
return new Promise((_, reject) => {
|
|
69
|
+
setTimeout(() => reject(new Error(message)), ms);
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Run an operation with a timeout.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* const result = await withTimeout(
|
|
78
|
+
* someAsyncOperation(),
|
|
79
|
+
* 5000,
|
|
80
|
+
* 'Operation took too long',
|
|
81
|
+
* );
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
async function withTimeout(promise, ms, message) {
|
|
85
|
+
return Promise.race([promise, createTimeout(ms, message)]);
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=async.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async.utils.js","sourceRoot":"","sources":["../../src/utils/async.utils.ts"],"names":[],"mappings":";;AAGA,sBAEC;AAaD,sBAqCC;AAYD,sBASC;AAKD,sCAIC;AAcD,kCAMC;AAzGD;;GAEG;AACH,SAAgB,KAAK,CAAC,EAAU;IAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,KAAK,CACzB,EAAoB,EACpB,OAMC;IAED,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAE1F,IAAI,SAA4B,CAAC;IAEjC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,GAAG,KAAc,CAAC;YAE3B,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC5B,MAAM,SAAS,CAAC;YAClB,CAAC;YAED,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YAC9B,CAAC;YAED,MAAM,KAAK,GAAG,WAAW;gBACvB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC;gBAC1D,CAAC,CAAC,SAAS,CAAC;YAEd,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,MAAM,SAAS,CAAC;AAClB,CAAC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,KAAK,CACzB,KAAU,EACV,SAAiB,EACjB,SAAwC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC;QAC5C,MAAM,SAAS,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa,CAAC,EAAU,EAAE,OAAO,GAAG,qBAAqB;IACvE,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;QAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,WAAW,CAC/B,OAAmB,EACnB,EAAU,EACV,OAAgB;IAEhB,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC"}
|
package/dist/utils/helpers.d.ts
CHANGED
|
@@ -1,124 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* @example
|
|
6
|
-
* ```typescript
|
|
7
|
-
* const jobData = createAtomicJobData({
|
|
8
|
-
* entityType: 'user',
|
|
9
|
-
* entityId: '123',
|
|
10
|
-
* type: 'command',
|
|
11
|
-
* commandName: 'SendMessageCommand',
|
|
12
|
-
* payload: { message: 'Hello!' },
|
|
13
|
-
* });
|
|
14
|
-
*
|
|
15
|
-
* await queueManager.addJob('user-123-queue', 'send-message', jobData);
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
export declare function createAtomicJobData<T = unknown>(options: {
|
|
19
|
-
entityType: string;
|
|
20
|
-
entityId: string;
|
|
21
|
-
type: 'command' | 'query' | 'custom';
|
|
22
|
-
commandName?: string;
|
|
23
|
-
payload: T;
|
|
24
|
-
metadata?: Record<string, unknown>;
|
|
25
|
-
}): IAtomicJobData<T>;
|
|
26
|
-
/**
|
|
27
|
-
* Create default job options with common settings.
|
|
28
|
-
*
|
|
29
|
-
* @example
|
|
30
|
-
* ```typescript
|
|
31
|
-
* const options = createDefaultJobOptions({
|
|
32
|
-
* priority: 0, // Highest priority
|
|
33
|
-
* attempts: 5,
|
|
34
|
-
* });
|
|
35
|
-
* ```
|
|
36
|
-
*/
|
|
37
|
-
export declare function createDefaultJobOptions(overrides?: Partial<IJobOptions>): IJobOptions;
|
|
38
|
-
/**
|
|
39
|
-
* Create high-priority job options (for SIGTERM signals, etc.)
|
|
40
|
-
*/
|
|
41
|
-
export declare function createHighPriorityJobOptions(overrides?: Partial<IJobOptions>): IJobOptions;
|
|
42
|
-
/**
|
|
43
|
-
* Sleep utility for async operations.
|
|
44
|
-
*/
|
|
45
|
-
export declare function sleep(ms: number): Promise<void>;
|
|
46
|
-
/**
|
|
47
|
-
* Retry utility with exponential backoff.
|
|
48
|
-
*
|
|
49
|
-
* @example
|
|
50
|
-
* ```typescript
|
|
51
|
-
* const result = await retry(
|
|
52
|
-
* () => someUnreliableOperation(),
|
|
53
|
-
* { maxAttempts: 3, baseDelay: 1000 },
|
|
54
|
-
* );
|
|
55
|
-
* ```
|
|
56
|
-
*/
|
|
57
|
-
export declare function retry<T>(fn: () => Promise<T>, options: {
|
|
58
|
-
maxAttempts: number;
|
|
59
|
-
baseDelay: number;
|
|
60
|
-
maxDelay?: number;
|
|
61
|
-
exponential?: boolean;
|
|
62
|
-
onRetry?: (attempt: number, error: Error) => void;
|
|
63
|
-
}): Promise<T>;
|
|
64
|
-
/**
|
|
65
|
-
* Generate a queue name for an entity.
|
|
66
|
-
*/
|
|
67
|
-
export declare function getEntityQueueName(entityType: string, entityId: string, prefix?: string): string;
|
|
68
|
-
/**
|
|
69
|
-
* Generate a worker name for an entity.
|
|
70
|
-
*/
|
|
71
|
-
export declare function getEntityWorkerName(entityType: string, entityId: string, prefix?: string): string;
|
|
72
|
-
/**
|
|
73
|
-
* Parse a queue name to extract entity info.
|
|
74
|
-
*/
|
|
75
|
-
export declare function parseQueueName(queueName: string): {
|
|
76
|
-
prefix: string;
|
|
77
|
-
entityType: string;
|
|
78
|
-
entityId: string;
|
|
79
|
-
} | null;
|
|
80
|
-
/**
|
|
81
|
-
* Create a SIGTERM job payload for worker termination.
|
|
82
|
-
*/
|
|
83
|
-
export declare function createSigtermPayload<T = unknown>(entityType: string, entityId: string): IAtomicJobData<T>;
|
|
84
|
-
/**
|
|
85
|
-
* Check if a job is a SIGTERM signal.
|
|
86
|
-
*/
|
|
87
|
-
export declare function isSigtermJob(data: IAtomicJobData): boolean;
|
|
88
|
-
/**
|
|
89
|
-
* Batch utility for processing items in chunks.
|
|
90
|
-
*
|
|
91
|
-
* @example
|
|
92
|
-
* ```typescript
|
|
93
|
-
* await batch(items, 10, async (chunk) => {
|
|
94
|
-
* await Promise.all(chunk.map(processItem));
|
|
95
|
-
* });
|
|
96
|
-
* ```
|
|
97
|
-
*/
|
|
98
|
-
export declare function batch<T>(items: T[], batchSize: number, processor: (batch: T[]) => Promise<void>): Promise<void>;
|
|
99
|
-
/**
|
|
100
|
-
* Create a timeout promise that rejects after specified ms.
|
|
101
|
-
*/
|
|
102
|
-
export declare function createTimeout(ms: number, message?: string): Promise<never>;
|
|
103
|
-
/**
|
|
104
|
-
* Run an operation with a timeout.
|
|
105
|
-
*
|
|
106
|
-
* @example
|
|
107
|
-
* ```typescript
|
|
108
|
-
* const result = await withTimeout(
|
|
109
|
-
* someAsyncOperation(),
|
|
110
|
-
* 5000,
|
|
111
|
-
* 'Operation took too long',
|
|
112
|
-
* );
|
|
113
|
-
* ```
|
|
114
|
-
*/
|
|
115
|
-
export declare function withTimeout<T>(promise: Promise<T>, ms: number, message?: string): Promise<T>;
|
|
116
|
-
/**
|
|
117
|
-
* Debounce utility for functions.
|
|
118
|
-
*/
|
|
119
|
-
export declare function debounce<T extends (...args: unknown[]) => unknown>(fn: T, ms: number): (...args: Parameters<T>) => void;
|
|
120
|
-
/**
|
|
121
|
-
* Throttle utility for functions.
|
|
122
|
-
*/
|
|
123
|
-
export declare function throttle<T extends (...args: unknown[]) => unknown>(fn: T, ms: number): (...args: Parameters<T>) => void;
|
|
1
|
+
export * from './job.utils';
|
|
2
|
+
export * from './async.utils';
|
|
3
|
+
export * from './naming.utils';
|
|
4
|
+
export * from './rate-limit.utils';
|
|
124
5
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
|
package/dist/utils/helpers.js
CHANGED
|
@@ -1,229 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
Object.
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.retry = retry;
|
|
8
|
-
exports.getEntityQueueName = getEntityQueueName;
|
|
9
|
-
exports.getEntityWorkerName = getEntityWorkerName;
|
|
10
|
-
exports.parseQueueName = parseQueueName;
|
|
11
|
-
exports.createSigtermPayload = createSigtermPayload;
|
|
12
|
-
exports.isSigtermJob = isSigtermJob;
|
|
13
|
-
exports.batch = batch;
|
|
14
|
-
exports.createTimeout = createTimeout;
|
|
15
|
-
exports.withTimeout = withTimeout;
|
|
16
|
-
exports.debounce = debounce;
|
|
17
|
-
exports.throttle = throttle;
|
|
18
|
-
const uuid_1 = require("uuid");
|
|
19
|
-
/**
|
|
20
|
-
* Create an atomic job data payload.
|
|
21
|
-
*
|
|
22
|
-
* @example
|
|
23
|
-
* ```typescript
|
|
24
|
-
* const jobData = createAtomicJobData({
|
|
25
|
-
* entityType: 'user',
|
|
26
|
-
* entityId: '123',
|
|
27
|
-
* type: 'command',
|
|
28
|
-
* commandName: 'SendMessageCommand',
|
|
29
|
-
* payload: { message: 'Hello!' },
|
|
30
|
-
* });
|
|
31
|
-
*
|
|
32
|
-
* await queueManager.addJob('user-123-queue', 'send-message', jobData);
|
|
33
|
-
* ```
|
|
34
|
-
*/
|
|
35
|
-
function createAtomicJobData(options) {
|
|
36
|
-
return {
|
|
37
|
-
uuid: (0, uuid_1.v4)(),
|
|
38
|
-
entityId: options.entityId,
|
|
39
|
-
entityType: options.entityType,
|
|
40
|
-
type: options.type,
|
|
41
|
-
commandName: options.commandName,
|
|
42
|
-
payload: options.payload,
|
|
43
|
-
metadata: options.metadata,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Create default job options with common settings.
|
|
48
|
-
*
|
|
49
|
-
* @example
|
|
50
|
-
* ```typescript
|
|
51
|
-
* const options = createDefaultJobOptions({
|
|
52
|
-
* priority: 0, // Highest priority
|
|
53
|
-
* attempts: 5,
|
|
54
|
-
* });
|
|
55
|
-
* ```
|
|
56
|
-
*/
|
|
57
|
-
function createDefaultJobOptions(overrides) {
|
|
58
|
-
return {
|
|
59
|
-
removeOnComplete: true,
|
|
60
|
-
removeOnFail: false,
|
|
61
|
-
attempts: Number.MAX_SAFE_INTEGER,
|
|
62
|
-
backoff: {
|
|
63
|
-
type: 'fixed',
|
|
64
|
-
delay: 1000,
|
|
65
|
-
},
|
|
66
|
-
priority: 1,
|
|
67
|
-
...overrides,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Create high-priority job options (for SIGTERM signals, etc.)
|
|
72
|
-
*/
|
|
73
|
-
function createHighPriorityJobOptions(overrides) {
|
|
74
|
-
return createDefaultJobOptions({
|
|
75
|
-
priority: 0, // Highest priority
|
|
76
|
-
...overrides,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Sleep utility for async operations.
|
|
81
|
-
*/
|
|
82
|
-
function sleep(ms) {
|
|
83
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Retry utility with exponential backoff.
|
|
87
|
-
*
|
|
88
|
-
* @example
|
|
89
|
-
* ```typescript
|
|
90
|
-
* const result = await retry(
|
|
91
|
-
* () => someUnreliableOperation(),
|
|
92
|
-
* { maxAttempts: 3, baseDelay: 1000 },
|
|
93
|
-
* );
|
|
94
|
-
* ```
|
|
95
|
-
*/
|
|
96
|
-
async function retry(fn, options) {
|
|
97
|
-
const { maxAttempts, baseDelay, maxDelay = 30000, exponential = true, onRetry } = options;
|
|
98
|
-
let lastError;
|
|
99
|
-
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
100
|
-
try {
|
|
101
|
-
return await fn();
|
|
102
|
-
}
|
|
103
|
-
catch (error) {
|
|
104
|
-
lastError = error;
|
|
105
|
-
if (attempt === maxAttempts) {
|
|
106
|
-
throw lastError;
|
|
107
|
-
}
|
|
108
|
-
if (onRetry) {
|
|
109
|
-
onRetry(attempt, lastError);
|
|
110
|
-
}
|
|
111
|
-
const delay = exponential
|
|
112
|
-
? Math.min(baseDelay * Math.pow(2, attempt - 1), maxDelay)
|
|
113
|
-
: baseDelay;
|
|
114
|
-
await sleep(delay);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
throw lastError;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Generate a queue name for an entity.
|
|
121
|
-
*/
|
|
122
|
-
function getEntityQueueName(entityType, entityId, prefix = 'aq') {
|
|
123
|
-
return `${prefix}:${entityType}:${entityId}:queue`;
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Generate a worker name for an entity.
|
|
127
|
-
*/
|
|
128
|
-
function getEntityWorkerName(entityType, entityId, prefix = 'aq') {
|
|
129
|
-
return `${prefix}:${entityType}:${entityId}:worker`;
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Parse a queue name to extract entity info.
|
|
133
|
-
*/
|
|
134
|
-
function parseQueueName(queueName) {
|
|
135
|
-
const parts = queueName.split(':');
|
|
136
|
-
if (parts.length >= 4 && parts[3] === 'queue') {
|
|
137
|
-
return {
|
|
138
|
-
prefix: parts[0],
|
|
139
|
-
entityType: parts[1],
|
|
140
|
-
entityId: parts[2],
|
|
141
|
-
};
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
142
7
|
}
|
|
143
|
-
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
};
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Check if a job is a SIGTERM signal.
|
|
160
|
-
*/
|
|
161
|
-
function isSigtermJob(data) {
|
|
162
|
-
return (data.type === 'custom' &&
|
|
163
|
-
data.payload?.type === 'SIGTERM');
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Batch utility for processing items in chunks.
|
|
167
|
-
*
|
|
168
|
-
* @example
|
|
169
|
-
* ```typescript
|
|
170
|
-
* await batch(items, 10, async (chunk) => {
|
|
171
|
-
* await Promise.all(chunk.map(processItem));
|
|
172
|
-
* });
|
|
173
|
-
* ```
|
|
174
|
-
*/
|
|
175
|
-
async function batch(items, batchSize, processor) {
|
|
176
|
-
for (let i = 0; i < items.length; i += batchSize) {
|
|
177
|
-
const chunk = items.slice(i, i + batchSize);
|
|
178
|
-
await processor(chunk);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Create a timeout promise that rejects after specified ms.
|
|
183
|
-
*/
|
|
184
|
-
function createTimeout(ms, message = 'Operation timed out') {
|
|
185
|
-
return new Promise((_, reject) => {
|
|
186
|
-
setTimeout(() => reject(new Error(message)), ms);
|
|
187
|
-
});
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Run an operation with a timeout.
|
|
191
|
-
*
|
|
192
|
-
* @example
|
|
193
|
-
* ```typescript
|
|
194
|
-
* const result = await withTimeout(
|
|
195
|
-
* someAsyncOperation(),
|
|
196
|
-
* 5000,
|
|
197
|
-
* 'Operation took too long',
|
|
198
|
-
* );
|
|
199
|
-
* ```
|
|
200
|
-
*/
|
|
201
|
-
async function withTimeout(promise, ms, message) {
|
|
202
|
-
return Promise.race([promise, createTimeout(ms, message)]);
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Debounce utility for functions.
|
|
206
|
-
*/
|
|
207
|
-
function debounce(fn, ms) {
|
|
208
|
-
let timeoutId = null;
|
|
209
|
-
return (...args) => {
|
|
210
|
-
if (timeoutId) {
|
|
211
|
-
clearTimeout(timeoutId);
|
|
212
|
-
}
|
|
213
|
-
timeoutId = setTimeout(() => fn(...args), ms);
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Throttle utility for functions.
|
|
218
|
-
*/
|
|
219
|
-
function throttle(fn, ms) {
|
|
220
|
-
let lastCall = 0;
|
|
221
|
-
return (...args) => {
|
|
222
|
-
const now = Date.now();
|
|
223
|
-
if (now - lastCall >= ms) {
|
|
224
|
-
lastCall = now;
|
|
225
|
-
fn(...args);
|
|
226
|
-
}
|
|
227
|
-
};
|
|
228
|
-
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./job.utils"), exports);
|
|
18
|
+
__exportStar(require("./async.utils"), exports);
|
|
19
|
+
__exportStar(require("./naming.utils"), exports);
|
|
20
|
+
__exportStar(require("./rate-limit.utils"), exports);
|
|
229
21
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,gDAA8B;AAC9B,iDAA+B;AAC/B,qDAAmC"}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
|
package/dist/utils/index.js
CHANGED
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./helpers"), exports);
|
|
18
|
+
__exportStar(require("./redis.utils"), exports);
|
|
18
19
|
//# sourceMappingURL=index.js.map
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,gDAA8B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { IAtomicJobData, IJobOptions } from '../domain';
|
|
2
|
+
/**
|
|
3
|
+
* Create an atomic job data payload.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```typescript
|
|
7
|
+
* const jobData = createAtomicJobData({
|
|
8
|
+
* entityType: 'user',
|
|
9
|
+
* entityId: '123',
|
|
10
|
+
* type: 'command',
|
|
11
|
+
* commandName: 'SendMessageCommand',
|
|
12
|
+
* payload: { message: 'Hello!' },
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* await queueManager.addJob('user-123-queue', 'send-message', jobData);
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
export declare function createAtomicJobData<T = unknown>(options: {
|
|
19
|
+
entityType: string;
|
|
20
|
+
entityId: string;
|
|
21
|
+
type: 'command' | 'query' | 'custom';
|
|
22
|
+
commandName?: string;
|
|
23
|
+
payload: T;
|
|
24
|
+
metadata?: Record<string, unknown>;
|
|
25
|
+
}): IAtomicJobData<T>;
|
|
26
|
+
/**
|
|
27
|
+
* Create default job options with common settings.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const options = createDefaultJobOptions({
|
|
32
|
+
* priority: 0, // Highest priority
|
|
33
|
+
* attempts: 5,
|
|
34
|
+
* });
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare function createDefaultJobOptions(overrides?: Partial<IJobOptions>): IJobOptions;
|
|
38
|
+
/**
|
|
39
|
+
* Create high-priority job options (for SIGTERM signals, etc.)
|
|
40
|
+
*/
|
|
41
|
+
export declare function createHighPriorityJobOptions(overrides?: Partial<IJobOptions>): IJobOptions;
|
|
42
|
+
/**
|
|
43
|
+
* Create a SIGTERM job payload for worker termination.
|
|
44
|
+
*/
|
|
45
|
+
export declare function createSigtermPayload<T = unknown>(entityType: string, entityId: string): IAtomicJobData<T>;
|
|
46
|
+
/**
|
|
47
|
+
* Check if a job is a SIGTERM signal.
|
|
48
|
+
*/
|
|
49
|
+
export declare function isSigtermJob(data: IAtomicJobData): boolean;
|
|
50
|
+
//# sourceMappingURL=job.utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job.utils.d.ts","sourceRoot":"","sources":["../../src/utils/job.utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,GAAG,OAAO,EAAE,OAAO,EAAE;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,CAAC,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG,cAAc,CAAC,CAAC,CAAC,CAUpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CACrC,SAAS,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC/B,WAAW,CAYb;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,SAAS,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC/B,WAAW,CAKb;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,GAAG,OAAO,EAC9C,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,cAAc,CAAC,CAAC,CAAC,CASnB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAK1D"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createAtomicJobData = createAtomicJobData;
|
|
4
|
+
exports.createDefaultJobOptions = createDefaultJobOptions;
|
|
5
|
+
exports.createHighPriorityJobOptions = createHighPriorityJobOptions;
|
|
6
|
+
exports.createSigtermPayload = createSigtermPayload;
|
|
7
|
+
exports.isSigtermJob = isSigtermJob;
|
|
8
|
+
const uuid_1 = require("uuid");
|
|
9
|
+
/**
|
|
10
|
+
* Create an atomic job data payload.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const jobData = createAtomicJobData({
|
|
15
|
+
* entityType: 'user',
|
|
16
|
+
* entityId: '123',
|
|
17
|
+
* type: 'command',
|
|
18
|
+
* commandName: 'SendMessageCommand',
|
|
19
|
+
* payload: { message: 'Hello!' },
|
|
20
|
+
* });
|
|
21
|
+
*
|
|
22
|
+
* await queueManager.addJob('user-123-queue', 'send-message', jobData);
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
function createAtomicJobData(options) {
|
|
26
|
+
return {
|
|
27
|
+
uuid: (0, uuid_1.v4)(),
|
|
28
|
+
entityId: options.entityId,
|
|
29
|
+
entityType: options.entityType,
|
|
30
|
+
type: options.type,
|
|
31
|
+
commandName: options.commandName,
|
|
32
|
+
payload: options.payload,
|
|
33
|
+
metadata: options.metadata,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Create default job options with common settings.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```typescript
|
|
41
|
+
* const options = createDefaultJobOptions({
|
|
42
|
+
* priority: 0, // Highest priority
|
|
43
|
+
* attempts: 5,
|
|
44
|
+
* });
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
function createDefaultJobOptions(overrides) {
|
|
48
|
+
return {
|
|
49
|
+
removeOnComplete: true,
|
|
50
|
+
removeOnFail: false,
|
|
51
|
+
attempts: Number.MAX_SAFE_INTEGER,
|
|
52
|
+
backoff: {
|
|
53
|
+
type: 'fixed',
|
|
54
|
+
delay: 1000,
|
|
55
|
+
},
|
|
56
|
+
priority: 1,
|
|
57
|
+
...overrides,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create high-priority job options (for SIGTERM signals, etc.)
|
|
62
|
+
*/
|
|
63
|
+
function createHighPriorityJobOptions(overrides) {
|
|
64
|
+
return createDefaultJobOptions({
|
|
65
|
+
priority: 0, // Highest priority
|
|
66
|
+
...overrides,
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create a SIGTERM job payload for worker termination.
|
|
71
|
+
*/
|
|
72
|
+
function createSigtermPayload(entityType, entityId) {
|
|
73
|
+
return {
|
|
74
|
+
uuid: (0, uuid_1.v4)(),
|
|
75
|
+
entityId,
|
|
76
|
+
entityType,
|
|
77
|
+
type: 'custom',
|
|
78
|
+
payload: { type: 'SIGTERM' },
|
|
79
|
+
metadata: { signal: 'SIGTERM' },
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Check if a job is a SIGTERM signal.
|
|
84
|
+
*/
|
|
85
|
+
function isSigtermJob(data) {
|
|
86
|
+
return (data.type === 'custom' &&
|
|
87
|
+
data.payload?.type === 'SIGTERM');
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=job.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"job.utils.js","sourceRoot":"","sources":["../../src/utils/job.utils.ts"],"names":[],"mappings":";;AAmBA,kDAiBC;AAaD,0DAcC;AAKD,oEAOC;AAKD,oDAYC;AAKD,oCAKC;AAtGD,+BAAoC;AAGpC;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,mBAAmB,CAAc,OAOhD;IACC,OAAO;QACL,IAAI,EAAE,IAAA,SAAM,GAAE;QACd,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;KAC3B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,uBAAuB,CACrC,SAAgC;IAEhC,OAAO;QACL,gBAAgB,EAAE,IAAI;QACtB,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE,MAAM,CAAC,gBAAgB;QACjC,OAAO,EAAE;YACP,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,IAAI;SACZ;QACD,QAAQ,EAAE,CAAC;QACX,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,4BAA4B,CAC1C,SAAgC;IAEhC,OAAO,uBAAuB,CAAC;QAC7B,QAAQ,EAAE,CAAC,EAAE,mBAAmB;QAChC,GAAG,SAAS;KACb,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,UAAkB,EAClB,QAAgB;IAEhB,OAAO;QACL,IAAI,EAAE,IAAA,SAAM,GAAE;QACd,QAAQ;QACR,UAAU;QACV,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAO;QACjC,QAAQ,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;KAChC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAgB,YAAY,CAAC,IAAoB;IAC/C,OAAO,CACL,IAAI,CAAC,IAAI,KAAK,QAAQ;QACrB,IAAI,CAAC,OAA6B,EAAE,IAAI,KAAK,SAAS,CACxD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const DEFAULT_KEY_PREFIX = "aq";
|
|
2
|
+
export declare function resolveKeyPrefix(config: {
|
|
3
|
+
keyPrefix?: string;
|
|
4
|
+
}): string;
|
|
5
|
+
/**
|
|
6
|
+
* Generate a queue name for an entity.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getEntityQueueName(entityType: string, entityId: string, prefix?: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Generate a worker name for an entity.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getEntityWorkerName(entityType: string, entityId: string, prefix?: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Parse a queue name to extract entity info.
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseQueueName(queueName: string): {
|
|
17
|
+
prefix: string;
|
|
18
|
+
entityType: string;
|
|
19
|
+
entityId: string;
|
|
20
|
+
} | null;
|
|
21
|
+
//# sourceMappingURL=naming.utils.d.ts.map
|