atomic-queues 1.6.2 → 2.0.1

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 (337) hide show
  1. package/README.md +273 -413
  2. package/dist/cli/generators/json-schema.d.ts +3 -0
  3. package/dist/cli/generators/json-schema.d.ts.map +1 -0
  4. package/dist/cli/generators/json-schema.js +31 -0
  5. package/dist/cli/generators/json-schema.js.map +1 -0
  6. package/dist/cli/generators/typescript.d.ts +3 -0
  7. package/dist/cli/generators/typescript.d.ts.map +1 -0
  8. package/dist/cli/generators/typescript.js +62 -0
  9. package/dist/cli/generators/typescript.js.map +1 -0
  10. package/dist/cli/index.d.ts +3 -0
  11. package/dist/cli/index.d.ts.map +1 -0
  12. package/dist/cli/index.js +156 -0
  13. package/dist/cli/index.js.map +1 -0
  14. package/dist/decorators/actor.decorators.d.ts +4 -0
  15. package/dist/decorators/actor.decorators.d.ts.map +1 -0
  16. package/dist/decorators/actor.decorators.js +32 -0
  17. package/dist/decorators/actor.decorators.js.map +1 -0
  18. package/dist/decorators/constants.d.ts +5 -12
  19. package/dist/decorators/constants.d.ts.map +1 -1
  20. package/dist/decorators/constants.js +10 -16
  21. package/dist/decorators/constants.js.map +1 -1
  22. package/dist/decorators/index.d.ts +4 -4
  23. package/dist/decorators/index.d.ts.map +1 -1
  24. package/dist/decorators/index.js +4 -4
  25. package/dist/decorators/index.js.map +1 -1
  26. package/dist/decorators/interfaces.d.ts +18 -78
  27. package/dist/decorators/interfaces.d.ts.map +1 -1
  28. package/dist/decorators/metadata-readers.d.ts +5 -26
  29. package/dist/decorators/metadata-readers.d.ts.map +1 -1
  30. package/dist/decorators/metadata-readers.js +16 -33
  31. package/dist/decorators/metadata-readers.js.map +1 -1
  32. package/dist/decorators/schema.decorators.d.ts +2 -0
  33. package/dist/decorators/schema.decorators.d.ts.map +1 -0
  34. package/dist/decorators/schema.decorators.js +13 -0
  35. package/dist/decorators/schema.decorators.js.map +1 -0
  36. package/dist/domain/interfaces/config.interfaces.d.ts +52 -153
  37. package/dist/domain/interfaces/config.interfaces.d.ts.map +1 -1
  38. package/dist/domain/interfaces/index.d.ts +0 -7
  39. package/dist/domain/interfaces/index.d.ts.map +1 -1
  40. package/dist/domain/interfaces/index.js +0 -7
  41. package/dist/domain/interfaces/index.js.map +1 -1
  42. package/dist/domain/interfaces/job.interfaces.d.ts +32 -65
  43. package/dist/domain/interfaces/job.interfaces.d.ts.map +1 -1
  44. package/dist/index.d.ts +0 -34
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +0 -39
  47. package/dist/index.js.map +1 -1
  48. package/dist/module/atomic-queues.module.d.ts +0 -83
  49. package/dist/module/atomic-queues.module.d.ts.map +1 -1
  50. package/dist/module/atomic-queues.module.js +35 -134
  51. package/dist/module/atomic-queues.module.js.map +1 -1
  52. package/dist/services/actor-registry/actor-registry.service.d.ts +30 -0
  53. package/dist/services/actor-registry/actor-registry.service.d.ts.map +1 -0
  54. package/dist/services/actor-registry/actor-registry.service.js +186 -0
  55. package/dist/services/actor-registry/actor-registry.service.js.map +1 -0
  56. package/dist/services/actor-registry/index.d.ts +2 -0
  57. package/dist/services/actor-registry/index.d.ts.map +1 -0
  58. package/dist/services/actor-registry/index.js +18 -0
  59. package/dist/services/actor-registry/index.js.map +1 -0
  60. package/dist/services/actor-system/actor-system.service.d.ts +19 -0
  61. package/dist/services/actor-system/actor-system.service.d.ts.map +1 -0
  62. package/dist/services/actor-system/actor-system.service.js +86 -0
  63. package/dist/services/actor-system/actor-system.service.js.map +1 -0
  64. package/dist/services/actor-system/index.d.ts +2 -0
  65. package/dist/services/actor-system/index.d.ts.map +1 -0
  66. package/dist/services/{cron-manager → actor-system}/index.js +1 -1
  67. package/dist/services/actor-system/index.js.map +1 -0
  68. package/dist/services/command-discovery/command-discovery.service.d.ts +6 -53
  69. package/dist/services/command-discovery/command-discovery.service.d.ts.map +1 -1
  70. package/dist/services/command-discovery/command-discovery.service.js +0 -59
  71. package/dist/services/command-discovery/command-discovery.service.js.map +1 -1
  72. package/dist/services/constants.d.ts +2 -9
  73. package/dist/services/constants.d.ts.map +1 -1
  74. package/dist/services/constants.js +3 -10
  75. package/dist/services/constants.js.map +1 -1
  76. package/dist/services/executor-pool/executor-pool.service.d.ts +31 -0
  77. package/dist/services/executor-pool/executor-pool.service.d.ts.map +1 -0
  78. package/dist/services/executor-pool/executor-pool.service.js +147 -0
  79. package/dist/services/executor-pool/executor-pool.service.js.map +1 -0
  80. package/dist/services/executor-pool/index.d.ts +2 -0
  81. package/dist/services/executor-pool/index.d.ts.map +1 -0
  82. package/dist/services/{queue-manager → executor-pool}/index.js +1 -1
  83. package/dist/services/executor-pool/index.js.map +1 -0
  84. package/dist/services/gate/gate.service.d.ts +17 -0
  85. package/dist/services/gate/gate.service.d.ts.map +1 -0
  86. package/dist/services/gate/gate.service.js +66 -0
  87. package/dist/services/gate/gate.service.js.map +1 -0
  88. package/dist/services/gate/index.d.ts +2 -0
  89. package/dist/services/gate/index.d.ts.map +1 -0
  90. package/dist/services/{spawn-queue → gate}/index.js +1 -1
  91. package/dist/services/gate/index.js.map +1 -0
  92. package/dist/services/handler-executor/handler-executor.service.d.ts +32 -0
  93. package/dist/services/handler-executor/handler-executor.service.d.ts.map +1 -0
  94. package/dist/services/handler-executor/handler-executor.service.js +186 -0
  95. package/dist/services/handler-executor/handler-executor.service.js.map +1 -0
  96. package/dist/services/handler-executor/index.d.ts +2 -0
  97. package/dist/services/handler-executor/index.d.ts.map +1 -0
  98. package/dist/services/handler-executor/index.js +18 -0
  99. package/dist/services/handler-executor/index.js.map +1 -0
  100. package/dist/services/index.d.ts +11 -12
  101. package/dist/services/index.d.ts.map +1 -1
  102. package/dist/services/index.js +11 -12
  103. package/dist/services/index.js.map +1 -1
  104. package/dist/services/log/index.d.ts +2 -0
  105. package/dist/services/log/index.d.ts.map +1 -0
  106. package/dist/services/{index-manager → log}/index.js +1 -1
  107. package/dist/services/log/index.js.map +1 -0
  108. package/dist/services/log/log.service.d.ts +21 -0
  109. package/dist/services/log/log.service.d.ts.map +1 -0
  110. package/dist/services/log/log.service.js +92 -0
  111. package/dist/services/log/log.service.js.map +1 -0
  112. package/dist/services/queue-bus/index.d.ts +0 -4
  113. package/dist/services/queue-bus/index.d.ts.map +1 -1
  114. package/dist/services/queue-bus/index.js +0 -4
  115. package/dist/services/queue-bus/index.js.map +1 -1
  116. package/dist/services/queue-bus/queue-bus.service.d.ts +44 -198
  117. package/dist/services/queue-bus/queue-bus.service.d.ts.map +1 -1
  118. package/dist/services/queue-bus/queue-bus.service.js +103 -259
  119. package/dist/services/queue-bus/queue-bus.service.js.map +1 -1
  120. package/dist/services/queue-bus/queue-bus.utils.d.ts +0 -28
  121. package/dist/services/queue-bus/queue-bus.utils.d.ts.map +1 -1
  122. package/dist/services/queue-bus/queue-bus.utils.js +1 -41
  123. package/dist/services/queue-bus/queue-bus.utils.js.map +1 -1
  124. package/dist/services/registry/index.d.ts +4 -0
  125. package/dist/services/registry/index.d.ts.map +1 -0
  126. package/dist/services/{queue-events-manager → registry}/index.js +3 -1
  127. package/dist/services/registry/index.js.map +1 -0
  128. package/dist/services/registry/registry.service.d.ts +43 -0
  129. package/dist/services/registry/registry.service.d.ts.map +1 -0
  130. package/dist/services/registry/registry.service.js +379 -0
  131. package/dist/services/registry/registry.service.js.map +1 -0
  132. package/dist/services/registry/registry.types.d.ts +24 -0
  133. package/dist/services/registry/registry.types.d.ts.map +1 -0
  134. package/dist/{domain/interfaces/lock.interfaces.js → services/registry/registry.types.js} +1 -1
  135. package/dist/services/registry/registry.types.js.map +1 -0
  136. package/dist/services/registry/schema-converter.d.ts +2 -0
  137. package/dist/services/registry/schema-converter.d.ts.map +1 -0
  138. package/dist/services/registry/schema-converter.js +27 -0
  139. package/dist/services/registry/schema-converter.js.map +1 -0
  140. package/dist/services/result-collector/index.d.ts +2 -0
  141. package/dist/services/result-collector/index.d.ts.map +1 -0
  142. package/dist/services/result-collector/index.js +18 -0
  143. package/dist/services/result-collector/index.js.map +1 -0
  144. package/dist/services/result-collector/result-collector.service.d.ts +17 -0
  145. package/dist/services/result-collector/result-collector.service.d.ts.map +1 -0
  146. package/dist/services/result-collector/result-collector.service.js +92 -0
  147. package/dist/services/result-collector/result-collector.service.js.map +1 -0
  148. package/dist/services/scheduler/index.d.ts +2 -0
  149. package/dist/services/scheduler/index.d.ts.map +1 -0
  150. package/dist/services/{job-processor → scheduler}/index.js +1 -1
  151. package/dist/services/scheduler/index.js.map +1 -0
  152. package/dist/services/scheduler/scheduler.service.d.ts +17 -0
  153. package/dist/services/scheduler/scheduler.service.d.ts.map +1 -0
  154. package/dist/services/scheduler/scheduler.service.js +116 -0
  155. package/dist/services/scheduler/scheduler.service.js.map +1 -0
  156. package/dist/services/shutdown/index.d.ts +2 -0
  157. package/dist/services/shutdown/index.d.ts.map +1 -0
  158. package/dist/services/shutdown/index.js +18 -0
  159. package/dist/services/shutdown/index.js.map +1 -0
  160. package/dist/services/shutdown/shutdown.service.d.ts +8 -0
  161. package/dist/services/shutdown/shutdown.service.d.ts.map +1 -0
  162. package/dist/services/shutdown/shutdown.service.js +29 -0
  163. package/dist/services/shutdown/shutdown.service.js.map +1 -0
  164. package/dist/utils/index.d.ts +3 -1
  165. package/dist/utils/index.d.ts.map +1 -1
  166. package/dist/utils/index.js +3 -1
  167. package/dist/utils/index.js.map +1 -1
  168. package/dist/utils/naming.utils.d.ts +0 -16
  169. package/dist/utils/naming.utils.d.ts.map +1 -1
  170. package/dist/utils/naming.utils.js +0 -29
  171. package/dist/utils/naming.utils.js.map +1 -1
  172. package/package.json +19 -11
  173. package/dist/decorators/legacy.decorators.d.ts +0 -36
  174. package/dist/decorators/legacy.decorators.d.ts.map +0 -1
  175. package/dist/decorators/legacy.decorators.js +0 -61
  176. package/dist/decorators/legacy.decorators.js.map +0 -1
  177. package/dist/decorators/scaler.decorators.d.ts +0 -65
  178. package/dist/decorators/scaler.decorators.d.ts.map +0 -1
  179. package/dist/decorators/scaler.decorators.js +0 -103
  180. package/dist/decorators/scaler.decorators.js.map +0 -1
  181. package/dist/decorators/type-guards.d.ts +0 -18
  182. package/dist/decorators/type-guards.d.ts.map +0 -1
  183. package/dist/decorators/type-guards.js +0 -32
  184. package/dist/decorators/type-guards.js.map +0 -1
  185. package/dist/decorators/worker.decorators.d.ts +0 -58
  186. package/dist/decorators/worker.decorators.d.ts.map +0 -1
  187. package/dist/decorators/worker.decorators.js +0 -92
  188. package/dist/decorators/worker.decorators.js.map +0 -1
  189. package/dist/domain/interfaces/event.interfaces.d.ts +0 -71
  190. package/dist/domain/interfaces/event.interfaces.d.ts.map +0 -1
  191. package/dist/domain/interfaces/event.interfaces.js +0 -3
  192. package/dist/domain/interfaces/event.interfaces.js.map +0 -1
  193. package/dist/domain/interfaces/index-tracking.interfaces.d.ts +0 -69
  194. package/dist/domain/interfaces/index-tracking.interfaces.d.ts.map +0 -1
  195. package/dist/domain/interfaces/index-tracking.interfaces.js +0 -3
  196. package/dist/domain/interfaces/index-tracking.interfaces.js.map +0 -1
  197. package/dist/domain/interfaces/lock.interfaces.d.ts +0 -54
  198. package/dist/domain/interfaces/lock.interfaces.d.ts.map +0 -1
  199. package/dist/domain/interfaces/lock.interfaces.js.map +0 -1
  200. package/dist/domain/interfaces/process.interfaces.d.ts +0 -44
  201. package/dist/domain/interfaces/process.interfaces.d.ts.map +0 -1
  202. package/dist/domain/interfaces/process.interfaces.js +0 -3
  203. package/dist/domain/interfaces/process.interfaces.js.map +0 -1
  204. package/dist/domain/interfaces/queue.interfaces.d.ts +0 -46
  205. package/dist/domain/interfaces/queue.interfaces.d.ts.map +0 -1
  206. package/dist/domain/interfaces/queue.interfaces.js +0 -3
  207. package/dist/domain/interfaces/queue.interfaces.js.map +0 -1
  208. package/dist/domain/interfaces/scaling.interfaces.d.ts +0 -62
  209. package/dist/domain/interfaces/scaling.interfaces.d.ts.map +0 -1
  210. package/dist/domain/interfaces/scaling.interfaces.js +0 -3
  211. package/dist/domain/interfaces/scaling.interfaces.js.map +0 -1
  212. package/dist/domain/interfaces/worker.interfaces.d.ts +0 -120
  213. package/dist/domain/interfaces/worker.interfaces.d.ts.map +0 -1
  214. package/dist/domain/interfaces/worker.interfaces.js +0 -3
  215. package/dist/domain/interfaces/worker.interfaces.js.map +0 -1
  216. package/dist/services/cron-manager/cron-manager.service.d.ts +0 -199
  217. package/dist/services/cron-manager/cron-manager.service.d.ts.map +0 -1
  218. package/dist/services/cron-manager/cron-manager.service.js +0 -583
  219. package/dist/services/cron-manager/cron-manager.service.js.map +0 -1
  220. package/dist/services/cron-manager/index.d.ts +0 -2
  221. package/dist/services/cron-manager/index.d.ts.map +0 -1
  222. package/dist/services/cron-manager/index.js.map +0 -1
  223. package/dist/services/index-manager/index-manager.service.d.ts +0 -142
  224. package/dist/services/index-manager/index-manager.service.d.ts.map +0 -1
  225. package/dist/services/index-manager/index-manager.service.js +0 -325
  226. package/dist/services/index-manager/index-manager.service.js.map +0 -1
  227. package/dist/services/index-manager/index.d.ts +0 -2
  228. package/dist/services/index-manager/index.d.ts.map +0 -1
  229. package/dist/services/index-manager/index.js.map +0 -1
  230. package/dist/services/job-processor/index.d.ts +0 -2
  231. package/dist/services/job-processor/index.d.ts.map +0 -1
  232. package/dist/services/job-processor/index.js.map +0 -1
  233. package/dist/services/job-processor/job-processor.service.d.ts +0 -156
  234. package/dist/services/job-processor/job-processor.service.d.ts.map +0 -1
  235. package/dist/services/job-processor/job-processor.service.js +0 -331
  236. package/dist/services/job-processor/job-processor.service.js.map +0 -1
  237. package/dist/services/processor-discovery/decorator-discovery.service.d.ts +0 -40
  238. package/dist/services/processor-discovery/decorator-discovery.service.d.ts.map +0 -1
  239. package/dist/services/processor-discovery/decorator-discovery.service.js +0 -191
  240. package/dist/services/processor-discovery/decorator-discovery.service.js.map +0 -1
  241. package/dist/services/processor-discovery/index.d.ts +0 -6
  242. package/dist/services/processor-discovery/index.d.ts.map +0 -1
  243. package/dist/services/processor-discovery/index.js +0 -22
  244. package/dist/services/processor-discovery/index.js.map +0 -1
  245. package/dist/services/processor-discovery/processor-discovery.service.d.ts +0 -98
  246. package/dist/services/processor-discovery/processor-discovery.service.d.ts.map +0 -1
  247. package/dist/services/processor-discovery/processor-discovery.service.js +0 -258
  248. package/dist/services/processor-discovery/processor-discovery.service.js.map +0 -1
  249. package/dist/services/processor-discovery/processor-registry.d.ts +0 -58
  250. package/dist/services/processor-discovery/processor-registry.d.ts.map +0 -1
  251. package/dist/services/processor-discovery/processor-registry.js +0 -74
  252. package/dist/services/processor-discovery/processor-registry.js.map +0 -1
  253. package/dist/services/processor-discovery/scaling-registration.service.d.ts +0 -60
  254. package/dist/services/processor-discovery/scaling-registration.service.d.ts.map +0 -1
  255. package/dist/services/processor-discovery/scaling-registration.service.js +0 -261
  256. package/dist/services/processor-discovery/scaling-registration.service.js.map +0 -1
  257. package/dist/services/processor-discovery/worker-factory.service.d.ts +0 -54
  258. package/dist/services/processor-discovery/worker-factory.service.d.ts.map +0 -1
  259. package/dist/services/processor-discovery/worker-factory.service.js +0 -185
  260. package/dist/services/processor-discovery/worker-factory.service.js.map +0 -1
  261. package/dist/services/queue-bus/entity-target.d.ts +0 -58
  262. package/dist/services/queue-bus/entity-target.d.ts.map +0 -1
  263. package/dist/services/queue-bus/entity-target.js +0 -109
  264. package/dist/services/queue-bus/entity-target.js.map +0 -1
  265. package/dist/services/queue-bus/queue-bus.types.d.ts +0 -40
  266. package/dist/services/queue-bus/queue-bus.types.d.ts.map +0 -1
  267. package/dist/services/queue-bus/queue-bus.types.js +0 -3
  268. package/dist/services/queue-bus/queue-bus.types.js.map +0 -1
  269. package/dist/services/queue-bus/queue-target.d.ts +0 -61
  270. package/dist/services/queue-bus/queue-target.d.ts.map +0 -1
  271. package/dist/services/queue-bus/queue-target.js +0 -123
  272. package/dist/services/queue-bus/queue-target.js.map +0 -1
  273. package/dist/services/queue-events-manager/index.d.ts +0 -2
  274. package/dist/services/queue-events-manager/index.d.ts.map +0 -1
  275. package/dist/services/queue-events-manager/index.js.map +0 -1
  276. package/dist/services/queue-events-manager/queue-events-manager.service.d.ts +0 -120
  277. package/dist/services/queue-events-manager/queue-events-manager.service.d.ts.map +0 -1
  278. package/dist/services/queue-events-manager/queue-events-manager.service.js +0 -343
  279. package/dist/services/queue-events-manager/queue-events-manager.service.js.map +0 -1
  280. package/dist/services/queue-manager/index.d.ts +0 -2
  281. package/dist/services/queue-manager/index.d.ts.map +0 -1
  282. package/dist/services/queue-manager/index.js.map +0 -1
  283. package/dist/services/queue-manager/queue-manager.service.d.ts +0 -148
  284. package/dist/services/queue-manager/queue-manager.service.d.ts.map +0 -1
  285. package/dist/services/queue-manager/queue-manager.service.js +0 -348
  286. package/dist/services/queue-manager/queue-manager.service.js.map +0 -1
  287. package/dist/services/resource-lock/index.d.ts +0 -2
  288. package/dist/services/resource-lock/index.d.ts.map +0 -1
  289. package/dist/services/resource-lock/index.js +0 -18
  290. package/dist/services/resource-lock/index.js.map +0 -1
  291. package/dist/services/resource-lock/resource-lock.service.d.ts +0 -120
  292. package/dist/services/resource-lock/resource-lock.service.d.ts.map +0 -1
  293. package/dist/services/resource-lock/resource-lock.service.js +0 -367
  294. package/dist/services/resource-lock/resource-lock.service.js.map +0 -1
  295. package/dist/services/service-queue/index.d.ts +0 -3
  296. package/dist/services/service-queue/index.d.ts.map +0 -1
  297. package/dist/services/service-queue/index.js +0 -19
  298. package/dist/services/service-queue/index.js.map +0 -1
  299. package/dist/services/service-queue/service-queue.service.d.ts +0 -199
  300. package/dist/services/service-queue/service-queue.service.d.ts.map +0 -1
  301. package/dist/services/service-queue/service-queue.service.js +0 -617
  302. package/dist/services/service-queue/service-queue.service.js.map +0 -1
  303. package/dist/services/service-queue/service-queue.types.d.ts +0 -32
  304. package/dist/services/service-queue/service-queue.types.d.ts.map +0 -1
  305. package/dist/services/service-queue/service-queue.types.js +0 -27
  306. package/dist/services/service-queue/service-queue.types.js.map +0 -1
  307. package/dist/services/shutdown-state/index.d.ts +0 -2
  308. package/dist/services/shutdown-state/index.d.ts.map +0 -1
  309. package/dist/services/shutdown-state/index.js +0 -18
  310. package/dist/services/shutdown-state/index.js.map +0 -1
  311. package/dist/services/shutdown-state/shutdown-state.service.d.ts +0 -69
  312. package/dist/services/shutdown-state/shutdown-state.service.d.ts.map +0 -1
  313. package/dist/services/shutdown-state/shutdown-state.service.js +0 -127
  314. package/dist/services/shutdown-state/shutdown-state.service.js.map +0 -1
  315. package/dist/services/spawn-queue/index.d.ts +0 -2
  316. package/dist/services/spawn-queue/index.d.ts.map +0 -1
  317. package/dist/services/spawn-queue/index.js.map +0 -1
  318. package/dist/services/spawn-queue/spawn-queue.service.d.ts +0 -119
  319. package/dist/services/spawn-queue/spawn-queue.service.d.ts.map +0 -1
  320. package/dist/services/spawn-queue/spawn-queue.service.js +0 -273
  321. package/dist/services/spawn-queue/spawn-queue.service.js.map +0 -1
  322. package/dist/services/worker-manager/index.d.ts +0 -2
  323. package/dist/services/worker-manager/index.d.ts.map +0 -1
  324. package/dist/services/worker-manager/index.js +0 -18
  325. package/dist/services/worker-manager/index.js.map +0 -1
  326. package/dist/services/worker-manager/worker-manager.service.d.ts +0 -221
  327. package/dist/services/worker-manager/worker-manager.service.d.ts.map +0 -1
  328. package/dist/services/worker-manager/worker-manager.service.js +0 -591
  329. package/dist/services/worker-manager/worker-manager.service.js.map +0 -1
  330. package/dist/utils/helpers.d.ts +0 -5
  331. package/dist/utils/helpers.d.ts.map +0 -1
  332. package/dist/utils/helpers.js +0 -21
  333. package/dist/utils/helpers.js.map +0 -1
  334. package/dist/utils/job.utils.d.ts +0 -50
  335. package/dist/utils/job.utils.d.ts.map +0 -1
  336. package/dist/utils/job.utils.js +0 -89
  337. package/dist/utils/job.utils.js.map +0 -1
