bunqueue 2.8.54 → 2.8.57

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 (718) hide show
  1. package/dist/application/background/dlq.d.ts +2 -0
  2. package/dist/application/background/dlq.js +26 -0
  3. package/dist/application/background/lifecycle.d.ts +4 -0
  4. package/dist/application/background/lifecycle.js +90 -0
  5. package/dist/application/background/recovery/active.d.ts +4 -0
  6. package/dist/application/background/recovery/active.js +69 -0
  7. package/dist/application/background/recovery/index.d.ts +2 -0
  8. package/dist/application/background/recovery/index.js +22 -0
  9. package/dist/application/background/recovery/pending.d.ts +3 -0
  10. package/dist/application/background/recovery/pending.js +69 -0
  11. package/dist/application/background/recovery/restore.d.ts +5 -0
  12. package/dist/application/background/recovery/restore.js +58 -0
  13. package/dist/application/background/recovery/shared.d.ts +6 -0
  14. package/dist/application/background/recovery/shared.js +15 -0
  15. package/dist/application/background/timeouts.d.ts +25 -0
  16. package/dist/application/background/timeouts.js +191 -0
  17. package/dist/application/backgroundTasks.d.ts +7 -31
  18. package/dist/application/backgroundTasks.js +6 -442
  19. package/dist/application/cleanupTasks.js +1 -0
  20. package/dist/application/clientTracking.js +2 -0
  21. package/dist/application/contextFactory.d.ts +13 -90
  22. package/dist/application/contextFactory.js +8 -0
  23. package/dist/application/dependencyResultTracker.d.ts +1 -0
  24. package/dist/application/dependencyResultTracker.js +3 -0
  25. package/dist/application/dlqManager.d.ts +2 -8
  26. package/dist/application/dlqManager.js +33 -162
  27. package/dist/application/dlqRetry.d.ts +12 -0
  28. package/dist/application/dlqRetry.js +97 -0
  29. package/dist/application/lockManager.js +21 -1
  30. package/dist/application/lockOperations.js +16 -3
  31. package/dist/application/operations/ack/batch.d.ts +8 -0
  32. package/dist/application/operations/ack/batch.js +64 -0
  33. package/dist/application/operations/ack/completion.d.ts +3 -0
  34. package/dist/application/operations/ack/completion.js +74 -0
  35. package/dist/application/operations/ack/failure.d.ts +3 -0
  36. package/dist/application/operations/ack/failure.js +160 -0
  37. package/dist/application/operations/ack.d.ts +5 -79
  38. package/dist/application/operations/ack.js +4 -319
  39. package/dist/application/operations/ackHelpers.d.ts +3 -52
  40. package/dist/application/operations/ackHelpers.js +10 -3
  41. package/dist/application/operations/customId.d.ts +18 -5
  42. package/dist/application/operations/customId.js +36 -25
  43. package/dist/application/operations/flowValidation.js +9 -4
  44. package/dist/application/operations/jobManagement.js +44 -7
  45. package/dist/application/operations/parentLink.d.ts +36 -0
  46. package/dist/application/operations/parentLink.js +153 -0
  47. package/dist/application/operations/parentLinkInput.d.ts +8 -0
  48. package/dist/application/operations/parentLinkInput.js +23 -0
  49. package/dist/application/operations/push.d.ts +5 -44
  50. package/dist/application/operations/push.js +62 -152
  51. package/dist/application/operations/pushAdmission.d.ts +32 -0
  52. package/dist/application/operations/pushAdmission.js +38 -0
  53. package/dist/application/operations/pushBatch.d.ts +4 -0
  54. package/dist/application/operations/pushBatch.js +136 -0
  55. package/dist/application/operations/pushContext.d.ts +39 -0
  56. package/dist/application/operations/pushContext.js +1 -0
  57. package/dist/application/operations/pushDeduplication.d.ts +42 -0
  58. package/dist/application/operations/pushDeduplication.js +131 -0
  59. package/dist/application/operations/pushInsert.d.ts +13 -1
  60. package/dist/application/operations/pushInsert.js +33 -17
  61. package/dist/application/operations/pushLocks.js +13 -9
  62. package/dist/application/operations/query/collect.d.ts +12 -0
  63. package/dist/application/operations/query/collect.js +118 -0
  64. package/dist/application/operations/query/jobLookup.d.ts +9 -0
  65. package/dist/application/operations/query/jobLookup.js +110 -0
  66. package/dist/application/operations/query/pagination.d.ts +8 -0
  67. package/dist/application/operations/query/pagination.js +90 -0
  68. package/dist/application/operations/query/state.d.ts +4 -0
  69. package/dist/application/operations/query/state.js +63 -0
  70. package/dist/application/operations/queryOperations.d.ts +5 -50
  71. package/dist/application/operations/queryOperations.js +4 -474
  72. package/dist/application/queue-manager/ack.d.ts +23 -0
  73. package/dist/application/queue-manager/ack.js +242 -0
  74. package/dist/application/queue-manager/configuration.d.ts +27 -0
  75. package/dist/application/queue-manager/configuration.js +84 -0
  76. package/dist/application/queue-manager/context.d.ts +5 -0
  77. package/dist/application/queue-manager/context.js +61 -0
  78. package/dist/application/queue-manager/control.d.ts +17 -0
  79. package/dist/application/queue-manager/control.js +133 -0
  80. package/dist/application/queue-manager/delivery.d.ts +32 -0
  81. package/dist/application/queue-manager/delivery.js +143 -0
  82. package/dist/application/queue-manager/dependencies.d.ts +8 -0
  83. package/dist/application/queue-manager/dependencies.js +127 -0
  84. package/dist/application/queue-manager/dependency-runtime.d.ts +8 -0
  85. package/dist/application/queue-manager/dependency-runtime.js +40 -0
  86. package/dist/application/queue-manager/flow-failures.d.ts +18 -0
  87. package/dist/application/queue-manager/flow-failures.js +107 -0
  88. package/dist/application/queue-manager/flow-options.d.ts +8 -0
  89. package/dist/application/queue-manager/flow-options.js +129 -0
  90. package/dist/application/queue-manager/job-management.d.ts +17 -0
  91. package/dist/application/queue-manager/job-management.js +100 -0
  92. package/dist/application/queue-manager/lifecycle.d.ts +4 -0
  93. package/dist/application/queue-manager/lifecycle.js +41 -0
  94. package/dist/application/queue-manager/limits.d.ts +41 -0
  95. package/dist/application/queue-manager/limits.js +108 -0
  96. package/dist/application/queue-manager/locks.d.ts +21 -0
  97. package/dist/application/queue-manager/locks.js +59 -0
  98. package/dist/application/queue-manager/observability.d.ts +16 -0
  99. package/dist/application/queue-manager/observability.js +44 -0
  100. package/dist/application/queue-manager/queries.d.ts +17 -0
  101. package/dist/application/queue-manager/queries.js +118 -0
  102. package/dist/application/queue-manager/repeat.d.ts +4 -0
  103. package/dist/application/queue-manager/repeat.js +26 -0
  104. package/dist/application/queue-manager/services.d.ts +19 -0
  105. package/dist/application/queue-manager/services.js +80 -0
  106. package/dist/application/queue-manager/state.d.ts +92 -0
  107. package/dist/application/queue-manager/state.js +144 -0
  108. package/dist/application/queue-manager/stats.d.ts +28 -0
  109. package/dist/application/queue-manager/stats.js +52 -0
  110. package/dist/application/queueManager.d.ts +4 -400
  111. package/dist/application/queueManager.js +3 -1922
  112. package/dist/application/queueTelemetryJournal.d.ts +20 -0
  113. package/dist/application/queueTelemetryJournal.js +133 -0
  114. package/dist/application/repeatJobs.d.ts +7 -0
  115. package/dist/application/repeatJobs.js +132 -0
  116. package/dist/application/stallDetection.js +6 -1
  117. package/dist/application/types/ack.d.ts +132 -0
  118. package/dist/application/types/ack.js +1 -0
  119. package/dist/application/types/background.d.ts +18 -0
  120. package/dist/application/types/background.js +1 -0
  121. package/dist/application/types/config.d.ts +37 -0
  122. package/dist/application/{types.js → types/config.js} +3 -4
  123. package/dist/application/types/contextFactory.d.ts +83 -0
  124. package/dist/application/types/contextFactory.js +1 -0
  125. package/dist/application/types/contexts.d.ts +110 -0
  126. package/dist/application/types/contexts.js +1 -0
  127. package/dist/application/types/index.d.ts +7 -0
  128. package/dist/application/types/index.js +1 -0
  129. package/dist/application/types/query.d.ts +23 -0
  130. package/dist/application/types/query.js +1 -0
  131. package/dist/application/types/queueManager.d.ts +94 -0
  132. package/dist/application/types/queueManager.js +1 -0
  133. package/dist/cli/commandRouter.d.ts +1 -1
  134. package/dist/cli/commands/core.js +1 -0
  135. package/dist/cli/output/collections.d.ts +8 -0
  136. package/dist/cli/output/collections.js +131 -0
  137. package/dist/cli/output/jobs.d.ts +2 -0
  138. package/dist/cli/output/jobs.js +61 -0
  139. package/dist/cli/output/style.d.ts +14 -0
  140. package/dist/cli/output/style.js +28 -0
  141. package/dist/cli/output/success.d.ts +1 -0
  142. package/dist/cli/output/success.js +108 -0
  143. package/dist/cli/output.d.ts +1 -6
  144. package/dist/cli/output.js +7 -395
  145. package/dist/client/bunqueue/dlqRateLimit.d.ts +8 -0
  146. package/dist/client/bunqueue/dlqRateLimit.js +24 -0
  147. package/dist/client/bunqueue/runtime.d.ts +35 -0
  148. package/dist/client/bunqueue/runtime.js +138 -0
  149. package/dist/client/bunqueue.d.ts +19 -34
  150. package/dist/client/bunqueue.js +45 -166
  151. package/dist/client/dlqConversion.d.ts +5 -0
  152. package/dist/client/dlqConversion.js +28 -0
  153. package/dist/client/events.d.ts +7 -56
  154. package/dist/client/events.js +38 -15
  155. package/dist/client/flow.d.ts +6 -12
  156. package/dist/client/flow.js +16 -34
  157. package/dist/client/flowJobFactory.d.ts +9 -1
  158. package/dist/client/flowJobFactory.js +25 -9
  159. package/dist/client/flowJobMoveMethods.d.ts +5 -5
  160. package/dist/client/flowJobMoveMethods.js +31 -16
  161. package/dist/client/flowLegacyPlan.js +22 -8
  162. package/dist/client/flowOptions.d.ts +1 -1
  163. package/dist/client/flowOptions.js +2 -1
  164. package/dist/client/flowPlan.js +2 -3
  165. package/dist/client/flowPush.d.ts +1 -0
  166. package/dist/client/flowPush.js +5 -1
  167. package/dist/client/flowReader.js +5 -5
  168. package/dist/client/flowResults.d.ts +11 -0
  169. package/dist/client/flowResults.js +42 -0
  170. package/dist/client/index.d.ts +3 -1
  171. package/dist/client/jobConversion.d.ts +0 -4
  172. package/dist/client/jobConversion.js +32 -33
  173. package/dist/client/jobConversionHelpers.d.ts +18 -2
  174. package/dist/client/jobConversionHelpers.js +17 -10
  175. package/dist/client/jobConversionTypes.d.ts +5 -1
  176. package/dist/client/jobHelpers.d.ts +7 -2
  177. package/dist/client/jobHelpers.js +16 -8
  178. package/dist/client/queue/dlq.js +12 -14
  179. package/dist/client/queue/dlqJobMethods.js +11 -10
  180. package/dist/client/queue/dlqOps.js +2 -8
  181. package/dist/client/queue/dlqStats.d.ts +3 -0
  182. package/dist/client/queue/dlqStats.js +21 -0
  183. package/dist/client/queue/job-proxy/dependencies.d.ts +9 -0
  184. package/dist/client/queue/job-proxy/dependencies.js +67 -0
  185. package/dist/client/queue/job-proxy/reflection.d.ts +2 -0
  186. package/dist/client/queue/job-proxy/reflection.js +18 -0
  187. package/dist/client/queue/job-proxy/simple.d.ts +3 -0
  188. package/dist/client/queue/job-proxy/simple.js +316 -0
  189. package/dist/client/queue/job-proxy/tcp.d.ts +4 -0
  190. package/dist/client/queue/job-proxy/tcp.js +191 -0
  191. package/dist/client/queue/jobMetadata.d.ts +10 -0
  192. package/dist/client/queue/jobMetadata.js +24 -0
  193. package/dist/client/queue/jobMove.d.ts +4 -4
  194. package/dist/client/queue/jobMove.js +82 -24
  195. package/dist/client/queue/jobProxy.d.ts +4 -50
  196. package/dist/client/queue/jobProxy.js +3 -516
  197. package/dist/client/queue/operations/add/bulk.d.ts +7 -0
  198. package/dist/client/queue/operations/add/bulk.js +129 -0
  199. package/dist/client/queue/operations/add/payload.d.ts +24 -0
  200. package/dist/client/queue/operations/add/payload.js +85 -0
  201. package/dist/client/queue/operations/add/single.d.ts +3 -0
  202. package/dist/client/queue/operations/add/single.js +107 -0
  203. package/dist/client/queue/operations/add.d.ts +2 -47
  204. package/dist/client/queue/operations/add.js +2 -364
  205. package/dist/client/queue/operations/management.js +2 -1
  206. package/dist/client/queue/operations/query.js +20 -63
  207. package/dist/client/queue/queue.d.ts +6 -192
  208. package/dist/client/queue/queue.js +6 -559
  209. package/dist/client/queue/runtime/compatibility.d.ts +13 -0
  210. package/dist/client/queue/runtime/compatibility.js +38 -0
  211. package/dist/client/queue/runtime/configuration.d.ts +42 -0
  212. package/dist/client/queue/runtime/configuration.js +109 -0
  213. package/dist/client/queue/runtime/connection.d.ts +6 -0
  214. package/dist/client/queue/runtime/connection.js +16 -0
  215. package/dist/client/queue/runtime/control.d.ts +41 -0
  216. package/dist/client/queue/runtime/control.js +87 -0
  217. package/dist/client/queue/runtime/queries.d.ts +48 -0
  218. package/dist/client/queue/runtime/queries.js +95 -0
  219. package/dist/client/queue/runtime/scheduling.d.ts +33 -0
  220. package/dist/client/queue/runtime/scheduling.js +56 -0
  221. package/dist/client/queue/runtime/state.d.ts +96 -0
  222. package/dist/client/queue/runtime/state.js +149 -0
  223. package/dist/client/queue/scheduler.d.ts +2 -5
  224. package/dist/client/queue/scheduler.js +25 -23
  225. package/dist/client/queue/schedulerPagination.d.ts +7 -0
  226. package/dist/client/queue/schedulerPagination.js +10 -0
  227. package/dist/client/queue/types/add.d.ts +40 -0
  228. package/dist/client/queue/types/add.js +1 -0
  229. package/dist/client/queue/{queueTypes.d.ts → types/contexts.d.ts} +2 -2
  230. package/dist/client/queue/types/index.d.ts +3 -0
  231. package/dist/client/queue/types/index.js +1 -0
  232. package/dist/client/queue/types/job.d.ts +50 -0
  233. package/dist/client/queue/types/job.js +1 -0
  234. package/dist/client/queue/types/runtime.d.ts +35 -0
  235. package/dist/client/queue/types/runtime.js +1 -0
  236. package/dist/client/queue/workers.d.ts +4 -8
  237. package/dist/client/queue/workers.js +22 -14
  238. package/dist/client/queue-events/tcpSubscription.d.ts +23 -0
  239. package/dist/client/queue-events/tcpSubscription.js +99 -0
  240. package/dist/client/sandboxed/queueOps.d.ts +2 -2
  241. package/dist/client/sandboxed/queueOps.js +32 -5
  242. package/dist/client/sandboxed/runtime/dispatch.d.ts +13 -0
  243. package/dist/client/sandboxed/runtime/dispatch.js +186 -0
  244. package/dist/client/sandboxed/runtime/lifecycle.d.ts +20 -0
  245. package/dist/client/sandboxed/runtime/lifecycle.js +95 -0
  246. package/dist/client/sandboxed/runtime/log.d.ts +1 -0
  247. package/dist/client/sandboxed/runtime/log.js +15 -0
  248. package/dist/client/sandboxed/runtime/pool.d.ts +11 -0
  249. package/dist/client/sandboxed/runtime/pool.js +121 -0
  250. package/dist/client/sandboxed/runtime/recovery.d.ts +11 -0
  251. package/dist/client/sandboxed/runtime/recovery.js +122 -0
  252. package/dist/client/sandboxed/runtime/state.d.ts +39 -0
  253. package/dist/client/sandboxed/runtime/state.js +59 -0
  254. package/dist/client/sandboxed/types/index.d.ts +2 -0
  255. package/dist/client/sandboxed/types/index.js +1 -0
  256. package/dist/client/sandboxed/types/options.d.ts +27 -0
  257. package/dist/client/sandboxed/types/options.js +1 -0
  258. package/dist/client/sandboxed/types/process.d.ts +30 -0
  259. package/dist/client/sandboxed/types/process.js +1 -0
  260. package/dist/client/sandboxed/worker.d.ts +3 -85
  261. package/dist/client/sandboxed/worker.js +3 -557
  262. package/dist/client/sandboxed/wrapper.js +1 -0
  263. package/dist/client/tcp/client.d.ts +5 -112
  264. package/dist/client/tcp/client.js +5 -481
  265. package/dist/client/tcp/commandQueue.d.ts +23 -0
  266. package/dist/client/tcp/commandQueue.js +89 -0
  267. package/dist/client/tcp/connection.d.ts +4 -85
  268. package/dist/client/tcp/connection.js +3 -315
  269. package/dist/client/tcp/errors.d.ts +6 -0
  270. package/dist/client/tcp/errors.js +18 -0
  271. package/dist/client/tcp/runtime/commands.d.ts +9 -0
  272. package/dist/client/tcp/runtime/commands.js +124 -0
  273. package/dist/client/tcp/runtime/connectivity.d.ts +13 -0
  274. package/dist/client/tcp/runtime/connectivity.js +77 -0
  275. package/dist/client/tcp/runtime/health.d.ts +14 -0
  276. package/dist/client/tcp/runtime/health.js +127 -0
  277. package/dist/client/tcp/runtime/lifecycle.d.ts +8 -0
  278. package/dist/client/tcp/runtime/lifecycle.js +32 -0
  279. package/dist/client/tcp/runtime/state.d.ts +50 -0
  280. package/dist/client/tcp/runtime/state.js +45 -0
  281. package/dist/client/tcp/transport.d.ts +18 -0
  282. package/dist/client/tcp/transport.js +158 -0
  283. package/dist/client/tcp/types/command.d.ts +9 -0
  284. package/dist/client/tcp/types/command.js +1 -0
  285. package/dist/client/tcp/types/connection.d.ts +31 -0
  286. package/dist/client/tcp/types/connection.js +17 -0
  287. package/dist/client/tcp/types/index.d.ts +5 -0
  288. package/dist/client/tcp/types/index.js +1 -0
  289. package/dist/client/tcp/types/socket.d.ts +8 -0
  290. package/dist/client/tcp/types/socket.js +1 -0
  291. package/dist/client/tcp/types/tls.d.ts +4 -0
  292. package/dist/client/tcp/types/tls.js +1 -0
  293. package/dist/client/tcp/types.d.ts +2 -106
  294. package/dist/client/tcp/types.js +2 -22
  295. package/dist/client/types/connection.d.ts +29 -0
  296. package/dist/client/types/connection.js +1 -0
  297. package/dist/client/types/dlq.d.ts +45 -0
  298. package/dist/client/types/dlq.js +1 -0
  299. package/dist/client/types/events.d.ts +54 -0
  300. package/dist/client/types/events.js +1 -0
  301. package/dist/client/types/flow.d.ts +10 -0
  302. package/dist/client/types/flow.js +1 -0
  303. package/dist/client/types/index.d.ts +10 -0
  304. package/dist/client/types/index.js +1 -0
  305. package/dist/client/types/job.d.ts +127 -0
  306. package/dist/client/types/job.js +1 -0
  307. package/dist/client/types/metrics.d.ts +1 -0
  308. package/dist/client/types/metrics.js +1 -0
  309. package/dist/client/types/options.d.ts +62 -0
  310. package/dist/client/types/options.js +1 -0
  311. package/dist/client/types/worker.d.ts +38 -0
  312. package/dist/client/types/worker.js +1 -0
  313. package/dist/client/types.d.ts +2 -583
  314. package/dist/client/types.js +2 -6
  315. package/dist/client/worker/ackBatcher.d.ts +1 -1
  316. package/dist/client/worker/ackBatcher.js +17 -5
  317. package/dist/client/worker/ackOutcome.d.ts +8 -0
  318. package/dist/client/worker/ackOutcome.js +58 -0
  319. package/dist/client/worker/constants.d.ts +7 -0
  320. package/dist/client/worker/{types.js → constants.js} +0 -6
  321. package/dist/client/worker/groupConcurrency.js +3 -0
  322. package/dist/client/worker/handlers/completion.d.ts +28 -0
  323. package/dist/client/worker/handlers/completion.js +68 -0
  324. package/dist/client/worker/handlers/dependencies.d.ts +11 -0
  325. package/dist/client/worker/handlers/dependencies.js +107 -0
  326. package/dist/client/worker/handlers/mutations.d.ts +23 -0
  327. package/dist/client/worker/handlers/mutations.js +211 -0
  328. package/dist/client/worker/handlers/queries.d.ts +15 -0
  329. package/dist/client/worker/handlers/queries.js +100 -0
  330. package/dist/client/worker/index.d.ts +2 -2
  331. package/dist/client/worker/index.js +1 -1
  332. package/dist/client/worker/jobParser.js +4 -2
  333. package/dist/client/worker/processor.d.ts +2 -15
  334. package/dist/client/worker/processor.js +67 -124
  335. package/dist/client/worker/processorHandlers.d.ts +4 -61
  336. package/dist/client/worker/processorHandlers.js +4 -398
  337. package/dist/client/worker/processorOutcome.d.ts +14 -0
  338. package/dist/client/worker/processorOutcome.js +125 -0
  339. package/dist/client/worker/runtime/buffer.d.ts +8 -0
  340. package/dist/client/worker/runtime/buffer.js +50 -0
  341. package/dist/client/worker/runtime/control.d.ts +26 -0
  342. package/dist/client/worker/runtime/control.js +175 -0
  343. package/dist/client/worker/runtime/execution.d.ts +11 -0
  344. package/dist/client/worker/runtime/execution.js +123 -0
  345. package/dist/client/worker/runtime/lifecycle.d.ts +7 -0
  346. package/dist/client/worker/runtime/lifecycle.js +114 -0
  347. package/dist/client/worker/runtime/manual.d.ts +10 -0
  348. package/dist/client/worker/runtime/manual.js +137 -0
  349. package/dist/client/worker/runtime/options.d.ts +5 -0
  350. package/dist/client/worker/runtime/options.js +39 -0
  351. package/dist/client/worker/runtime/polling.d.ts +12 -0
  352. package/dist/client/worker/runtime/polling.js +123 -0
  353. package/dist/client/worker/runtime/state.d.ts +110 -0
  354. package/dist/client/worker/runtime/state.js +156 -0
  355. package/dist/client/worker/types/index.d.ts +5 -0
  356. package/dist/client/worker/types/index.js +1 -0
  357. package/dist/client/worker/types/manual.d.ts +7 -0
  358. package/dist/client/worker/types/manual.js +1 -0
  359. package/dist/client/worker/types/options.d.ts +24 -0
  360. package/dist/client/worker/types/options.js +1 -0
  361. package/dist/client/worker/types/outcome.d.ts +23 -0
  362. package/dist/client/worker/types/outcome.js +1 -0
  363. package/dist/client/worker/types/processor.d.ts +22 -0
  364. package/dist/client/worker/types/processor.js +1 -0
  365. package/dist/client/worker/types/transport.d.ts +11 -0
  366. package/dist/client/worker/types/transport.js +1 -0
  367. package/dist/client/worker/worker.d.ts +3 -160
  368. package/dist/client/worker/worker.js +3 -928
  369. package/dist/client/worker/workerRateLimiter.d.ts +5 -1
  370. package/dist/client/worker/workerRateLimiter.js +40 -20
  371. package/dist/client/worker.d.ts +1 -0
  372. package/dist/client/workflow/compensationChild.d.ts +2 -1
  373. package/dist/client/workflow/compensationChild.js +1 -1
  374. package/dist/client/workflow/compensationClaim.d.ts +11 -0
  375. package/dist/client/workflow/compensationClaim.js +30 -0
  376. package/dist/client/workflow/compensator.d.ts +7 -2
  377. package/dist/client/workflow/compensator.js +5 -11
  378. package/dist/client/workflow/recovery.js +25 -2
  379. package/dist/client/workflow/rollbackControl.js +1 -1
  380. package/dist/domain/job/constants.d.ts +12 -0
  381. package/dist/domain/job/constants.js +12 -0
  382. package/dist/domain/job/create.d.ts +2 -0
  383. package/dist/domain/job/create.js +103 -0
  384. package/dist/domain/job/ids.d.ts +5 -0
  385. package/dist/domain/job/ids.js +12 -0
  386. package/dist/domain/job/locks.d.ts +4 -0
  387. package/dist/domain/job/locks.js +23 -0
  388. package/dist/domain/job/payload.d.ts +18 -0
  389. package/dist/domain/job/payload.js +43 -0
  390. package/dist/domain/job/state.d.ts +8 -0
  391. package/dist/domain/job/state.js +51 -0
  392. package/dist/domain/job/terminal.d.ts +3 -0
  393. package/dist/domain/job/terminal.js +9 -0
  394. package/dist/domain/queue/dlqShard.d.ts +2 -0
  395. package/dist/domain/queue/dlqShard.js +34 -9
  396. package/dist/domain/queue/priorityQueue.js +3 -39
  397. package/dist/domain/queue/priorityQueueOrder.d.ts +3 -0
  398. package/dist/domain/queue/priorityQueueOrder.js +21 -0
  399. package/dist/domain/queue/shard/dependencies.d.ts +11 -0
  400. package/dist/domain/queue/shard/dependencies.js +22 -0
  401. package/dist/domain/queue/shard/dlq.d.ts +25 -0
  402. package/dist/domain/queue/shard/dlq.js +71 -0
  403. package/dist/domain/queue/shard/keys.d.ts +18 -0
  404. package/dist/domain/queue/shard/keys.js +45 -0
  405. package/dist/domain/queue/shard/lifecycle.d.ts +10 -0
  406. package/dist/domain/queue/shard/lifecycle.js +43 -0
  407. package/dist/domain/queue/shard/limits.d.ts +24 -0
  408. package/dist/domain/queue/shard/limits.js +57 -0
  409. package/dist/domain/queue/shard/metrics.d.ts +32 -0
  410. package/dist/domain/queue/shard/metrics.js +72 -0
  411. package/dist/domain/queue/shard/state.d.ts +34 -0
  412. package/dist/domain/queue/shard/state.js +80 -0
  413. package/dist/domain/queue/shard.d.ts +5 -145
  414. package/dist/domain/queue/shard.js +4 -409
  415. package/dist/domain/response/builders.d.ts +15 -0
  416. package/dist/domain/response/builders.js +39 -0
  417. package/dist/domain/types/command.d.ts +2 -555
  418. package/dist/domain/types/command.js +2 -5
  419. package/dist/domain/types/commands/base.d.ts +5 -0
  420. package/dist/domain/types/commands/base.js +1 -0
  421. package/dist/domain/types/commands/core.d.ts +106 -0
  422. package/dist/domain/types/commands/core.js +1 -0
  423. package/dist/domain/types/commands/cron.d.ts +36 -0
  424. package/dist/domain/types/commands/cron.js +1 -0
  425. package/dist/domain/types/commands/dashboard.d.ts +13 -0
  426. package/dist/domain/types/commands/dashboard.js +1 -0
  427. package/dist/domain/types/commands/dlq.d.ts +39 -0
  428. package/dist/domain/types/commands/dlq.js +1 -0
  429. package/dist/domain/types/commands/extended.d.ts +63 -0
  430. package/dist/domain/types/commands/extended.js +1 -0
  431. package/dist/domain/types/commands/index.d.ts +12 -0
  432. package/dist/domain/types/commands/index.js +12 -0
  433. package/dist/domain/types/commands/limits.d.ts +54 -0
  434. package/dist/domain/types/commands/limits.js +1 -0
  435. package/dist/domain/types/commands/management.d.ts +73 -0
  436. package/dist/domain/types/commands/management.js +1 -0
  437. package/dist/domain/types/commands/monitoring.d.ts +49 -0
  438. package/dist/domain/types/commands/monitoring.js +1 -0
  439. package/dist/domain/types/commands/protocol.d.ts +20 -0
  440. package/dist/domain/types/commands/protocol.js +1 -0
  441. package/dist/domain/types/commands/query.d.ts +46 -0
  442. package/dist/domain/types/commands/query.js +1 -0
  443. package/dist/domain/types/commands/union.d.ts +13 -0
  444. package/dist/domain/types/commands/union.js +1 -0
  445. package/dist/domain/types/commands/workers.d.ts +39 -0
  446. package/dist/domain/types/commands/workers.js +1 -0
  447. package/dist/domain/types/cron.d.ts +4 -2
  448. package/dist/domain/types/cron.js +3 -0
  449. package/dist/domain/types/dlq.d.ts +17 -0
  450. package/dist/domain/types/dlq.js +70 -14
  451. package/dist/domain/types/index.d.ts +2 -0
  452. package/dist/domain/types/index.js +1 -0
  453. package/dist/domain/types/job.d.ts +8 -269
  454. package/dist/domain/types/job.js +8 -234
  455. package/dist/domain/types/jobs/model.d.ts +152 -0
  456. package/dist/domain/types/jobs/model.js +1 -0
  457. package/dist/domain/types/metrics.d.ts +16 -0
  458. package/dist/domain/types/metrics.js +1 -0
  459. package/dist/domain/types/priorityQueue.d.ts +12 -0
  460. package/dist/domain/types/priorityQueue.js +1 -0
  461. package/dist/domain/types/protocol.d.ts +5 -0
  462. package/dist/domain/types/protocol.js +4 -0
  463. package/dist/domain/types/queue.d.ts +2 -0
  464. package/dist/domain/types/response.d.ts +3 -192
  465. package/dist/domain/types/response.js +3 -101
  466. package/dist/domain/types/responses/model.d.ts +152 -0
  467. package/dist/domain/types/responses/model.js +1 -0
  468. package/dist/domain/types/shard.d.ts +4 -0
  469. package/dist/domain/types/shard.js +1 -0
  470. package/dist/infrastructure/cloud/cloudAgent.js +6 -0
  471. package/dist/infrastructure/cloud/commandHandler.d.ts +2 -41
  472. package/dist/infrastructure/cloud/commandHandler.js +1 -1
  473. package/dist/infrastructure/cloud/commands/integrations.d.ts +2 -0
  474. package/dist/infrastructure/cloud/commands/integrations.js +31 -0
  475. package/dist/infrastructure/cloud/commands/jobMapper.d.ts +56 -0
  476. package/dist/infrastructure/cloud/commands/jobMapper.js +72 -0
  477. package/dist/infrastructure/cloud/commands/jobs.d.ts +2 -0
  478. package/dist/infrastructure/cloud/commands/jobs.js +111 -0
  479. package/dist/infrastructure/cloud/commands/queues.d.ts +2 -0
  480. package/dist/infrastructure/cloud/commands/queues.js +126 -0
  481. package/dist/infrastructure/cloud/commands.d.ts +3 -10
  482. package/dist/infrastructure/cloud/commands.js +7 -344
  483. package/dist/infrastructure/cloud/snapshot/analytics.d.ts +16 -0
  484. package/dist/infrastructure/cloud/snapshot/analytics.js +132 -0
  485. package/dist/infrastructure/cloud/snapshot/collector.d.ts +24 -0
  486. package/dist/infrastructure/cloud/snapshot/collector.js +105 -0
  487. package/dist/infrastructure/cloud/snapshot/config.d.ts +5 -0
  488. package/dist/infrastructure/cloud/snapshot/config.js +86 -0
  489. package/dist/infrastructure/cloud/snapshot/jobs.d.ts +5 -0
  490. package/dist/infrastructure/cloud/snapshot/jobs.js +148 -0
  491. package/dist/infrastructure/cloud/snapshot/stalls.d.ts +3 -0
  492. package/dist/infrastructure/cloud/snapshot/stalls.js +34 -0
  493. package/dist/infrastructure/cloud/snapshotCollector.d.ts +2 -53
  494. package/dist/infrastructure/cloud/snapshotCollector.js +5 -107
  495. package/dist/infrastructure/cloud/snapshotHelpers.d.ts +5 -45
  496. package/dist/infrastructure/cloud/snapshotHelpers.js +4 -426
  497. package/dist/infrastructure/cloud/types/collector.d.ts +54 -0
  498. package/dist/infrastructure/cloud/types/collector.js +1 -0
  499. package/dist/infrastructure/cloud/types/command.d.ts +44 -0
  500. package/dist/infrastructure/cloud/types/command.js +1 -0
  501. package/dist/infrastructure/cloud/types/config.d.ts +18 -0
  502. package/dist/infrastructure/cloud/types/config.js +1 -0
  503. package/dist/infrastructure/cloud/types/event.d.ts +14 -0
  504. package/dist/infrastructure/cloud/types/event.js +1 -0
  505. package/dist/infrastructure/cloud/types/redact.d.ts +4 -0
  506. package/dist/infrastructure/cloud/types/redact.js +1 -0
  507. package/dist/infrastructure/cloud/types/snapshot.d.ts +52 -0
  508. package/dist/infrastructure/cloud/types/snapshot.js +1 -0
  509. package/dist/infrastructure/cloud/types/snapshotCore.d.ts +125 -0
  510. package/dist/infrastructure/cloud/types/snapshotCore.js +1 -0
  511. package/dist/infrastructure/cloud/types/snapshotJobs.d.ts +124 -0
  512. package/dist/infrastructure/cloud/types/snapshotJobs.js +1 -0
  513. package/dist/infrastructure/cloud/types/snapshotTelemetry.d.ts +100 -0
  514. package/dist/infrastructure/cloud/types/snapshotTelemetry.js +1 -0
  515. package/dist/infrastructure/cloud/types.d.ts +3 -445
  516. package/dist/infrastructure/cloud/types.js +0 -4
  517. package/dist/infrastructure/persistence/batchInsert.d.ts +13 -0
  518. package/dist/infrastructure/persistence/batchInsert.js +96 -0
  519. package/dist/infrastructure/persistence/jobOptionsBlob.d.ts +18 -0
  520. package/dist/infrastructure/persistence/jobOptionsBlob.js +56 -0
  521. package/dist/infrastructure/persistence/legacyNameMigration.d.ts +5 -0
  522. package/dist/infrastructure/persistence/legacyNameMigration.js +42 -0
  523. package/dist/infrastructure/persistence/migrations.d.ts +3 -0
  524. package/dist/infrastructure/persistence/migrations.js +120 -0
  525. package/dist/infrastructure/persistence/schema.d.ts +3 -5
  526. package/dist/infrastructure/persistence/schema.js +40 -136
  527. package/dist/infrastructure/persistence/sqlite/admission.d.ts +9 -0
  528. package/dist/infrastructure/persistence/sqlite/admission.js +34 -0
  529. package/dist/infrastructure/persistence/sqlite/control.d.ts +32 -0
  530. package/dist/infrastructure/persistence/sqlite/control.js +90 -0
  531. package/dist/infrastructure/persistence/sqlite/flows.d.ts +26 -0
  532. package/dist/infrastructure/persistence/sqlite/flows.js +167 -0
  533. package/dist/infrastructure/persistence/sqlite/jobs.d.ts +23 -0
  534. package/dist/infrastructure/persistence/sqlite/jobs.js +166 -0
  535. package/dist/infrastructure/persistence/sqlite/lifecycle.d.ts +6 -0
  536. package/dist/infrastructure/persistence/sqlite/lifecycle.js +30 -0
  537. package/dist/infrastructure/persistence/sqlite/mutations.d.ts +20 -0
  538. package/dist/infrastructure/persistence/sqlite/mutations.js +149 -0
  539. package/dist/infrastructure/persistence/sqlite/queries.d.ts +23 -0
  540. package/dist/infrastructure/persistence/sqlite/queries.js +89 -0
  541. package/dist/infrastructure/persistence/sqlite/records.d.ts +24 -0
  542. package/dist/infrastructure/persistence/sqlite/records.js +115 -0
  543. package/dist/infrastructure/persistence/sqlite/state.d.ts +36 -0
  544. package/dist/infrastructure/persistence/sqlite/state.js +207 -0
  545. package/dist/infrastructure/persistence/sqlite/telemetry.d.ts +16 -0
  546. package/dist/infrastructure/persistence/sqlite/telemetry.js +126 -0
  547. package/dist/infrastructure/persistence/sqlite.d.ts +5 -280
  548. package/dist/infrastructure/persistence/sqlite.js +3 -1013
  549. package/dist/infrastructure/persistence/sqliteBatch.d.ts +4 -121
  550. package/dist/infrastructure/persistence/sqliteBatch.js +3 -422
  551. package/dist/infrastructure/persistence/sqliteSerializer.d.ts +6 -1
  552. package/dist/infrastructure/persistence/sqliteSerializer.js +33 -11
  553. package/dist/infrastructure/persistence/statements.d.ts +5 -1
  554. package/dist/infrastructure/persistence/statements.js +14 -9
  555. package/dist/infrastructure/persistence/types/admission.d.ts +8 -0
  556. package/dist/infrastructure/persistence/types/admission.js +1 -0
  557. package/dist/infrastructure/persistence/types/batch.d.ts +12 -0
  558. package/dist/infrastructure/persistence/types/batch.js +1 -0
  559. package/dist/infrastructure/persistence/types/sqlite.d.ts +17 -0
  560. package/dist/infrastructure/persistence/types/sqlite.js +1 -0
  561. package/dist/infrastructure/persistence/writeBuffer.d.ts +38 -0
  562. package/dist/infrastructure/persistence/writeBuffer.js +221 -0
  563. package/dist/infrastructure/scheduler/cron/execution.d.ts +12 -0
  564. package/dist/infrastructure/scheduler/cron/execution.js +150 -0
  565. package/dist/infrastructure/scheduler/cron/runtime.d.ts +31 -0
  566. package/dist/infrastructure/scheduler/cron/runtime.js +143 -0
  567. package/dist/infrastructure/scheduler/cronScheduler.d.ts +4 -117
  568. package/dist/infrastructure/scheduler/cronScheduler.js +3 -436
  569. package/dist/infrastructure/scheduler/types/cronScheduler.d.ts +16 -0
  570. package/dist/infrastructure/scheduler/types/cronScheduler.js +1 -0
  571. package/dist/infrastructure/server/bootstrap.js +3 -0
  572. package/dist/infrastructure/server/handler-routes/control.d.ts +8 -0
  573. package/dist/infrastructure/server/handler-routes/control.js +82 -0
  574. package/dist/infrastructure/server/handler-routes/jobs.d.ts +6 -0
  575. package/dist/infrastructure/server/handler-routes/jobs.js +110 -0
  576. package/dist/infrastructure/server/handler-routes/monitoring.d.ts +5 -0
  577. package/dist/infrastructure/server/handler-routes/monitoring.js +65 -0
  578. package/dist/infrastructure/server/handlerRoutes.d.ts +3 -26
  579. package/dist/infrastructure/server/handlerRoutes.js +3 -270
  580. package/dist/infrastructure/server/handlers/advanced/configNumbers.d.ts +2 -0
  581. package/dist/infrastructure/server/handlers/advanced/configNumbers.js +26 -0
  582. package/dist/infrastructure/server/handlers/advanced/dependencies.d.ts +15 -0
  583. package/dist/infrastructure/server/handlers/advanced/dependencies.js +38 -0
  584. package/dist/infrastructure/server/handlers/advanced/jobs.d.ts +33 -0
  585. package/dist/infrastructure/server/handlers/advanced/jobs.js +136 -0
  586. package/dist/infrastructure/server/handlers/advanced/queue.d.ts +42 -0
  587. package/dist/infrastructure/server/handlers/advanced/queue.js +111 -0
  588. package/dist/infrastructure/server/handlers/advanced.d.ts +3 -121
  589. package/dist/infrastructure/server/handlers/advanced.js +3 -336
  590. package/dist/infrastructure/server/handlers/core.d.ts +1 -4
  591. package/dist/infrastructure/server/handlers/core.js +37 -20
  592. package/dist/infrastructure/server/handlers/cron.js +9 -1
  593. package/dist/infrastructure/server/handlers/flow.js +6 -1
  594. package/dist/infrastructure/server/handlers/introspection.js +1 -1
  595. package/dist/infrastructure/server/handlers/management.d.ts +8 -0
  596. package/dist/infrastructure/server/handlers/management.js +30 -0
  597. package/dist/infrastructure/server/handlers/monitoring/health.d.ts +13 -0
  598. package/dist/infrastructure/server/handlers/monitoring/health.js +61 -0
  599. package/dist/infrastructure/server/handlers/monitoring/operations.d.ts +8 -0
  600. package/dist/infrastructure/server/handlers/monitoring/operations.js +28 -0
  601. package/dist/infrastructure/server/handlers/monitoring/webhooks.d.ts +7 -0
  602. package/dist/infrastructure/server/handlers/monitoring/webhooks.js +56 -0
  603. package/dist/infrastructure/server/handlers/monitoring/workers.d.ts +6 -0
  604. package/dist/infrastructure/server/handlers/monitoring/workers.js +57 -0
  605. package/dist/infrastructure/server/handlers/monitoring.d.ts +4 -30
  606. package/dist/infrastructure/server/handlers/monitoring.js +4 -222
  607. package/dist/infrastructure/server/handlers/pushBatchValidation.d.ts +1 -1
  608. package/dist/infrastructure/server/handlers/pushBatchValidation.js +7 -0
  609. package/dist/infrastructure/server/handlers/query.js +12 -3
  610. package/dist/infrastructure/server/http-routes/jobAdvanced.d.ts +2 -0
  611. package/dist/infrastructure/server/http-routes/jobAdvanced.js +106 -0
  612. package/dist/infrastructure/server/http-routes/jobManagement.d.ts +2 -0
  613. package/dist/infrastructure/server/http-routes/jobManagement.js +74 -0
  614. package/dist/infrastructure/server/http-routes/queueJobs.d.ts +2 -0
  615. package/dist/infrastructure/server/http-routes/queueJobs.js +108 -0
  616. package/dist/infrastructure/server/httpRouteJobs.d.ts +1 -8
  617. package/dist/infrastructure/server/httpRouteJobs.js +33 -222
  618. package/dist/infrastructure/server/httpRouteQueues.d.ts +1 -6
  619. package/dist/infrastructure/server/httpRouteQueues.js +51 -217
  620. package/dist/infrastructure/server/httpRouteResources.js +1 -0
  621. package/dist/infrastructure/server/protocol/commands.d.ts +8 -0
  622. package/dist/infrastructure/server/protocol/commands.js +31 -0
  623. package/dist/infrastructure/server/protocol/frameParser.d.ts +16 -0
  624. package/dist/infrastructure/server/protocol/frameParser.js +65 -0
  625. package/dist/infrastructure/server/protocol/lineBuffer.d.ts +6 -0
  626. package/dist/infrastructure/server/protocol/lineBuffer.js +21 -0
  627. package/dist/infrastructure/server/protocol/validation.d.ts +9 -0
  628. package/dist/infrastructure/server/protocol/validation.js +75 -0
  629. package/dist/infrastructure/server/protocol.d.ts +5 -77
  630. package/dist/infrastructure/server/protocol.js +4 -265
  631. package/dist/infrastructure/server/rateLimiter.js +1 -0
  632. package/dist/infrastructure/server/socketWriteQueue.d.ts +1 -1
  633. package/dist/infrastructure/server/socketWriteQueue.js +8 -5
  634. package/dist/infrastructure/server/sse/constants.d.ts +5 -0
  635. package/dist/infrastructure/server/sse/constants.js +5 -0
  636. package/dist/infrastructure/server/sse/eventBuffer.d.ts +3 -0
  637. package/dist/infrastructure/server/sse/eventBuffer.js +21 -0
  638. package/dist/infrastructure/server/sseHandler.d.ts +2 -6
  639. package/dist/infrastructure/server/sseHandler.js +20 -96
  640. package/dist/infrastructure/server/tcp/clientRelease.d.ts +2 -0
  641. package/dist/infrastructure/server/tcp/clientRelease.js +18 -0
  642. package/dist/infrastructure/server/tcp/connections.d.ts +24 -0
  643. package/dist/infrastructure/server/tcp/connections.js +162 -0
  644. package/dist/infrastructure/server/tcp/constants.d.ts +3 -0
  645. package/dist/infrastructure/server/tcp/constants.js +3 -0
  646. package/dist/infrastructure/server/tcp/eventSubscriptions.d.ts +10 -0
  647. package/dist/infrastructure/server/tcp/eventSubscriptions.js +17 -0
  648. package/dist/infrastructure/server/tcp/responses.d.ts +3 -0
  649. package/dist/infrastructure/server/tcp/responses.js +8 -0
  650. package/dist/infrastructure/server/tcp.d.ts +10 -68
  651. package/dist/infrastructure/server/tcp.js +47 -256
  652. package/dist/infrastructure/server/types/protocol.d.ts +4 -0
  653. package/dist/infrastructure/server/types/protocol.js +1 -0
  654. package/dist/infrastructure/server/types/sse.d.ts +11 -0
  655. package/dist/infrastructure/server/types/sse.js +1 -0
  656. package/dist/infrastructure/server/types/tcpServer.d.ts +25 -0
  657. package/dist/infrastructure/server/types/tcpServer.js +1 -0
  658. package/dist/infrastructure/server/types/ws.d.ts +6 -0
  659. package/dist/infrastructure/server/types/ws.js +1 -0
  660. package/dist/infrastructure/server/ws/constants.d.ts +6 -0
  661. package/dist/infrastructure/server/ws/constants.js +130 -0
  662. package/dist/infrastructure/server/ws/snapshots.d.ts +4 -0
  663. package/dist/infrastructure/server/ws/snapshots.js +52 -0
  664. package/dist/infrastructure/server/ws/subscriptions.d.ts +10 -0
  665. package/dist/infrastructure/server/ws/subscriptions.js +39 -0
  666. package/dist/infrastructure/server/wsHandler.d.ts +2 -10
  667. package/dist/infrastructure/server/wsHandler.js +12 -237
  668. package/dist/mcp/adapter.d.ts +5 -403
  669. package/dist/mcp/adapter.js +6 -778
  670. package/dist/mcp/backend/embedded/base.d.ts +7 -0
  671. package/dist/mcp/backend/embedded/base.js +15 -0
  672. package/dist/mcp/backend/embedded/index.d.ts +14 -0
  673. package/dist/mcp/backend/embedded/index.js +22 -0
  674. package/dist/mcp/backend/embedded/jobs.d.ts +44 -0
  675. package/dist/mcp/backend/embedded/jobs.js +98 -0
  676. package/dist/mcp/backend/embedded/queues.d.ts +27 -0
  677. package/dist/mcp/backend/embedded/queues.js +84 -0
  678. package/dist/mcp/backend/embedded/services.d.ts +29 -0
  679. package/dist/mcp/backend/embedded/services.js +107 -0
  680. package/dist/mcp/backend/serializers.d.ts +7 -0
  681. package/dist/mcp/backend/serializers.js +32 -0
  682. package/dist/mcp/backend/tcp/base.d.ts +19 -0
  683. package/dist/mcp/backend/tcp/base.js +54 -0
  684. package/dist/mcp/backend/tcp/index.d.ts +14 -0
  685. package/dist/mcp/backend/tcp/index.js +20 -0
  686. package/dist/mcp/backend/tcp/jobs.d.ts +44 -0
  687. package/dist/mcp/backend/tcp/jobs.js +122 -0
  688. package/dist/mcp/backend/tcp/queues.d.ts +27 -0
  689. package/dist/mcp/backend/tcp/queues.js +89 -0
  690. package/dist/mcp/backend/tcp/services.d.ts +30 -0
  691. package/dist/mcp/backend/tcp/services.js +161 -0
  692. package/dist/mcp/types/adapter.d.ts +176 -0
  693. package/dist/mcp/types/adapter.js +1 -0
  694. package/dist/shared/asyncLock.d.ts +13 -0
  695. package/dist/shared/asyncLock.js +65 -0
  696. package/dist/shared/lock.d.ts +10 -72
  697. package/dist/shared/lock.js +7 -231
  698. package/dist/shared/lockError.d.ts +3 -0
  699. package/dist/shared/lockError.js +6 -0
  700. package/dist/shared/lockTimeout.d.ts +2 -0
  701. package/dist/shared/lockTimeout.js +2 -0
  702. package/dist/shared/rwLock.d.ts +22 -0
  703. package/dist/shared/rwLock.js +124 -0
  704. package/dist/shared/serialization.js +1 -0
  705. package/dist/shared/skipList.d.ts +0 -5
  706. package/dist/shared/skipList.js +10 -57
  707. package/dist/shared/skipListNodes.d.ts +6 -0
  708. package/dist/shared/skipListNodes.js +43 -0
  709. package/dist/shared/types/lock.d.ts +7 -0
  710. package/dist/shared/types/lock.js +1 -0
  711. package/dist/shared/types/skipList.d.ts +4 -0
  712. package/dist/shared/types/skipList.js +1 -0
  713. package/package.json +2 -1
  714. package/dist/application/types.d.ts +0 -148
  715. package/dist/client/sandboxed/types.d.ts +0 -79
  716. package/dist/client/sandboxed/types.js +0 -5
  717. package/dist/client/worker/types.d.ts +0 -50
  718. /package/dist/client/queue/{queueTypes.js → types/contexts.js} +0 -0
