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
|
@@ -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 =
|
|
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
|
-
|
|
23
|
-
|
|
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
|
|
73
|
+
* Get key prefix from config using resolveKeyPrefix utility
|
|
364
74
|
*/
|
|
365
75
|
get keyPrefix() {
|
|
366
|
-
return this.config
|
|
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(
|
|
634
|
-
|
|
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":";;;;;;;;;;;;;;;;AAAA,2CAA4E;AAE5E,kFAA6E;AAC7E,iDAK0B;AAE1B,4CAAoD;AAEpD;;;GAGG;AACH,SAAS,UAAU,CAAC,cAAsB;IACxC,OAAO,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,cAAsB;IACzC,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,SAAS,uBAAuB,CAC9B,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,SAAS,eAAe,CAAC,IAAyB,EAAE,MAAe;IACjE,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;AA4CD;;;;;;;GAOG;AACH,MAAa,WAAW;IAGtB,YACmB,YAAiC,EACjC,cAAyB,EACzB,gBAAwC,EACxC,YAA4B;QAH5B,iBAAY,GAAZ,YAAY,CAAqB;QACjC,mBAAc,GAAd,cAAc,CAAW;QACzB,qBAAgB,GAAhB,gBAAgB,CAAwB;QACxC,iBAAY,GAAZ,YAAY,CAAgB;QAN9B,WAAM,GAAG,IAAI,eAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAOpD,CAAC;IAEJ;;OAEG;IACK,cAAc;QACpB,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAE5C,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;YACpC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,+CAA+C;YAC/C,OAAO,CAAC,QAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QACzE,CAAC;QAED,qDAAqD;QACrD,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QACrC,CAAC;QAED,uCAAuC;QACvC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC7C,OAAO,CAAC,QAAgB,EAAE,EAAE,CAAC,GAAG,UAAU,IAAI,QAAQ,QAAQ,CAAC;IACjE,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,cAAsB,EAAE,IAAyB;QACvE,OAAO,uBAAuB,CAC5B,cAAc,EACd,IAAI,EACJ,IAAI,CAAC,gBAAgB,CAAC,eAAe,EACrC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,KAAK,CAAC,OAAO,CACX,cAAiB,EACjB,OAAwB;QAExB,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAEjF,qDAAqD;QACrD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAExC,iEAAiE;QACjE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAE7C,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,gBAAgB,OAAO,aAAa,SAAS,EAAE,CAC5E,CAAC;QAEF,uCAAuC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,kBAAkB,GAAI,IAAI,CAAC,YAAoB,CAAC,kBAAkB,CAAC;QACzE,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,kBAAkB,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAClE,CAAC;QAED,mBAAmB;QACnB,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,cAAiB,EACjB,OAA+C;QAE/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAExD,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACjF,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAExC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAEtE,OAAO,GAAG,CAAC,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAe,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,iBAAsB,EACtB,OAAwB;QAExB,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE9C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEhF,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE5D,4CAA4C;QAC5C,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC7C,MAAM,kBAAkB,GAAI,IAAI,CAAC,YAAoB,CAAC,kBAAkB,CAAC;QACzE,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,kBAAkB,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAClE,CAAC;QAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC;YACrB,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC;YACtB,IAAI,EAAE,OAAO,EAAE,UAAU;SAC1B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,YAAY,QAAQ,CAAC,MAAM,kBAAkB,SAAS,EAAE,CACrF,CAAC;QAEF,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;CACF;AAtJD,kCAsJC;AAED;;;;;;;;;;;GAWG;AACH,MAAa,YAAY;IAGvB,YACmB,YAAiC,EACjC,UAAkB,EAClB,YAAuC,EACvC,SAAiB;QAHjB,iBAAY,GAAZ,YAAY,CAAqB;QACjC,eAAU,GAAV,UAAU,CAAQ;QAClB,iBAAY,GAAZ,YAAY,CAA2B;QACvC,cAAS,GAAT,SAAS,CAAQ;QANnB,WAAM,GAAG,IAAI,eAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAOrD,CAAC;IAEJ;;OAEG;IACK,cAAc;QACpB,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QACrC,CAAC;QAED,qDAAqD;QACrD,OAAO,CAAC,QAAgB,EAAE,EAAE,CAC1B,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,IAAI,QAAQ,QAAQ,CAAC;IAC7D,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,cAAsB,EAAE,IAAyB;QACvE,OAAO,uBAAuB,CAC5B,cAAc,EACd,IAAI,EACJ,SAAS,EAAE,uCAAuC;QAClD,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,MAAM,CACZ,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,OAAO,CACX,cAAiB,EACjB,OAAwB;QAExB,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAEjF,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAExC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,cAAc,IAAI,CAAC,UAAU,gBAAgB,OAAO,aAAa,SAAS,EAAE,CAC7E,CAAC;QAEF,uCAAuC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC5D,MAAM,kBAAkB,GAAI,IAAI,CAAC,YAAoB,CAAC,kBAAkB,CAAC;QACzE,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,kBAAkB,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACvE,CAAC;QAED,mBAAmB;QACnB,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,cAAiB,EACjB,OAA+C;QAE/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAExD,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QACjF,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QAExC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAEtE,OAAO,GAAG,CAAC,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAe,CAAC;IAC5E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CACf,iBAAsB,EACtB,OAAwB;QAExB,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE9C,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACtC,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEhF,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE5D,4CAA4C;QAC5C,MAAM,kBAAkB,GAAI,IAAI,CAAC,YAAoB,CAAC,kBAAkB,CAAC;QACzE,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,kBAAkB,CAAC,eAAe,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC;YACrB,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC;YACtB,IAAI,EAAE,OAAO,EAAE,UAAU;SAC1B,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,cAAc,IAAI,CAAC,UAAU,YAAY,QAAQ,CAAC,MAAM,kBAAkB,SAAS,EAAE,CACtF,CAAC;QAEF,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;CACF;AAhID,oCAgIC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEI,IAAM,QAAQ,gBAAd,MAAM,QAAQ;IAoBnB,YACmB,YAAiC,EACR,MAAkC;QAD3D,iBAAY,GAAZ,YAAY,CAAqB;QApBnC,WAAM,GAAG,IAAI,eAAM,CAAC,UAAQ,CAAC,IAAI,CAAC,CAAC;QAEpD;;WAEG;QACc,mBAAc,GAAG,IAAI,GAAG,EAAqC,CAAC;QAkB7E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,IAAY,SAAS;QACnB,OAAO,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,QAAQ,CAAC;IAC5C,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,UAAkB;QACxC,OAAO,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,cAAyB;QACpC,oBAAoB;QACpB,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEtD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,+CAA+C;YAC/C,OAAO,GAAG,IAAA,uCAA0B,EAAC,cAAc,CAAC,CAAC;YAErD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CACb,SAAS,cAAc,CAAC,IAAI,2CAA2C;oBACvE,uCAAuC,CACxC,CAAC;YACJ,CAAC;YAED,uBAAuB;YACvB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QAED,oDAAoD;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAE9D,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACnF,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,UAAkB;QAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACtD,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACH,KAAK,CAAC,OAAO,CACX,cAAiB,EACjB,OAAwB;QAExB,MAAM,UAAU,GAAG,IAAA,0BAAa,EAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAE7D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,kBAAkB,cAAc,CAAC,WAAW,CAAC,IAAI,aAAa;gBAC9D,kDAAkD;gBAClD,yFAAyF,CAC1F,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAClB,cAAiB,EACjB,OAA+C;QAE/C,MAAM,UAAU,GAAG,IAAA,0BAAa,EAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAE7D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CACb,kBAAkB,cAAc,CAAC,WAAW,CAAC,IAAI,aAAa;gBAC9D,kDAAkD;gBAClD,uGAAuG,CACxG,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CAAC,WAAsB,EAAE,OAAO,GAAG,KAAK;QACrD,MAAM,KAAK,GAAyB;YAClC,SAAS,EAAE,WAAW,CAAC,IAAI;YAC3B,WAAW;YACX,OAAO;SACR,CAAC;QACF,UAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,GAAG,QAAqB;QAC9C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,UAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,eAAe,CAAC,GAAG,OAAoB;QAC5C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,UAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,SAAiB;QACpC,OAAO,UAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,YAAY,CAAC,SAAiB;QACnC,OAAO,UAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,gBAAgB;QACrB,OAAO,IAAI,GAAG,CAAC,UAAQ,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,CAAC,gBAAgB,CAAC,gBAAqB;QAC3C,yCAAyC;QACzC,MAAM,wBAAwB,GAAG,oBAAoB,CAAC;QACtD,MAAM,sBAAsB,GAAG,kBAAkB,CAAC;QAElD,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,MAAM,SAAS,GAAG,gBAAgB,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC;QAE1D,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;YAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;YAC7B,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAExB,4BAA4B;YAC5B,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;YAC7E,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,UAAU,EAAE,CAAC;gBACvD,IAAI,CAAC,UAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;oBACpD,UAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;oBACvC,YAAY,EAAE,CAAC;gBACjB,CAAC;YACH,CAAC;YAED,0BAA0B;YAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;YACzE,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,UAAU,EAAE,CAAC;gBACnD,IAAI,CAAC,UAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBAClD,UAAQ,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBACpC,UAAU,EAAE,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACzD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,OAAO,CACX,YAAoB,EACpB,cAAiB,EACjB,OAAgC;QAEhC,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3C,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAEzE,mCAAmC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAEhE,0BAA0B;QAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE5D,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,cAAc,OAAO,aAAa,SAAS,kBAAkB,QAAQ,EAAE,CACxE,CAAC;QAEF,mBAAmB;QACnB,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;IACvD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,cAAc,CAClB,YAAoB,EACpB,cAAiB,EACjB,OAAuD;QAEvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;QAEtE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CACxD,IAAI,CAAC,gBAAgB,CACnB,YAAY,EACZ,OAAO,EAAE,QAAQ,IAAI,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,CAC/E,CACF,CAAC;QAEF,OAAO,GAAG,CAAC,iBAAiB,CAAC,WAAW,EAAE,OAAO,EAAE,OAAO,CAAe,CAAC;IAC5E,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CACf,YAAoB,EACpB,iBAAsB,EACtB,OAAgC;QAEhC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAE9C,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,eAAe,CACnD,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EACjC,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAE5D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC/C,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC;YACrB,IAAI,EAAE,WAAW,CAAC,GAAG,CAAC;YACtB,IAAI,EAAE,OAAO,EAAE,UAAU;SAC1B,CAAC,CAAC,CAAC;QAEJ,OAAO,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,OAAe,EAAE,QAAgB;QACxD,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IACjD,CAAC;;AAtWU,4BAAQ;AAQnB;;;;GAIG;AACqB,uBAAc,GAAG,IAAI,GAAG,EAAgC,AAA1C,CAA2C;mBAbtE,QAAQ;IADpB,IAAA,mBAAU,GAAE;IAuBR,WAAA,IAAA,iBAAQ,GAAE,CAAA;IAAE,WAAA,IAAA,eAAM,EAAC,gCAAoB,CAAC,CAAA;qCADV,2CAAmB;GArBzC,QAAQ,CAuWpB"}
|
|
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 @@
|
|
|
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"}
|