bunqueue 2.8.54 → 2.8.56

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 (714) 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/config.js +15 -0
  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/types/contexts.d.ts +33 -0
  230. package/dist/client/queue/types/contexts.js +5 -0
  231. package/dist/client/queue/types/index.d.ts +3 -0
  232. package/dist/client/queue/types/index.js +1 -0
  233. package/dist/client/queue/types/job.d.ts +50 -0
  234. package/dist/client/queue/types/job.js +1 -0
  235. package/dist/client/queue/types/runtime.d.ts +35 -0
  236. package/dist/client/queue/types/runtime.js +1 -0
  237. package/dist/client/queue/workers.d.ts +4 -8
  238. package/dist/client/queue/workers.js +22 -14
  239. package/dist/client/queue-events/tcpSubscription.d.ts +23 -0
  240. package/dist/client/queue-events/tcpSubscription.js +99 -0
  241. package/dist/client/sandboxed/queueOps.d.ts +2 -2
  242. package/dist/client/sandboxed/queueOps.js +32 -5
  243. package/dist/client/sandboxed/runtime/dispatch.d.ts +13 -0
  244. package/dist/client/sandboxed/runtime/dispatch.js +186 -0
  245. package/dist/client/sandboxed/runtime/lifecycle.d.ts +20 -0
  246. package/dist/client/sandboxed/runtime/lifecycle.js +95 -0
  247. package/dist/client/sandboxed/runtime/log.d.ts +1 -0
  248. package/dist/client/sandboxed/runtime/log.js +15 -0
  249. package/dist/client/sandboxed/runtime/pool.d.ts +11 -0
  250. package/dist/client/sandboxed/runtime/pool.js +121 -0
  251. package/dist/client/sandboxed/runtime/recovery.d.ts +11 -0
  252. package/dist/client/sandboxed/runtime/recovery.js +122 -0
  253. package/dist/client/sandboxed/runtime/state.d.ts +39 -0
  254. package/dist/client/sandboxed/runtime/state.js +59 -0
  255. package/dist/client/sandboxed/types/index.d.ts +2 -0
  256. package/dist/client/sandboxed/types/index.js +1 -0
  257. package/dist/client/sandboxed/types/options.d.ts +27 -0
  258. package/dist/client/sandboxed/types/options.js +1 -0
  259. package/dist/client/sandboxed/types/process.d.ts +30 -0
  260. package/dist/client/sandboxed/types/process.js +1 -0
  261. package/dist/client/sandboxed/worker.d.ts +3 -85
  262. package/dist/client/sandboxed/worker.js +3 -557
  263. package/dist/client/sandboxed/wrapper.js +1 -0
  264. package/dist/client/tcp/client.d.ts +5 -112
  265. package/dist/client/tcp/client.js +5 -481
  266. package/dist/client/tcp/commandQueue.d.ts +23 -0
  267. package/dist/client/tcp/commandQueue.js +89 -0
  268. package/dist/client/tcp/connection.d.ts +4 -85
  269. package/dist/client/tcp/connection.js +3 -315
  270. package/dist/client/tcp/errors.d.ts +6 -0
  271. package/dist/client/tcp/errors.js +18 -0
  272. package/dist/client/tcp/runtime/commands.d.ts +9 -0
  273. package/dist/client/tcp/runtime/commands.js +124 -0
  274. package/dist/client/tcp/runtime/connectivity.d.ts +13 -0
  275. package/dist/client/tcp/runtime/connectivity.js +77 -0
  276. package/dist/client/tcp/runtime/health.d.ts +14 -0
  277. package/dist/client/tcp/runtime/health.js +127 -0
  278. package/dist/client/tcp/runtime/lifecycle.d.ts +8 -0
  279. package/dist/client/tcp/runtime/lifecycle.js +32 -0
  280. package/dist/client/tcp/runtime/state.d.ts +50 -0
  281. package/dist/client/tcp/runtime/state.js +45 -0
  282. package/dist/client/tcp/transport.d.ts +18 -0
  283. package/dist/client/tcp/transport.js +158 -0
  284. package/dist/client/tcp/types/command.d.ts +9 -0
  285. package/dist/client/tcp/types/command.js +1 -0
  286. package/dist/client/tcp/types/connection.d.ts +31 -0
  287. package/dist/client/tcp/types/connection.js +17 -0
  288. package/dist/client/tcp/types/index.d.ts +5 -0
  289. package/dist/client/tcp/types/index.js +1 -0
  290. package/dist/client/tcp/types/socket.d.ts +8 -0
  291. package/dist/client/tcp/types/socket.js +1 -0
  292. package/dist/client/tcp/types/tls.d.ts +4 -0
  293. package/dist/client/tcp/types/tls.js +1 -0
  294. package/dist/client/tcp/types.d.ts +2 -106
  295. package/dist/client/tcp/types.js +2 -22
  296. package/dist/client/types/connection.d.ts +29 -0
  297. package/dist/client/types/connection.js +1 -0
  298. package/dist/client/types/dlq.d.ts +45 -0
  299. package/dist/client/types/dlq.js +1 -0
  300. package/dist/client/types/events.d.ts +54 -0
  301. package/dist/client/types/events.js +1 -0
  302. package/dist/client/types/flow.d.ts +10 -0
  303. package/dist/client/types/flow.js +1 -0
  304. package/dist/client/types/index.d.ts +10 -0
  305. package/dist/client/types/index.js +1 -0
  306. package/dist/client/types/job.d.ts +127 -0
  307. package/dist/client/types/job.js +1 -0
  308. package/dist/client/types/metrics.d.ts +1 -0
  309. package/dist/client/types/metrics.js +1 -0
  310. package/dist/client/types/options.d.ts +62 -0
  311. package/dist/client/types/options.js +1 -0
  312. package/dist/client/types/worker.d.ts +38 -0
  313. package/dist/client/types/worker.js +1 -0
  314. package/dist/client/types.d.ts +2 -583
  315. package/dist/client/types.js +2 -6
  316. package/dist/client/worker/ackBatcher.d.ts +1 -1
  317. package/dist/client/worker/ackBatcher.js +17 -5
  318. package/dist/client/worker/ackOutcome.d.ts +8 -0
  319. package/dist/client/worker/ackOutcome.js +58 -0
  320. package/dist/client/worker/constants.d.ts +7 -0
  321. package/dist/client/worker/constants.js +7 -0
  322. package/dist/client/worker/groupConcurrency.js +3 -0
  323. package/dist/client/worker/handlers/completion.d.ts +28 -0
  324. package/dist/client/worker/handlers/completion.js +68 -0
  325. package/dist/client/worker/handlers/dependencies.d.ts +11 -0
  326. package/dist/client/worker/handlers/dependencies.js +107 -0
  327. package/dist/client/worker/handlers/mutations.d.ts +23 -0
  328. package/dist/client/worker/handlers/mutations.js +211 -0
  329. package/dist/client/worker/handlers/queries.d.ts +15 -0
  330. package/dist/client/worker/handlers/queries.js +100 -0
  331. package/dist/client/worker/index.d.ts +2 -2
  332. package/dist/client/worker/index.js +1 -1
  333. package/dist/client/worker/jobParser.js +4 -2
  334. package/dist/client/worker/processor.d.ts +2 -15
  335. package/dist/client/worker/processor.js +67 -124
  336. package/dist/client/worker/processorHandlers.d.ts +4 -61
  337. package/dist/client/worker/processorHandlers.js +4 -398
  338. package/dist/client/worker/processorOutcome.d.ts +14 -0
  339. package/dist/client/worker/processorOutcome.js +125 -0
  340. package/dist/client/worker/runtime/buffer.d.ts +8 -0
  341. package/dist/client/worker/runtime/buffer.js +50 -0
  342. package/dist/client/worker/runtime/control.d.ts +26 -0
  343. package/dist/client/worker/runtime/control.js +175 -0
  344. package/dist/client/worker/runtime/execution.d.ts +11 -0
  345. package/dist/client/worker/runtime/execution.js +123 -0
  346. package/dist/client/worker/runtime/lifecycle.d.ts +7 -0
  347. package/dist/client/worker/runtime/lifecycle.js +114 -0
  348. package/dist/client/worker/runtime/manual.d.ts +10 -0
  349. package/dist/client/worker/runtime/manual.js +137 -0
  350. package/dist/client/worker/runtime/options.d.ts +5 -0
  351. package/dist/client/worker/runtime/options.js +39 -0
  352. package/dist/client/worker/runtime/polling.d.ts +12 -0
  353. package/dist/client/worker/runtime/polling.js +123 -0
  354. package/dist/client/worker/runtime/state.d.ts +110 -0
  355. package/dist/client/worker/runtime/state.js +156 -0
  356. package/dist/client/worker/types/index.d.ts +5 -0
  357. package/dist/client/worker/types/index.js +1 -0
  358. package/dist/client/worker/types/manual.d.ts +7 -0
  359. package/dist/client/worker/types/manual.js +1 -0
  360. package/dist/client/worker/types/options.d.ts +24 -0
  361. package/dist/client/worker/types/options.js +1 -0
  362. package/dist/client/worker/types/outcome.d.ts +23 -0
  363. package/dist/client/worker/types/outcome.js +1 -0
  364. package/dist/client/worker/types/processor.d.ts +22 -0
  365. package/dist/client/worker/types/processor.js +1 -0
  366. package/dist/client/worker/types/transport.d.ts +11 -0
  367. package/dist/client/worker/types/transport.js +1 -0
  368. package/dist/client/worker/worker.d.ts +3 -160
  369. package/dist/client/worker/worker.js +3 -928
  370. package/dist/client/worker/workerRateLimiter.d.ts +5 -1
  371. package/dist/client/worker/workerRateLimiter.js +40 -20
  372. package/dist/client/worker.d.ts +1 -0
  373. package/dist/client/workflow/compensationChild.d.ts +2 -1
  374. package/dist/client/workflow/compensationChild.js +1 -1
  375. package/dist/client/workflow/compensationClaim.d.ts +11 -0
  376. package/dist/client/workflow/compensationClaim.js +30 -0
  377. package/dist/client/workflow/compensator.d.ts +7 -2
  378. package/dist/client/workflow/compensator.js +5 -11
  379. package/dist/client/workflow/recovery.js +25 -2
  380. package/dist/client/workflow/rollbackControl.js +1 -1
  381. package/dist/domain/job/constants.d.ts +12 -0
  382. package/dist/domain/job/constants.js +12 -0
  383. package/dist/domain/job/create.d.ts +2 -0
  384. package/dist/domain/job/create.js +103 -0
  385. package/dist/domain/job/ids.d.ts +5 -0
  386. package/dist/domain/job/ids.js +12 -0
  387. package/dist/domain/job/locks.d.ts +4 -0
  388. package/dist/domain/job/locks.js +23 -0
  389. package/dist/domain/job/payload.d.ts +18 -0
  390. package/dist/domain/job/payload.js +43 -0
  391. package/dist/domain/job/state.d.ts +8 -0
  392. package/dist/domain/job/state.js +51 -0
  393. package/dist/domain/job/terminal.d.ts +3 -0
  394. package/dist/domain/job/terminal.js +9 -0
  395. package/dist/domain/queue/dlqShard.d.ts +2 -0
  396. package/dist/domain/queue/dlqShard.js +34 -9
  397. package/dist/domain/queue/priorityQueue.js +3 -39
  398. package/dist/domain/queue/priorityQueueOrder.d.ts +3 -0
  399. package/dist/domain/queue/priorityQueueOrder.js +21 -0
  400. package/dist/domain/queue/shard/dependencies.d.ts +11 -0
  401. package/dist/domain/queue/shard/dependencies.js +22 -0
  402. package/dist/domain/queue/shard/dlq.d.ts +25 -0
  403. package/dist/domain/queue/shard/dlq.js +71 -0
  404. package/dist/domain/queue/shard/keys.d.ts +18 -0
  405. package/dist/domain/queue/shard/keys.js +45 -0
  406. package/dist/domain/queue/shard/lifecycle.d.ts +10 -0
  407. package/dist/domain/queue/shard/lifecycle.js +43 -0
  408. package/dist/domain/queue/shard/limits.d.ts +24 -0
  409. package/dist/domain/queue/shard/limits.js +57 -0
  410. package/dist/domain/queue/shard/metrics.d.ts +32 -0
  411. package/dist/domain/queue/shard/metrics.js +72 -0
  412. package/dist/domain/queue/shard/state.d.ts +34 -0
  413. package/dist/domain/queue/shard/state.js +80 -0
  414. package/dist/domain/queue/shard.d.ts +5 -145
  415. package/dist/domain/queue/shard.js +4 -409
  416. package/dist/domain/response/builders.d.ts +15 -0
  417. package/dist/domain/response/builders.js +39 -0
  418. package/dist/domain/types/command.d.ts +2 -555
  419. package/dist/domain/types/command.js +2 -5
  420. package/dist/domain/types/commands/base.d.ts +5 -0
  421. package/dist/domain/types/commands/base.js +1 -0
  422. package/dist/domain/types/commands/core.d.ts +106 -0
  423. package/dist/domain/types/commands/core.js +1 -0
  424. package/dist/domain/types/commands/cron.d.ts +36 -0
  425. package/dist/domain/types/commands/cron.js +1 -0
  426. package/dist/domain/types/commands/dashboard.d.ts +13 -0
  427. package/dist/domain/types/commands/dashboard.js +1 -0
  428. package/dist/domain/types/commands/dlq.d.ts +39 -0
  429. package/dist/domain/types/commands/dlq.js +1 -0
  430. package/dist/domain/types/commands/extended.d.ts +63 -0
  431. package/dist/domain/types/commands/extended.js +1 -0
  432. package/dist/domain/types/commands/index.d.ts +12 -0
  433. package/dist/domain/types/commands/index.js +12 -0
  434. package/dist/domain/types/commands/limits.d.ts +54 -0
  435. package/dist/domain/types/commands/limits.js +1 -0
  436. package/dist/domain/types/commands/management.d.ts +73 -0
  437. package/dist/domain/types/commands/management.js +1 -0
  438. package/dist/domain/types/commands/monitoring.d.ts +49 -0
  439. package/dist/domain/types/commands/monitoring.js +1 -0
  440. package/dist/domain/types/commands/protocol.d.ts +20 -0
  441. package/dist/domain/types/commands/protocol.js +1 -0
  442. package/dist/domain/types/commands/query.d.ts +46 -0
  443. package/dist/domain/types/commands/query.js +1 -0
  444. package/dist/domain/types/commands/union.d.ts +13 -0
  445. package/dist/domain/types/commands/union.js +1 -0
  446. package/dist/domain/types/commands/workers.d.ts +39 -0
  447. package/dist/domain/types/commands/workers.js +1 -0
  448. package/dist/domain/types/cron.d.ts +4 -2
  449. package/dist/domain/types/cron.js +3 -0
  450. package/dist/domain/types/dlq.d.ts +17 -0
  451. package/dist/domain/types/dlq.js +70 -14
  452. package/dist/domain/types/index.d.ts +2 -0
  453. package/dist/domain/types/index.js +1 -0
  454. package/dist/domain/types/job.d.ts +8 -269
  455. package/dist/domain/types/job.js +8 -234
  456. package/dist/domain/types/jobs/model.d.ts +152 -0
  457. package/dist/domain/types/jobs/model.js +1 -0
  458. package/dist/domain/types/metrics.d.ts +16 -0
  459. package/dist/domain/types/metrics.js +1 -0
  460. package/dist/domain/types/priorityQueue.d.ts +12 -0
  461. package/dist/domain/types/priorityQueue.js +1 -0
  462. package/dist/domain/types/protocol.d.ts +5 -0
  463. package/dist/domain/types/protocol.js +4 -0
  464. package/dist/domain/types/queue.d.ts +2 -0
  465. package/dist/domain/types/response.d.ts +3 -192
  466. package/dist/domain/types/response.js +3 -101
  467. package/dist/domain/types/responses/model.d.ts +152 -0
  468. package/dist/domain/types/responses/model.js +1 -0
  469. package/dist/domain/types/shard.d.ts +4 -0
  470. package/dist/domain/types/shard.js +1 -0
  471. package/dist/infrastructure/cloud/cloudAgent.js +6 -0
  472. package/dist/infrastructure/cloud/commandHandler.d.ts +2 -41
  473. package/dist/infrastructure/cloud/commandHandler.js +1 -1
  474. package/dist/infrastructure/cloud/commands/integrations.d.ts +2 -0
  475. package/dist/infrastructure/cloud/commands/integrations.js +31 -0
  476. package/dist/infrastructure/cloud/commands/jobMapper.d.ts +56 -0
  477. package/dist/infrastructure/cloud/commands/jobMapper.js +72 -0
  478. package/dist/infrastructure/cloud/commands/jobs.d.ts +2 -0
  479. package/dist/infrastructure/cloud/commands/jobs.js +111 -0
  480. package/dist/infrastructure/cloud/commands/queues.d.ts +2 -0
  481. package/dist/infrastructure/cloud/commands/queues.js +126 -0
  482. package/dist/infrastructure/cloud/commands.d.ts +3 -10
  483. package/dist/infrastructure/cloud/commands.js +7 -344
  484. package/dist/infrastructure/cloud/snapshot/analytics.d.ts +16 -0
  485. package/dist/infrastructure/cloud/snapshot/analytics.js +132 -0
  486. package/dist/infrastructure/cloud/snapshot/collector.d.ts +24 -0
  487. package/dist/infrastructure/cloud/snapshot/collector.js +105 -0
  488. package/dist/infrastructure/cloud/snapshot/config.d.ts +5 -0
  489. package/dist/infrastructure/cloud/snapshot/config.js +86 -0
  490. package/dist/infrastructure/cloud/snapshot/jobs.d.ts +5 -0
  491. package/dist/infrastructure/cloud/snapshot/jobs.js +148 -0
  492. package/dist/infrastructure/cloud/snapshot/stalls.d.ts +3 -0
  493. package/dist/infrastructure/cloud/snapshot/stalls.js +34 -0
  494. package/dist/infrastructure/cloud/snapshotCollector.d.ts +2 -53
  495. package/dist/infrastructure/cloud/snapshotCollector.js +5 -107
  496. package/dist/infrastructure/cloud/snapshotHelpers.d.ts +5 -45
  497. package/dist/infrastructure/cloud/snapshotHelpers.js +4 -426
  498. package/dist/infrastructure/cloud/types/collector.d.ts +54 -0
  499. package/dist/infrastructure/cloud/types/collector.js +1 -0
  500. package/dist/infrastructure/cloud/types/command.d.ts +44 -0
  501. package/dist/infrastructure/cloud/types/command.js +1 -0
  502. package/dist/infrastructure/cloud/types/config.d.ts +18 -0
  503. package/dist/infrastructure/cloud/types/config.js +1 -0
  504. package/dist/infrastructure/cloud/types/event.d.ts +14 -0
  505. package/dist/infrastructure/cloud/types/event.js +1 -0
  506. package/dist/infrastructure/cloud/types/redact.d.ts +4 -0
  507. package/dist/infrastructure/cloud/types/redact.js +1 -0
  508. package/dist/infrastructure/cloud/types/snapshot.d.ts +52 -0
  509. package/dist/infrastructure/cloud/types/snapshot.js +1 -0
  510. package/dist/infrastructure/cloud/types/snapshotCore.d.ts +125 -0
  511. package/dist/infrastructure/cloud/types/snapshotCore.js +1 -0
  512. package/dist/infrastructure/cloud/types/snapshotJobs.d.ts +124 -0
  513. package/dist/infrastructure/cloud/types/snapshotJobs.js +1 -0
  514. package/dist/infrastructure/cloud/types/snapshotTelemetry.d.ts +100 -0
  515. package/dist/infrastructure/cloud/types/snapshotTelemetry.js +1 -0
  516. package/dist/infrastructure/cloud/types.d.ts +3 -445
  517. package/dist/infrastructure/cloud/types.js +0 -4
  518. package/dist/infrastructure/persistence/batchInsert.d.ts +13 -0
  519. package/dist/infrastructure/persistence/batchInsert.js +96 -0
  520. package/dist/infrastructure/persistence/jobOptionsBlob.d.ts +18 -0
  521. package/dist/infrastructure/persistence/jobOptionsBlob.js +56 -0
  522. package/dist/infrastructure/persistence/legacyNameMigration.d.ts +5 -0
  523. package/dist/infrastructure/persistence/legacyNameMigration.js +42 -0
  524. package/dist/infrastructure/persistence/migrations.d.ts +3 -0
  525. package/dist/infrastructure/persistence/migrations.js +120 -0
  526. package/dist/infrastructure/persistence/schema.d.ts +3 -5
  527. package/dist/infrastructure/persistence/schema.js +40 -136
  528. package/dist/infrastructure/persistence/sqlite/admission.d.ts +9 -0
  529. package/dist/infrastructure/persistence/sqlite/admission.js +34 -0
  530. package/dist/infrastructure/persistence/sqlite/control.d.ts +32 -0
  531. package/dist/infrastructure/persistence/sqlite/control.js +90 -0
  532. package/dist/infrastructure/persistence/sqlite/flows.d.ts +26 -0
  533. package/dist/infrastructure/persistence/sqlite/flows.js +167 -0
  534. package/dist/infrastructure/persistence/sqlite/jobs.d.ts +23 -0
  535. package/dist/infrastructure/persistence/sqlite/jobs.js +166 -0
  536. package/dist/infrastructure/persistence/sqlite/lifecycle.d.ts +6 -0
  537. package/dist/infrastructure/persistence/sqlite/lifecycle.js +30 -0
  538. package/dist/infrastructure/persistence/sqlite/mutations.d.ts +20 -0
  539. package/dist/infrastructure/persistence/sqlite/mutations.js +149 -0
  540. package/dist/infrastructure/persistence/sqlite/queries.d.ts +23 -0
  541. package/dist/infrastructure/persistence/sqlite/queries.js +89 -0
  542. package/dist/infrastructure/persistence/sqlite/records.d.ts +24 -0
  543. package/dist/infrastructure/persistence/sqlite/records.js +115 -0
  544. package/dist/infrastructure/persistence/sqlite/state.d.ts +36 -0
  545. package/dist/infrastructure/persistence/sqlite/state.js +207 -0
  546. package/dist/infrastructure/persistence/sqlite/telemetry.d.ts +16 -0
  547. package/dist/infrastructure/persistence/sqlite/telemetry.js +126 -0
  548. package/dist/infrastructure/persistence/sqlite.d.ts +5 -280
  549. package/dist/infrastructure/persistence/sqlite.js +3 -1013
  550. package/dist/infrastructure/persistence/sqliteBatch.d.ts +4 -121
  551. package/dist/infrastructure/persistence/sqliteBatch.js +3 -422
  552. package/dist/infrastructure/persistence/sqliteSerializer.d.ts +6 -1
  553. package/dist/infrastructure/persistence/sqliteSerializer.js +33 -11
  554. package/dist/infrastructure/persistence/statements.d.ts +5 -1
  555. package/dist/infrastructure/persistence/statements.js +14 -9
  556. package/dist/infrastructure/persistence/types/admission.d.ts +8 -0
  557. package/dist/infrastructure/persistence/types/admission.js +1 -0
  558. package/dist/infrastructure/persistence/types/batch.d.ts +12 -0
  559. package/dist/infrastructure/persistence/types/batch.js +1 -0
  560. package/dist/infrastructure/persistence/types/sqlite.d.ts +17 -0
  561. package/dist/infrastructure/persistence/types/sqlite.js +1 -0
  562. package/dist/infrastructure/persistence/writeBuffer.d.ts +38 -0
  563. package/dist/infrastructure/persistence/writeBuffer.js +221 -0
  564. package/dist/infrastructure/scheduler/cron/execution.d.ts +12 -0
  565. package/dist/infrastructure/scheduler/cron/execution.js +150 -0
  566. package/dist/infrastructure/scheduler/cron/runtime.d.ts +31 -0
  567. package/dist/infrastructure/scheduler/cron/runtime.js +143 -0
  568. package/dist/infrastructure/scheduler/cronScheduler.d.ts +4 -117
  569. package/dist/infrastructure/scheduler/cronScheduler.js +3 -436
  570. package/dist/infrastructure/scheduler/types/cronScheduler.d.ts +16 -0
  571. package/dist/infrastructure/scheduler/types/cronScheduler.js +1 -0
  572. package/dist/infrastructure/server/bootstrap.js +3 -0
  573. package/dist/infrastructure/server/handler-routes/control.d.ts +8 -0
  574. package/dist/infrastructure/server/handler-routes/control.js +82 -0
  575. package/dist/infrastructure/server/handler-routes/jobs.d.ts +6 -0
  576. package/dist/infrastructure/server/handler-routes/jobs.js +110 -0
  577. package/dist/infrastructure/server/handler-routes/monitoring.d.ts +5 -0
  578. package/dist/infrastructure/server/handler-routes/monitoring.js +65 -0
  579. package/dist/infrastructure/server/handlerRoutes.d.ts +3 -26
  580. package/dist/infrastructure/server/handlerRoutes.js +3 -270
  581. package/dist/infrastructure/server/handlers/advanced/configNumbers.d.ts +2 -0
  582. package/dist/infrastructure/server/handlers/advanced/configNumbers.js +26 -0
  583. package/dist/infrastructure/server/handlers/advanced/dependencies.d.ts +15 -0
  584. package/dist/infrastructure/server/handlers/advanced/dependencies.js +38 -0
  585. package/dist/infrastructure/server/handlers/advanced/jobs.d.ts +33 -0
  586. package/dist/infrastructure/server/handlers/advanced/jobs.js +136 -0
  587. package/dist/infrastructure/server/handlers/advanced/queue.d.ts +42 -0
  588. package/dist/infrastructure/server/handlers/advanced/queue.js +111 -0
  589. package/dist/infrastructure/server/handlers/advanced.d.ts +3 -121
  590. package/dist/infrastructure/server/handlers/advanced.js +3 -336
  591. package/dist/infrastructure/server/handlers/core.d.ts +1 -4
  592. package/dist/infrastructure/server/handlers/core.js +37 -20
  593. package/dist/infrastructure/server/handlers/cron.js +9 -1
  594. package/dist/infrastructure/server/handlers/flow.js +6 -1
  595. package/dist/infrastructure/server/handlers/introspection.js +1 -1
  596. package/dist/infrastructure/server/handlers/management.d.ts +8 -0
  597. package/dist/infrastructure/server/handlers/management.js +30 -0
  598. package/dist/infrastructure/server/handlers/monitoring/health.d.ts +13 -0
  599. package/dist/infrastructure/server/handlers/monitoring/health.js +61 -0
  600. package/dist/infrastructure/server/handlers/monitoring/operations.d.ts +8 -0
  601. package/dist/infrastructure/server/handlers/monitoring/operations.js +28 -0
  602. package/dist/infrastructure/server/handlers/monitoring/webhooks.d.ts +7 -0
  603. package/dist/infrastructure/server/handlers/monitoring/webhooks.js +56 -0
  604. package/dist/infrastructure/server/handlers/monitoring/workers.d.ts +6 -0
  605. package/dist/infrastructure/server/handlers/monitoring/workers.js +57 -0
  606. package/dist/infrastructure/server/handlers/monitoring.d.ts +4 -30
  607. package/dist/infrastructure/server/handlers/monitoring.js +4 -222
  608. package/dist/infrastructure/server/handlers/pushBatchValidation.d.ts +1 -1
  609. package/dist/infrastructure/server/handlers/pushBatchValidation.js +7 -0
  610. package/dist/infrastructure/server/handlers/query.js +12 -3
  611. package/dist/infrastructure/server/http-routes/jobAdvanced.d.ts +2 -0
  612. package/dist/infrastructure/server/http-routes/jobAdvanced.js +106 -0
  613. package/dist/infrastructure/server/http-routes/jobManagement.d.ts +2 -0
  614. package/dist/infrastructure/server/http-routes/jobManagement.js +74 -0
  615. package/dist/infrastructure/server/http-routes/queueJobs.d.ts +2 -0
  616. package/dist/infrastructure/server/http-routes/queueJobs.js +108 -0
  617. package/dist/infrastructure/server/httpRouteJobs.d.ts +1 -8
  618. package/dist/infrastructure/server/httpRouteJobs.js +33 -222
  619. package/dist/infrastructure/server/httpRouteQueues.d.ts +1 -6
  620. package/dist/infrastructure/server/httpRouteQueues.js +51 -217
  621. package/dist/infrastructure/server/httpRouteResources.js +1 -0
  622. package/dist/infrastructure/server/protocol/commands.d.ts +8 -0
  623. package/dist/infrastructure/server/protocol/commands.js +31 -0
  624. package/dist/infrastructure/server/protocol/frameParser.d.ts +16 -0
  625. package/dist/infrastructure/server/protocol/frameParser.js +65 -0
  626. package/dist/infrastructure/server/protocol/lineBuffer.d.ts +6 -0
  627. package/dist/infrastructure/server/protocol/lineBuffer.js +21 -0
  628. package/dist/infrastructure/server/protocol/validation.d.ts +9 -0
  629. package/dist/infrastructure/server/protocol/validation.js +75 -0
  630. package/dist/infrastructure/server/protocol.d.ts +5 -77
  631. package/dist/infrastructure/server/protocol.js +4 -265
  632. package/dist/infrastructure/server/rateLimiter.js +1 -0
  633. package/dist/infrastructure/server/socketWriteQueue.d.ts +1 -1
  634. package/dist/infrastructure/server/socketWriteQueue.js +8 -5
  635. package/dist/infrastructure/server/sse/constants.d.ts +5 -0
  636. package/dist/infrastructure/server/sse/constants.js +5 -0
  637. package/dist/infrastructure/server/sse/eventBuffer.d.ts +3 -0
  638. package/dist/infrastructure/server/sse/eventBuffer.js +21 -0
  639. package/dist/infrastructure/server/sseHandler.d.ts +2 -6
  640. package/dist/infrastructure/server/sseHandler.js +20 -96
  641. package/dist/infrastructure/server/tcp/clientRelease.d.ts +2 -0
  642. package/dist/infrastructure/server/tcp/clientRelease.js +18 -0
  643. package/dist/infrastructure/server/tcp/connections.d.ts +24 -0
  644. package/dist/infrastructure/server/tcp/connections.js +162 -0
  645. package/dist/infrastructure/server/tcp/constants.d.ts +3 -0
  646. package/dist/infrastructure/server/tcp/constants.js +3 -0
  647. package/dist/infrastructure/server/tcp/eventSubscriptions.d.ts +10 -0
  648. package/dist/infrastructure/server/tcp/eventSubscriptions.js +17 -0
  649. package/dist/infrastructure/server/tcp/responses.d.ts +3 -0
  650. package/dist/infrastructure/server/tcp/responses.js +8 -0
  651. package/dist/infrastructure/server/tcp.d.ts +10 -68
  652. package/dist/infrastructure/server/tcp.js +47 -256
  653. package/dist/infrastructure/server/types/protocol.d.ts +4 -0
  654. package/dist/infrastructure/server/types/protocol.js +1 -0
  655. package/dist/infrastructure/server/types/sse.d.ts +11 -0
  656. package/dist/infrastructure/server/types/sse.js +1 -0
  657. package/dist/infrastructure/server/types/tcpServer.d.ts +25 -0
  658. package/dist/infrastructure/server/types/tcpServer.js +1 -0
  659. package/dist/infrastructure/server/types/ws.d.ts +6 -0
  660. package/dist/infrastructure/server/types/ws.js +1 -0
  661. package/dist/infrastructure/server/ws/constants.d.ts +6 -0
  662. package/dist/infrastructure/server/ws/constants.js +130 -0
  663. package/dist/infrastructure/server/ws/snapshots.d.ts +4 -0
  664. package/dist/infrastructure/server/ws/snapshots.js +52 -0
  665. package/dist/infrastructure/server/ws/subscriptions.d.ts +10 -0
  666. package/dist/infrastructure/server/ws/subscriptions.js +39 -0
  667. package/dist/infrastructure/server/wsHandler.d.ts +2 -10
  668. package/dist/infrastructure/server/wsHandler.js +12 -237
  669. package/dist/mcp/adapter.d.ts +5 -403
  670. package/dist/mcp/adapter.js +6 -778
  671. package/dist/mcp/backend/embedded/base.d.ts +7 -0
  672. package/dist/mcp/backend/embedded/base.js +15 -0
  673. package/dist/mcp/backend/embedded/index.d.ts +14 -0
  674. package/dist/mcp/backend/embedded/index.js +22 -0
  675. package/dist/mcp/backend/embedded/jobs.d.ts +44 -0
  676. package/dist/mcp/backend/embedded/jobs.js +98 -0
  677. package/dist/mcp/backend/embedded/queues.d.ts +27 -0
  678. package/dist/mcp/backend/embedded/queues.js +84 -0
  679. package/dist/mcp/backend/embedded/services.d.ts +29 -0
  680. package/dist/mcp/backend/embedded/services.js +107 -0
  681. package/dist/mcp/backend/serializers.d.ts +7 -0
  682. package/dist/mcp/backend/serializers.js +32 -0
  683. package/dist/mcp/backend/tcp/base.d.ts +19 -0
  684. package/dist/mcp/backend/tcp/base.js +54 -0
  685. package/dist/mcp/backend/tcp/index.d.ts +14 -0
  686. package/dist/mcp/backend/tcp/index.js +20 -0
  687. package/dist/mcp/backend/tcp/jobs.d.ts +44 -0
  688. package/dist/mcp/backend/tcp/jobs.js +122 -0
  689. package/dist/mcp/backend/tcp/queues.d.ts +27 -0
  690. package/dist/mcp/backend/tcp/queues.js +89 -0
  691. package/dist/mcp/backend/tcp/services.d.ts +30 -0
  692. package/dist/mcp/backend/tcp/services.js +161 -0
  693. package/dist/mcp/types/adapter.d.ts +176 -0
  694. package/dist/mcp/types/adapter.js +1 -0
  695. package/dist/shared/asyncLock.d.ts +13 -0
  696. package/dist/shared/asyncLock.js +65 -0
  697. package/dist/shared/lock.d.ts +10 -72
  698. package/dist/shared/lock.js +7 -231
  699. package/dist/shared/lockError.d.ts +3 -0
  700. package/dist/shared/lockError.js +6 -0
  701. package/dist/shared/lockTimeout.d.ts +2 -0
  702. package/dist/shared/lockTimeout.js +2 -0
  703. package/dist/shared/rwLock.d.ts +22 -0
  704. package/dist/shared/rwLock.js +124 -0
  705. package/dist/shared/serialization.js +1 -0
  706. package/dist/shared/skipList.d.ts +0 -5
  707. package/dist/shared/skipList.js +10 -57
  708. package/dist/shared/skipListNodes.d.ts +6 -0
  709. package/dist/shared/skipListNodes.js +43 -0
  710. package/dist/shared/types/lock.d.ts +7 -0
  711. package/dist/shared/types/lock.js +1 -0
  712. package/dist/shared/types/skipList.d.ts +4 -0
  713. package/dist/shared/types/skipList.js +1 -0
  714. package/package.json +2 -1
