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
@@ -13,307 +13,16 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
13
13
  };
14
14
  var QueueBus_1;
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.QueueBus = exports.EntityTarget = exports.QueueTarget = void 0;
16
+ exports.QueueBus = void 0;
17
17
  const common_1 = require("@nestjs/common");
18
18
  const queue_manager_service_1 = require("../queue-manager/queue-manager.service");
19
+ const queue_events_manager_service_1 = require("../queue-events-manager/queue-events-manager.service");
19
20
  const decorators_1 = require("../../decorators");
20
21
  const constants_1 = require("../constants");
21
- /**
22
- * Derive job name from class name
23
- * MakeBetCommand -> MakeBetCommand (keep as-is for lookup)
24
- */
25
- function getJobName(commandOrQuery) {
26
- return commandOrQuery.constructor.name;
27
- }
28
- /**
29
- * Extract all properties from a command/query instance
30
- */
31
- function extractData(commandOrQuery) {
32
- const data = {};
33
- // Get all enumerable properties
34
- for (const key of Object.keys(commandOrQuery)) {
35
- data[key] = commandOrQuery[key];
36
- }
37
- return data;
38
- }
39
- /**
40
- * Extract entityId from command using explicit decorators and config.
41
- *
42
- * Priority chain (highest to lowest):
43
- * 1. @QueueEntityId() decorator on command property
44
- * 2. processorDefaultEntityId from @WorkerProcessor({ defaultEntityId })
45
- * 3. entityConfig.defaultEntityId from module entities config
46
- * 4. Throws error (no magic fallback)
47
- *
48
- * @param commandOrQuery - The command/query instance
49
- * @param data - Extracted data from command
50
- * @param processorDefaultEntityId - Default from @WorkerProcessor
51
- * @param entityConfig - Config from module entities
52
- * @param logger - Optional logger for debug info
53
- */
54
- function extractEntityIdExplicit(commandOrQuery, data, processorDefaultEntityId, entityConfig, logger) {
55
- const className = commandOrQuery.constructor.name;
56
- // 1. Check for @QueueEntityId() decorator on the command class
57
- const decoratedProperty = (0, decorators_1.getEntityIdProperty)(commandOrQuery.constructor);
58
- if (decoratedProperty && data[decoratedProperty] !== undefined) {
59
- logger?.debug(`[${className}] Using @QueueEntityId() decorated property: ${decoratedProperty}`);
60
- return String(data[decoratedProperty]);
61
- }
62
- // 2. Check processor-level default
63
- if (processorDefaultEntityId && data[processorDefaultEntityId] !== undefined) {
64
- logger?.debug(`[${className}] Using processor defaultEntityId: ${processorDefaultEntityId}`);
65
- return String(data[processorDefaultEntityId]);
66
- }
67
- // 3. Check entity config default
68
- if (entityConfig?.defaultEntityId && data[entityConfig.defaultEntityId] !== undefined) {
69
- logger?.debug(`[${className}] Using entity config defaultEntityId: ${entityConfig.defaultEntityId}`);
70
- return String(data[entityConfig.defaultEntityId]);
71
- }
72
- // 4. No fallback - throw error with helpful message
73
- const availableKeys = Object.keys(data).join(', ');
74
- throw new Error(`Cannot extract entityId from ${className}. ` +
75
- `Use @QueueEntityId() decorator on the ID property, ` +
76
- `or set defaultEntityId in @WorkerProcessor or module entities config. ` +
77
- `Available properties: [${availableKeys}]`);
78
- }
79
- /**
80
- * Legacy extract entityId from command data
81
- * Tries common property names in order
82
- * @deprecated Use extractEntityIdExplicit instead
83
- */
84
- function extractEntityId(data, logger) {
85
- const candidates = ['entityId', 'tableId', 'userId', 'id', 'gameId', 'playerId'];
86
- for (const key of candidates) {
87
- if (data[key] !== undefined && data[key] !== null) {
88
- return String(data[key]);
89
- }
90
- }
91
- // Log warning if no entityId found
92
- logger?.warn(`Could not extract entityId from command data. Keys: ${Object.keys(data).join(', ')}`);
93
- return 'default';
94
- }
95
- /**
96
- * QueueTarget - Fluent builder for targeting a specific processor's queue
97
- *
98
- * @example
99
- * await queueBus
100
- * .forProcessor(TableWorkerProcessor)
101
- * .enqueue(new MakeBetCommand(tableId, bets, player));
102
- */
103
- class QueueTarget {
104
- constructor(queueManager, processorClass, processorOptions, entityConfig) {
105
- this.queueManager = queueManager;
106
- this.processorClass = processorClass;
107
- this.processorOptions = processorOptions;
108
- this.entityConfig = entityConfig;
109
- this.logger = new common_1.Logger(QueueTarget.name);
110
- }
111
- /**
112
- * Get the queue name function from the processor
113
- */
114
- getQueueNameFn() {
115
- const { queueName } = this.processorOptions;
116
- if (typeof queueName === 'function') {
117
- return queueName;
118
- }
119
- if (typeof queueName === 'string') {
120
- // Static queue name or pattern with {entityId}
121
- return (entityId) => queueName.replace('{entityId}', entityId);
122
- }
123
- // Check entity config for custom queue name function
124
- if (this.entityConfig?.queueName) {
125
- return this.entityConfig.queueName;
126
- }
127
- // Default: entityType-{entityId}-queue
128
- const { entityType } = this.processorOptions;
129
- return (entityId) => `${entityType}-${entityId}-queue`;
130
- }
131
- /**
132
- * Extract entity ID using the priority chain
133
- */
134
- extractEntityId(commandOrQuery, data) {
135
- return extractEntityIdExplicit(commandOrQuery, data, this.processorOptions.defaultEntityId, this.entityConfig, this.logger);
136
- }
137
- /**
138
- * Enqueue a command/query for processing
139
- *
140
- * @param commandOrQuery - The command or query instance
141
- * @param options - Optional settings (entityId override, jobOptions)
142
- * @returns The created BullMQ job
143
- *
144
- * @example
145
- * await queueBus
146
- * .forProcessor(TableWorkerProcessor)
147
- * .enqueue(new MakeBetCommand(tableId, bets, player));
148
- *
149
- * // With job options
150
- * await queueBus
151
- * .forProcessor(TableWorkerProcessor)
152
- * .enqueue(new DealCommand(tableId), { jobOptions: { delay: 5000 } });
153
- */
154
- async enqueue(commandOrQuery, options) {
155
- const jobName = getJobName(commandOrQuery);
156
- const data = extractData(commandOrQuery);
157
- const entityId = options?.entityId ?? this.extractEntityId(commandOrQuery, data);
158
- // Get queue name from processor's queueName function
159
- const queueNameFn = this.getQueueNameFn();
160
- const queueName = queueNameFn(entityId);
161
- // Add job via QueueManager (which handles event listening setup)
162
- const { entityType } = this.processorOptions;
163
- this.logger.debug(`[${this.processorClass.name}] Adding job ${jobName} to queue ${queueName}`);
164
- // Get queue and ensure event listening
165
- const queue = this.queueManager.getOrCreateQueue(queueName);
166
- const queueEventsManager = this.queueManager.queueEventsManager;
167
- if (queueEventsManager) {
168
- await queueEventsManager.ensureListening(queueName, entityType);
169
- }
170
- // Add job to queue
171
- return queue.add(jobName, data, options?.jobOptions);
172
- }
173
- /**
174
- * Enqueue and wait for result
175
- */
176
- async enqueueAndWait(commandOrQuery, options) {
177
- const job = await this.enqueue(commandOrQuery, options);
178
- const data = extractData(commandOrQuery);
179
- const entityId = options?.entityId ?? this.extractEntityId(commandOrQuery, data);
180
- const queueNameFn = this.getQueueNameFn();
181
- const queueName = queueNameFn(entityId);
182
- const queueEvents = await this.queueManager.getQueueEvents(queueName);
183
- return job.waitUntilFinished(queueEvents, options?.timeout);
184
- }
185
- /**
186
- * Enqueue multiple commands/queries in bulk
187
- */
188
- async enqueueBulk(commandsOrQueries, options) {
189
- if (commandsOrQueries.length === 0)
190
- return [];
191
- const firstCmd = commandsOrQueries[0];
192
- const firstData = extractData(firstCmd);
193
- const entityId = options?.entityId ?? this.extractEntityId(firstCmd, firstData);
194
- const queueNameFn = this.getQueueNameFn();
195
- const queueName = queueNameFn(entityId);
196
- const queue = this.queueManager.getOrCreateQueue(queueName);
197
- // Ensure listening is set up for auto-spawn
198
- const { entityType } = this.processorOptions;
199
- const queueEventsManager = this.queueManager.queueEventsManager;
200
- if (queueEventsManager) {
201
- await queueEventsManager.ensureListening(queueName, entityType);
202
- }
203
- const bulkJobs = commandsOrQueries.map((cmd) => ({
204
- name: getJobName(cmd),
205
- data: extractData(cmd),
206
- opts: options?.jobOptions,
207
- }));
208
- this.logger.debug(`[${this.processorClass.name}] Adding ${bulkJobs.length} jobs to queue ${queueName}`);
209
- return queue.addBulk(bulkJobs);
210
- }
211
- }
212
- exports.QueueTarget = QueueTarget;
213
- /**
214
- * EntityTarget - Fluent builder for targeting a specific entity type's queue
215
- * without needing a @WorkerProcessor class.
216
- *
217
- * This is the zero-boilerplate way to enqueue commands when you've configured
218
- * entity defaults in the module config.
219
- *
220
- * @example
221
- * await queueBus
222
- * .forEntity('table')
223
- * .enqueue(new MakeBetCommand(tableId, bets, player));
224
- */
225
- class EntityTarget {
226
- constructor(queueManager, entityType, entityConfig, keyPrefix) {
227
- this.queueManager = queueManager;
228
- this.entityType = entityType;
229
- this.entityConfig = entityConfig;
230
- this.keyPrefix = keyPrefix;
231
- this.logger = new common_1.Logger(EntityTarget.name);
232
- }
233
- /**
234
- * Get the queue name function from entity config or defaults
235
- */
236
- getQueueNameFn() {
237
- if (this.entityConfig?.queueName) {
238
- return this.entityConfig.queueName;
239
- }
240
- // Default: {keyPrefix}-{entityType}-{entityId}-queue
241
- return (entityId) => `${this.keyPrefix}-${this.entityType}-${entityId}-queue`;
242
- }
243
- /**
244
- * Extract entity ID using the priority chain (no processor-level default)
245
- */
246
- extractEntityId(commandOrQuery, data) {
247
- return extractEntityIdExplicit(commandOrQuery, data, undefined, // No processor default for forEntity()
248
- this.entityConfig, this.logger);
249
- }
250
- /**
251
- * Enqueue a command/query for processing
252
- *
253
- * @param commandOrQuery - The command or query instance
254
- * @param options - Optional settings (entityId override, jobOptions)
255
- * @returns The created BullMQ job
256
- *
257
- * @example
258
- * await queueBus
259
- * .forEntity('table')
260
- * .enqueue(new MakeBetCommand(tableId, bets, player));
261
- */
262
- async enqueue(commandOrQuery, options) {
263
- const jobName = getJobName(commandOrQuery);
264
- const data = extractData(commandOrQuery);
265
- const entityId = options?.entityId ?? this.extractEntityId(commandOrQuery, data);
266
- const queueNameFn = this.getQueueNameFn();
267
- const queueName = queueNameFn(entityId);
268
- this.logger.debug(`[forEntity:${this.entityType}] Adding job ${jobName} to queue ${queueName}`);
269
- // Get queue and ensure event listening
270
- const queue = this.queueManager.getOrCreateQueue(queueName);
271
- const queueEventsManager = this.queueManager.queueEventsManager;
272
- if (queueEventsManager) {
273
- await queueEventsManager.ensureListening(queueName, this.entityType);
274
- }
275
- // Add job to queue
276
- return queue.add(jobName, data, options?.jobOptions);
277
- }
278
- /**
279
- * Enqueue and wait for result
280
- */
281
- async enqueueAndWait(commandOrQuery, options) {
282
- const job = await this.enqueue(commandOrQuery, options);
283
- const data = extractData(commandOrQuery);
284
- const entityId = options?.entityId ?? this.extractEntityId(commandOrQuery, data);
285
- const queueNameFn = this.getQueueNameFn();
286
- const queueName = queueNameFn(entityId);
287
- const queueEvents = await this.queueManager.getQueueEvents(queueName);
288
- return job.waitUntilFinished(queueEvents, options?.timeout);
289
- }
290
- /**
291
- * Enqueue multiple commands/queries in bulk
292
- */
293
- async enqueueBulk(commandsOrQueries, options) {
294
- if (commandsOrQueries.length === 0)
295
- return [];
296
- const firstCmd = commandsOrQueries[0];
297
- const firstData = extractData(firstCmd);
298
- const entityId = options?.entityId ?? this.extractEntityId(firstCmd, firstData);
299
- const queueNameFn = this.getQueueNameFn();
300
- const queueName = queueNameFn(entityId);
301
- const queue = this.queueManager.getOrCreateQueue(queueName);
302
- // Ensure listening is set up for auto-spawn
303
- const queueEventsManager = this.queueManager.queueEventsManager;
304
- if (queueEventsManager) {
305
- await queueEventsManager.ensureListening(queueName, this.entityType);
306
- }
307
- const bulkJobs = commandsOrQueries.map((cmd) => ({
308
- name: getJobName(cmd),
309
- data: extractData(cmd),
310
- opts: options?.jobOptions,
311
- }));
312
- this.logger.debug(`[forEntity:${this.entityType}] Adding ${bulkJobs.length} jobs to queue ${queueName}`);
313
- return queue.addBulk(bulkJobs);
314
- }
315
- }
316
- exports.EntityTarget = EntityTarget;
22
+ const utils_1 = require("../../utils");
23
+ const queue_bus_utils_1 = require("./queue-bus.utils");
24
+ const queue_target_1 = require("./queue-target");
25
+ const entity_target_1 = require("./entity-target");
317
26
  /**
318
27
  * QueueBus
319
28
  *
@@ -350,8 +59,9 @@ exports.EntityTarget = EntityTarget;
350
59
  * ```
351
60
  */