@@ -1,403 +1,15 @@
1
- /**
2
- * CLI Output Formatting
3
- * Formats command responses for terminal display
4
- */
5
- /** ANSI color codes */
6
- const colors = {
7
- reset: '\x1b[0m',
8
- bold: '\x1b[1m',
9
- dim: '\x1b[2m',
10
- red: '\x1b[31m',
11
- green: '\x1b[32m',
12
- yellow: '\x1b[33m',
13
- blue: '\x1b[34m',
14
- cyan: '\x1b[36m',
15
- };
16
- /** Check if colors are supported */
17
- const supportsColor = process.stdout.isTTY && Bun.env.NO_COLOR !== '1';
18
- /** Apply color if supported */
19
- function color(text, colorCode) {
20
- return supportsColor ? `${colorCode}${text}${colors.reset}` : text;
21
- }
22
- /** Safely convert unknown value to string */
23
- function str(value, fallback = '') {
24
- if (value === null || value === undefined)
25
- return fallback;
26
- if (typeof value === 'string')
27
- return value;
28
- if (typeof value === 'object')
29
- return JSON.stringify(value);
30
- // value is narrowed to number | boolean | bigint | symbol | function — all have a defined toString.
31
- return value.toString();
32
- }
33
- /**
34
- * Derive a job's state from its fields when not explicitly provided.
35
- * The server-side Job domain object doesn't carry an explicit `state` field
36
- * (state is tracked separately in jobIndex), so responses like PULL omit it.
37
- *
38
- * Used only as a display fallback when the response includes a Job object
39
- * but no explicit state. Conservative: errs toward 'unknown' rather than
40
- * guessing 'active' for a job that may actually be in DLQ/failed/stalled.
41
- * - explicit state field present → use it
42
- * - completedAt → completed
43
- * - attempts >= maxAttempts && no completedAt → likely failed / DLQ → unknown
44
- * - startedAt && !completedAt → likely active, but not certain → unknown
45
- * for the most common pull-response case the caller (PULL) knows it's
46
- * active and will pass `state` explicitly in future iterations
47
- * - runAt > now → delayed
48
- * - else → waiting
49
- */
50
- function deriveJobState(job) {
51
- if (typeof job.state === 'string' && job.state.length > 0)
52
- return job.state;
53
- const completedAt = typeof job.completedAt === 'number' ? job.completedAt : 0;
54
- const startedAt = typeof job.startedAt === 'number' ? job.startedAt : 0;
55
- const attempts = typeof job.attempts === 'number' ? job.attempts : 0;
56
- const maxAttempts = typeof job.maxAttempts === 'number' ? job.maxAttempts : 0;
57
- const runAt = typeof job.runAt === 'number' ? job.runAt : 0;
58
- if (completedAt > 0)
59
- return 'completed';
60
- // A job whose retries are exhausted with no completion is in DLQ. We can't
61
- // tell from timestamps alone whether it's there or merely retrying, so
62
- // surface 'unknown' rather than confidently print 'active'.
63
- if (maxAttempts > 0 && attempts >= maxAttempts && startedAt > 0)
64
- return 'unknown';
65
- if (startedAt > 0)
66
- return 'active';
67
- if (runAt > Date.now())
68
- return 'delayed';
69
- // If we have zero signal at all (no timestamps, no state), fall back to
70
- // 'unknown' rather than confidently print 'waiting'. Real responses from
71
- // the server include a `runAt` (set at push time), so 'waiting' inference
72
- // still triggers for real waiting jobs.
73
- if (runAt === 0 && startedAt === 0 && completedAt === 0)
74
- return 'unknown';
75
- return 'waiting';
76
- }
77
- /** Format a job object for display */
78
- function formatJob(job) {
79
- const lines = [
80
- `${color('Job:', colors.bold)} ${str(job.id)}`,
81
- ` Queue: ${str(job.queue)}`,
82
- ` State: ${deriveJobState(job)}`,
83
- ` Priority: ${str(job.priority)}`,
84
- ` Attempts: ${str(job.attempts)}/${str(job.maxAttempts)}`,
85
- ` Data: ${JSON.stringify(job.data)}`,
86
- ];
87
- if (job.progress !== undefined && job.progress !== 0) {
88
- lines.push(` Progress: ${str(job.progress)}%`);
89
- }
90
- if (job.createdAt) {
91
- lines.push(` Created: ${new Date(job.createdAt).toISOString()}`);
92
- }
93
- if (job.startedAt) {
94
- lines.push(` Started: ${new Date(job.startedAt).toISOString()}`);
95
- }
96
- if (job.error) {
97
- lines.push(` Error: ${color(str(job.error), colors.red)}`);
98
- }
99
- return lines.join('\n');
100
- }
101
- /** Pad string to width accounting for ANSI codes */
102
- function pad(text, width) {
103
- const visualWidth = Bun.stringWidth(text);
104
- const padding = Math.max(0, width - visualWidth);
105
- return text + ' '.repeat(padding);
106
- }
107
- /** Format jobs as a table */
108
- function formatJobsTable(jobs) {
109
- if (jobs.length === 0) {
110
- return color('No jobs found', colors.yellow);
111
- }
112
- const header = [
113
- pad(color('ID', colors.bold), 20),
114
- pad(color('Queue', colors.bold), 15),
115
- pad(color('State', colors.bold), 12),
116
- pad(color('Priority', colors.bold), 10),
117
- color('Attempts', colors.bold),
118
- ].join(' ');
119
- const rows = jobs.map((job) => [
120
- pad(str(job.id), 20),
121
- pad(str(job.queue), 15),
122
- pad(str(job.state, '-'), 12),
123
- pad(str(job.priority), 10),
124
- `${str(job.attempts)}/${str(job.maxAttempts)}`,
125
- ].join(' '));
126
- return [header, '-'.repeat(75), ...rows].join('\n');
127
- }
128
- /** Format stats object */
129
- function formatStats(stats) {
130
- const lines = [
131
- color('Server Statistics:', colors.bold),
132
- '',
133
- ` ${color('Waiting:', colors.cyan)} ${str(stats.waiting, '0')}`,
134
- ` ${color('Active:', colors.green)} ${str(stats.active, '0')}`,
135
- ` ${color('Delayed:', colors.yellow)} ${str(stats.delayed, '0')}`,
136
- ` ${color('Completed:', colors.dim)} ${str(stats.completed, '0')}`,
137
- ` ${color('Failed:', colors.red)} ${str(stats.failed, '0')}`,
138
- ` ${color('DLQ:', colors.red)} ${str(stats.dlq, '0')}`,
139
- ];
140
- if (stats.totalPushed !== undefined) {
141
- lines.push('', ` Total Pushed: ${str(stats.totalPushed)}`);
142
- lines.push(` Total Pulled: ${str(stats.totalPulled)}`);
143
- lines.push(` Total Completed: ${str(stats.totalCompleted)}`);
144
- lines.push(` Total Failed: ${str(stats.totalFailed)}`);
145
- }
146
- if (stats.uptime !== undefined) {
147
- const uptimeSeconds = typeof stats.uptime === 'number' ? Math.floor(stats.uptime / 1000) : stats.uptime;
148
- lines.push('', ` ${color('Uptime:', colors.cyan)} ${str(uptimeSeconds)}s`);
149
- }
150
- if (stats.pushPerSec !== undefined) {
151
- lines.push(` Push/sec: ${str(stats.pushPerSec)}`);
152
- }
153
- if (stats.pullPerSec !== undefined) {
154
- lines.push(` Pull/sec: ${str(stats.pullPerSec)}`);
155
- }
156
- return lines.join('\n');
157
- }
158
- /** Format counts object */
159
- function formatCounts(counts) {
160
- return Object.entries(counts)
161
- .map(([key, value]) => ` ${key}: ${value}`)
162
- .join('\n');
163
- }
164
- /** Format queues list */
165
- function formatQueues(queues) {
166
- if (queues.length === 0) {
167
- return color('No queues found', colors.yellow);
168
- }
169
- return queues.map((q) => ` - ${q}`).join('\n');
170
- }
171
- /** Format cron jobs */
172
- function formatCronJobs(jobs) {
173
- if (jobs.length === 0) {
174
- return color('No cron jobs found', colors.yellow);
175
- }
176
- const lines = jobs.map((job) => {
177
- const schedule = job.schedule !== null && job.schedule !== undefined
178
- ? str(job.schedule)
179
- : `every ${str(job.repeatEvery)}ms`;
180
- let out = ` ${color(str(job.name), colors.bold)}\n Queue: ${str(job.queue)}\n Schedule: ${schedule}\n Executions: ${str(job.executions)}`;
181
- if (typeof job.nextRun === 'number') {
182
- out += `\n Next run: ${new Date(job.nextRun).toISOString()}`;
183
- }
184
- if (job.maxLimit !== null && job.maxLimit !== undefined) {
185
- out += `\n Max: ${str(job.maxLimit)}`;
186
- }
187
- if (job.timezone !== null && job.timezone !== undefined) {
188
- out += `\n Timezone: ${str(job.timezone)}`;
189
- }
190
- return out;
191
- });
192
- return lines.join('\n\n');
193
- }
194
- /** Format workers list */
195
- function formatWorkers(workers) {
196
- if (workers.length === 0) {
197
- return color('No workers registered', colors.yellow);
198
- }
199
- return workers
200
- .map((w) => {
201
- const queues = Array.isArray(w.queues) ? w.queues.join(', ') : 'none';
202
- // status matters operationally: a stale worker must be visible
203
- const status = w.status === 'stale'
204
- ? color('[stale]', colors.red)
205
- : w.status !== undefined
206
- ? color(`[${str(w.status)}]`, colors.green)
207
- : '';
208
- const extra = [];
209
- if (w.concurrency !== undefined)
210
- extra.push(`concurrency=${str(w.concurrency)}`);
211
- if (w.activeJobs !== undefined)
212
- extra.push(`active=${str(w.activeJobs)}`);
213
- if (w.processedJobs !== undefined) {
214
- extra.push(`processed=${str(w.processedJobs)}/failed=${str(w.failedJobs, '0')}`);
215
- }
216
- const extraStr = extra.length > 0 ? `\n ${extra.join(' ')}` : '';
217
- return ` ${color(str(w.id), colors.bold)}: ${str(w.name)} ${status} (${queues})${extraStr}`;
218
- })
219
- .join('\n');
220
- }
221
- /** Format webhooks list */
222
- function formatWebhooks(webhooks) {
223
- if (webhooks.length === 0) {
224
- return color('No webhooks registered', colors.yellow);
225
- }
226
- return webhooks
227
- .map((w) => {
228
- const events = Array.isArray(w.events) ? w.events.join(', ') : 'none';
229
- const enabled = w.enabled === false ? ` ${color('[disabled]', colors.yellow)}` : '';
230
- const queue = w.queue !== null && w.queue !== undefined ? `\n Queue: ${str(w.queue)}` : '';
231
- const counters = w.successCount !== undefined || w.failureCount !== undefined
232
- ? `\n Delivered: ${str(w.successCount, '0')} ok / ${str(w.failureCount, '0')} failed`
233
- : '';
234
- return ` ${color(str(w.id), colors.bold)}: ${str(w.url)}${enabled}\n Events: ${events}${queue}${counters}`;
235
- })
236
- .join('\n\n');
237
- }
238
- /** Format DLQ jobs */
239
- function formatDlqJobs(jobs) {
240
- if (jobs.length === 0) {
241
- return color('DLQ is empty', colors.green);
242
- }
243
- return jobs
244
- .map((job) => {
245
- const id = str(job.jobId ?? job.id);
246
- const failedAt = job.failedAt !== null && job.failedAt !== undefined
247
- ? new Date(job.failedAt).toISOString()
248
- : job.createdAt
249
- ? new Date(job.createdAt).toISOString()
250
- : 'unknown';
251
- return ` ${color(id, colors.bold)}\n Queue: ${str(job.queue)}\n Error: ${color(str(job.error, 'Unknown'), colors.red)}\n Failed: ${failedAt}`;
252
- })
253
- .join('\n\n');
254
- }
255
- /** Format logs */
256
- function formatLogs(logs) {
257
- if (logs.length === 0) {
258
- return color('No logs found', colors.yellow);
259
- }
260
- return logs
261
- .map((log) => {
262
- const levelColor = log.level === 'error' ? colors.red : log.level === 'warn' ? colors.yellow : colors.dim;
263
- return ` [${log.timestamp !== null && log.timestamp !== undefined ? new Date(log.timestamp).toISOString() : 'unknown'}] ${color(str(log.level).toUpperCase(), levelColor)}: ${str(log.message)}`;
264
- })
265
- .join('\n');
266
- }
267
- /** Unwrap response data - server may nest content in 'data' wrapper */
268
- function unwrap(response) {
269
- if ('data' in response &&
270
- response.data &&
271
- typeof response.data === 'object' &&
272
- !Array.isArray(response.data)) {
273
- return { ...response, ...response.data };
274
- }
275
- return response;
276
- }
277
- /** Try to format collection-type responses (jobs, workers, webhooks, crons, etc.) */
278
- function formatCollection(r, command) {
279
- if ('job' in r) {
280
- return r.job === null
281
- ? color('No job available', colors.yellow)
282
- : formatJob(r.job);
283
- }
284
- if ('jobs' in r && Array.isArray(r.jobs)) {
285
- return command === 'dlq'
286
- ? formatDlqJobs(r.jobs)
287
- : formatJobsTable(r.jobs);
288
- }
289
- // Workers/webhooks before stats (their responses also contain stats)
290
- if ('workers' in r && Array.isArray(r.workers)) {
291
- return formatWorkers(r.workers);
292
- }
293
- if ('webhooks' in r && Array.isArray(r.webhooks)) {
294
- return formatWebhooks(r.webhooks);
295
- }
296
- if ('crons' in r && Array.isArray(r.crons)) {
297
- return formatCronJobs(r.crons);
298
- }
299
- if ('cronJobs' in r && Array.isArray(r.cronJobs)) {
300
- return formatCronJobs(r.cronJobs);
301
- }
302
- if ('dlqJobs' in r && Array.isArray(r.dlqJobs)) {
303
- return formatDlqJobs(r.dlqJobs);
304
- }
305
- if ('logs' in r && Array.isArray(r.logs)) {
306
- return formatLogs(r.logs);
307
- }
308
- if ('stats' in r && typeof r.stats === 'object' && !Array.isArray(r.stats)) {
309
- return formatStats(r.stats);
310
- }
311
- if ('counts' in r) {
312
- return formatCounts(r.counts);
313
- }
314
- if ('queues' in r && Array.isArray(r.queues) && !('workerId' in r)) {
315
- return formatQueues(r.queues);
316
- }
317
- return null;
318
- }
319
- /** Format a successful response based on its content */
320
- function formatSuccess(response, command, subcommand) {
321
- // Unwrap nested data wrapper (server wraps workers, webhooks, logs, metrics in {data: {...}})
322
- const r = unwrap(response);
323
- // Job created
324
- if ('id' in r && typeof r.id === 'string' && command === 'push') {
325
- return color(`Job created: ${r.id}`, colors.green);
326
- }
327
- // Batch jobs IDs returned. Wording depends on command + subcommand.
328
- if ('ids' in r && Array.isArray(r.ids)) {
329
- const n = r.ids.length;
330
- const idsStr = r.ids.join(', ');
331
- let verb = 'Affected';
332
- if (command === 'push')
333
- verb = 'Created';
334
- else if (command === 'queue') {
335
- verb = subcommand === 'drain' ? 'Drained' : 'Cleaned';
336
- }
337
- else if (command === 'dlq') {
338
- verb = subcommand === 'retry' ? 'Retried' : subcommand === 'purge' ? 'Purged' : 'Affected';
339
- }
340
- return color(`${verb} ${n} jobs${idsStr ? ': ' + idsStr : ''}`, colors.green);
341
- }
342
- // Try collection/list formats
343
- const collection = formatCollection(r, command);
344
- if (collection !== null)
345
- return collection;
346
- // Worker registered
347
- if ('workerId' in r)
348
- return color(`Worker registered: ${str(r.workerId)}`, colors.green);
349
- // Webhook added — show the id, it is needed for `webhook remove`
350
- if ('webhookId' in r)
351
- return color(`Webhook added: ${str(r.webhookId)}`, colors.green);
352
- // Cron scheduled — surface nextRun
353
- if ('cron' in r && r.cron !== null && typeof r.cron === 'object') {
354
- const c = r.cron;
355
- const next = typeof c.nextRun === 'number' ? ` (next run: ${new Date(c.nextRun).toISOString()})` : '';
356
- return color(`Cron scheduled: ${str(c.name)}${next}`, colors.green);
357
- }
358
- // State
359
- if ('state' in r)
360
- return `State: ${str(r.state)}`;
361
- // Result. undefined → no result stored yet (job not completed or removeOnComplete).
362
- if ('result' in r) {
363
- if (r.result === undefined || r.result === null) {
364
- return color('No result available (job not completed or result was removed)', colors.yellow);
365
- }
366
- return `Result: ${JSON.stringify(r.result, null, 2)}`;
367
- }
368
- // Progress
369
- if ('progress' in r) {
370
- const msg = r.message ? ` - ${str(r.message)}` : '';
371
- return `Progress: ${str(r.progress)}%${msg}`;
372
- }
373
- // Paused status
374
- if ('paused' in r) {
375
- return r.paused
376
- ? color('Queue is paused', colors.yellow)
377
- : color('Queue is active', colors.green);
378
- }
379
- // Count
380
- if ('count' in r)
381
- return `Count: ${str(r.count)}`;
382
- // Metrics (Prometheus format)
383
- if ('metrics' in r && typeof r.metrics === 'string')
384
- return r.metrics;
385
- return color('OK', colors.green);
386
- }
387
- /** Main output formatter */
1
+ /** Public CLI output formatting API. */
2
+ import { formatSuccess } from './output/success';
3
+ import { color, colors, stringifyValue } from './output/style';
388
4
  export function formatOutput(response, command, asJson, subcommand) {
389
- if (asJson) {
5
+ if (asJson)
390
6
  return JSON.stringify(response, null, 2);
391
- }
392
- if (!response.ok) {
393
- return formatError(str(response.error, 'Unknown error'), false);
394
- }
7
+ if (!response.ok)
8
+ return formatError(stringifyValue(response.error, 'Unknown error'), false);
395
9
  return formatSuccess(response, command, subcommand);
396
10
  }