@@ -1,343 +0,0 @@
1
- "use strict";
2
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
- return c > 3 && r && Object.defineProperty(target, key, r), r;
7
- };
8
- var __metadata = (this && this.__metadata) || function (k, v) {
9
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
- };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
- var __importDefault = (this && this.__importDefault) || function (mod) {
15
- return (mod && mod.__esModule) ? mod : { "default": mod };
16
- };
17
- var QueueEventsManagerService_1;
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.QueueEventsManagerService = void 0;
20
- const common_1 = require("@nestjs/common");
21
- const bullmq_1 = require("bullmq");
22
- const ioredis_1 = __importDefault(require("ioredis"));
23
- const constants_1 = require("../constants");
24
- const utils_1 = require("../../utils");
25
- const worker_manager_1 = require("../worker-manager");
26
- const service_queue_1 = require("../service-queue");
27
- const spawn_queue_1 = require("../spawn-queue");
28
- /**
29
- * QueueEventsManagerService
30
- *
31
- * Listens to BullMQ queue events using Redis pub/sub (ecological).
32
- * When a job is added to a queue and no worker exists, triggers worker spawning.
33
- *
34
- * This enables a "scalerless" architecture where:
35
- * - Workers are spawned on-demand when jobs arrive
36
- * - Workers terminate themselves when idle
37
- * - No need for @EntityScaler with @GetActiveEntities
38
- *
39
- * Key Features:
40
- * - Redis pub/sub based (ecological) - no polling
41
- * - Uses BullMQ's QueueEvents for reliable event delivery
42
- * - Checks for existing workers before spawning
43
- * - Integrates with ServiceQueue for distributed coordination
44
- *
45
- * @example
46
- * ```typescript
47
- * // Register a queue for event listening
48
- * queueEventsManager.registerQueue({
49
- * queueName: 'aq:table:123:queue',
50
- * entityType: 'table',
51
- * extractEntityId: (qn) => qn.split(':')[2], // 123
52
- * onJobArrived: async (entityType, entityId) => {
53
- * await createWorkerForEntity(entityType, entityId);
54
- * },
55
- * });
56
- * ```
57
- */
58
- let QueueEventsManagerService = QueueEventsManagerService_1 = class QueueEventsManagerService {
59
- constructor(redis, config, workerManager, spawnQueueService, serviceQueueManager) {
60
- this.redis = redis;
61
- this.config = config;
62
- this.workerManager = workerManager;
63
- this.spawnQueueService = spawnQueueService;
64
- this.serviceQueueManager = serviceQueueManager;
65
- this.logger = new common_1.Logger(QueueEventsManagerService_1.name);
66
- this.registeredQueues = new Map();
67
- // Pattern-based listeners for dynamic queue spawning
68
- this.entityPatterns = new Map();
69
- // Global callback for spawning workers
70
- this.onJobArrivedCallback = null;
71
- // =========================================================================
72
- // HOT CACHE — eliminates Redis calls on the warm path entirely.
73
- // Once we know a worker exists (via Redis check or local creation),
74
- // we cache the worker name. Subsequent job arrivals for that entity
75
- // short-circuit without touching Redis at all.
76
- // =========================================================================
77
- this.hotCache = new Set();
78
- this.keyPrefix = (0, utils_1.resolveKeyPrefix)(config);
79
- this.useServiceQueue = config.serviceQueue?.enabled !== false;
80
- }
81
- /**
82
- * Register a callback to be called when a job arrives for any queue
83
- * and no worker exists. Used by ProcessorDiscoveryService.
84
- */
85
- setOnJobArrivedCallback(callback) {
86
- this.onJobArrivedCallback = callback;
87
- this.logger.debug('OnJobArrived callback registered');
88
- }
89
- /**
90
- * Register an entity type pattern for automatic queue event listening.
91
- * When a job is added to any queue matching this pattern, a worker spawn is triggered.
92
- */
93
- registerEntityPattern(entityType, queueNameFn, workerNameFn) {
94
- // Create a regex pattern extractor by analyzing the queueNameFn
95
- // We pass a known placeholder and see where it appears in the result
96
- const placeholder = '__ENTITY_ID_PLACEHOLDER__';
97
- const sampleQueueName = queueNameFn(placeholder);
98
- // Escape regex special characters in the parts before/after the placeholder
99
- const parts = sampleQueueName.split(placeholder);
100
- const escapeRegex = (str) => str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
101
- let extractRegex;
102
- if (parts.length === 2) {
103
- // Standard case: prefix + entityId + suffix
104
- const [prefix, suffix] = parts;
105
- extractRegex = new RegExp(`^${escapeRegex(prefix)}(.+)${escapeRegex(suffix)}$`);
106
- }
107
- else {
108
- // Fallback: try common patterns
109
- extractRegex = new RegExp(`^(.+)-queue$`);
110
- }
111
- const extractEntityId = (queueName) => {
112
- const match = queueName.match(extractRegex);
113
- return match ? match[1] : null;
114
- };
115
- // Log the derived pattern for debugging
116
- this.logger.debug(`[${entityType}] Derived queue pattern: ${extractRegex.source} from sample: ${sampleQueueName}`);
117
- this.entityPatterns.set(entityType, {
118
- queueNameFn,
119
- workerNameFn,
120
- extractEntityId,
121
- });
122
- this.logger.log(`Registered entity pattern for '${entityType}' - will listen for job arrivals`);
123
- }
124
- /**
125
- * Listen for job arrivals on a specific queue.
126
- * Creates a QueueEvents instance for the queue and listens for 'waiting' events.
127
- *
128
- * @param queueName The BullMQ queue name to listen to
129
- * @param entityType The entity type (e.g., 'table')
130
- * @param extractEntityId Function to extract entityId from queue name
131
- */
132
- async listenToQueue(queueName, entityType, extractEntityId) {
133
- if (this.registeredQueues.has(queueName)) {
134
- this.logger.debug(`Already listening to queue: ${queueName}`);
135
- return;
136
- }
137
- this.logger.debug(`Starting to listen to queue events: ${queueName}`);
138
- const queueEvents = new bullmq_1.QueueEvents(queueName, {
139
- connection: this.redis.duplicate(),
140
- });
141
- // Listen for job added events (waiting state)
142
- queueEvents.on('waiting', async ({ jobId }) => {
143
- await this.handleJobArrived(queueName, entityType, extractEntityId, jobId);
144
- });
145
- // Also listen for delayed jobs becoming ready
146
- queueEvents.on('delayed', async ({ jobId }) => {
147
- this.logger.debug(`[QueueEvents] Job ${jobId} delayed in ${queueName}`);
148
- });
149
- // Store the registered queue
150
- this.registeredQueues.set(queueName, {
151
- queueName,
152
- entityType,
153
- queueEvents,
154
- extractEntityId,
155
- });
156
- this.logger.log(`Listening to queue events: ${queueName}`);
157
- }
158
- /**
159
- * Handle job arrival — ultra-low-latency path.
160
- *
161
- * Hot path (worker exists in cache): 0 Redis calls. Instant return.
162
- * Warm path (worker exists in Redis): 1 Redis EXISTS call (O(1)).
163
- * Cold path (no worker): 1 SET NX claim + direct local creation.
164
- *
165
- * This replaces the old flow of: KEYS scan → spawn queue enqueue →
166
- * spawn queue dequeue → create worker (multiple seconds) with:
167
- * cache hit → 0ms, or SET NX + local create → ~10ms.
168
- */
169
- async handleJobArrived(queueName, entityType, extractEntityId, jobId) {
170
- const entityId = extractEntityId(queueName);
171
- // Check if worker already exists for this entity
172
- const pattern = this.entityPatterns.get(entityType);
173
- if (!pattern)
174
- return;
175
- const workerName = pattern.workerNameFn(entityId);
176
- // ── HOT CACHE (0 Redis calls) ────────────────────────────────
177
- if (this.hotCache.has(workerName))
178
- return;
179
- // ── WARM PATH (1 Redis EXISTS — O(1)) ────────────────────────
180
- const workerExists = await this.workerManager.workerExists(workerName);
181
- if (workerExists) {
182
- this.hotCache.add(workerName);
183
- return;
184
- }
185
- // ── COLD PATH — Direct local spawn ───────────────────────────
186
- // Atomic claim via SET NX: if this pod wins, it creates the
187
- // worker locally (no spawn queue round-trip). If another pod
188
- // already claimed it, we skip (that pod is creating it).
189
- const claimed = await this.workerManager.claimWorkerSlot(workerName);
190
- if (claimed) {
191
- this.logger.log(`[QueueEvents] Claimed ${entityType}/${entityId} — creating worker locally`);
192
- // Direct local spawn (same-pod, no BullMQ round-trip)
193
- try {
194
- if (this.onJobArrivedCallback) {
195
- await this.onJobArrivedCallback(entityType, entityId, queueName);
196
- }
197
- else if (this.spawnQueueService) {
198
- // If only spawn handler is registered, invoke it directly
199
- await this.spawnQueueService.handleSpawnJobDirect?.(entityType, entityId);
200
- }
201
- this.hotCache.add(workerName);
202
- }
203
- catch (error) {
204
- this.logger.error(`[QueueEvents] Direct spawn failed for ${entityType}/${entityId}: ${error.message}`);
205
- // Fall back to spawn queue if direct creation failed
206
- if (this.spawnQueueService) {
207
- await this.spawnQueueService.requestSpawn(entityType, entityId);
208
- }
209
- }
210
- }
211
- else {
212
- // Another pod claimed it — it'll be created there.
213
- // Add to cache after a short delay (the other pod needs time to create).
214
- setTimeout(() => this.hotCache.add(workerName), 500);
215
- }
216
- }
217
- /**
218
- * Evict a worker from the hot cache.
219
- * Called by SpawnQueueService when idle sweep closes a worker,
220
- * so the next job arrival will trigger a fresh spawn.
221
- */
222
- evictFromHotCache(workerName) {
223
- this.hotCache.delete(workerName);
224
- }
225
- /**
226
- * Get the hot cache size (for diagnostics).
227
- */
228
- getHotCacheSize() {
229
- return this.hotCache.size;
230
- }
231
- /**
232
- * Listen to all queues that match a pattern.
233
- * Uses Redis SCAN to find existing queues and listens to them.
234
- * Also sets up keyspace notifications for new queues (if enabled).
235
- */
236
- async listenToEntityTypeQueues(entityType) {
237
- const pattern = this.entityPatterns.get(entityType);
238
- if (!pattern) {
239
- this.logger.warn(`No pattern registered for entity type: ${entityType}`);
240
- return;
241
- }
242
- // Find existing queues matching the pattern
243
- const queuePattern = `${this.keyPrefix}:${entityType}:*:queue`;
244
- const bulkQueuePattern = `bull:${this.keyPrefix}:${entityType}:*:queue:*`;
245
- // Scan for existing BullMQ queue keys
246
- const keys = await (0, utils_1.scanKeys)(this.redis, bulkQueuePattern);
247
- const queueNames = new Set();
248
- for (const key of keys) {
249
- // Extract queue name from BullMQ key
250
- // Format: bull:{queueName}:{suffix}
251
- const match = key.match(/^bull:([^:]+:[^:]+:[^:]+:queue):/);
252
- if (match) {
253
- queueNames.add(match[1]);
254
- }
255
- }
256
- this.logger.debug(`Found ${queueNames.size} existing queues for ${entityType}`);
257
- // Listen to each existing queue
258
- for (const queueName of queueNames) {
259
- const extractFn = pattern.extractEntityId;
260
- if (!extractFn)
261
- continue;
262
- // Wrap the extractEntityId to handle null return
263
- const safeExtract = (qn) => {
264
- const result = extractFn(qn);
265
- return result ?? 'unknown';
266
- };
267
- await this.listenToQueue(queueName, entityType, safeExtract);
268
- }
269
- }
270
- /**
271
- * Ensure we're listening to events for a specific queue.
272
- * Call this when adding a job to ensure we catch the event.
273
- */
274
- async ensureListening(queueName, entityType) {
275
- if (this.registeredQueues.has(queueName)) {
276
- return;
277
- }
278
- const pattern = this.entityPatterns.get(entityType);
279
- if (!pattern || !pattern.extractEntityId) {
280
- this.logger.debug(`No pattern for ${entityType}, can't auto-listen`);
281
- return;
282
- }
283
- // Wrap the extractEntityId to handle null return
284
- const extractFn = pattern.extractEntityId;
285
- const safeExtract = (qn) => {
286
- const result = extractFn(qn);
287
- return result ?? 'unknown';
288
- };
289
- await this.listenToQueue(queueName, entityType, safeExtract);
290
- }
291
- /**
292
- * Stop listening to a specific queue.
293
- */
294
- async stopListening(queueName) {
295
- const registered = this.registeredQueues.get(queueName);
296
- if (!registered) {
297
- return;
298
- }
299
- try {
300
- await registered.queueEvents.close();
301
- this.registeredQueues.delete(queueName);
302
- this.logger.debug(`Stopped listening to queue: ${queueName}`);
303
- }
304
- catch (error) {
305
- this.logger.error(`Error stopping listener for ${queueName}: ${error.message}`);
306
- }
307
- }
308
- /**
309
- * Get all registered queue names.
310
- */
311
- getRegisteredQueues() {
312
- return Array.from(this.registeredQueues.keys());
313
- }
314
- /**
315
- * Cleanup on module destroy.
316
- */
317
- async onModuleDestroy() {
318
- this.logger.debug('Closing all queue event listeners...');
319
- const closePromises = Array.from(this.registeredQueues.values()).map(async (registered) => {
320
- try {
321
- await registered.queueEvents.close();
322
- }
323
- catch (error) {
324
- this.logger.error(`Error closing queue events for ${registered.queueName}:`, error);
325
- }
326
- });
327
- await Promise.all(closePromises);
328
- this.registeredQueues.clear();
329
- this.logger.debug('All queue event listeners closed');
330
- }
331
- };
332
- exports.QueueEventsManagerService = QueueEventsManagerService;
333
- exports.QueueEventsManagerService = QueueEventsManagerService = QueueEventsManagerService_1 = __decorate([
334
- (0, common_1.Injectable)(),
335
- __param(0, (0, common_1.Inject)(constants_1.ATOMIC_QUEUES_REDIS)),
336
- __param(1, (0, common_1.Inject)(constants_1.ATOMIC_QUEUES_CONFIG)),
337
- __param(3, (0, common_1.Optional)()),
338
- __param(4, (0, common_1.Optional)()),
339
- __metadata("design:paramtypes", [ioredis_1.default, Object, worker_manager_1.WorkerManagerService,
340
- spawn_queue_1.SpawnQueueService,
341
- service_queue_1.ServiceQueueManager])
342
- ], QueueEventsManagerService);
343
- //# sourceMappingURL=queue-events-manager.service.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queue-events-manager.service.js","sourceRoot":"","sources":["../../../src/services/queue-events-manager/queue-events-manager.service.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export * from './queue-manager.service';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/queue-manager/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/queue-manager/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0DAAwC"}
@@ -1,148 +0,0 @@
1
- import { OnModuleDestroy } from '@nestjs/common';
2
- import { Queue, Job, QueueEvents } from 'bullmq';
3
- import Redis from 'ioredis';
4
- import { IQueueManager, IManagedQueue, IJobOptions } from '../../domain';
5
- import { IAtomicQueuesModuleConfig } from '../../domain';
6
- interface IQueueEventsManager {
7
- ensureListening(queueName: string, entityType: string): Promise<void>;
8
- }
9
- /**
10
- * QueueManagerService
11
- *
12
- * Manages dynamic queue creation and destruction per entity.
13
- * This is the core service for creating queues on-demand for users, tables,
14
- * or any other entity type that requires atomic processing.
15
- *
16
- * Key Features:
17
- * - Dynamic queue creation with lazy initialization
18
- * - Entity-specific queue naming conventions
19
- * - Automatic cleanup on module destroy
20
- * - Job management (add, delete)
21
- * - Queue lifecycle management
22
- *
23
- * @example
24
- * ```typescript
25
- * // Get or create a queue for a user
26
- * const queue = queueManager.getOrCreateEntityQueue('user', '123');
27
- *
28
- * // Add a job to the queue
29
- * await queueManager.addJob('user-123-queue', 'process-message', { text: 'hello' });
30
- * ```
31
- */
32
- export declare class QueueManagerService implements IQueueManager, OnModuleDestroy {
33
- private readonly redis;
34
- private readonly config;
35
- private readonly logger;
36
- private readonly queues;
37
- private readonly queueEvents;
38
- private readonly keyPrefix;
39
- private queueEventsManager;
40
- constructor(redis: Redis, config: IAtomicQueuesModuleConfig);
41
- /**
42
- * Set the QueueEventsManager reference.
43
- * Called by ProcessorDiscoveryService after initialization.
44
- */
45
- setQueueEventsManager(manager: IQueueEventsManager): void;
46
- /**
47
- * Get or create a queue by name.
48
- * If the queue doesn't exist, it will be created with default configuration.
49
- */
50
- getOrCreateQueue(queueName: string): Queue;
51
- /**
52
- * Get or create an entity-specific queue.
53
- * Uses naming convention: {entityType}-{entityId}-queue
54
- */
55
- getOrCreateEntityQueue(entityType: string, entityId: string): Queue;
56
- /**
57
- * Close and remove a specific queue.
58
- * This will gracefully close the queue and clean up resources.
59
- */
60
- closeQueue(queueName: string): Promise<void>;
61
- /**
62
- * Close all managed queues.
63
- * Called automatically on module destroy.
64
- */
65
- closeAllQueues(): Promise<void>;
66
- /**
67
- * Get all managed queue names.
68
- */
69
- getQueueNames(): string[];
70
- /**
71
- * Get all queues for a specific entity type.
72
- */
73
- getEntityTypeQueues(entityType: string): IManagedQueue[];
74
- /**
75
- * Delete a specific job from a queue.
76
- */
77
- deleteJob(queueName: string, jobId: string): Promise<void>;
78
- /**
79
- * Add a job to a queue with optional configuration.
80
- * If QueueEventsManager is available and entityType is provided,
81
- * ensures we're listening for job events to trigger auto-spawning.
82
- */
83
- addJob<T>(queueName: string, jobName: string, data: T, options?: IJobOptions & {
84
- entityType?: string;
85
- }): Promise<Job<T>>;
86
- /**
87
- * Obliterate a queue (remove all jobs and the queue itself).
88
- * Use with caution - this is destructive.
89
- */
90
- obliterateQueue(queueName: string): Promise<void>;
91
- /**
92
- * Get jobs from a queue by state.
93
- */
94
- getJobs(queueName: string, states: ('active' | 'waiting' | 'completed' | 'failed' | 'delayed')[], start?: number, end?: number): Promise<Job[]>;
95
- /**
96
- * Get the job count for a queue.
97
- */
98
- getJobCounts(queueName: string): Promise<{
99
- waiting: number;
100
- active: number;
101
- completed: number;
102
- failed: number;
103
- delayed: number;
104
- }>;
105
- /**
106
- * Pause a queue.
107
- */
108
- pauseQueue(queueName: string): Promise<void>;
109
- /**
110
- * Resume a paused queue.
111
- */
112
- resumeQueue(queueName: string): Promise<void>;
113
- /**
114
- * Check if a queue exists.
115
- */
116
- hasQueue(queueName: string): boolean;
117
- /**
118
- * Get managed queue info.
119
- */
120
- getManagedQueue(queueName: string): IManagedQueue | undefined;
121
- /**
122
- * Get or create QueueEvents for a queue.
123
- * Used for waitUntilFinished functionality.
124
- */
125
- getQueueEvents(queueName: string): Promise<QueueEvents>;
126
- /**
127
- * Create a new BullMQ Queue instance with configuration.
128
- */
129
- private createQueue;
130
- /**
131
- * Generate queue name for an entity.
132
- */
133
- private getEntityQueueName;
134
- /**
135
- * Normalize queue name to ensure consistency.
136
- */
137
- private normalizeQueueName;
138
- /**
139
- * Merge job options with defaults.
140
- */
141
- private mergeJobOptions;
142
- /**
143
- * Cleanup on module destroy.
144
- */
145
- onModuleDestroy(): Promise<void>;
146
- }
147
- export {};
148
- //# sourceMappingURL=queue-manager.service.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"queue-manager.service.d.ts","sourceRoot":"","sources":["../../../src/services/queue-manager/queue-manager.service.ts"],"names":[],"mappings":"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"}