atomic-queues 1.0.13

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 (110) hide show
  1. package/README.md +686 -0
  2. package/dist/decorators/decorators.d.ts +67 -0
  3. package/dist/decorators/decorators.d.ts.map +1 -0
  4. package/dist/decorators/decorators.js +91 -0
  5. package/dist/decorators/decorators.js.map +1 -0
  6. package/dist/decorators/index.d.ts +2 -0
  7. package/dist/decorators/index.d.ts.map +1 -0
  8. package/dist/decorators/index.js +18 -0
  9. package/dist/decorators/index.js.map +1 -0
  10. package/dist/domain/index.d.ts +5 -0
  11. package/dist/domain/index.d.ts.map +1 -0
  12. package/dist/domain/index.js +21 -0
  13. package/dist/domain/index.js.map +1 -0
  14. package/dist/domain/interfaces.d.ts +614 -0
  15. package/dist/domain/interfaces.d.ts.map +1 -0
  16. package/dist/domain/interfaces.js +19 -0
  17. package/dist/domain/interfaces.js.map +1 -0
  18. package/dist/index.d.ts +40 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +61 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/module/atomic-queues.module.d.ts +97 -0
  23. package/dist/module/atomic-queues.module.d.ts.map +1 -0
  24. package/dist/module/atomic-queues.module.js +197 -0
  25. package/dist/module/atomic-queues.module.js.map +1 -0
  26. package/dist/module/index.d.ts +2 -0
  27. package/dist/module/index.d.ts.map +1 -0
  28. package/dist/module/index.js +18 -0
  29. package/dist/module/index.js.map +1 -0
  30. package/dist/services/constants.d.ts +10 -0
  31. package/dist/services/constants.d.ts.map +1 -0
  32. package/dist/services/constants.js +13 -0
  33. package/dist/services/constants.js.map +1 -0
  34. package/dist/services/cron-manager/cron-manager.service.d.ts +188 -0
  35. package/dist/services/cron-manager/cron-manager.service.d.ts.map +1 -0
  36. package/dist/services/cron-manager/cron-manager.service.js +534 -0
  37. package/dist/services/cron-manager/cron-manager.service.js.map +1 -0
  38. package/dist/services/cron-manager/index.d.ts +2 -0
  39. package/dist/services/cron-manager/index.d.ts.map +1 -0
  40. package/dist/services/cron-manager/index.js +18 -0
  41. package/dist/services/cron-manager/index.js.map +1 -0
  42. package/dist/services/index-manager/index-manager.service.d.ts +146 -0
  43. package/dist/services/index-manager/index-manager.service.d.ts.map +1 -0
  44. package/dist/services/index-manager/index-manager.service.js +337 -0
  45. package/dist/services/index-manager/index-manager.service.js.map +1 -0
  46. package/dist/services/index-manager/index.d.ts +2 -0
  47. package/dist/services/index-manager/index.d.ts.map +1 -0
  48. package/dist/services/index-manager/index.js +18 -0
  49. package/dist/services/index-manager/index.js.map +1 -0
  50. package/dist/services/index.d.ts +10 -0
  51. package/dist/services/index.d.ts.map +1 -0
  52. package/dist/services/index.js +26 -0
  53. package/dist/services/index.js.map +1 -0
  54. package/dist/services/job-processor/index.d.ts +2 -0
  55. package/dist/services/job-processor/index.d.ts.map +1 -0
  56. package/dist/services/job-processor/index.js +18 -0
  57. package/dist/services/job-processor/index.js.map +1 -0
  58. package/dist/services/job-processor/job-processor.service.d.ts +156 -0
  59. package/dist/services/job-processor/job-processor.service.d.ts.map +1 -0
  60. package/dist/services/job-processor/job-processor.service.js +331 -0
  61. package/dist/services/job-processor/job-processor.service.js.map +1 -0
  62. package/dist/services/queue-manager/index.d.ts +2 -0
  63. package/dist/services/queue-manager/index.d.ts.map +1 -0
  64. package/dist/services/queue-manager/index.js +18 -0
  65. package/dist/services/queue-manager/index.js.map +1 -0
  66. package/dist/services/queue-manager/queue-manager.service.d.ts +128 -0
  67. package/dist/services/queue-manager/queue-manager.service.d.ts.map +1 -0
  68. package/dist/services/queue-manager/queue-manager.service.js +308 -0
  69. package/dist/services/queue-manager/queue-manager.service.js.map +1 -0
  70. package/dist/services/resource-lock/index.d.ts +2 -0
  71. package/dist/services/resource-lock/index.d.ts.map +1 -0
  72. package/dist/services/resource-lock/index.js +18 -0
  73. package/dist/services/resource-lock/index.js.map +1 -0
  74. package/dist/services/resource-lock/resource-lock.service.d.ts +124 -0
  75. package/dist/services/resource-lock/resource-lock.service.d.ts.map +1 -0
  76. package/dist/services/resource-lock/resource-lock.service.js +379 -0
  77. package/dist/services/resource-lock/resource-lock.service.js.map +1 -0
  78. package/dist/services/service-queue/index.d.ts +2 -0
  79. package/dist/services/service-queue/index.d.ts.map +1 -0
  80. package/dist/services/service-queue/index.js +18 -0
  81. package/dist/services/service-queue/index.js.map +1 -0
  82. package/dist/services/service-queue/service-queue.service.d.ts +232 -0
  83. package/dist/services/service-queue/service-queue.service.d.ts.map +1 -0
  84. package/dist/services/service-queue/service-queue.service.js +647 -0
  85. package/dist/services/service-queue/service-queue.service.js.map +1 -0
  86. package/dist/services/shutdown-state/index.d.ts +2 -0
  87. package/dist/services/shutdown-state/index.d.ts.map +1 -0
  88. package/dist/services/shutdown-state/index.js +18 -0
  89. package/dist/services/shutdown-state/index.js.map +1 -0
  90. package/dist/services/shutdown-state/shutdown-state.service.d.ts +69 -0
  91. package/dist/services/shutdown-state/shutdown-state.service.d.ts.map +1 -0
  92. package/dist/services/shutdown-state/shutdown-state.service.js +127 -0
  93. package/dist/services/shutdown-state/shutdown-state.service.js.map +1 -0
  94. package/dist/services/worker-manager/index.d.ts +2 -0
  95. package/dist/services/worker-manager/index.d.ts.map +1 -0
  96. package/dist/services/worker-manager/index.js +18 -0
  97. package/dist/services/worker-manager/index.js.map +1 -0
  98. package/dist/services/worker-manager/worker-manager.service.d.ts +163 -0
  99. package/dist/services/worker-manager/worker-manager.service.d.ts.map +1 -0
  100. package/dist/services/worker-manager/worker-manager.service.js +460 -0
  101. package/dist/services/worker-manager/worker-manager.service.js.map +1 -0
  102. package/dist/utils/helpers.d.ts +124 -0
  103. package/dist/utils/helpers.d.ts.map +1 -0
  104. package/dist/utils/helpers.js +229 -0
  105. package/dist/utils/helpers.js.map +1 -0
  106. package/dist/utils/index.d.ts +2 -0
  107. package/dist/utils/index.d.ts.map +1 -0
  108. package/dist/utils/index.js +18 -0
  109. package/dist/utils/index.js.map +1 -0
  110. package/package.json +80 -0