397
- /** Format error message */
398
11
  export function formatError(message, asJson) {
399
- if (asJson) {
12
+ if (asJson)
400
13
  return JSON.stringify({ ok: false, error: message });
401
- }
402
14
  return color(`Error: ${message}`, colors.red);
403
15
  }
@@ -8,11 +8,19 @@ export declare class DlqRateLimitManager<T = unknown> {
8
8
  private readonly queue;
9
9
  constructor(queue: Queue<T>);
10
10
  setDlqConfig(config: Partial<DlqConfig>): void;
11
+ setDlqConfigAsync(config: Partial<DlqConfig>): Promise<void>;
11
12
  getDlqConfig(): DlqConfig;
13
+ getDlqConfigAsync(): Promise<DlqConfig>;
12
14
  getDlq(filter?: DlqFilter): DlqEntry<T>[];
15
+ getDlqAsync(filter?: DlqFilter): Promise<DlqEntry<T>[]>;
13
16
  getDlqStats(): DlqStats;
17
+ getDlqStatsAsync(): Promise<DlqStats>;
14
18
  retryDlq(id?: string): number;
19
+ retryDlqAsync(id?: string): Promise<number>;
15
20
  purgeDlq(): number;
21
+ purgeDlqAsync(): Promise<number>;
16
22
  setGlobalRateLimit(max: number, duration?: number): void;
23
+ setGlobalRateLimitAsync(max: number, duration?: number): Promise<void>;
17
24
  removeGlobalRateLimit(): void;
25
+ removeGlobalRateLimitAsync(): Promise<void>;
18
26
  }
