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
@@ -19,8 +19,12 @@ export declare class WorkerRateLimiter {
19
19
  * O(1) amortized — advances head pointer past expired tokens.
20
20
  */
21
21
  canProcessWithinLimit(): boolean;
22
- /** Record a job completion for rate limiting. */
22
+ /** Atomically reserve one start in the current window. */
23
+ tryAcquire(): boolean;
24
+ /** Record a synthetic start, retained for diagnostics and focused unit tests. */
23
25
  recordJobForLimiter(): void;
26
+ /** Number of starts that can be admitted without waiting. */
27
+ getAvailableSlots(): number;
24
28
  /**
25
29
  * Get time until rate limiter allows next job (ms).
26
30
  * Returns 0 if not rate limited.
@@ -13,6 +13,13 @@ export class WorkerRateLimiter {
13
13
  rateLimitExpiration = 0;
14
14
  constructor(limiter) {
15
15
  this.limiter = limiter;
16
+ if (limiter &&
17
+ (!Number.isInteger(limiter.max) ||
18
+ limiter.max <= 0 ||
19
+ !Number.isFinite(limiter.duration) ||
20
+ limiter.duration <= 0)) {
21
+ throw new RangeError('Worker limiter max and duration must be positive finite values');
22
+ }
16
23
  }
17
24
  /**
18
25
  * Check if rate limiter allows processing another job.
@@ -20,35 +27,54 @@ export class WorkerRateLimiter {
20
27
  * O(1) amortized — advances head pointer past expired tokens.
21
28
  */
22
29
  canProcessWithinLimit() {
30
+ return this.getAvailableSlots() > 0;
31
+ }
32
+ /** Atomically reserve one start in the current window. */
33
+ tryAcquire() {
34
+ const now = Date.now();
35
+ if (now < this.rateLimitExpiration)
36
+ return false;
23
37
  if (!this.limiter)
24
38
  return true;
25
- const windowStart = Date.now() - this.limiter.duration;
39
+ const windowStart = now - this.limiter.duration;
26
40
  this.evictExpired(windowStart);
27
- return this.activeCount() < this.limiter.max;
41
+ if (this.activeCount() >= this.limiter.max)
42
+ return false;
43
+ this.limiterTokens.push(now);
44
+ return true;
28
45
  }
29
- /** Record a job completion for rate limiting. */
46
+ /** Record a synthetic start, retained for diagnostics and focused unit tests. */
30
47
  recordJobForLimiter() {
31
48
  if (!this.limiter)
32
49
  return;
33
50
  this.limiterTokens.push(Date.now());
34
51
  }
52
+ /** Number of starts that can be admitted without waiting. */
53
+ getAvailableSlots() {
54
+ const now = Date.now();
55
+ if (now < this.rateLimitExpiration)
56
+ return 0;
57
+ if (!this.limiter)
58
+ return Number.POSITIVE_INFINITY;
59
+ this.evictExpired(now - this.limiter.duration);
60
+ return Math.max(0, this.limiter.max - this.activeCount());
61
+ }
35
62
  /**
36
63
  * Get time until rate limiter allows next job (ms).
37
64
  * Returns 0 if not rate limited.
38
65
  * O(1) — oldest active token is at this.limiterTokens[this.head].
39
66
  */
40
67
  getTimeUntilNextSlot() {
41
- if (!this.limiter)
42
- return 0;
43
68
  const now = Date.now();
44
- const windowStart = now - this.limiter.duration;
45
- this.evictExpired(windowStart);
46
- if (this.activeCount() < this.limiter.max) {
47
- return 0;
48
- }
49
- // Oldest active token is at head — no need for Math.min(...spread)
69
+ const overrideWait = Math.max(0, this.rateLimitExpiration - now);
70
+ if (!this.limiter)
71
+ return overrideWait;
72
+ this.evictExpired(now - this.limiter.duration);
73
+ if (this.activeCount() < this.limiter.max)
74
+ return overrideWait;
50
75
  const oldestToken = this.limiterTokens[this.head];
51
- return oldestToken + this.limiter.duration - now;
76
+ const windowWait = Math.max(0, oldestToken + this.limiter.duration - now);
77
+ return Math.max(overrideWait, windowWait);
52
78
  }
53
79
  /** Get rate limiter info (for debugging/monitoring). */
54
80
  getRateLimiterInfo() {
@@ -67,15 +93,9 @@ export class WorkerRateLimiter {
67
93
  * The worker will not process jobs until the rate limit expires.
68
94
  */
69
95
  rateLimit(expireTimeMs) {
70
- if (expireTimeMs <= 0)
96
+ if (!Number.isFinite(expireTimeMs) || expireTimeMs <= 0)
71
97
  return;
72
- if (this.limiter) {
73
- const now = Date.now();
74
- for (let i = 0; i < this.limiter.max; i++) {
75
- this.limiterTokens.push(now + expireTimeMs - this.limiter.duration);
76
- }
77
- }
78
- this.rateLimitExpiration = Date.now() + expireTimeMs;
98
+ this.rateLimitExpiration = Math.max(this.rateLimitExpiration, Date.now() + expireTimeMs);
79
99
  }
80
100
  /** Check if worker is currently rate limited. */
81
101
  isRateLimited() {
@@ -3,3 +3,4 @@
3
3
  * @deprecated Import from './worker' instead
4
4
  */
5
5
  export { Worker } from './worker/worker';
6
+ export type { ManualJob } from './worker/types';
@@ -1,4 +1,5 @@
1
1
  /** Nested-saga compensation. */
2
+ import type { LostCompensationClaim } from './compensationClaim';
2
3
  import type { WorkflowEmitter } from './emitter';
3
4
  import type { WorkflowStore } from './store';
4
5
  import type { Execution, StepRecord } from './types';
@@ -11,7 +12,7 @@ export interface ChildUnwindRequest {
11
12
  workflows?: Map<string, Workflow>;
12
13
  retryFailed?: boolean;
13
14
  }
14
- export type ChildUnwind = (request: ChildUnwindRequest) => Promise<'ran' | 'claim-lost'>;
15
+ export type ChildUnwind = (request: ChildUnwindRequest) => Promise<'ran' | LostCompensationClaim>;
15
16
  export interface UnwindChildRequest {
16
17
  record: StepRecord;
17
18
  store: WorkflowStore;
@@ -30,7 +30,7 @@ export async function unwindChild(request) {
30
30
  workflows,
31
31
  retryFailed,
32
32
  });
33
- if (outcome === 'claim-lost') {
33
+ if (outcome !== 'ran') {
34
34
  throw new Error(`child "${child.workflowName}" (${childId}) is being rolled back by another driver; ` +
35
35
  'outcome unknown');
36
36
  }
@@ -0,0 +1,11 @@
1
+ /** Process-local ownership for one workflow unwind. */
2
+ export interface AcquiredCompensationClaim {
3
+ readonly kind: 'acquired';
4
+ release(): void;
5
+ }
6
+ export interface LostCompensationClaim {
7
+ readonly kind: 'claim-lost';
8
+ readonly sameOwner: boolean;
9
+ readonly settled: Promise<void>;
10
+ }
11
+ export declare function acquireCompensationClaim(executionId: string, owner: object): AcquiredCompensationClaim | LostCompensationClaim;
@@ -0,0 +1,30 @@
1
+ /** Process-local ownership for one workflow unwind. */
2
+ const active = new Map();
3
+ export function acquireCompensationClaim(executionId, owner) {
4
+ const current = active.get(executionId);
5
+ if (current) {
6
+ return {
7
+ kind: 'claim-lost',
8
+ sameOwner: current.owner === owner,
9
+ settled: current.settled,
10
+ };
11
+ }
12
+ let resolveFinished = () => undefined;
13
+ const settled = new Promise((resolve) => {
14
+ resolveFinished = resolve;
15
+ });
16
+ const claim = { owner, settled, finish: resolveFinished };
17
+ active.set(executionId, claim);
18
+ let released = false;
19
+ return {
20
+ kind: 'acquired',
21
+ release() {
22
+ if (released)
23
+ return;
24
+ released = true;
25
+ if (active.get(executionId) === claim)
26
+ active.delete(executionId);
27
+ claim.finish();
28
+ },
29
+ };
30
+ }
@@ -5,6 +5,7 @@
5
5
  * from overlapping in-process drivers. The execution mechanics live in
6
6
  * compensationPass.ts; record selection lives in compensationSupport.ts.
7
7
  */
8
+ import type { LostCompensationClaim } from './compensationClaim';
8
9
  import type { WorkflowEmitter } from './emitter';
9
10
  import type { WorkflowStore } from './store';
10
11
  import type { Execution } from './types';
@@ -15,8 +16,12 @@ export declare class WaitForSignalError extends Error {
15
16
  readonly event: string;
16
17
  constructor(event: string);
17
18
  }
18
- /** `claim-lost` means another local driver owns the unwind and this call did nothing. */
19
- export type UnwindOutcome = 'ran' | 'claim-lost';
19
+ /**
20
+ * This is not a distributed lock. It prevents two local recovery/operator paths from
21
+ * reading the same unsettled snapshot and issuing the same reversal twice. A losing
22
+ * recovery path receives the current owner's completion latch and can retry safely.
23
+ */
24
+ export type UnwindOutcome = 'ran' | LostCompensationClaim;
20
25
  /** Run compensation handlers in reverse start order for every eligible step. */
21
26
  export declare function runCompensation(exec: Execution, wf: Workflow, store: WorkflowStore, emitter: WorkflowEmitter | null, workflows?: Map<string, Workflow>, opts?: {
22
27
  retryFailed?: boolean;
@@ -7,6 +7,7 @@
7
7
  */
8
8
  import { unwind } from './compensationPass';
9
9
  import { AbandonedCompensationError } from './compensationChild';
10
+ import { acquireCompensationClaim } from './compensationClaim';
10
11
  import { settle, unwindSet } from './compensationSupport';
11
12
  import { owesOutcome } from './unwindPlan';
12
13
  export { AbandonedCompensationError, CommittedChildError } from './compensationChild';
@@ -18,13 +19,6 @@ export class WaitForSignalError extends Error {
18
19
  this.event = event;
19
20
  }
20
21
  }
21
- /**
22
- * Executions with an unwind in flight in this process.
23
- *
24
- * This is not a distributed lock. It prevents two local recovery/operator paths from
25
- * reading the same unsettled snapshot and issuing the same reversal twice.
26
- */
27
- const inFlight = new Set();
28
22
  /** Run compensation handlers in reverse start order for every eligible step. */
29
23
  // biome-ignore lint/complexity/useMaxParams: registry and operator retry are independent inputs
30
24
  export async function runCompensation(exec, wf, store, emitter, workflows, opts = {}) {
@@ -41,14 +35,14 @@ export async function runCompensation(exec, wf, store, emitter, workflows, opts
41
35
  store.update(exec);
42
36
  return 'ran';
43
37
  }
44
- if (inFlight.has(exec.id))
45
- return 'claim-lost';
46
- inFlight.add(exec.id);
38
+ const claim = acquireCompensationClaim(exec.id, store);
39
+ if (claim.kind === 'claim-lost')
40
+ return claim;
47
41
  try {
48
42
  await unwind({ exec, wf, store, emitter, eligible, workflows, ...opts }, ({ exec, workflow, store, emitter, workflows, retryFailed }) => runCompensation(exec, workflow, store, emitter, workflows, { retryFailed }));
49
43
  }
50
44
  finally {
51
- inFlight.delete(exec.id);
45
+ claim.release();
52
46
  }
53
47
  return 'ran';
54
48
  }
@@ -51,14 +51,37 @@ export async function recoverExecutions(deps) {
51
51
  // recoverable until runCompensation writes an explicit rollbackStatus.
52
52
  // A lost claim means another driver owns this unwind, so nothing happened here
53
53
  // and counting it as a recovery would overstate what recover() did.
54
- const outcome = await runCompensation(exec, wf, store, deps.emitter, deps.workflows);
55
- if (outcome === 'ran')
54
+ if (await recoverCompensation(exec.id, wf, deps))
56
55
  result.compensating++;
57
56
  }
58
57
  }
59
58
  result.total = result.running + result.waiting + result.compensating;
60
59
  return result;
61
60
  }
61
+ async function recoverCompensation(executionId, wf, deps) {
62
+ while (true) {
63
+ const exec = deps.store.get(executionId);
64
+ if (!exec ||
65
+ (exec.state !== 'compensating' &&
66
+ !(exec.state === 'failed' && exec.rollbackStatus === undefined))) {
67
+ return false;
68
+ }
69
+ bindExecutionDefinition(exec, wf, (value) => deps.store.update(value));
70
+ const outcome = await runCompensation(exec, wf, deps.store, deps.emitter, deps.workflows);
71
+ if (outcome === 'ran')
72
+ return true;
73
+ // A live unwind owned by this executor's store is not orphaned. Waiting here
74
+ // would deadlock callers that deliberately hold the handler open until recover()
75
+ // returns, and it would make a health-time recovery call wait for user code.
76
+ if (outcome.sameOwner)
77
+ return false;
78
+ // A force-closed Engine can leave its JavaScript compensation handler alive
79
+ // briefly after its store is closed. A replacement Engine has a different store
80
+ // identity, so it waits for that owner, then re-reads the durable row: it may have
81
+ // finished, or this engine must resume the owed unwind.
82
+ await outcome.settled;
83
+ }
84
+ }
62
85
  async function enqueueExecution(exec, queue) {
63
86
  const jobData = {
64
87
  executionId: exec.id,
@@ -27,7 +27,7 @@ import { abandonCompensation, runCompensation } from './compensator';
27
27
  export async function resumeCompensation(deps, executionId) {
28
28
  const { exec, wf } = parked(deps, executionId);
29
29
  const outcome = await runCompensation(exec, wf, deps.store, deps.emitter, deps.workflows, { retryFailed: true });
30
- if (outcome === 'claim-lost') {
30
+ if (outcome !== 'ran') {
31
31
  // Nothing was mutated: `runCompensation` returns this before the unwind begins.
32
32
  throw new Error(`execution "${executionId}" is already being rolled back by another driver`);
33
33
  }
@@ -0,0 +1,12 @@
1
+ export declare const DEFAULT_MAX_BACKOFF = 3600000;
2
+ export declare const MAX_TIMELINE_ENTRIES = 20;
3
+ export declare const DEFAULT_LOCK_TTL = 30000;
4
+ export declare const JOB_DEFAULTS: {
5
+ readonly priority: 0;
6
+ readonly maxAttempts: 3;
7
+ readonly backoff: 1000;
8
+ readonly lifo: false;
9
+ readonly removeOnComplete: false;
10
+ readonly removeOnFail: false;
11
+ readonly stackTraceLimit: 10;
12
+ };
@@ -0,0 +1,12 @@
1
+ export const DEFAULT_MAX_BACKOFF = 3_600_000;
2
+ export const MAX_TIMELINE_ENTRIES = 20;
3
+ export const DEFAULT_LOCK_TTL = 30_000;
4
+ export const JOB_DEFAULTS = {
5
+ priority: 0,
6
+ maxAttempts: 3,
7
+ backoff: 1000,
8
+ lifo: false,
9
+ removeOnComplete: false,
10
+ removeOnFail: false,
11
+ stackTraceLimit: 10,
12
+ };
@@ -0,0 +1,2 @@
1
+ import type { Job, JobId, JobInput } from '../types/jobs/model';
2
+ export declare function createJob(id: JobId, queue: string, input: JobInput, now?: number): Job;
@@ -0,0 +1,103 @@
1
+ import { JOB_DEFAULTS } from './constants';
2
+ import { normalizeJobPayload } from './payload';
3
+ function parseBackoff(input) {
4
+ if (typeof input === 'object') {
5
+ return {
6
+ backoff: input.delay,
7
+ backoffConfig: { type: input.type, delay: input.delay },
8
+ };
9
+ }
10
+ return { backoff: input ?? JOB_DEFAULTS.backoff, backoffConfig: null };
11
+ }
12
+ function parseRepeatConfig(repeat) {
13
+ if (!repeat)
14
+ return null;
15
+ return {
16
+ every: repeat.every,
17
+ limit: repeat.limit,
18
+ pattern: repeat.pattern,
19
+ count: repeat.count ?? 0,
20
+ startDate: repeat.startDate,
21
+ endDate: repeat.endDate,
22
+ tz: repeat.tz,
23
+ immediately: repeat.immediately,
24
+ prevMillis: repeat.prevMillis,
25
+ offset: repeat.offset,
26
+ jobId: repeat.jobId,
27
+ };
28
+ }
29
+ function toBoolean(value, fallback) {
30
+ return value === undefined ? fallback : Boolean(value);
31
+ }
32
+ function parseCoreOptions(input) {
33
+ return {
34
+ priority: input.priority ?? JOB_DEFAULTS.priority,
35
+ lifo: input.lifo ?? JOB_DEFAULTS.lifo,
36
+ maxAttempts: input.maxAttempts ?? JOB_DEFAULTS.maxAttempts,
37
+ removeOnComplete: toBoolean(input.removeOnComplete, JOB_DEFAULTS.removeOnComplete),
38
+ removeOnFail: toBoolean(input.removeOnFail, JOB_DEFAULTS.removeOnFail),
39
+ };
40
+ }
41
+ function parseOptionalFields(input) {
42
+ return {
43
+ ttl: input.ttl ?? null,
44
+ timeout: input.timeout ?? null,
45
+ uniqueKey: input.uniqueKey ?? null,
46
+ customId: input.customId ?? null,
47
+ parentId: input.parentId ?? null,
48
+ groupId: input.groupId ?? null,
49
+ stallTimeout: input.stallTimeout ?? null,
50
+ };
51
+ }
52
+ function parseBullMQV5Options(input) {
53
+ return {
54
+ stackTraceLimit: input.stackTraceLimit ?? JOB_DEFAULTS.stackTraceLimit,
55
+ keepLogs: input.keepLogs ?? null,
56
+ sizeLimit: input.sizeLimit ?? null,
57
+ failParentOnFailure: input.failParentOnFailure ?? false,
58
+ removeDependencyOnFailure: input.removeDependencyOnFailure ?? false,
59
+ continueParentOnFailure: input.continueParentOnFailure ?? false,
60
+ ignoreDependencyOnFailure: input.ignoreDependencyOnFailure ?? false,
61
+ deduplicationTtl: input.dedup?.ttl ?? null,
62
+ deduplicationExtend: input.dedup?.extend ?? false,
63
+ deduplicationReplace: input.dedup?.replace ?? false,
64
+ debounceId: input.debounceId ?? null,
65
+ debounceTtl: input.debounceTtl ?? null,
66
+ };
67
+ }
68
+ export function createJob(id, queue, input, now = Date.now()) {
69
+ const { backoff, backoffConfig } = parseBackoff(input.backoff);
70
+ const coreOpts = parseCoreOptions(input);
71
+ const optionalFields = parseOptionalFields(input);
72
+ const v5Opts = parseBullMQV5Options(input);
73
+ const createdAt = input.timestamp ?? now;
74
+ const payload = normalizeJobPayload(input);
75
+ return {
76
+ id,
77
+ queue,
78
+ name: payload.name,
79
+ data: payload.data,
80
+ createdAt,
81
+ runAt: createdAt + (input.delay ?? 0),
82
+ startedAt: null,
83
+ completedAt: null,
84
+ attempts: 0,
85
+ backoff,
86
+ backoffConfig,
87
+ dependsOn: input.dependsOn ?? [],
88
+ childrenIds: input.childrenIds ?? [],
89
+ childrenCompleted: 0,
90
+ tags: input.tags ?? [],
91
+ progress: 0,
92
+ progressMessage: null,
93
+ stacktrace: null,
94
+ repeat: parseRepeatConfig(input.repeat),
95
+ durable: input.durable ?? false,
96
+ lastHeartbeat: createdAt,
97
+ stallCount: 0,
98
+ ...coreOpts,
99
+ ...optionalFields,
100
+ ...v5Opts,
101
+ timeline: [],
102
+ };
103
+ }
@@ -0,0 +1,5 @@
1
+ import type { JobId, LockToken } from '../types/jobs/model';
2
+ export declare function jobId(id: string): JobId;
3
+ export declare function generateJobId(): JobId;
4
+ export declare function lockToken(token: string): LockToken;
5
+ export declare function generateLockToken(): LockToken;
@@ -0,0 +1,12 @@
1
+ export function jobId(id) {
2
+ return id;
3
+ }
4
+ export function generateJobId() {
5
+ return Bun.randomUUIDv7();
6
+ }
7
+ export function lockToken(token) {
8
+ return token;
9
+ }
10
+ export function generateLockToken() {
11
+ return Bun.randomUUIDv7();
12
+ }
@@ -0,0 +1,4 @@
1
+ import type { JobId, JobLock } from '../types/jobs/model';
2
+ export declare function createJobLock(jobId: JobId, owner: string, ttl?: number, now?: number): JobLock;
3
+ export declare function isLockExpired(lock: JobLock, now?: number): boolean;
4
+ export declare function renewLock(lock: JobLock, newTtl?: number, now?: number): void;
@@ -0,0 +1,23 @@
1
+ import { DEFAULT_LOCK_TTL } from './constants';
2
+ import { generateLockToken } from './ids';
3
+ export function createJobLock(jobId, owner, ttl = DEFAULT_LOCK_TTL, now = Date.now()) {
4
+ return {
5
+ jobId,
6
+ token: generateLockToken(),
7
+ owner,
8
+ createdAt: now,
9
+ expiresAt: now + ttl,
10
+ lastRenewalAt: now,
11
+ renewalCount: 0,
12
+ ttl,
13
+ };
14
+ }
15
+ export function isLockExpired(lock, now = Date.now()) {
16
+ return now >= lock.expiresAt;
17
+ }
18
+ export function renewLock(lock, newTtl, now = Date.now()) {
19
+ const ttl = newTtl ?? lock.ttl;
20
+ lock.expiresAt = now + ttl;
21
+ lock.lastRenewalAt = now;
22
+ lock.renewalCount++;
23
+ }
@@ -0,0 +1,18 @@
1
+ export interface JobPayloadSource {
2
+ readonly name?: unknown;
3
+ readonly data: unknown;
4
+ }
5
+ export interface NormalizedJobPayload {
6
+ readonly name: string;
7
+ readonly data: unknown;
8
+ readonly legacy: boolean;
9
+ }
10
+ /** Return the stable public validation error for an invalid job name. */
11
+ export declare function validateJobName(name: unknown): string | null;
12
+ /**
13
+ * Resolve a modern payload. A missing explicit name defaults without inspecting
14
+ * `data`, so direct QueueManager callers can use `data.name` as an ordinary key.
15
+ */
16
+ export declare function normalizeJobPayload(source: JobPayloadSource, fallback?: string): NormalizedJobPayload;
17
+ /** Decode a pre-2.8.56 wire or persistence envelope at a known legacy boundary. */
18
+ export declare function normalizeLegacyJobPayload(source: JobPayloadSource, fallback?: string): NormalizedJobPayload;
@@ -0,0 +1,43 @@
1
+ const DEFAULT_JOB_NAME = 'default';
2
+ const MAX_JOB_NAME_LENGTH = 256;
3
+ function legacyEnvelope(data) {
4
+ if (typeof data !== 'object' || data === null || Array.isArray(data))
5
+ return null;
6
+ const record = data;
7
+ if (typeof record.name !== 'string')
8
+ return null;
9
+ const { name, ...userData } = record;
10
+ return { name, data: userData };
11
+ }
12
+ /** Return the stable public validation error for an invalid job name. */
13
+ export function validateJobName(name) {
14
+ if (typeof name !== 'string' || name.length === 0 || name.length > MAX_JOB_NAME_LENGTH) {
15
+ return 'Job name must be a non-empty string of at most 256 characters';
16
+ }
17
+ return null;
18
+ }
19
+ function checkedName(name) {
20
+ const error = validateJobName(name);
21
+ if (error)
22
+ throw new Error(error);
23
+ return name;
24
+ }
25
+ /**
26
+ * Resolve a modern payload. A missing explicit name defaults without inspecting
27
+ * `data`, so direct QueueManager callers can use `data.name` as an ordinary key.
28
+ */
29
+ export function normalizeJobPayload(source, fallback = DEFAULT_JOB_NAME) {
30
+ if (source.name !== undefined) {
31
+ return { name: checkedName(source.name), data: source.data, legacy: false };
32
+ }
33
+ return { name: checkedName(fallback), data: source.data, legacy: false };
34
+ }
35
+ /** Decode a pre-2.8.56 wire or persistence envelope at a known legacy boundary. */
36
+ export function normalizeLegacyJobPayload(source, fallback = DEFAULT_JOB_NAME) {
37
+ if (source.name !== undefined)
38
+ return normalizeJobPayload(source, fallback);
39
+ const legacy = legacyEnvelope(source.data);
40
+ if (legacy)
41
+ return { name: checkedName(legacy.name), data: legacy.data, legacy: true };
42
+ return { name: checkedName(fallback), data: source.data, legacy: false };
43
+ }
@@ -0,0 +1,8 @@
1
+ import type { Job } from '../types/jobs/model';
2
+ export declare function normalizeStacktrace(lines: readonly unknown[] | undefined, limit: number): string[] | null;
3
+ export declare function isDelayed(job: Job, now?: number): boolean;
4
+ export declare function isReady(job: Job, now?: number): boolean;
5
+ export declare function isExpired(job: Job, now?: number): boolean;
6
+ export declare function isTimedOut(job: Job, now?: number): boolean;
7
+ export declare function calculateBackoff(job: Job): number;
8
+ export declare function canRetry(job: Job): boolean;
@@ -0,0 +1,51 @@
1
+ import { DEFAULT_MAX_BACKOFF } from './constants';
2
+ export function normalizeStacktrace(lines, limit) {
3
+ if (!lines || lines.length === 0)
4
+ return null;
5
+ const out = [];
6
+ for (const line of lines) {
7
+ if (out.length >= limit)
8
+ break;
9
+ if (typeof line !== 'string')
10
+ continue;
11
+ const trimmed = line.trim();
12
+ if (trimmed)
13
+ out.push(trimmed);
14
+ }
15
+ return out.length > 0 ? out : null;
16
+ }
17
+ export function isDelayed(job, now = Date.now()) {
18
+ return job.runAt > now;
19
+ }
20
+ export function isReady(job, now = Date.now()) {
21
+ return job.runAt <= now;
22
+ }
23
+ export function isExpired(job, now = Date.now()) {
24
+ if (job.ttl === null)
25
+ return false;
26
+ return now > job.createdAt + job.ttl;
27
+ }
28
+ export function isTimedOut(job, now = Date.now()) {
29
+ if (job.timeout === null || job.startedAt === null)
30
+ return false;
31
+ return now > job.startedAt + job.timeout;
32
+ }
33
+ export function calculateBackoff(job) {
34
+ const maxDelay = job.backoffConfig?.maxDelay ?? DEFAULT_MAX_BACKOFF;
35
+ if (job.backoffConfig) {
36
+ if (job.backoffConfig.type === 'fixed') {
37
+ const base = job.backoffConfig.delay;
38
+ const jittered = base * (0.8 + Math.random() * 0.4);
39
+ return Math.min(jittered, maxDelay);
40
+ }
41
+ const base = job.backoffConfig.delay * Math.pow(2, job.attempts);
42
+ const jittered = base * (0.5 + Math.random());
43
+ return Math.min(jittered, maxDelay);
44
+ }
45
+ const base = job.backoff * Math.pow(2, job.attempts);
46
+ const jittered = base * (0.5 + Math.random());
47
+ return Math.min(jittered, maxDelay);
48
+ }
49
+ export function canRetry(job) {
50
+ return job.attempts < job.maxAttempts;
51
+ }
@@ -0,0 +1,3 @@
1
+ import type { Job } from '../types/job';
2
+ /** Return the most recent persisted processor failure for a job. */
3
+ export declare function lastFailedReason(job: Pick<Job, 'timeline'>): string | undefined;
@@ -0,0 +1,9 @@
1
+ /** Return the most recent persisted processor failure for a job. */
2
+ export function lastFailedReason(job) {
3
+ for (let index = job.timeline.length - 1; index >= 0; index--) {
4
+ const entry = job.timeline[index];
5
+ if (entry.state === 'failed' && entry.error)
6
+ return entry.error;
7
+ }
8
+ return undefined;
9
+ }
@@ -9,6 +9,7 @@ import type { StallConfig } from '../types/stall';
9
9
  export interface DlqStatsCallback {
10
10
  incrementDlq(): void;
11
11
  decrementDlq(count?: number): void;
12
+ onEvict?(entry: DlqEntry): void;
12
13
  }
13
14
  /**
14
15
  * Manages Dead Letter Queue operations for a shard
@@ -57,4 +58,5 @@ export declare class DlqShard {
57
58
  getQueueNames(): string[];
58
59
  /** Delete queue data */
59
60
  deleteQueue(queue: string): number;
61
+ private evictUntil;
60
62
  }