352
61
  let QueueBus = QueueBus_1 = class QueueBus {
353
- constructor(queueManager, config) {
62
+ constructor(queueManager, queueEventsManager, config) {
354
63
  this.queueManager = queueManager;
64
+ this.queueEventsManager = queueEventsManager;
355
65
  this.logger = new common_1.Logger(QueueBus_1.name);
356
66
  /**
357
67
  * Cache of processor options by class
@@ -360,10 +70,10 @@ let QueueBus = QueueBus_1 = class QueueBus {
360
70
  this.config = config;
361
71
  }
362
72
  /**
363
- * Get key prefix from config or default
73
+ * Get key prefix from config using resolveKeyPrefix utility
364
74
  */
365
75
  get keyPrefix() {
366
- return this.config?.keyPrefix ?? 'atomic';
76
+ return (0, utils_1.resolveKeyPrefix)(this.config ?? {});
367
77
  }
368
78
  /**
369
79
  * Get entity config from module config
@@ -398,7 +108,7 @@ let QueueBus = QueueBus_1 = class QueueBus {
398
108
  }
399
109
  // Get entity config for this processor's entityType
400
110
  const entityConfig = this.getEntityConfig(options.entityType);
401
- return new QueueTarget(this.queueManager, processorClass, options, entityConfig);
111
+ return new queue_target_1.QueueTarget(this.queueManager, processorClass, options, entityConfig, this.queueEventsManager);
402
112
  }
403
113
  /**
404
114
  * Target a specific entity type's queue without needing a @WorkerProcessor class.
@@ -418,7 +128,7 @@ let QueueBus = QueueBus_1 = class QueueBus {
418
128
  */
419
129
  forEntity(entityType) {
420
130
  const entityConfig = this.getEntityConfig(entityType);
421
- return new EntityTarget(this.queueManager, entityType, entityConfig, this.keyPrefix);
131
+ return new entity_target_1.EntityTarget(this.queueManager, entityType, entityConfig, this.keyPrefix, this.queueEventsManager);
422
132
  }
423
133
  /**
424
134
  * Direct enqueue using @EntityType decorator on the command class.
@@ -573,9 +283,9 @@ let QueueBus = QueueBus_1 = class QueueBus {
573
283
  * @returns The created BullMQ job
574
284
  */
575
285
  async execute(queuePattern, commandOrQuery, options) {
576
- const jobName = getJobName(commandOrQuery);
577
- const data = extractData(commandOrQuery);
578
- const entityId = options?.entityId ?? extractEntityId(data, this.logger);
286
+ const jobName = (0, queue_bus_utils_1.getJobName)(commandOrQuery);
287
+ const data = (0, queue_bus_utils_1.extractData)(commandOrQuery);
288
+ const entityId = options?.entityId ?? (0, queue_bus_utils_1.extractEntityId)(data, this.logger);
579
289
  // Resolve queue name with entityId
580
290
  const queueName = this.resolveQueueName(queuePattern, entityId);
581
291
  // Get or create the queue
@@ -592,7 +302,7 @@ let QueueBus = QueueBus_1 = class QueueBus {
592
302
  */
593
303
  async executeAndWait(queuePattern, commandOrQuery, options) {
594
304
  const job = await this.execute(queuePattern, commandOrQuery, options);
595
- const queueEvents = await this.queueManager.getQueueEvents(this.resolveQueueName(queuePattern, options?.entityId ?? extractEntityId(extractData(commandOrQuery), this.logger)));
305
+ const queueEvents = await this.queueManager.getQueueEvents(this.resolveQueueName(queuePattern, options?.entityId ?? (0, queue_bus_utils_1.extractEntityId)((0, queue_bus_utils_1.extractData)(commandOrQuery), this.logger)));
596
306
  return job.waitUntilFinished(queueEvents, options?.timeout);
597
307
  }
598
308
  /**
@@ -603,12 +313,12 @@ let QueueBus = QueueBus_1 = class QueueBus {
603
313
  async executeBulk(queuePattern, commandsOrQueries, options) {
604
314
  if (commandsOrQueries.length === 0)
605
315
  return [];
606
- const entityId = options?.entityId ?? extractEntityId(extractData(commandsOrQueries[0]), this.logger);
316
+ const entityId = options?.entityId ?? (0, queue_bus_utils_1.extractEntityId)((0, queue_bus_utils_1.extractData)(commandsOrQueries[0]), this.logger);
607
317
  const queueName = this.resolveQueueName(queuePattern, entityId);
608
318
  const queue = this.queueManager.getOrCreateQueue(queueName);
609
319
  const bulkJobs = commandsOrQueries.map((cmd) => ({
610
- name: getJobName(cmd),
611
- data: extractData(cmd),
320
+ name: (0, queue_bus_utils_1.getJobName)(cmd),
321
+ data: (0, queue_bus_utils_1.extractData)(cmd),
612
322
  opts: options?.jobOptions,
613
323
  }));
614
324
  return queue.addBulk(bulkJobs);
@@ -630,7 +340,9 @@ QueueBus.globalRegistry = new Map();
630
340
  exports.QueueBus = QueueBus = QueueBus_1 = __decorate([
631
341
  (0, common_1.Injectable)(),
632
342
  __param(1, (0, common_1.Optional)()),
633
- __param(1, (0, common_1.Inject)(constants_1.ATOMIC_QUEUES_CONFIG)),
634
- __metadata("design:paramtypes", [queue_manager_service_1.QueueManagerService, Object])
343
+ __param(2, (0, common_1.Optional)()),
344
+ __param(2, (0, common_1.Inject)(constants_1.ATOMIC_QUEUES_CONFIG)),
345
+ __metadata("design:paramtypes", [queue_manager_service_1.QueueManagerService,
346
+ queue_events_manager_service_1.QueueEventsManagerService, Object])
635
347
  ], QueueBus);
636
348
  //# sourceMappingURL=queue-bus.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue-bus.service.js","sourceRoot":"","sources":["../../../src/services/queue-bus/queue-bus.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"queue-bus.service.js","sourceRoot":"","sources":["../../../src/services/queue-bus/queue-bus.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { Type } from '@nestjs/common';
2
+ import { JobsOptions } from 'bullmq';
3
+ /**
4
+ * Options for QueueBus.execute()
5
+ * @deprecated Use .forProcessor(ProcessorClass).enqueue(command) instead
6
+ */
7
+ export interface QueueBusExecuteOptions {
8
+ /**
9
+ * The entity ID to use for queue name resolution.
10
+ * If not provided, will try to extract from command properties:
11
+ * entityId, tableId, userId, id (in that order)
12
+ */
13
+ entityId?: string;
14
+ /**
15
+ * BullMQ job options (priority, delay, attempts, etc.)
16
+ */
17
+ jobOptions?: JobsOptions;
18
+ }
19
+ /**
20
+ * Options for .enqueue()
21
+ */
22
+ export interface EnqueueOptions {
23
+ /**
24
+ * Override the auto-extracted entityId
25
+ */
26
+ entityId?: string;
27
+ /**
28
+ * BullMQ job options (priority, delay, attempts, etc.)
29
+ */
30
+ jobOptions?: JobsOptions;
31
+ }
32
+ /**
33
+ * Registry entry for a command/query class
34
+ */
35
+ export interface CommandRegistryEntry {
36
+ className: string;
37
+ targetClass: Type<any>;
38
+ isQuery: boolean;
39
+ }
40
+ //# sourceMappingURL=queue-bus.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-bus.types.d.ts","sourceRoot":"","sources":["../../../src/services/queue-bus/queue-bus.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=queue-bus.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-bus.types.js","sourceRoot":"","sources":["../../../src/services/queue-bus/queue-bus.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import { Logger } from '@nestjs/common';
2
+ import { IEntityConfig } from '../../domain/interfaces';
3
+ /**
4
+ * Derive job name from class name
5
+ * MakeBetCommand -> MakeBetCommand (keep as-is for lookup)
6
+ */
7
+ export declare function getJobName(commandOrQuery: object): string;
8
+ /**
9
+ * Extract all properties from a command/query instance
10
+ */
11
+ export declare function extractData(commandOrQuery: object): Record<string, any>;
12
+ /**
13
+ * Extract entityId from command using explicit decorators and config.
14
+ *
15
+ * Priority chain (highest to lowest):
16
+ * 1. @QueueEntityId() decorator on command property
17
+ * 2. processorDefaultEntityId from @WorkerProcessor({ defaultEntityId })
18
+ * 3. entityConfig.defaultEntityId from module entities config
19
+ * 4. Throws error (no magic fallback)
20
+ *
21
+ * @param commandOrQuery - The command/query instance
22
+ * @param data - Extracted data from command
23
+ * @param processorDefaultEntityId - Default from @WorkerProcessor
24
+ * @param entityConfig - Config from module entities
25
+ * @param logger - Optional logger for debug info
26
+ */
27
+ export declare function extractEntityIdExplicit(commandOrQuery: object, data: Record<string, any>, processorDefaultEntityId?: string, entityConfig?: IEntityConfig, logger?: Logger): string;
28
+ /**
29
+ * Legacy extract entityId from command data
30
+ * Tries common property names in order
31
+ * @deprecated Use extractEntityIdExplicit instead
32
+ */
33
+ export declare function extractEntityId(data: Record<string, any>, logger?: Logger): string;
34
+ //# sourceMappingURL=queue-bus.utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-bus.utils.d.ts","sourceRoot":"","sources":["../../../src/services/queue-bus/queue-bus.utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CASvE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,MAAM,EACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,wBAAwB,CAAC,EAAE,MAAM,EACjC,YAAY,CAAC,EAAE,aAAa,EAC5B,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAoCR;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAelF"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getJobName = getJobName;
4
+ exports.extractData = extractData;
5
+ exports.extractEntityIdExplicit = extractEntityIdExplicit;
6
+ exports.extractEntityId = extractEntityId;
7
+ const decorators_1 = require("../../decorators");
8
+ /**
9
+ * Derive job name from class name
10
+ * MakeBetCommand -> MakeBetCommand (keep as-is for lookup)
11
+ */
12
+ function getJobName(commandOrQuery) {
13
+ return commandOrQuery.constructor.name;
14
+ }
15
+ /**
16
+ * Extract all properties from a command/query instance
17
+ */
18
+ function extractData(commandOrQuery) {
19
+ const data = {};
20
+ // Get all enumerable properties
21
+ for (const key of Object.keys(commandOrQuery)) {
22
+ data[key] = commandOrQuery[key];
23
+ }
24
+ return data;
25
+ }
26
+ /**
27
+ * Extract entityId from command using explicit decorators and config.
28
+ *
29
+ * Priority chain (highest to lowest):
30
+ * 1. @QueueEntityId() decorator on command property
31
+ * 2. processorDefaultEntityId from @WorkerProcessor({ defaultEntityId })
32
+ * 3. entityConfig.defaultEntityId from module entities config
33
+ * 4. Throws error (no magic fallback)
34
+ *
35
+ * @param commandOrQuery - The command/query instance
36
+ * @param data - Extracted data from command
37
+ * @param processorDefaultEntityId - Default from @WorkerProcessor
38
+ * @param entityConfig - Config from module entities
39
+ * @param logger - Optional logger for debug info
40
+ */
41
+ function extractEntityIdExplicit(commandOrQuery, data, processorDefaultEntityId, entityConfig, logger) {
42
+ const className = commandOrQuery.constructor.name;
43
+ // 1. Check for @QueueEntityId() decorator on the command class
44
+ const decoratedProperty = (0, decorators_1.getEntityIdProperty)(commandOrQuery.constructor);
45
+ if (decoratedProperty && data[decoratedProperty] !== undefined) {
46
+ logger?.debug(`[${className}] Using @QueueEntityId() decorated property: ${decoratedProperty}`);
47
+ return String(data[decoratedProperty]);
48
+ }
49
+ // 2. Check processor-level default
50
+ if (processorDefaultEntityId && data[processorDefaultEntityId] !== undefined) {
51
+ logger?.debug(`[${className}] Using processor defaultEntityId: ${processorDefaultEntityId}`);
52
+ return String(data[processorDefaultEntityId]);
53
+ }
54
+ // 3. Check entity config default
55
+ if (entityConfig?.defaultEntityId && data[entityConfig.defaultEntityId] !== undefined) {
56
+ logger?.debug(`[${className}] Using entity config defaultEntityId: ${entityConfig.defaultEntityId}`);
57
+ return String(data[entityConfig.defaultEntityId]);
58
+ }
59
+ // 4. No fallback - throw error with helpful message
60
+ const availableKeys = Object.keys(data).join(', ');
61
+ throw new Error(`Cannot extract entityId from ${className}. ` +
62
+ `Use @QueueEntityId() decorator on the ID property, ` +
63
+ `or set defaultEntityId in @WorkerProcessor or module entities config. ` +
64
+ `Available properties: [${availableKeys}]`);
65
+ }
66
+ /**
67
+ * Legacy extract entityId from command data
68
+ * Tries common property names in order
69
+ * @deprecated Use extractEntityIdExplicit instead
70
+ */
71
+ function extractEntityId(data, logger) {
72
+ const candidates = ['entityId', 'tableId', 'userId', 'id', 'gameId', 'playerId'];
73
+ for (const key of candidates) {
74
+ if (data[key] !== undefined && data[key] !== null) {
75
+ return String(data[key]);
76
+ }
77
+ }
78
+ // Log warning if no entityId found
79
+ logger?.warn(`Could not extract entityId from command data. Keys: ${Object.keys(data).join(', ')}`);
80
+ return 'default';
81
+ }
82
+ //# sourceMappingURL=queue-bus.utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-bus.utils.js","sourceRoot":"","sources":["../../../src/services/queue-bus/queue-bus.utils.ts"],"names":[],"mappings":";;AAQA,gCAEC;AAKD,kCASC;AAiBD,0DA0CC;AAOD,0CAeC;AAxGD,iDAAuD;AAGvD;;;GAGG;AACH,SAAgB,UAAU,CAAC,cAAsB;IAC/C,OAAO,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW,CAAC,cAAsB;IAChD,MAAM,IAAI,GAAwB,EAAE,CAAC;IAErC,gCAAgC;IAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,GAAI,cAAsB,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,uBAAuB,CACrC,cAAsB,EACtB,IAAyB,EACzB,wBAAiC,EACjC,YAA4B,EAC5B,MAAe;IAEf,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC;IAElD,+DAA+D;IAC/D,MAAM,iBAAiB,GAAG,IAAA,gCAAmB,EAAC,cAAc,CAAC,WAAW,CAAC,CAAC;IAC1E,IAAI,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,SAAS,EAAE,CAAC;QAC/D,MAAM,EAAE,KAAK,CACX,IAAI,SAAS,gDAAgD,iBAAiB,EAAE,CACjF,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,mCAAmC;IACnC,IAAI,wBAAwB,IAAI,IAAI,CAAC,wBAAwB,CAAC,KAAK,SAAS,EAAE,CAAC;QAC7E,MAAM,EAAE,KAAK,CACX,IAAI,SAAS,sCAAsC,wBAAwB,EAAE,CAC9E,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,iCAAiC;IACjC,IAAI,YAAY,EAAE,eAAe,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,SAAS,EAAE,CAAC;QACtF,MAAM,EAAE,KAAK,CACX,IAAI,SAAS,0CAA0C,YAAY,CAAC,eAAe,EAAE,CACtF,CAAC;QACF,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,oDAAoD;IACpD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,IAAI,KAAK,CACb,gCAAgC,SAAS,IAAI;QAC7C,qDAAqD;QACrD,wEAAwE;QACxE,0BAA0B,aAAa,GAAG,CAC3C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,eAAe,CAAC,IAAyB,EAAE,MAAe;IACxE,MAAM,UAAU,GAAG,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IAEjF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,MAAM,EAAE,IAAI,CACV,uDAAuD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtF,CAAC;IAEF,OAAO,SAAS,CAAC;AACnB,CAAC"}