@@ -0,0 +1,614 @@
1
+ /**
2
+ * =============================================================================
3
+ * ATOMIC QUEUES - Core Domain Interfaces
4
+ * =============================================================================
5
+ *
6
+ * This file defines all the core interfaces for the AtomicQueues library.
7
+ * These abstractions enable atomic process handling per entity (user, table, etc.)
8
+ * with features like:
9
+ *
10
+ * - Dynamic per-entity queue creation
11
+ * - Worker lifecycle management with heartbeat TTL
12
+ * - Distributed resource locking (Redis/Lua scripts)
13
+ * - Graceful shutdown coordination via pub/sub
14
+ * - Cron-based worker spawning/cleanup
15
+ * - CQRS command/query dynamic execution
16
+ */
17
+ import { Job, Queue, Worker } from 'bullmq';
18
+ /**
19
+ * Redis connection configuration
20
+ */
21
+ export interface IRedisConfig {
22
+ host?: string;
23
+ port?: number;
24
+ password?: string;
25
+ db?: number;
26
+ url?: string;
27
+ maxRetriesPerRequest?: number | null;
28
+ }
29
+ /**
30
+ * Worker configuration options
31
+ */
32
+ export interface IWorkerConfig {
33
+ /** Number of concurrent jobs a worker can process */
34
+ concurrency?: number;
35
+ /** Interval in ms to check for stalled jobs */
36
+ stalledInterval?: number;
37
+ /** Duration in ms that a job lock is held */
38
+ lockDuration?: number;
39
+ /** Maximum number of times a job can be marked as stalled before failing */
40
+ maxStalledCount?: number;
41
+ /** Heartbeat TTL in seconds for worker liveness tracking */
42
+ heartbeatTTL?: number;
43
+ /** Interval in ms between heartbeat updates */
44
+ heartbeatInterval?: number;
45
+ }
46
+ /**
47
+ * Queue configuration options
48
+ */
49
+ export interface IQueueConfig {
50
+ /** Default job options for the queue */
51
+ defaultJobOptions?: IJobOptions;
52
+ /** Limiter configuration for rate limiting */
53
+ limiter?: {
54
+ groupKey?: string;
55
+ max?: number;
56
+ duration?: number;
57
+ };
58
+ }
59
+ /**
60
+ * Job configuration options
61
+ */
62
+ export interface IJobOptions {
63
+ /** Remove job from queue when completed */
64
+ removeOnComplete?: boolean | number;
65
+ /** Remove job from queue when failed */
66
+ removeOnFail?: boolean | number;
67
+ /** Number of attempts before marking as failed */
68
+ attempts?: number;
69
+ /** Backoff strategy for retries */
70
+ backoff?: {
71
+ type: 'fixed' | 'exponential';
72
+ delay: number;
73
+ };
74
+ /** Job priority (lower = higher priority) */
75
+ priority?: number;
76
+ /** Delay in ms before the job becomes available */
77
+ delay?: number;
78
+ }
79
+ /**
80
+ * Service queue configuration for global singleton operations
81
+ */
82
+ export interface IServiceQueueConfig {
83
+ /** Whether to enable the service queue (default: true) */
84
+ enabled?: boolean;
85
+ /** Custom queue name (default: {keyPrefix}-service-queue) */
86
+ queueName?: string;
87
+ /** Custom worker name (default: {keyPrefix}-service-worker) */
88
+ workerName?: string;
89
+ }
90
+ /**
91
+ * Main module configuration
92
+ */
93
+ export interface IAtomicQueuesModuleConfig {
94
+ /** Redis connection configuration */
95
+ redis: IRedisConfig;
96
+ /** Default worker configuration */
97
+ workerDefaults?: IWorkerConfig;
98
+ /** Default queue configuration */
99
+ queueDefaults?: IQueueConfig;
100
+ /** Enable cron-based worker management */
101
+ enableCronManager?: boolean;
102
+ /** Cron interval in ms for worker management cycle */
103
+ cronInterval?: number;
104
+ /** Prefix for all Redis keys */
105
+ keyPrefix?: string;
106
+ /** Service queue configuration for global atomic operations */
107
+ serviceQueue?: IServiceQueueConfig;
108
+ }
109
+ /**
110
+ * Represents a managed queue instance
111
+ */
112
+ export interface IManagedQueue {
113
+ name: string;
114
+ queue: Queue;
115
+ createdAt: Date;
116
+ entityId: string;
117
+ entityType: string;
118
+ }
119
+ /**
120
+ * Queue manager service interface for dynamic queue creation/destruction
121
+ */
122
+ export interface IQueueManager {
123
+ /**
124
+ * Get or create a queue for the given name
125
+ */
126
+ getOrCreateQueue(queueName: string): Queue;
127
+ /**
128
+ * Get or create an entity-specific queue
129
+ */
130
+ getOrCreateEntityQueue(entityType: string, entityId: string): Queue;
131
+ /**
132
+ * Close and remove a specific queue
133
+ */
134
+ closeQueue(queueName: string): Promise<void>;
135
+ /**
136
+ * Close all managed queues
137
+ */
138
+ closeAllQueues(): Promise<void>;
139
+ /**
140
+ * Get all queue names
141
+ */
142
+ getQueueNames(): string[];
143
+ /**
144
+ * Delete a specific job from a queue
145
+ */
146
+ deleteJob(queueName: string, jobId: string): Promise<void>;
147
+ /**
148
+ * Add a job to a queue
149
+ */
150
+ addJob<T>(queueName: string, jobName: string, data: T, options?: IJobOptions): Promise<Job<T>>;
151
+ }
152
+ /**
153
+ * Worker state tracking
154
+ */
155
+ export interface IWorkerState {
156
+ workerId: string;
157
+ workerName: string;
158
+ nodeId: string;
159
+ entityId?: string;
160
+ entityType?: string;
161
+ status: 'starting' | 'ready' | 'processing' | 'closing' | 'closed';
162
+ createdAt: Date;
163
+ lastHeartbeat: Date;
164
+ }
165
+ /**
166
+ * Worker lifecycle events
167
+ */
168
+ export interface IWorkerEvents {
169
+ onReady?: (worker: Worker, workerName: string) => void | Promise<void>;
170
+ onCompleted?: (job: Job, workerName: string) => void | Promise<void>;
171
+ onFailed?: (job: Job | undefined, error: Error, workerName: string) => void | Promise<void>;
172
+ onProgress?: (job: Job, progress: number | object) => void | Promise<void>;
173
+ onStalled?: (jobId: string, workerName: string) => void | Promise<void>;
174
+ onClosing?: (workerName: string) => void | Promise<void>;
175
+ onClosed?: (workerName: string) => void | Promise<void>;
176
+ }
177
+ /**
178
+ * Worker creation options
179
+ */
180
+ export interface IWorkerCreationOptions {
181
+ workerName: string;
182
+ queueName: string;
183
+ config?: IWorkerConfig;
184
+ events?: IWorkerEvents;
185
+ processor: (job: Job) => Promise<unknown>;
186
+ }
187
+ /**
188
+ * Worker manager service interface
189
+ */
190
+ export interface IWorkerManager {
191
+ /**
192
+ * Create a new worker with automatic lifecycle management
193
+ */
194
+ createWorker(options: IWorkerCreationOptions): Promise<Worker>;
195
+ /**
196
+ * Check if a worker exists and is alive
197
+ */
198
+ workerExists(workerName: string): Promise<boolean>;
199
+ /**
200
+ * Get all running workers for current node
201
+ */
202
+ getNodeWorkers(): Promise<string[]>;
203
+ /**
204
+ * Get all running workers across all nodes
205
+ */
206
+ getAllWorkers(): Promise<string[]>;
207
+ /**
208
+ * Get all workers for a specific entity
209
+ */
210
+ getEntityWorkers(entityType: string, entityId: string): Promise<string[]>;
211
+ /**
212
+ * Signal a worker to close gracefully
213
+ */
214
+ signalWorkerClose(workerName: string): Promise<void>;
215
+ /**
216
+ * Signal all workers on current node to close
217
+ */
218
+ signalNodeWorkersClose(): Promise<void>;
219
+ /**
220
+ * Wait for all node workers to close
221
+ */
222
+ waitForWorkersToClose(timeoutMs?: number): Promise<void>;
223
+ /**
224
+ * Reset worker heartbeat TTL
225
+ */
226
+ resetWorkerHeartbeat(workerName: string): Promise<void>;
227
+ /**
228
+ * Remove worker heartbeat (mark as dead)
229
+ */
230
+ removeWorkerHeartbeat(workerName: string): Promise<void>;
231
+ /**
232
+ * Get the node ID for this instance
233
+ */
234
+ getNodeId(): string;
235
+ }
236
+ /**
237
+ * Lock state for a resource
238
+ */
239
+ export interface IResourceLock {
240
+ resourceId: string;
241
+ resourceType: string;
242
+ ownerId: string;
243
+ ownerType: string;
244
+ acquiredAt: Date;
245
+ expiresAt: Date;
246
+ metadata?: Record<string, unknown>;
247
+ }
248
+ /**
249
+ * Lock acquisition result
250
+ */
251
+ export interface ILockResult {
252
+ acquired: boolean;
253
+ lock?: IResourceLock;
254
+ reason?: string;
255
+ }
256
+ /**
257
+ * Resource lock service interface for distributed locking
258
+ */
259
+ export interface IResourceLockService {
260
+ /**
261
+ * Acquire a lock on a resource
262
+ */
263
+ acquireLock(resourceType: string, resourceId: string, ownerId: string, ownerType: string, ttlSeconds?: number, metadata?: Record<string, unknown>): Promise<ILockResult>;
264
+ /**
265
+ * Release a lock on a resource
266
+ */
267
+ releaseLock(resourceType: string, resourceId: string): Promise<boolean>;
268
+ /**
269
+ * Check if a resource is locked
270
+ */
271
+ isLocked(resourceType: string, resourceId: string): Promise<boolean>;
272
+ /**
273
+ * Get lock info for a resource
274
+ */
275
+ getLockInfo(resourceType: string, resourceId: string): Promise<IResourceLock | null>;
276
+ /**
277
+ * Get all locked resources of a type for an owner
278
+ */
279
+ getOwnerLocks(ownerType: string, ownerId: string): Promise<IResourceLock[]>;
280
+ /**
281
+ * Get available (unlocked) resource from a pool
282
+ */
283
+ getAvailableResource(resourceType: string, candidateIds: string[], ownerId: string, ownerType: string, ttlSeconds?: number): Promise<ILockResult>;
284
+ /**
285
+ * Extend lock TTL
286
+ */
287
+ extendLock(resourceType: string, resourceId: string, ttlSeconds: number): Promise<boolean>;
288
+ }
289
+ /**
290
+ * Job data structure for atomic processing
291
+ */
292
+ export interface IAtomicJobData<T = unknown> {
293
+ /** Unique job identifier */
294
+ uuid: string;
295
+ /** Entity ID this job belongs to */
296
+ entityId: string;
297
+ /** Entity type (user, table, etc.) */
298
+ entityType: string;
299
+ /** Command/Query class name to execute */
300
+ commandName?: string;
301
+ /** Type of operation */
302
+ type: 'command' | 'query' | 'custom';
303
+ /** Payload data */
304
+ payload: T;
305
+ /** Additional metadata */
306
+ metadata?: Record<string, unknown>;
307
+ }
308
+ /**
309
+ * Job processing result
310
+ */
311
+ export interface IJobResult<T = unknown> {
312
+ success: boolean;
313
+ result?: T;
314
+ error?: string;
315
+ processingTime: number;
316
+ }
317
+ /**
318
+ * Job processor function type
319
+ */
320
+ export type JobProcessor<T = unknown, R = unknown> = (job: Job<IAtomicJobData<T>>) => Promise<R>;
321
+ /**
322
+ * Job processor registry interface
323
+ */
324
+ export interface IJobProcessorRegistry {
325
+ /**
326
+ * Register a processor for a job type
327
+ */
328
+ registerProcessor<T, R>(jobType: string, processor: JobProcessor<T, R>): void;
329
+ /**
330
+ * Get processor for a job type
331
+ */
332
+ getProcessor<T, R>(jobType: string): JobProcessor<T, R> | undefined;
333
+ /**
334
+ * Check if processor exists
335
+ */
336
+ hasProcessor(jobType: string): boolean;
337
+ /**
338
+ * Get all registered job types
339
+ */
340
+ getRegisteredTypes(): string[];
341
+ }
342
+ /**
343
+ * Dynamic command/query executor interface
344
+ */
345
+ export interface IDynamicExecutor {
346
+ /**
347
+ * Execute a command by class name
348
+ */
349
+ executeCommand<T>(commandName: string, payload: T): Promise<unknown>;
350
+ /**
351
+ * Execute a query by class name
352
+ */
353
+ executeQuery<T>(queryName: string, payload: T): Promise<unknown>;
354
+ /**
355
+ * Register command module for dynamic loading
356
+ */
357
+ registerCommandModule(modulePath: string): void;
358
+ /**
359
+ * Register query module for dynamic loading
360
+ */
361
+ registerQueryModule(modulePath: string): void;
362
+ }
363
+ /**
364
+ * Worker scaling decision
365
+ */
366
+ export interface IScalingDecision {
367
+ entityId: string;
368
+ entityType: string;
369
+ currentWorkers: number;
370
+ desiredWorkers: number;
371
+ action: 'spawn' | 'terminate' | 'none';
372
+ count: number;
373
+ }
374
+ /**
375
+ * Entity scaling configuration
376
+ */
377
+ export interface IEntityScalingConfig {
378
+ entityType: string;
379
+ /** Function to get desired worker count for an entity */
380
+ getDesiredWorkerCount: (entityId: string) => Promise<number>;
381
+ /** Function to get all active entity IDs */
382
+ getActiveEntityIds: () => Promise<string[]>;
383
+ /** Maximum workers per entity */
384
+ maxWorkersPerEntity?: number;
385
+ /** Function called when spawning a worker */
386
+ onSpawnWorker?: (entityId: string) => Promise<void>;
387
+ /** Function called when terminating a worker */
388
+ onTerminateWorker?: (entityId: string, workerId: string) => Promise<void>;
389
+ }
390
+ /**
391
+ * Cron manager interface for worker lifecycle management
392
+ */
393
+ export interface ICronManager {
394
+ /**
395
+ * Register an entity type for automatic scaling
396
+ */
397
+ registerEntityType(config: IEntityScalingConfig): void;
398
+ /**
399
+ * Run scaling cycle for all registered entity types
400
+ */
401
+ runScalingCycle(): Promise<IScalingDecision[]>;
402
+ /**
403
+ * Get current scaling state
404
+ */
405
+ getScalingState(): Promise<Map<string, IScalingDecision[]>>;
406
+ /**
407
+ * Start the cron manager
408
+ */
409
+ start(intervalMs?: number): void;
410
+ /**
411
+ * Stop the cron manager
412
+ */
413
+ stop(): void;
414
+ /**
415
+ * Check if cron manager is running
416
+ */
417
+ isRunning(): boolean;
418
+ }
419
+ /**
420
+ * Index entry for tracking jobs, workers, queues
421
+ */
422
+ export interface IIndexEntry {
423
+ id: string;
424
+ type: 'job' | 'worker' | 'queue' | 'death' | 'custom';
425
+ entityId: string;
426
+ entityType: string;
427
+ createdAt: Date;
428
+ metadata?: Record<string, unknown>;
429
+ }
430
+ /**
431
+ * Index manager interface for tracking various entities
432
+ */
433
+ export interface IIndexManager {
434
+ /**
435
+ * Index a job for an entity
436
+ */
437
+ indexJob(entityType: string, entityId: string, jobId: string): Promise<void>;
438
+ /**
439
+ * Remove job index
440
+ */
441
+ removeJobIndex(entityType: string, entityId: string, jobId: string): Promise<void>;
442
+ /**
443
+ * Get all job IDs for an entity
444
+ */
445
+ getEntityJobs(entityType: string, entityId: string): Promise<string[]>;
446
+ /**
447
+ * Get all entities with jobs
448
+ */
449
+ getEntitiesWithJobs(entityType: string): Promise<Record<string, number>>;
450
+ /**
451
+ * Index a worker death signal
452
+ */
453
+ indexWorkerDeath(entityType: string, entityId: string, deathId: string): Promise<void>;
454
+ /**
455
+ * Remove worker death index
456
+ */
457
+ removeWorkerDeathIndex(entityType: string, entityId: string, deathId: string): Promise<void>;
458
+ /**
459
+ * Get queued worker deaths for an entity
460
+ */
461
+ getQueuedWorkerDeaths(entityType: string, entityId: string): Promise<string[]>;
462
+ /**
463
+ * Index entity queue
464
+ */
465
+ indexEntityQueue(entityType: string, entityId: string): Promise<void>;
466
+ /**
467
+ * Remove entity queue index
468
+ */
469
+ removeEntityQueueIndex(entityType: string, entityId: string): Promise<void>;
470
+ /**
471
+ * Get all entities with active queues
472
+ */
473
+ getEntitiesWithQueues(entityType: string): Promise<string[]>;
474
+ /**
475
+ * Index a queue death signal
476
+ */
477
+ indexQueueDeath(entityType: string, entityId: string): Promise<void>;
478
+ /**
479
+ * Remove queue death index
480
+ */
481
+ removeQueueDeathIndex(entityType: string, entityId: string): Promise<void>;
482
+ /**
483
+ * Get all entities with queued queue deaths
484
+ */
485
+ getEntitiesWithQueuedQueueDeaths(entityType: string): Promise<string[]>;
486
+ }
487
+ /**
488
+ * Socket connection tracking interface
489
+ */
490
+ export interface IConnectionTracker {
491
+ /**
492
+ * Track a socket connection for an entity
493
+ */
494
+ trackConnection(entityType: string, entityId: string, socketId: string, nodeId: string): Promise<void>;
495
+ /**
496
+ * Untrack a socket connection
497
+ */
498
+ untrackConnection(entityType: string, entityId: string, socketId: string): Promise<void>;
499
+ /**
500
+ * Get all socket connections for an entity
501
+ */
502
+ getEntityConnections(entityType: string, entityId: string): Promise<string[]>;
503
+ /**
504
+ * Get entity connections for a specific node
505
+ */
506
+ getEntityNodeConnections(entityType: string, entityId: string, nodeId: string): Promise<string[]>;
507
+ /**
508
+ * Untrack all connections for current node
509
+ */
510
+ untrackNodeConnections(): Promise<void>;
511
+ /**
512
+ * Check if entity has active connections
513
+ */
514
+ hasActiveConnections(entityType: string, entityId: string): Promise<boolean>;
515
+ /**
516
+ * Get node ID for a socket connection
517
+ */
518
+ getNodeForSocket(entityType: string, entityId: string, socketId: string): Promise<string | null>;
519
+ }
520
+ /**
521
+ * Event types for pub/sub communication
522
+ */
523
+ export type AtomicQueueEventType = 'worker:shutdown' | 'worker:ready' | 'worker:closed' | 'job:completed' | 'job:failed' | 'job:progress' | 'queue:closed' | 'custom';
524
+ /**
525
+ * Event payload structure
526
+ */
527
+ export interface IAtomicQueueEvent<T = unknown> {
528
+ type: AtomicQueueEventType;
529
+ nodeId: string;
530
+ workerId?: string;
531
+ entityId?: string;
532
+ entityType?: string;
533
+ timestamp: Date;
534
+ data?: T;
535
+ }
536
+ /**
537
+ * Event bus interface for internal pub/sub
538
+ */
539
+ export interface IEventBus {
540
+ /**
541
+ * Publish an event
542
+ */
543
+ publish<T>(channel: string, event: IAtomicQueueEvent<T>): Promise<void>;
544
+ /**
545
+ * Subscribe to a channel
546
+ */
547
+ subscribe(channel: string, handler: (event: IAtomicQueueEvent) => void | Promise<void>): Promise<void>;
548
+ /**
549
+ * Unsubscribe from a channel
550
+ */
551
+ unsubscribe(channel: string): Promise<void>;
552
+ /**
553
+ * Subscribe to worker shutdown events for a specific worker
554
+ */
555
+ subscribeToWorkerShutdown(workerName: string, handler: () => void | Promise<void>): Promise<void>;
556
+ }
557
+ /**
558
+ * Atomic process status
559
+ */
560
+ export type AtomicProcessStatus = 'pending' | 'processing' | 'completed' | 'failed';
561
+ /**
562
+ * Atomic process state
563
+ */
564
+ export interface IAtomicProcessState {
565
+ uuid: string;
566
+ status: AtomicProcessStatus;
567
+ entityId: string;
568
+ entityType: string;
569
+ commandName?: string;
570
+ createdAt: Date;
571
+ updatedAt: Date;
572
+ result?: unknown;
573
+ error?: string;
574
+ }
575
+ /**
576
+ * Atomic process status tracker interface
577
+ */
578
+ export interface IAtomicProcessTracker {
579
+ /**
580
+ * Set process status
581
+ */
582
+ setStatus(uuid: string, status: AtomicProcessStatus): Promise<void>;
583
+ /**
584
+ * Get process status
585
+ */
586
+ getStatus(uuid: string): Promise<IAtomicProcessState | null>;
587
+ /**
588
+ * Set process result
589
+ */
590
+ setResult(uuid: string, result: unknown): Promise<void>;
591
+ /**
592
+ * Set process error
593
+ */
594
+ setError(uuid: string, error: string): Promise<void>;
595
+ /**
596
+ * Clean up old process states
597
+ */
598
+ cleanup(maxAgeMs?: number): Promise<number>;
599
+ }
600
+ /**
601
+ * Deep partial type utility
602
+ */
603
+ export type DeepPartial<T> = {
604
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
605
+ };
606
+ /**
607
+ * Constructor type
608
+ */
609
+ export type Constructor<T = unknown> = new (...args: unknown[]) => T;
610
+ /**
611
+ * Async factory function type
612
+ */
613
+ export type AsyncFactory<T> = () => Promise<T> | T;
614
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/domain/interfaces.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ /**
3
+ * =============================================================================
4
+ * ATOMIC QUEUES - Core Domain Interfaces
5
+ * =============================================================================
6
+ *
7
+ * This file defines all the core interfaces for the AtomicQueues library.
8
+ * These abstractions enable atomic process handling per entity (user, table, etc.)
9
+ * with features like:
10
+ *
11
+ * - Dynamic per-entity queue creation
12
+ * - Worker lifecycle management with heartbeat TTL
13
+ * - Distributed resource locking (Redis/Lua scripts)
14
+ * - Graceful shutdown coordination via pub/sub
15
+ * - Cron-based worker spawning/cleanup
16
+ * - CQRS command/query dynamic execution
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/domain/interfaces.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * =============================================================================
3
+ * ATOMIC QUEUES
4
+ * =============================================================================
5
+ *
6
+ * A plug-and-play NestJS library for atomic process handling per entity
7
+ * with BullMQ, Redis distributed locking, and dynamic worker management.
8
+ *
9
+ * Features:
10
+ * - Dynamic per-entity queue creation
11
+ * - Worker lifecycle management with heartbeat TTL
12
+ * - Distributed resource locking (Redis/Lua scripts)
13
+ * - Graceful shutdown coordination via pub/sub
14
+ * - Cron-based worker spawning/cleanup
15
+ * - CQRS command/query dynamic execution
16
+ * - Index tracking for jobs, workers, and queues
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * import { AtomicQueuesModule, QueueManagerService, WorkerManagerService } from 'atomic-queues';
21
+ *
22
+ * @Module({
23
+ * imports: [
24
+ * AtomicQueuesModule.forRoot({
25
+ * redis: { host: 'localhost', port: 6379 },
26
+ * enableCronManager: true,
27
+ * }),
28
+ * ],
29
+ * })
30
+ * export class AppModule {}
31
+ * ```
32
+ *
33
+ * @packageDocumentation
34
+ */
35
+ export * from './domain';
36
+ export * from './module';
37
+ export * from './services';
38
+ export * from './decorators';
39
+ export * from './utils';
40
+ //# sourceMappingURL=index.d.ts.map