@@ -1,442 +1,6 @@
1
- /**
2
- * Background Tasks - Periodic maintenance operations
3
- * Orchestrates stall detection, cleanup, recovery, DLQ maintenance
4
- */
5
- import { queueLog } from '../shared/logger';
6
- import { shardIndex } from '../shared/hash';
7
- import { createDlqEntry } from '../domain/types/dlq';
8
- import { calculateBackoff } from '../domain/types/job';
9
- import * as dlqOps from './dlqManager';
10
- import { checkExpiredLocks } from './lockManager';
11
- import { cleanup } from './cleanupTasks';
12
- import { checkStalledJobs } from './stallDetection';
13
- import { checkpointDependencyPromotion, dependencyReadyState, processPendingDependencies, } from './dependencyProcessor';
14
- import { handleTaskError, handleTaskSuccess, getTaskErrorStats } from './taskErrorTracking';
15
- import { runMonitoringChecks } from './monitoringChecks';
16
- import { isCorruptDependsOn, persistedJobState, } from '../infrastructure/persistence/sqliteSerializer';
17
- import { reconcileDependencyCompletionPins } from './dependencyCompletions';
18
- export { getTaskErrorStats };
19
- /**
20
- * Start all background tasks
21
- * Returns handles that can be used to stop tasks later
22
- */
23
- export function startBackgroundTasks(ctx, cronScheduler) {
24
- const cleanupInterval = setInterval(() => {
25
- cleanup(ctx)
26
- .then(() => {
27
- handleTaskSuccess('cleanup');
28
- // Run monitoring checks after cleanup (same interval)
29
- runMonitoringChecks({
30
- queueNamesCache: ctx.queueNamesCache,
31
- shards: ctx.shards,
32
- processingShards: ctx.processingShards,
33
- workerManager: ctx.workerManager,
34
- storage: ctx.storage,
35
- dashboardEmit: ctx.dashboardEmit,
36
- state: ctx.monitoringState,
37
- });
38
- })
39
- .catch((err) => {
40
- handleTaskError('cleanup', err);
41
- });
42
- }, ctx.config.cleanupIntervalMs);
43
- const timeoutInterval = setInterval(() => {
44
- checkJobTimeouts(ctx);
45
- }, ctx.config.jobTimeoutCheckMs);
46
- // Safety fallback: event-driven path in queueManager handles the fast path
47
- const depCheckInterval = setInterval(() => {
48
- if (ctx.pendingDepChecks.size === 0)
49
- return;
50
- processPendingDependencies(ctx)
51
- .then(() => {
52
- handleTaskSuccess('dependency');
53
- })
54
- .catch((err) => {
55
- handleTaskError('dependency', err);
56
- });
57
- }, ctx.config.dependencyCheckMs);
58
- const stallCheckInterval = setInterval(() => {
59
- checkStalledJobs(ctx);
60
- }, ctx.config.stallCheckMs);
61
- const dlqMaintenanceInterval = setInterval(() => {
62
- performDlqMaintenance(ctx);
63
- }, ctx.config.dlqMaintenanceMs);
64
- // Lock expiration check runs at same interval as stall check
65
- const lockCheckInterval = setInterval(() => {
66
- checkExpiredLocks(getLockContext(ctx))
67
- .then(() => {
68
- handleTaskSuccess('lockExpiration');
69
- })
70
- .catch((err) => {
71
- handleTaskError('lockExpiration', err);
72
- });
73
- }, ctx.config.stallCheckMs);
74
- cronScheduler.start();
75
- return {
76
- cleanupInterval,
77
- timeoutInterval,
78
- depCheckInterval,
79
- stallCheckInterval,
80
- dlqMaintenanceInterval,
81
- lockCheckInterval,
82
- cronScheduler,
83
- };
84
- }
85
- /**
86
- * Stop all background tasks
87
- */
88
- export function stopBackgroundTasks(handles) {
89
- clearInterval(handles.cleanupInterval);
90
- clearInterval(handles.timeoutInterval);
91
- clearInterval(handles.depCheckInterval);
92
- clearInterval(handles.stallCheckInterval);
93
- clearInterval(handles.dlqMaintenanceInterval);
94
- clearInterval(handles.lockCheckInterval);
95
- handles.cronScheduler.stop();
96
- }
97
- /** Extract lock context from background context */
98
- function getLockContext(ctx) {
99
- return {
100
- jobIndex: ctx.jobIndex,
101
- jobLocks: ctx.jobLocks,
102
- clientJobs: ctx.clientJobs,
103
- processingShards: ctx.processingShards,
104
- processingLocks: ctx.processingLocks,
105
- shards: ctx.shards,
106
- shardLocks: ctx.shardLocks,
107
- eventsManager: ctx.eventsManager,
108
- dashboardEmit: ctx.dashboardEmit,
109
- // #110: without storage, handleMaxStallsExceeded's saveDlqEntry/deleteJob
110
- // (the #97 fix) silently no-op via optional chaining on the ONLY
111
- // production path to checkExpiredLocks — the DLQ move never persists and
112
- // SQLite keeps an orphan `active` row. LockContext.storage is optional,
113
- // which is why this omission compiled unnoticed since 2.8.17.
114
- storage: ctx.storage,
115
- };
116
- }
117
- // ============ Job Timeouts ============
118
- export function checkJobTimeouts(ctx) {
119
- const now = Date.now();
120
- for (const procShard of ctx.processingShards) {
121
- for (const [jobId, job] of procShard) {
122
- if (job.timeout && job.startedAt && now - job.startedAt > job.timeout) {
123
- ctx.dashboardEmit?.('job:timeout', {
124
- jobId: String(jobId),
125
- queue: job.queue,
126
- timeout: job.timeout,
127
- });
128
- // Mark as timed-out BEFORE requeuing for retry, so a late ACK from the
129
- // (still-hung) worker that exceeded the deadline is discarded instead of
130
- // phantom-completing the job and skipping the retry. See ack-recovery in
131
- // queueManager.ack (timedOutJobs guard).
132
- ctx.timedOutJobs?.add(jobId);
133
- ctx.fail(jobId, 'Job timeout exceeded').catch((err) => {
134
- queueLog.error('Failed to mark timed out job as failed', {
135
- jobId: String(jobId),
136
- error: String(err),
137
- });
138
- });
139
- }
140
- }
141
- }
142
- }
143
- // ============ DLQ Maintenance ============
144
- function performDlqMaintenance(ctx) {
145
- const dlqCtx = {
146
- shards: ctx.shards,
147
- jobIndex: ctx.jobIndex,
148
- jobResults: ctx.jobResults,
149
- jobLogs: ctx.jobLogs,
150
- storage: ctx.storage,
151
- };
152
- for (const queueName of ctx.queueNamesCache) {
153
- try {
154
- const retried = dlqOps.processAutoRetry(queueName, dlqCtx);
155
- if (retried > 0) {
156
- ctx.dashboardEmit?.('dlq:auto-retried', { queue: queueName, count: retried });
157
- }
158
- const expired = dlqOps.purgeExpiredDlq(queueName, dlqCtx);
159
- if (expired > 0)
160
- ctx.dashboardEmit?.('dlq:expired', { queue: queueName, count: expired });
161
- }
162
- catch (err) {
163
- queueLog.error('DLQ maintenance failed', { queue: queueName, error: String(err) });
164
- }
165
- }
166
- }
167
- // ============ Recovery ============
168
- /** Batch size for paginated recovery */
169
- const RECOVERY_BATCH_SIZE = 10000;
170
- /**
171
- * Route a job whose `depends_on` blob was corrupt on disk straight to the DLQ.
172
- *
173
- * Its real dependency metadata is unrecoverable, so it must never be enqueued
174
- * as "ready" (out-of-order execution) nor parked in waitingDeps behind a
175
- * dependency that can never complete (an unbounded leak).
176
- *
177
- * We persist the DLQ entry to disk and drop the jobs row here, but do NOT add
178
- * it to the in-memory DLQ — the later `loadDlq()` pass (which runs after both
179
- * recovery phases) restores every persisted entry into memory exactly once.
180
- * Adding it here too would double-count it. The job row is deleted so that pass
181
- * sees only the DLQ table.
182
- */
183
- function quarantineCorruptDependsOn(ctx, job) {
184
- if (!ctx.storage)
185
- return;
186
- const entry = createDlqEntry(job, "unknown" /* FailureReason.Unknown */, 'corrupt-dependency-metadata');
187
- ctx.storage.saveDlqEntry(entry);
188
- ctx.storage.deleteJob(job.id);
189
- ctx.registerQueueName(job.queue);
190
- queueLog.error('Recovered job with corrupt depends_on metadata -> routed to DLQ', {
191
- jobId: String(job.id),
192
- queue: job.queue,
193
- });
194
- }
195
- // eslint-disable-next-line complexity
196
- export function recover(ctx) {
197
- if (!ctx.storage)
198
- return;
199
- // Keep the full pre-reconciliation window outside the bounded RAM tracker.
200
- // A restart may lower maxCompletedJobs; pruning before Phase 2 reconstructs
201
- // reverse edges could discard an old proof still owned by a waiting parent.
202
- const dependencyCompletions = ctx.storage.loadDependencyCompletions();
203
- // Load completed job IDs from SQLite for dependency checking
204
- const completedInDb = ctx.storage.loadCompletedJobIds();
205
- for (const record of dependencyCompletions)
206
- completedInDb.add(record.jobId);
207
- // Load DLQ job IDs so Phase 1 can skip stale active rows for DLQ'd jobs
208
- // (legacy DBs predate the DLQ-row cleanup fix in failJob).
209
- const dlqJobIds = ctx.storage.loadDlqJobIds();
210
- const queueStates = ctx.storage.loadQueueState();
211
- // Recovery bounds are needed before Phase 1 classifies interrupted active
212
- // jobs. Restore the stall policy first; paused/limiter state can wait until
213
- // the queues themselves have been rebuilt below.
214
- for (const qs of queueStates) {
215
- if (qs.stallConfig) {
216
- ctx.shards[shardIndex(qs.name)].setStallConfig(qs.name, qs.stallConfig);
217
- }
218
- if (qs.dlqConfig) {
219
- ctx.shards[shardIndex(qs.name)].setDlqConfig(qs.name, qs.dlqConfig);
220
- }
221
- }
222
- const now = Date.now();
223
- // === PHASE 1: Recover active jobs (were processing when server stopped) ===
224
- // These jobs are considered "stalled" and need to be retried or moved to DLQ
225
- while (true) {
226
- // Every successfully handled row leaves state='active' (retry -> waiting, or
227
- // delete -> DLQ/discard). Always read the first page: advancing OFFSET over
228
- // this shrinking result set would skip up to half of the active rows.
229
- const activeJobs = ctx.storage.loadActiveJobs(RECOVERY_BATCH_SIZE, 0);
230
- if (activeJobs.length === 0)
231
- break;
232
- for (const job of activeJobs) {
233
- const idx = shardIndex(job.queue);
234
- const shard = ctx.shards[idx];
235
- const stallConfig = shard.getStallConfig(job.queue);
236
- // Skip recovery for cron jobs with preventOverlap (uniqueKey='cron:*').
237
- // These jobs will be re-created by the cron scheduler at the next tick.
238
- // Re-queuing them would cause the "starts right away" bug (#73).
239
- if (job.uniqueKey?.startsWith('cron:')) {
240
- ctx.storage.deleteJob(job.id);
241
- ctx.registerQueueName(job.queue);
242
- continue;
243
- }
244
- // Skip jobs already present in DLQ (stale 'active' row from before the
245
- // failJob fix). Drop the orphan row so Phase 2 and subsequent queries
246
- // don't double-count it.
247
- if (dlqJobIds.has(job.id)) {
248
- ctx.storage.deleteJob(job.id);
249
- ctx.registerQueueName(job.queue);
250
- continue;
251
- }
252
- // A corrupt depends_on blob makes the job's real dependencies
253
- // unrecoverable: route it to the DLQ instead of retrying it (which could
254
- // execute it out-of-order once stalls are exhausted).
255
- if (isCorruptDependsOn(job)) {
256
- quarantineCorruptDependsOn(ctx, job);
257
- continue;
258
- }
259
- // Increment stall count (job was interrupted)
260
- job.stallCount = (job.stallCount || 0) + 1;
261
- job.attempts++;
262
- job.startedAt = null;
263
- job.lastHeartbeat = now;
264
- // A crash consumes one processing attempt and one stall allowance. Both
265
- // bounds are terminal: requeueing after either reaches its configured
266
- // maximum would make attempts/stalls unbounded across restart loops.
267
- const maxStalls = stallConfig.maxStalls ?? 3;
268
- const attemptsExhausted = job.attempts >= job.maxAttempts;
269
- const stallsExhausted = maxStalls > 0 && job.stallCount >= maxStalls;
270
- if (attemptsExhausted || stallsExhausted) {
271
- // Move to DLQ
272
- const reason = attemptsExhausted
273
- ? "max_attempts_exceeded" /* FailureReason.MaxAttemptsExceeded */
274
- : "stalled" /* FailureReason.Stalled */;
275
- const error = attemptsExhausted
276
- ? `Job reached max attempts (${job.maxAttempts}) during startup recovery`
277
- : `Job stalled ${job.stallCount} times (recovered at startup)`;
278
- // Persist only here; the later loadDlq() phase is the single in-memory
279
- // restore path. Adding to the shard now and restoring the same row below
280
- // would duplicate the DLQ entry after every terminal crash recovery.
281
- const entry = createDlqEntry(job, reason, error, shard.getDlqConfig(job.queue));
282
- ctx.storage.saveDlqEntry(entry);
283
- ctx.storage.deleteJob(job.id);
284
- }
285
- else {
286
- // Persist the retry here, but let Phase 2 be the single authoritative
287
- // enqueue path. Enqueuing in both phases replaces the priority-queue entry
288
- // by ID but increments queued/delayed counters twice.
289
- job.runAt = now + calculateBackoff(job);
290
- ctx.storage.updateForRetry(job);
291
- }
292
- ctx.registerQueueName(job.queue);
293
- }
294
- if (activeJobs.length < RECOVERY_BATCH_SIZE)
295
- break;
296
- }
297
- // === PHASE 2: Load pending jobs ===
298
- let offset = 0;
299
- const corruptPendingJobs = [];
300
- // Load pending jobs in batches to avoid memory spikes
301
- while (true) {
302
- const jobs = ctx.storage.loadPendingJobs(RECOVERY_BATCH_SIZE, offset);
303
- if (jobs.length === 0)
304
- break;
305
- for (const job of jobs) {
306
- const idx = shardIndex(job.queue);
307
- const shard = ctx.shards[idx];
308
- // A corrupt depends_on blob means the real dependencies are unrecoverable.
309
- // Route the job to the DLQ rather than enqueuing it as ready (out-of-order
310
- // execution) or parking it in waitingDeps forever (unbounded leak).
311
- if (isCorruptDependsOn(job)) {
312
- // Keep the SQLite pending result set stable until OFFSET pagination has
313
- // finished. Deleting this row now shifts a healthy row across the next
314
- // page boundary and leaves it absent from the in-memory queue.
315
- corruptPendingJobs.push(job);
316
- continue;
317
- }
318
- // Check if job has unmet dependencies
319
- // A ready persisted state is an authoritative checkpoint: dependency
320
- // proofs are deliberately bounded and may have expired after promotion.
321
- const hasDependencies = job.dependsOn && job.dependsOn.length > 0;
322
- const recoveredState = persistedJobState(job);
323
- const wasAlreadyPromoted = recoveredState === 'waiting' ||
324
- recoveredState === 'prioritized' ||
325
- recoveredState === 'delayed';
326
- const needsWaitingDeps = hasDependencies &&
327
- !wasAlreadyPromoted &&
328
- !job.dependsOn.every((depId) => ctx.completedJobs.has(depId) || completedInDb.has(depId));
329
- const manuallyWaitingChildren = recoveredState === 'waiting-children' && !hasDependencies;
330
- if (manuallyWaitingChildren) {
331
- shard.waitingChildren.set(job.id, job);
332
- }
333
- else if (needsWaitingDeps) {
334
- // Job is waiting for dependencies - don't add to main queue
335
- shard.waitingDeps.set(job.id, job);
336
- shard.registerDependencies(job.id, job.dependsOn);
337
- // Note: don't call incrementQueued for waitingDeps jobs (matches push.ts behavior)
338
- }
339
- else {
340
- // Job is ready to process
341
- shard.getQueue(job.queue).push(job);
342
- // Update running counters for O(1) stats and temporal index
343
- const state = dependencyReadyState(job, now);
344
- const isDelayed = state === 'delayed';
345
- shard.incrementQueued(job.id, isDelayed, job.createdAt, job.queue, job.runAt);
346
- if (hasDependencies)
347
- checkpointDependencyPromotion(job, state, now, ctx.storage);
348
- }
349
- ctx.jobIndex.set(job.id, { type: 'queue', shardIdx: idx, queueName: job.queue });
350
- ctx.dependencyResults.registerConsumer(job.id, job.dependsOn);
351
- for (const dependencyId of job.dependsOn) {
352
- if (ctx.jobResults.has(dependencyId)) {
353
- ctx.dependencyResults.retain(dependencyId, ctx.jobResults.get(dependencyId));
354
- }
355
- }
356
- // Restore customId mapping for deduplication (fixes idempotency on restart)
357
- if (job.customId) {
358
- ctx.customIdMap.set(job.customId, job.id);
359
- }
360
- // Restore uniqueKey mapping for TTL-based deduplication
361
- if (job.uniqueKey) {
362
- shard.registerUniqueKeyWithTtl(job.queue, job.uniqueKey, job.id, job.deduplicationTtl ?? undefined);
363
- }
364
- ctx.registerQueueName(job.queue);
365
- }
366
- offset += jobs.length;
367
- // If we got less than batch size, we're done
368
- if (jobs.length < RECOVERY_BATCH_SIZE)
369
- break;
370
- }
371
- // Quarantine only after the paginated scan so deletions cannot move page
372
- // boundaries. loadDlq() below restores these entries into memory exactly once.
373
- for (const job of corruptPendingJobs) {
374
- quarantineCorruptDependsOn(ctx, job);
375
- }
376
- // Load DLQ entries
377
- const dlqEntries = ctx.storage.loadDlq();
378
- for (const [queue, entries] of dlqEntries) {
379
- const idx = shardIndex(queue);
380
- const shard = ctx.shards[idx];
381
- for (const entry of entries) {
382
- shard.restoreDlqEntry(queue, entry);
383
- // Populate jobIndex so getJob/getJobState resolve DLQ'd jobs post-restart.
384
- ctx.jobIndex.set(entry.job.id, { type: 'dlq', queueName: queue });
385
- }
386
- ctx.registerQueueName(queue);
387
- }
388
- // === Restore queue control-state (#100) ===
389
- // paused / rate-limit / concurrency live only in LimiterManager's in-memory
390
- // Map; without this load every queue silently un-pauses and loses its limits
391
- // on restart. Applied directly to the owning shard (in-memory only — these
392
- // setters do not re-persist, so there is no write-back loop).
393
- for (const qs of queueStates) {
394
- const shard = ctx.shards[shardIndex(qs.name)];
395
- if (qs.paused)
396
- shard.pause(qs.name);
397
- if (qs.rateLimit !== null) {
398
- // TTL'd limits are temporary by definition: an already-expired one must
399
- // not resurrect as permanent. A still-live one is restored with its
400
- // remaining TTL so it keeps expiring broker-side.
401
- const remainingTtl = qs.rateLimitExpiresAt === null ? undefined : qs.rateLimitExpiresAt - Date.now();
402
- if (remainingTtl === undefined || remainingTtl > 0) {
403
- shard.setRateLimit(qs.name, qs.rateLimit, qs.rateLimitDuration ?? undefined, remainingTtl);
404
- }
405
- }
406
- if (qs.concurrencyLimit !== null)
407
- shard.setConcurrency(qs.name, qs.concurrencyLimit);
408
- ctx.registerQueueName(qs.name);
409
- }
410
- // === PHASE 3: Recover completed jobs ===
411
- // Required for clean('completed'), stats.completed, and in-memory lookups
412
- // on jobs that completed before a server restart (issue #84).
413
- // Capped at maxCompletedJobs (matches BoundedSet cap) so we don't exceed
414
- // the in-memory budget when SQLite contains more rows than the cap.
415
- // Note: we deliberately do NOT populate customIdMap here — Phase 2 owns
416
- // dedup for pending jobs, and push.ts handles customId collision against
417
- // completed jobs via the storage fallback. Touching customIdMap here would
418
- // LRU-evict pending-job mappings when many completed jobs have customIds.
419
- const completedCap = ctx.config.maxCompletedJobs;
420
- let completedLoaded = 0;
421
- let completedOffset = 0;
422
- while (completedLoaded < completedCap) {
423
- const remaining = completedCap - completedLoaded;
424
- const batchSize = Math.min(RECOVERY_BATCH_SIZE, remaining);
425
- const completedBatch = ctx.storage.loadCompletedJobs(batchSize, completedOffset);
426
- if (completedBatch.length === 0)
427
- break;
428
- for (const job of completedBatch) {
429
- ctx.jobIndex.set(job.id, { type: 'completed', queueName: job.queue });
430
- ctx.completedJobs.add(job.id);
431
- ctx.completedJobsData.set(job.id, job);
432
- ctx.registerQueueName(job.queue);
433
- }
434
- completedLoaded += completedBatch.length;
435
- completedOffset += completedBatch.length;
436
- if (completedBatch.length < batchSize)
437
- break;
438
- }
439
- reconcileDependencyCompletionPins(ctx);
440
- }
441
- // Re-export for backward compatibility
442
- export { processPendingDependencies };
1
+ /** Stable background-task import surface. */
2
+ export { startBackgroundTasks, stopBackgroundTasks } from './background/lifecycle';
3
+ export { recover } from './background/recovery';
4
+ export { checkJobTimeouts } from './background/timeouts';
5
+ export { processPendingDependencies } from './dependencyProcessor';
6
+ export { getTaskErrorStats } from './taskErrorTracking';
@@ -50,6 +50,7 @@ async function cleanOrphanedProcessingEntries(ctx, now, stallTimeout) {
50
50
  const job = ctx.processingShards[i].get(jobId);
51
51
  if (job) {
52
52
  ctx.processingShards[i].delete(jobId);
53
+ ctx.timeoutScheduler.cancel(jobId);
53
54
  ctx.jobIndex.delete(jobId);
54
55
  removed++;
55
56
  }
@@ -165,6 +165,7 @@ export function forceReleaseClientJobs(clientId, ctx) {
165
165
  // gate passes on the next eligible tick.
166
166
  job.lastHeartbeat = 0;
167
167
  job.startedAt = 0;
168
+ ctx.timeoutScheduler.cancel(jobId);
168
169
  touched++;
169
170
  }
170
171
  ctx.clientJobs.delete(clientId);
@@ -176,6 +177,7 @@ function releaseJobToQueue(opts) {
176
177
  const shard = ctx.shards[queueShardIdx];
177
178
  // Remove from processing
178
179
  ctx.processingShards[procIdx].delete(jobId);
180
+ ctx.timeoutScheduler.cancel(jobId);
179
181
  // Release lock if exists
180
182
  ctx.jobLocks.delete(jobId);
181
183
  // Release all job resources (concurrency, uniqueKey, groupId)
@@ -1,19 +1,6 @@
1
1
  /**
2
2
  * ContextFactory - Builds context objects for delegated operations
3
3
  */
4
- import type { Job, JobId, JobLock } from '../domain/types/job';
5
- import type { JobLocation } from '../domain/types/queue';
6
- import type { JobLogEntry } from '../domain/types/worker';
7
- import type { Shard } from '../domain/queue/shard';
8
- import type { SqliteStorage } from '../infrastructure/persistence/sqlite';
9
- import type { RWLock } from '../shared/lock';
10
- import type { LRUMap, BoundedSet, BoundedMap, MapLike } from '../shared/lru';
11
- import type { WebhookManager } from './webhookManager';
12
- import type { WorkerManager } from './workerManager';
13
- import type { EventsManager } from './eventsManager';
14
- import type { MonitoringState } from './monitoringChecks';
15
- import type { DependencyResultTracker } from './dependencyResultTracker';
16
- import type { DependencyCompletionTracker } from './dependencyCompletions';
17
4
  import type { LockContext, BackgroundContext, StatsContext } from './types';
18
5
  import type { PushContext } from './operations/push';
19
6
  import type { PullContext } from './operations/pull';
@@ -21,72 +8,8 @@ import type { AckContext } from './operations/ack';
21
8
  import type { JobManagementContext } from './operations/jobManagement';
22
9
  import type { QueryContext } from './operations/queryOperations';
23
10
  import type { DlqContext, RetryCompletedContext } from './dlqManager';
24
- import type { DEFAULT_CONFIG } from './types';
25
- /** Dependencies needed to build all contexts */
26
- export interface ContextDependencies {
27
- config: typeof DEFAULT_CONFIG & {
28
- dataPath?: string;
29
- };
30
- storage: SqliteStorage | null;
31
- shards: Shard[];
32
- shardLocks: RWLock[];
33
- customIdLock: RWLock;
34
- processingShards: Map<JobId, Job>[];
35
- processingLocks: RWLock[];
36
- jobIndex: Map<JobId, JobLocation>;
37
- completedJobs: BoundedSet<JobId>;
38
- completedJobsData: BoundedMap<JobId, Job>;
39
- depCompletions?: DependencyCompletionTracker;
40
- timedOutJobs?: BoundedSet<JobId>;
41
- jobResults: LRUMap<JobId, unknown>;
42
- dependencyResults: DependencyResultTracker;
43
- customIdMap: LRUMap<string, JobId>;
44
- jobLogs: LRUMap<JobId, JobLogEntry[]>;
45
- jobLocks: Map<JobId, JobLock>;
46
- clientJobs: Map<string, Set<JobId>>;
47
- stalledCandidates: Set<JobId>;
48
- pendingDepChecks: Set<JobId>;
49
- queueNamesCache: Set<string>;
50
- repeatChain: Map<JobId, JobId>;
51
- eventsManager: EventsManager;
52
- webhookManager: WebhookManager;
53
- workerManager: WorkerManager;
54
- monitoringState: MonitoringState;
55
- metrics: {
56
- totalPushed: {
57
- value: bigint;
58
- };
59
- totalPulled: {
60
- value: bigint;
61
- };
62
- totalCompleted: {
63
- value: bigint;
64
- };
65
- totalFailed: {
66
- value: bigint;
67
- };
68
- };
69
- startTime: number;
70
- maxLogsPerJob: number;
71
- perQueueMetrics: MapLike<string, {
72
- totalCompleted: bigint;
73
- totalFailed: bigint;
74
- }>;
75
- }
76
- /** Callbacks needed for some contexts */
77
- export interface ContextCallbacks {
78
- fail: (jobId: JobId, error?: string, token?: string) => Promise<void>;
79
- registerQueueName: (queue: string) => void;
80
- unregisterQueueName: (queue: string) => void;
81
- onJobCompleted: (completedId: JobId) => void;
82
- onJobFailed?: (failedId: JobId) => void;
83
- onJobsCompleted: (completedIds: JobId[]) => void;
84
- hasPendingDeps: () => boolean;
85
- onRepeat: (job: Job) => void;
86
- emitDashboardEvent?: (event: string, data: Record<string, unknown>) => void;
87
- onChildTerminalFailure?: (childJob: Job, error: string | undefined) => Promise<void>;
88
- onChildDependencyOption?: (childJob: Job, error: string | undefined) => Promise<void>;
89
- }
11
+ import type { ContextCallbacks, ContextDependencies } from './types/contextFactory';
12
+ export type { ContextCallbacks, ContextDependencies } from './types/contextFactory';
90
13
  /**
91
14
  * Factory for building context objects
92
15
  */
@@ -105,19 +28,19 @@ export declare class ContextFactory {
105
28
  getDlqContext(): DlqContext;
106
29
  getRetryCompletedContext(): RetryCompletedContext;
107
30
  getLogsContext(): {
108
- jobIndex: Map<JobId, JobLocation>;
109
- jobLogs: LRUMap<JobId, JobLogEntry[]>;
31
+ jobIndex: Map<import("../domain/types").JobId, import("../domain/types").JobLocation>;
32
+ jobLogs: import("../shared/lruMap").LRUMap<import("../domain/types").JobId, import("../domain/types/worker").JobLogEntry[]>;
110
33
  maxLogsPerJob: number;
111
34
  };
112
35
  getQueueControlContext(): {
113
- shards: Shard[];
114
- jobIndex: Map<JobId, JobLocation>;
115
- processingShards: Map<JobId, Job>[];
116
- completedJobs: BoundedSet<JobId>;
117
- completedJobsData: BoundedMap<JobId, Job>;
118
- jobResults: LRUMap<JobId, unknown>;
119
- dependencyResults: DependencyResultTracker;
120
- jobLogs: LRUMap<JobId, JobLogEntry[]>;
121
- storage: SqliteStorage | null;
36
+ shards: import("../domain/queue").Shard[];
37
+ jobIndex: Map<import("../domain/types").JobId, import("../domain/types").JobLocation>;
38
+ processingShards: Map<import("../domain/types").JobId, import("../domain/types").Job>[];
39
+ completedJobs: import("../shared/boundedSet").BoundedSet<import("../domain/types").JobId>;
40
+ completedJobsData: import("../shared/boundedMap").BoundedMap<import("../domain/types").JobId, import("../domain/types").Job>;
41
+ jobResults: import("../shared/lruMap").LRUMap<import("../domain/types").JobId, unknown>;
42
+ dependencyResults: import("./dependencyResultTracker").DependencyResultTracker;
43
+ jobLogs: import("../shared/lruMap").LRUMap<import("../domain/types").JobId, import("../domain/types/worker").JobLogEntry[]>;
44
+ storage: import("../infrastructure/persistence").SqliteStorage | null;
122
45
  };
123
46
  }
@@ -15,6 +15,7 @@ export class ContextFactory {
15
15
  return {
16
16
  jobIndex: this.deps.jobIndex,
17
17
  jobLocks: this.deps.jobLocks,
18
+ retiredCronLeaseTokens: this.deps.retiredCronLeaseTokens,
18
19
  clientJobs: this.deps.clientJobs,
19
20
  processingShards: this.deps.processingShards,
20
21
  processingLocks: this.deps.processingLocks,
@@ -22,6 +23,7 @@ export class ContextFactory {
22
23
  shardLocks: this.deps.shardLocks,
23
24
  eventsManager: this.deps.eventsManager,
24
25
  storage: this.deps.storage,
26
+ timeoutScheduler: this.deps.timeoutScheduler,
25
27
  };
26
28
  }
27
29
  getBackgroundContext() {
@@ -37,11 +39,14 @@ export class ContextFactory {
37
39
  depCompletions: this.deps.depCompletions,
38
40
  maxDependencyCompletions: this.deps.config.maxCompletedJobs,
39
41
  timedOutJobs: this.deps.timedOutJobs,
42
+ retiredTimeoutLeaseTokens: this.deps.retiredTimeoutLeaseTokens,
43
+ timeoutScheduler: this.deps.timeoutScheduler,
40
44
  jobResults: this.deps.jobResults,
41
45
  dependencyResults: this.deps.dependencyResults,
42
46
  customIdMap: this.deps.customIdMap,
43
47
  jobLogs: this.deps.jobLogs,
44
48
  jobLocks: this.deps.jobLocks,
49
+ retiredCronLeaseTokens: this.deps.retiredCronLeaseTokens,
45
50
  clientJobs: this.deps.clientJobs,
46
51
  stalledCandidates: this.deps.stalledCandidates,
47
52
  pendingDepChecks: this.deps.pendingDepChecks,
@@ -89,6 +94,8 @@ export class ContextFactory {
89
94
  depCompletions: this.deps.depCompletions,
90
95
  maxDependencyCompletions: this.deps.config.maxCompletedJobs,
91
96
  timedOutJobs: this.deps.timedOutJobs,
97
+ retiredTimeoutLeaseTokens: this.deps.retiredTimeoutLeaseTokens,
98
+ retiredCronLeaseTokens: this.deps.retiredCronLeaseTokens,
92
99
  jobResults: this.deps.jobResults,
93
100
  dependencyResults: this.deps.dependencyResults,
94
101
  customIdMap: this.deps.customIdMap,
@@ -121,6 +128,7 @@ export class ContextFactory {
121
128
  processingLocks: this.deps.processingLocks,
122
129
  completedJobs: this.deps.completedJobs,
123
130
  completedJobsData: this.deps.completedJobsData,
131
+ retiredCronLeaseTokens: this.deps.retiredCronLeaseTokens,
124
132
  depCompletions: this.deps.depCompletions,
125
133
  maxDependencyCompletions: this.deps.config.maxCompletedJobs,
126
134
  jobResults: this.deps.jobResults,
@@ -11,6 +11,7 @@ export declare class DependencyResultTracker {
11
11
  retain(dependencyId: JobId, result: unknown): void;
12
12
  has(dependencyId: JobId): boolean;
13
13
  get(dependencyId: JobId): unknown;
14
+ hasConsumers(dependencyId: JobId): boolean;
14
15
  releaseConsumer(consumerId: JobId): void;
15
16
  releaseDependency(consumerId: JobId, dependencyId: JobId): void;
16
17
  clear(): void;
@@ -35,6 +35,9 @@ export class DependencyResultTracker {
35
35
  get(dependencyId) {
36
36
  return this.protectedResults.get(dependencyId);
37
37
  }
38
+ hasConsumers(dependencyId) {
39
+ return (this.consumersByDependency.get(dependencyId)?.size ?? 0) > 0;
40
+ }
38
41
  releaseConsumer(consumerId) {
39
42
  const dependencies = this.dependenciesByConsumer.get(consumerId);
40
43
  if (!dependencies)