@@ -11,26 +11,50 @@ export class DlqRateLimitManager {
11
11
  setDlqConfig(config) {
12
12
  this.queue.setDlqConfig(config);
13
13
  }
14
+ setDlqConfigAsync(config) {
15
+ return this.queue.setDlqConfigAsync(config);
16
+ }
14
17
  getDlqConfig() {
15
18
  return this.queue.getDlqConfig();
16
19
  }
20
+ getDlqConfigAsync() {
21
+ return this.queue.getDlqConfigAsync();
22
+ }
17
23
  getDlq(filter) {
18
24
  return this.queue.getDlq(filter);
19
25
  }
26
+ getDlqAsync(filter) {
27
+ return this.queue.getDlqAsync(filter);
28
+ }
20
29
  getDlqStats() {
21
30
  return this.queue.getDlqStats();
22
31
  }
32
+ getDlqStatsAsync() {
33
+ return this.queue.getDlqStatsAsync();
34
+ }
23
35
  retryDlq(id) {
24
36
  return this.queue.retryDlq(id);
25
37
  }
38
+ retryDlqAsync(id) {
39
+ return this.queue.retryDlqAsync(id);
40
+ }
26
41
  purgeDlq() {
27
42
  return this.queue.purgeDlq();
28
43
  }
44
+ purgeDlqAsync() {
45
+ return this.queue.purgeDlqAsync();
46
+ }
29
47
  // ── Rate Limiting ──
30
48
  setGlobalRateLimit(max, duration) {
31
49
  this.queue.setGlobalRateLimit(max, duration);
32
50
  }
51
+ setGlobalRateLimitAsync(max, duration) {
52
+ return this.queue.setGlobalRateLimitAsync(max, duration);
53
+ }
33
54
  removeGlobalRateLimit() {
34
55
  this.queue.removeGlobalRateLimit();
35
56
  }
57
+ removeGlobalRateLimitAsync() {
58
+ return this.queue.removeGlobalRateLimitAsync();
59
+ }
36
60
  }
