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.
Files changed (229) hide show
  1. package/README.md +300 -283
  2. package/dist/decorators/constants.d.ts +17 -0
  3. package/dist/decorators/constants.d.ts.map +1 -0
  4. package/dist/decorators/constants.js +23 -0
  5. package/dist/decorators/constants.js.map +1 -0
  6. package/dist/decorators/entity.decorators.d.ts +88 -0
  7. package/dist/decorators/entity.decorators.d.ts.map +1 -0
  8. package/dist/decorators/entity.decorators.js +150 -0
  9. package/dist/decorators/entity.decorators.js.map +1 -0
  10. package/dist/decorators/index.d.ts +9 -1
  11. package/dist/decorators/index.d.ts.map +1 -1
  12. package/dist/decorators/index.js +9 -1
  13. package/dist/decorators/index.js.map +1 -1
  14. package/dist/decorators/interfaces.d.ts +130 -0
  15. package/dist/decorators/interfaces.d.ts.map +1 -0
  16. package/dist/decorators/interfaces.js +3 -0
  17. package/dist/decorators/interfaces.js.map +1 -0
  18. package/dist/decorators/job.decorators.d.ts +60 -0
  19. package/dist/decorators/job.decorators.d.ts.map +1 -0
  20. package/dist/decorators/job.decorators.js +97 -0
  21. package/dist/decorators/job.decorators.js.map +1 -0
  22. package/dist/decorators/legacy.decorators.d.ts +36 -0
  23. package/dist/decorators/legacy.decorators.d.ts.map +1 -0
  24. package/dist/decorators/legacy.decorators.js +61 -0
  25. package/dist/decorators/legacy.decorators.js.map +1 -0
  26. package/dist/decorators/metadata-readers.d.ts +31 -0
  27. package/dist/decorators/metadata-readers.d.ts.map +1 -0
  28. package/dist/decorators/metadata-readers.js +53 -0
  29. package/dist/decorators/metadata-readers.js.map +1 -0
  30. package/dist/decorators/registry.d.ts +2 -0
  31. package/dist/decorators/registry.d.ts.map +1 -0
  32. package/dist/decorators/registry.js +6 -0
  33. package/dist/decorators/registry.js.map +1 -0
  34. package/dist/decorators/scaler.decorators.d.ts +65 -0
  35. package/dist/decorators/scaler.decorators.d.ts.map +1 -0
  36. package/dist/decorators/scaler.decorators.js +103 -0
  37. package/dist/decorators/scaler.decorators.js.map +1 -0
  38. package/dist/decorators/type-guards.d.ts +18 -0
  39. package/dist/decorators/type-guards.d.ts.map +1 -0
  40. package/dist/decorators/type-guards.js +32 -0
  41. package/dist/decorators/type-guards.js.map +1 -0
  42. package/dist/decorators/utils.d.ts +20 -0
  43. package/dist/decorators/utils.d.ts.map +1 -0
  44. package/dist/decorators/utils.js +98 -0
  45. package/dist/decorators/utils.js.map +1 -0
  46. package/dist/decorators/worker.decorators.d.ts +58 -0
  47. package/dist/decorators/worker.decorators.d.ts.map +1 -0
  48. package/dist/decorators/worker.decorators.js +92 -0
  49. package/dist/decorators/worker.decorators.js.map +1 -0
  50. package/dist/domain/interfaces/config.interfaces.d.ts +188 -0
  51. package/dist/domain/interfaces/config.interfaces.d.ts.map +1 -0
  52. package/dist/domain/interfaces/config.interfaces.js +3 -0
  53. package/dist/domain/interfaces/config.interfaces.js.map +1 -0
  54. package/dist/domain/interfaces/cqrs.interfaces.d.ts +7 -0
  55. package/dist/domain/interfaces/cqrs.interfaces.d.ts.map +1 -0
  56. package/dist/domain/interfaces/cqrs.interfaces.js +3 -0
  57. package/dist/domain/interfaces/cqrs.interfaces.js.map +1 -0
  58. package/dist/domain/interfaces/event.interfaces.d.ts +71 -0
  59. package/dist/domain/interfaces/event.interfaces.d.ts.map +1 -0
  60. package/dist/domain/interfaces/event.interfaces.js +3 -0
  61. package/dist/domain/interfaces/event.interfaces.js.map +1 -0
  62. package/dist/domain/interfaces/index-tracking.interfaces.d.ts +69 -0
  63. package/dist/domain/interfaces/index-tracking.interfaces.d.ts.map +1 -0
  64. package/dist/domain/interfaces/index-tracking.interfaces.js +3 -0
  65. package/dist/domain/interfaces/index-tracking.interfaces.js.map +1 -0
  66. package/dist/domain/interfaces/index.d.ts +12 -0
  67. package/dist/domain/interfaces/index.d.ts.map +1 -0
  68. package/dist/domain/interfaces/index.js +28 -0
  69. package/dist/domain/interfaces/index.js.map +1 -0
  70. package/dist/domain/interfaces/job.interfaces.d.ts +76 -0
  71. package/dist/domain/interfaces/job.interfaces.d.ts.map +1 -0
  72. package/dist/domain/interfaces/job.interfaces.js +3 -0
  73. package/dist/domain/interfaces/job.interfaces.js.map +1 -0
  74. package/dist/domain/interfaces/lock.interfaces.d.ts +54 -0
  75. package/dist/domain/interfaces/lock.interfaces.d.ts.map +1 -0
  76. package/dist/domain/interfaces/lock.interfaces.js +3 -0
  77. package/dist/domain/interfaces/lock.interfaces.js.map +1 -0
  78. package/dist/domain/interfaces/process.interfaces.d.ts +44 -0
  79. package/dist/domain/interfaces/process.interfaces.d.ts.map +1 -0
  80. package/dist/domain/interfaces/process.interfaces.js +3 -0
  81. package/dist/domain/interfaces/process.interfaces.js.map +1 -0
  82. package/dist/domain/interfaces/queue.interfaces.d.ts +46 -0
  83. package/dist/domain/interfaces/queue.interfaces.d.ts.map +1 -0
  84. package/dist/domain/interfaces/queue.interfaces.js +3 -0
  85. package/dist/domain/interfaces/queue.interfaces.js.map +1 -0
  86. package/dist/domain/interfaces/scaling.interfaces.d.ts +62 -0
  87. package/dist/domain/interfaces/scaling.interfaces.d.ts.map +1 -0
  88. package/dist/domain/interfaces/scaling.interfaces.js +3 -0
  89. package/dist/domain/interfaces/scaling.interfaces.js.map +1 -0
  90. package/dist/domain/interfaces/utility.types.d.ts +15 -0
  91. package/dist/domain/interfaces/utility.types.d.ts.map +1 -0
  92. package/dist/domain/interfaces/utility.types.js +3 -0
  93. package/dist/domain/interfaces/utility.types.js.map +1 -0
  94. package/dist/domain/interfaces/worker.interfaces.d.ts +120 -0
  95. package/dist/domain/interfaces/worker.interfaces.d.ts.map +1 -0
  96. package/dist/domain/interfaces/worker.interfaces.js +3 -0
  97. package/dist/domain/interfaces/worker.interfaces.js.map +1 -0
  98. package/dist/module/atomic-queues.module.d.ts.map +1 -1
  99. package/dist/module/atomic-queues.module.js +5 -0
  100. package/dist/module/atomic-queues.module.js.map +1 -1
  101. package/dist/services/cron-manager/cron-manager.service.d.ts +5 -4
  102. package/dist/services/cron-manager/cron-manager.service.d.ts.map +1 -1
  103. package/dist/services/cron-manager/cron-manager.service.js +26 -57
  104. package/dist/services/cron-manager/cron-manager.service.js.map +1 -1
  105. package/dist/services/index-manager/index-manager.service.d.ts +0 -4
  106. package/dist/services/index-manager/index-manager.service.d.ts.map +1 -1
  107. package/dist/services/index-manager/index-manager.service.js +4 -16
  108. package/dist/services/index-manager/index-manager.service.js.map +1 -1
  109. package/dist/services/index.d.ts +1 -0
  110. package/dist/services/index.d.ts.map +1 -1
  111. package/dist/services/index.js +1 -0
  112. package/dist/services/index.js.map +1 -1
  113. package/dist/services/processor-discovery/decorator-discovery.service.d.ts +40 -0
  114. package/dist/services/processor-discovery/decorator-discovery.service.d.ts.map +1 -0
  115. package/dist/services/processor-discovery/decorator-discovery.service.js +191 -0
  116. package/dist/services/processor-discovery/decorator-discovery.service.js.map +1 -0
  117. package/dist/services/processor-discovery/index.d.ts +4 -0
  118. package/dist/services/processor-discovery/index.d.ts.map +1 -1
  119. package/dist/services/processor-discovery/index.js +4 -0
  120. package/dist/services/processor-discovery/index.js.map +1 -1
  121. package/dist/services/processor-discovery/processor-discovery.service.d.ts +30 -138
  122. package/dist/services/processor-discovery/processor-discovery.service.d.ts.map +1 -1
  123. package/dist/services/processor-discovery/processor-discovery.service.js +125 -502
  124. package/dist/services/processor-discovery/processor-discovery.service.js.map +1 -1
  125. package/dist/services/processor-discovery/processor-registry.d.ts +58 -0
  126. package/dist/services/processor-discovery/processor-registry.d.ts.map +1 -0
  127. package/dist/services/processor-discovery/processor-registry.js +74 -0
  128. package/dist/services/processor-discovery/processor-registry.js.map +1 -0
  129. package/dist/services/processor-discovery/scaling-registration.service.d.ts +60 -0
  130. package/dist/services/processor-discovery/scaling-registration.service.d.ts.map +1 -0
  131. package/dist/services/processor-discovery/scaling-registration.service.js +261 -0
  132. package/dist/services/processor-discovery/scaling-registration.service.js.map +1 -0
  133. package/dist/services/processor-discovery/worker-factory.service.d.ts +54 -0
  134. package/dist/services/processor-discovery/worker-factory.service.d.ts.map +1 -0
  135. package/dist/services/processor-discovery/worker-factory.service.js +185 -0
  136. package/dist/services/processor-discovery/worker-factory.service.js.map +1 -0
  137. package/dist/services/queue-bus/entity-target.d.ts +58 -0
  138. package/dist/services/queue-bus/entity-target.d.ts.map +1 -0
  139. package/dist/services/queue-bus/entity-target.js +109 -0
  140. package/dist/services/queue-bus/entity-target.js.map +1 -0
  141. package/dist/services/queue-bus/index.d.ts +4 -0
  142. package/dist/services/queue-bus/index.d.ts.map +1 -1
  143. package/dist/services/queue-bus/index.js +4 -0
  144. package/dist/services/queue-bus/index.js.map +1 -1
  145. package/dist/services/queue-bus/queue-bus.service.d.ts +9 -145
  146. package/dist/services/queue-bus/queue-bus.service.d.ts.map +1 -1
  147. package/dist/services/queue-bus/queue-bus.service.js +23 -311
  148. package/dist/services/queue-bus/queue-bus.service.js.map +1 -1
  149. package/dist/services/queue-bus/queue-bus.types.d.ts +40 -0
  150. package/dist/services/queue-bus/queue-bus.types.d.ts.map +1 -0
  151. package/dist/services/queue-bus/queue-bus.types.js +3 -0
  152. package/dist/services/queue-bus/queue-bus.types.js.map +1 -0
  153. package/dist/services/queue-bus/queue-bus.utils.d.ts +34 -0
  154. package/dist/services/queue-bus/queue-bus.utils.d.ts.map +1 -0
  155. package/dist/services/queue-bus/queue-bus.utils.js +82 -0
  156. package/dist/services/queue-bus/queue-bus.utils.js.map +1 -0
  157. package/dist/services/queue-bus/queue-target.d.ts +61 -0
  158. package/dist/services/queue-bus/queue-target.d.ts.map +1 -0
  159. package/dist/services/queue-bus/queue-target.js +123 -0
  160. package/dist/services/queue-bus/queue-target.js.map +1 -0
  161. package/dist/services/queue-events-manager/queue-events-manager.service.d.ts +23 -6
  162. package/dist/services/queue-events-manager/queue-events-manager.service.d.ts.map +1 -1
  163. package/dist/services/queue-events-manager/queue-events-manager.service.js +69 -37
  164. package/dist/services/queue-events-manager/queue-events-manager.service.js.map +1 -1
  165. package/dist/services/resource-lock/resource-lock.service.d.ts +0 -4
  166. package/dist/services/resource-lock/resource-lock.service.d.ts.map +1 -1
  167. package/dist/services/resource-lock/resource-lock.service.js +4 -16
  168. package/dist/services/resource-lock/resource-lock.service.js.map +1 -1
  169. package/dist/services/service-queue/index.d.ts +1 -0
  170. package/dist/services/service-queue/index.d.ts.map +1 -1
  171. package/dist/services/service-queue/index.js +1 -0
  172. package/dist/services/service-queue/index.js.map +1 -1
  173. package/dist/services/service-queue/service-queue.service.d.ts +2 -35
  174. package/dist/services/service-queue/service-queue.service.d.ts.map +1 -1
  175. package/dist/services/service-queue/service-queue.service.js +17 -49
  176. package/dist/services/service-queue/service-queue.service.js.map +1 -1
  177. package/dist/services/service-queue/service-queue.types.d.ts +32 -0
  178. package/dist/services/service-queue/service-queue.types.d.ts.map +1 -0
  179. package/dist/services/service-queue/service-queue.types.js +27 -0
  180. package/dist/services/service-queue/service-queue.types.js.map +1 -0
  181. package/dist/services/spawn-queue/index.d.ts +2 -0
  182. package/dist/services/spawn-queue/index.d.ts.map +1 -0
  183. package/dist/services/spawn-queue/index.js +18 -0
  184. package/dist/services/spawn-queue/index.js.map +1 -0
  185. package/dist/services/spawn-queue/spawn-queue.service.d.ts +119 -0
  186. package/dist/services/spawn-queue/spawn-queue.service.d.ts.map +1 -0
  187. package/dist/services/spawn-queue/spawn-queue.service.js +273 -0
  188. package/dist/services/spawn-queue/spawn-queue.service.js.map +1 -0
  189. package/dist/services/worker-manager/worker-manager.service.d.ts +18 -3
  190. package/dist/services/worker-manager/worker-manager.service.d.ts.map +1 -1
  191. package/dist/services/worker-manager/worker-manager.service.js +46 -21
  192. package/dist/services/worker-manager/worker-manager.service.js.map +1 -1
  193. package/dist/utils/async.utils.d.ts +51 -0
  194. package/dist/utils/async.utils.d.ts.map +1 -0
  195. package/dist/utils/async.utils.js +87 -0
  196. package/dist/utils/async.utils.js.map +1 -0
  197. package/dist/utils/helpers.d.ts +4 -123
  198. package/dist/utils/helpers.d.ts.map +1 -1
  199. package/dist/utils/helpers.js +18 -226
  200. package/dist/utils/helpers.js.map +1 -1
  201. package/dist/utils/index.d.ts +1 -0
  202. package/dist/utils/index.d.ts.map +1 -1
  203. package/dist/utils/index.js +1 -0
  204. package/dist/utils/index.js.map +1 -1
  205. package/dist/utils/job.utils.d.ts +50 -0
  206. package/dist/utils/job.utils.d.ts.map +1 -0
  207. package/dist/utils/job.utils.js +89 -0
  208. package/dist/utils/job.utils.js.map +1 -0
  209. package/dist/utils/naming.utils.d.ts +21 -0
  210. package/dist/utils/naming.utils.d.ts.map +1 -0
  211. package/dist/utils/naming.utils.js +38 -0
  212. package/dist/utils/naming.utils.js.map +1 -0
  213. package/dist/utils/rate-limit.utils.d.ts +9 -0
  214. package/dist/utils/rate-limit.utils.d.ts.map +1 -0
  215. package/dist/utils/rate-limit.utils.js +30 -0
  216. package/dist/utils/rate-limit.utils.js.map +1 -0
  217. package/dist/utils/redis.utils.d.ts +3 -0
  218. package/dist/utils/redis.utils.d.ts.map +1 -0
  219. package/dist/utils/redis.utils.js +14 -0
  220. package/dist/utils/redis.utils.js.map +1 -0
  221. package/package.json +17 -17
  222. package/dist/decorators/decorators.d.ts +0 -489
  223. package/dist/decorators/decorators.d.ts.map +0 -1
  224. package/dist/decorators/decorators.js +0 -680
  225. package/dist/decorators/decorators.js.map +0 -1
  226. package/dist/domain/interfaces.d.ts +0 -748
  227. package/dist/domain/interfaces.d.ts.map +0 -1
  228. package/dist/domain/interfaces.js +0 -19
  229. 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"}
@@ -1,124 +1,5 @@
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
- * 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":"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"}
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"}
@@ -1,229 +1,21 @@
1
1
  "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createAtomicJobData = createAtomicJobData;
4
- exports.createDefaultJobOptions = createDefaultJobOptions;
5
- exports.createHighPriorityJobOptions = createHighPriorityJobOptions;
6
- exports.sleep = sleep;
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
- return null;
144
- }
145
- /**
146
- * Create a SIGTERM job payload for worker termination.
147
- */
148
- function createSigtermPayload(entityType, entityId) {
149
- return {
150
- uuid: (0, uuid_1.v4)(),
151
- entityId,
152
- entityType,
153
- type: 'custom',
154
- payload: { type: 'SIGTERM' },
155
- metadata: { signal: 'SIGTERM' },
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":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,8CAA4B;AAC5B,gDAA8B;AAC9B,iDAA+B;AAC/B,qDAAmC"}
@@ -1,2 +1,3 @@
1
1
  export * from './helpers';
2
+ export * from './redis.utils';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -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
@@ -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