@@ -0,0 +1,35 @@
1
+ import { Queue } from '../queue/queue';
2
+ import { Worker } from '../worker/worker';
3
+ import { PriorityAger } from './aging';
4
+ import { BatchAccumulator } from './batch';
5
+ import { CancellationManager } from './cancellation';
6
+ import { WorkerCircuitBreaker } from './circuitBreaker';
7
+ import { DedupDebounceMerger } from './dedupDebounce';
8
+ import { DlqRateLimitManager } from './dlqRateLimit';
9
+ import { TriggerManager } from './triggers';
10
+ import { TtlChecker } from './ttl';
11
+ import type { BunqueueMiddleware, BunqueueOptions } from './types';
12
+ /** Construction and processing pipeline shared by the compact Bunqueue façade. */
13
+ export declare abstract class BunqueueRuntime<T, R> {
14
+ readonly name: string;
15
+ readonly queue: Queue<T>;
16
+ readonly worker: Worker<T, R>;
17
+ private readonly middlewares;
18
+ private readonly baseProcessor;
19
+ protected readonly cb: WorkerCircuitBreaker | null;
20
+ private readonly retryConfig;
21
+ protected readonly triggerMgr: TriggerManager<T, R>;
22
+ protected readonly ager: PriorityAger<T> | null;
23
+ protected readonly cancellation: CancellationManager;
24
+ protected readonly ttlChecker: TtlChecker | null;
25
+ protected readonly batchAcc: BatchAccumulator<T, R> | null;
26
+ protected readonly merger: DedupDebounceMerger;
27
+ protected readonly dlqrl: DlqRateLimitManager<T>;
28
+ constructor(name: string, options: BunqueueOptions<T, R>);
29
+ private buildRouteProcessor;
30
+ private buildQueueOptions;
31
+ private buildWorkerOptions;
32
+ private processJob;
33
+ private runMiddlewareChain;
34
+ use(middleware: BunqueueMiddleware<T, R>): this;
35
+ }
@@ -0,0 +1,138 @@
1
+ import { Queue } from '../queue/queue';
2
+ import { Worker } from '../worker/worker';
3
+ import { PriorityAger } from './aging';
4
+ import { BatchAccumulator } from './batch';
5
+ import { CancellationManager } from './cancellation';
6
+ import { WorkerCircuitBreaker } from './circuitBreaker';
7
+ import { DedupDebounceMerger } from './dedupDebounce';
8
+ import { DlqRateLimitManager } from './dlqRateLimit';
9
+ import { executeWithRetry } from './retry';
10
+ import { TriggerManager } from './triggers';
11
+ import { TtlChecker } from './ttl';
12
+ /** Construction and processing pipeline shared by the compact Bunqueue façade. */
13
+ export class BunqueueRuntime {
14
+ name;
15
+ queue;
16
+ worker;
17
+ middlewares = [];
18
+ baseProcessor;
19
+ cb;
20
+ retryConfig;
21
+ triggerMgr;
22
+ ager;
23
+ cancellation = new CancellationManager();
24
+ ttlChecker;
25
+ batchAcc;
26
+ merger;
27
+ dlqrl;
28
+ constructor(name, options) {
29
+ const modes = [options.processor, options.routes, options.batch].filter(Boolean).length;
30
+ if (modes === 0)
31
+ throw new Error('Bunqueue requires "processor", "routes", or "batch"');
32
+ if (modes > 1)
33
+ throw new Error('Bunqueue: use only one of "processor", "routes", or "batch"');
34
+ this.name = name;
35
+ this.retryConfig = options.retry ?? null;
36
+ this.ttlChecker = options.ttl ? new TtlChecker(options.ttl) : null;
37
+ this.merger = new DedupDebounceMerger(options.deduplication ?? null, options.debounce ?? null);
38
+ if (options.batch) {
39
+ this.batchAcc = new BatchAccumulator(options.batch);
40
+ this.baseProcessor = this.batchAcc.buildProcessor();
41
+ }
42
+ else {
43
+ this.batchAcc = null;
44
+ this.baseProcessor = options.routes
45
+ ? this.buildRouteProcessor(options.routes)
46
+ : options.processor;
47
+ }
48
+ const wrappedProcessor = (job) => this.processJob(job);
49
+ this.queue = new Queue(name, this.buildQueueOptions(options));
50
+ this.worker = new Worker(name, wrappedProcessor, this.buildWorkerOptions(options));
51
+ this.dlqrl = new DlqRateLimitManager(this.queue);
52
+ if (options.dlq)
53
+ this.dlqrl.setDlqConfig(options.dlq);
54
+ this.cb = options.circuitBreaker
55
+ ? new WorkerCircuitBreaker(options.circuitBreaker, this.worker)
56
+ : null;
57
+ this.triggerMgr = new TriggerManager(this.queue, this.worker);
58
+ this.ager = options.priorityAging
59
+ ? new PriorityAger(options.priorityAging, this.queue)
60
+ : null;
61
+ this.ager?.start();
62
+ }
63
+ buildRouteProcessor(routes) {
64
+ const routeMap = routes;
65
+ return (job) => {
66
+ const handler = routeMap[job.name];
67
+ if (!handler)
68
+ throw new Error(`No route for job "${job.name}" in queue "${this.name}"`);
69
+ return handler(job);
70
+ };
71
+ }
72
+ buildQueueOptions(options) {
73
+ return {
74
+ connection: options.connection,
75
+ embedded: options.embedded,
76
+ dataPath: options.dataPath,
77
+ defaultJobOptions: options.defaultJobOptions,
78
+ autoBatch: options.autoBatch,
79
+ prefixKey: options.prefixKey,
80
+ };
81
+ }
82
+ buildWorkerOptions(options) {
83
+ return {
84
+ connection: options.connection,
85
+ embedded: options.embedded,
86
+ dataPath: options.dataPath,
87
+ concurrency: options.concurrency,
88
+ autorun: options.autorun,
89
+ heartbeatInterval: options.heartbeatInterval,
90
+ batchSize: options.batchSize,
91
+ pollTimeout: options.pollTimeout,
92
+ limiter: options.rateLimit ?? options.limiter,
93
+ removeOnComplete: options.removeOnComplete,
94
+ removeOnFail: options.removeOnFail,
95
+ prefixKey: options.prefixKey,
96
+ };
97
+ }
98
+ processJob(job) {
99
+ if (this.cb?.isOpen())
100
+ return Promise.reject(new Error('Circuit breaker is open'));
101
+ if (this.ttlChecker?.isExpired(job.name, job.timestamp)) {
102
+ return Promise.reject(new Error(`Job expired (age: ${Date.now() - job.timestamp}ms)`));
103
+ }
104
+ const abortController = this.cancellation.register(job.id);
105
+ const runChain = () => this.runMiddlewareChain(job, abortController);
106
+ const execution = this.retryConfig ? executeWithRetry(runChain, this.retryConfig) : runChain();
107
+ return execution.then((result) => {
108
+ this.cb?.onSuccess();
109
+ this.cancellation.unregister(job.id);
110
+ return result;
111
+ }, (error) => {
112
+ this.cb?.onFailure();
113
+ this.cancellation.unregister(job.id);
114
+ throw error;
115
+ });
116
+ }
117
+ runMiddlewareChain(job, abortController) {
118
+ const publicJob = job;
119
+ if (this.middlewares.length === 0) {
120
+ const result = this.baseProcessor(job);
121
+ return result instanceof Promise ? result : Promise.resolve(result);
122
+ }
123
+ let index = 0;
124
+ const next = () => {
125
+ if (abortController.signal.aborted)
126
+ return Promise.reject(new Error('Job cancelled'));
127
+ if (index < this.middlewares.length)
128
+ return this.middlewares[index++](publicJob, next);
129
+ const result = this.baseProcessor(job);
130
+ return result instanceof Promise ? result : Promise.resolve(result);
131
+ };
132
+ return next();
133
+ }
134
+ use(middleware) {
135
+ this.middlewares.push(middleware);
136
+ return this;
137
+ }
138
+ }