bunqueue-client 0.1.8 → 0.2.0

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 (580) hide show
  1. package/CHANGELOG.md +162 -0
  2. package/LEGACY.md +460 -0
  3. package/README.md +204 -349
  4. package/dist/ack-batcher.js +7 -67
  5. package/dist/canonical-manifest.json +930 -0
  6. package/dist/chunk-b967v3w3.js +79 -0
  7. package/dist/chunk-fekm0ma6.js +110 -0
  8. package/dist/chunk-jxkszwqp.js +573 -0
  9. package/dist/embedded.js +16418 -0
  10. package/dist/frame.js +14 -57
  11. package/dist/index.d.ts +1 -27
  12. package/dist/index.js +10905 -16
  13. package/dist/legacy.d.ts +1 -0
  14. package/dist/legacy.js +2081 -0
  15. package/dist/{ack-batcher.d.ts → types/sdk/typescript/src/ack-batcher.d.ts} +3 -3
  16. package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/aging.d.ts +2 -2
  17. package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/batch.d.ts +2 -2
  18. package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/bunqueue-api.d.ts +5 -5
  19. package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/bunqueue.d.ts +13 -13
  20. package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/circuit-breaker.d.ts +2 -2
  21. package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/dedup-debounce.d.ts +2 -2
  22. package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/dlq-rate-limit.d.ts +2 -2
  23. package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/rate-gate.d.ts +1 -1
  24. package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/retry.d.ts +1 -1
  25. package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/triggers.d.ts +3 -3
  26. package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/ttl.d.ts +1 -1
  27. package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/types.d.ts +4 -4
  28. package/dist/types/sdk/typescript/src/canonical-transport/bun-sqlite-types.d.ts +21 -0
  29. package/dist/{connection-pool.d.ts → types/sdk/typescript/src/connection-pool.d.ts} +1 -1
  30. package/dist/{connection-types.d.ts → types/sdk/typescript/src/connection-types.d.ts} +1 -1
  31. package/dist/{connection.d.ts → types/sdk/typescript/src/connection.d.ts} +6 -19
  32. package/dist/{errors.d.ts → types/sdk/typescript/src/errors.d.ts} +3 -0
  33. package/dist/types/sdk/typescript/src/flow-commit.d.ts +5 -0
  34. package/dist/types/sdk/typescript/src/flow-plan-legacy.d.ts +13 -0
  35. package/dist/types/sdk/typescript/src/flow-plan.d.ts +29 -0
  36. package/dist/{flow-types.d.ts → types/sdk/typescript/src/flow-types.d.ts} +7 -4
  37. package/dist/{flow.d.ts → types/sdk/typescript/src/flow.d.ts} +6 -10
  38. package/dist/{frame.d.ts → types/sdk/typescript/src/frame.d.ts} +1 -1
  39. package/dist/types/sdk/typescript/src/index.d.ts +10 -0
  40. package/dist/{job.d.ts → types/sdk/typescript/src/job.d.ts} +4 -3
  41. package/dist/types/sdk/typescript/src/legacy.d.ts +27 -0
  42. package/dist/{observability.d.ts → types/sdk/typescript/src/observability.d.ts} +14 -0
  43. package/dist/{queue-admin.d.ts → types/sdk/typescript/src/queue-admin.d.ts} +3 -4
  44. package/dist/{queue-control.d.ts → types/sdk/typescript/src/queue-control.d.ts} +7 -6
  45. package/dist/{queue-query.d.ts → types/sdk/typescript/src/queue-query.d.ts} +3 -3
  46. package/dist/{queue.d.ts → types/sdk/typescript/src/queue.d.ts} +8 -8
  47. package/dist/{responses.d.ts → types/sdk/typescript/src/responses.d.ts} +2 -2
  48. package/dist/types/sdk/typescript/src/serialization.d.ts +10 -0
  49. package/dist/{socket-factory.d.ts → types/sdk/typescript/src/socket-factory.d.ts} +1 -1
  50. package/dist/types/sdk/typescript/src/terminal-outcome.d.ts +8 -0
  51. package/dist/{types.d.ts → types/sdk/typescript/src/types.d.ts} +5 -2
  52. package/dist/{worker-base.d.ts → types/sdk/typescript/src/worker-base.d.ts} +6 -6
  53. package/dist/types/sdk/typescript/src/worker-slot-signal.d.ts +6 -0
  54. package/dist/{worker-types.d.ts → types/sdk/typescript/src/worker-types.d.ts} +3 -3
  55. package/dist/{worker.d.ts → types/sdk/typescript/src/worker.d.ts} +3 -2
  56. package/dist/types/src/application/background/dlq.d.ts +2 -0
  57. package/dist/types/src/application/background/lifecycle.d.ts +4 -0
  58. package/dist/types/src/application/background/recovery/active.d.ts +5 -0
  59. package/dist/types/src/application/background/recovery/index.d.ts +2 -0
  60. package/dist/types/src/application/background/recovery/pending.d.ts +3 -0
  61. package/dist/types/src/application/background/recovery/restore.d.ts +5 -0
  62. package/dist/types/src/application/background/recovery/shared.d.ts +6 -0
  63. package/dist/types/src/application/background/timeouts.d.ts +25 -0
  64. package/dist/types/src/application/backgroundTasks.d.ts +7 -0
  65. package/dist/types/src/application/cleanupTasks.d.ts +10 -0
  66. package/dist/types/src/application/clientTracking.d.ts +44 -0
  67. package/dist/types/src/application/completedCleanup.d.ts +34 -0
  68. package/dist/types/src/application/completedRetry.d.ts +21 -0
  69. package/dist/types/src/application/contextFactory.d.ts +49 -0
  70. package/dist/types/src/application/dependencyCompletions.d.ts +63 -0
  71. package/dist/types/src/application/dependencyProcessor.d.ts +15 -0
  72. package/dist/types/src/application/dependencyResultTracker.d.ts +18 -0
  73. package/dist/types/src/application/dlqManager.d.ts +49 -0
  74. package/dist/types/src/application/dlqRetry.d.ts +12 -0
  75. package/dist/types/src/application/emptyQueueCleanup.d.ts +3 -0
  76. package/dist/types/src/application/eventsManager.d.ts +50 -0
  77. package/dist/types/src/application/flowFailureRecovery.d.ts +20 -0
  78. package/dist/types/src/application/flowParentBackpatch.d.ts +27 -0
  79. package/dist/types/src/application/jobLogsManager.d.ts +21 -0
  80. package/dist/types/src/application/latencyTracker.d.ts +39 -0
  81. package/dist/types/src/application/lockManager.d.ts +15 -0
  82. package/dist/types/src/application/lockOperations.d.ts +38 -0
  83. package/dist/types/src/application/metricsExporter.d.ts +27 -0
  84. package/dist/types/src/application/monitoringChecks.d.ts +36 -0
  85. package/dist/types/src/application/operations/ack/batch.d.ts +8 -0
  86. package/dist/types/src/application/operations/ack/completion.d.ts +3 -0
  87. package/dist/types/src/application/operations/ack/failure.d.ts +3 -0
  88. package/dist/types/src/application/operations/ack.d.ts +5 -0
  89. package/dist/types/src/application/operations/ackHelpers.d.ts +36 -0
  90. package/dist/types/src/application/operations/customId.d.ts +51 -0
  91. package/dist/types/src/application/operations/flowPush.d.ts +9 -0
  92. package/dist/types/src/application/operations/flowTopologyValidation.d.ts +3 -0
  93. package/dist/types/src/application/operations/flowValidation.d.ts +3 -0
  94. package/dist/types/src/application/operations/jobClaim.d.ts +17 -0
  95. package/dist/types/src/application/operations/jobManagement.d.ts +43 -0
  96. package/dist/types/src/application/operations/jobMoveOperations.d.ts +9 -0
  97. package/dist/types/src/application/operations/jobPromotion.d.ts +7 -0
  98. package/dist/types/src/application/operations/jobStateTransitions.d.ts +15 -0
  99. package/dist/types/src/application/operations/parentLink.d.ts +36 -0
  100. package/dist/types/src/application/operations/parentLinkInput.d.ts +8 -0
  101. package/dist/types/src/application/operations/pull.d.ts +20 -0
  102. package/dist/types/src/application/operations/pullFinalization.d.ts +6 -0
  103. package/dist/types/src/application/operations/pullStateTransition.d.ts +51 -0
  104. package/dist/types/src/application/operations/push.d.ts +13 -0
  105. package/dist/types/src/application/operations/pushAdmission.d.ts +36 -0
  106. package/dist/types/src/application/operations/pushBatch.d.ts +4 -0
  107. package/dist/types/src/application/operations/pushContext.d.ts +48 -0
  108. package/dist/types/src/application/operations/pushDeduplication.d.ts +42 -0
  109. package/dist/types/src/application/operations/pushInsert.d.ts +39 -0
  110. package/dist/types/src/application/operations/pushLocks.d.ts +15 -0
  111. package/dist/types/src/application/operations/query/collect.d.ts +12 -0
  112. package/dist/types/src/application/operations/query/jobLookup.d.ts +9 -0
  113. package/dist/types/src/application/operations/query/pagination.d.ts +8 -0
  114. package/dist/types/src/application/operations/query/state.d.ts +4 -0
  115. package/dist/types/src/application/operations/queryOperations.d.ts +5 -0
  116. package/dist/types/src/application/operations/queueControl.d.ts +50 -0
  117. package/dist/types/src/application/prometheusOperationalMetrics.d.ts +31 -0
  118. package/dist/types/src/application/queue-manager/ack.d.ts +23 -0
  119. package/dist/types/src/application/queue-manager/configuration.d.ts +27 -0
  120. package/dist/types/src/application/queue-manager/context.d.ts +5 -0
  121. package/dist/types/src/application/queue-manager/control.d.ts +20 -0
  122. package/dist/types/src/application/queue-manager/delivery.d.ts +33 -0
  123. package/dist/types/src/application/queue-manager/dependencies.d.ts +8 -0
  124. package/dist/types/src/application/queue-manager/dependency-runtime.d.ts +8 -0
  125. package/dist/types/src/application/queue-manager/flow-failures.d.ts +18 -0
  126. package/dist/types/src/application/queue-manager/flow-options.d.ts +8 -0
  127. package/dist/types/src/application/queue-manager/job-management.d.ts +17 -0
  128. package/dist/types/src/application/queue-manager/lifecycle.d.ts +4 -0
  129. package/dist/types/src/application/queue-manager/limits.d.ts +58 -0
  130. package/dist/types/src/application/queue-manager/locks.d.ts +21 -0
  131. package/dist/types/src/application/queue-manager/observability.d.ts +16 -0
  132. package/dist/types/src/application/queue-manager/queries.d.ts +24 -0
  133. package/dist/types/src/application/queue-manager/repeat.d.ts +4 -0
  134. package/dist/types/src/application/queue-manager/services.d.ts +19 -0
  135. package/dist/types/src/application/queue-manager/state.d.ts +96 -0
  136. package/dist/types/src/application/queue-manager/stats.d.ts +28 -0
  137. package/dist/types/src/application/queueManager.d.ts +5 -0
  138. package/dist/types/src/application/queueStatsAggregator.d.ts +23 -0
  139. package/dist/types/src/application/queueTelemetryJournal.d.ts +24 -0
  140. package/dist/types/src/application/repeatJobs.d.ts +7 -0
  141. package/dist/types/src/application/stallDetection.d.ts +10 -0
  142. package/dist/types/src/application/statsManager.d.ts +59 -0
  143. package/dist/types/src/application/taskErrorTracking.d.ts +22 -0
  144. package/dist/types/src/application/throughputTracker.d.ts +34 -0
  145. package/dist/types/src/application/types/ack.d.ts +136 -0
  146. package/dist/types/src/application/types/background.d.ts +18 -0
  147. package/dist/types/src/application/types/config.d.ts +41 -0
  148. package/dist/types/src/application/types/contextFactory.d.ts +87 -0
  149. package/dist/types/src/application/types/contexts.d.ts +114 -0
  150. package/dist/types/src/application/types/index.d.ts +7 -0
  151. package/dist/types/src/application/types/query.d.ts +23 -0
  152. package/dist/types/src/application/types/queueManager.d.ts +98 -0
  153. package/dist/types/src/application/webhookManager.d.ts +47 -0
  154. package/dist/types/src/application/workerManager.d.ts +61 -0
  155. package/dist/types/src/client/bunqueue/aging.d.ts +16 -0
  156. package/dist/types/src/client/bunqueue/batch.d.ts +16 -0
  157. package/dist/types/src/client/bunqueue/cancellation.d.ts +21 -0
  158. package/dist/types/src/client/bunqueue/circuitBreaker.d.ts +21 -0
  159. package/dist/types/src/client/bunqueue/dedupDebounce.d.ts +12 -0
  160. package/dist/types/src/client/bunqueue/dlqRateLimit.d.ts +26 -0
  161. package/dist/types/src/client/bunqueue/retry.d.ts +8 -0
  162. package/dist/types/src/client/bunqueue/runtime.d.ts +35 -0
  163. package/dist/types/src/client/bunqueue/triggers.d.ts +17 -0
  164. package/dist/types/src/client/bunqueue/ttl.d.ts +17 -0
  165. package/dist/types/src/client/bunqueue/types.d.ts +147 -0
  166. package/dist/types/src/client/bunqueue.d.ts +73 -0
  167. package/dist/types/src/client/dlqConversion.d.ts +5 -0
  168. package/dist/types/src/client/errors.d.ts +24 -0
  169. package/dist/types/src/client/events.d.ts +85 -0
  170. package/dist/types/src/client/flow.d.ts +70 -0
  171. package/dist/types/src/client/flowAtomic.d.ts +9 -0
  172. package/dist/types/src/client/flowJobCoreMethods.d.ts +28 -0
  173. package/dist/types/src/client/flowJobDependencies.d.ts +7 -0
  174. package/dist/types/src/client/flowJobFactory.d.ts +24 -0
  175. package/dist/types/src/client/flowJobMoveMethods.d.ts +16 -0
  176. package/dist/types/src/client/flowJobTypes.d.ts +29 -0
  177. package/dist/types/src/client/flowLegacyPlan.d.ts +16 -0
  178. package/dist/types/src/client/flowOptions.d.ts +10 -0
  179. package/dist/types/src/client/flowPlan.d.ts +16 -0
  180. package/dist/types/src/client/flowPush.d.ts +27 -0
  181. package/dist/types/src/client/flowReader.d.ts +10 -0
  182. package/dist/types/src/client/flowResults.d.ts +11 -0
  183. package/dist/types/src/client/flowTypes.d.ts +77 -0
  184. package/dist/types/src/client/forwarder.d.ts +74 -0
  185. package/dist/types/src/client/groupId.d.ts +1 -0
  186. package/dist/types/src/client/index.d.ts +46 -0
  187. package/dist/types/src/client/jobConversion.d.ts +10 -0
  188. package/dist/types/src/client/jobConversionHelpers.d.ts +28 -0
  189. package/dist/types/src/client/jobConversionTypes.d.ts +88 -0
  190. package/dist/types/src/client/jobDeduplication.d.ts +6 -0
  191. package/dist/types/src/client/jobHelpers.d.ts +31 -0
  192. package/dist/types/src/client/legacyConnectionOptions.d.ts +8 -0
  193. package/dist/types/src/client/manager.d.ts +15 -0
  194. package/dist/types/src/client/pro.d.ts +9 -0
  195. package/dist/types/src/client/queue/addBatcher.d.ts +59 -0
  196. package/dist/types/src/client/queue/bullmqCompat.d.ts +57 -0
  197. package/dist/types/src/client/queue/deduplication.d.ts +14 -0
  198. package/dist/types/src/client/queue/dlq.d.ts +61 -0
  199. package/dist/types/src/client/queue/dlqJobMethods.d.ts +9 -0
  200. package/dist/types/src/client/queue/dlqOps.d.ts +26 -0
  201. package/dist/types/src/client/queue/dlqStats.d.ts +3 -0
  202. package/dist/types/src/client/queue/failWire.d.ts +17 -0
  203. package/dist/types/src/client/queue/helpers.d.ts +19 -0
  204. package/dist/types/src/client/queue/job-proxy/dependencies.d.ts +9 -0
  205. package/dist/types/src/client/queue/job-proxy/reflection.d.ts +2 -0
  206. package/dist/types/src/client/queue/job-proxy/simple.d.ts +3 -0
  207. package/dist/types/src/client/queue/job-proxy/tcp.d.ts +4 -0
  208. package/dist/types/src/client/queue/jobMetadata.d.ts +10 -0
  209. package/dist/types/src/client/queue/jobMove.d.ts +32 -0
  210. package/dist/types/src/client/queue/jobProxy.d.ts +4 -0
  211. package/dist/types/src/client/queue/operations/add/bulk.d.ts +7 -0
  212. package/dist/types/src/client/queue/operations/add/payload.d.ts +25 -0
  213. package/dist/types/src/client/queue/operations/add/single.d.ts +3 -0
  214. package/dist/types/src/client/queue/operations/add.d.ts +2 -0
  215. package/dist/types/src/client/queue/operations/control.d.ts +42 -0
  216. package/dist/types/src/client/queue/operations/counts.d.ts +48 -0
  217. package/dist/types/src/client/queue/operations/groups.d.ts +24 -0
  218. package/dist/types/src/client/queue/operations/management.d.ts +51 -0
  219. package/dist/types/src/client/queue/operations/query.d.ts +50 -0
  220. package/dist/types/src/client/queue/operations/queryStates.d.ts +13 -0
  221. package/dist/types/src/client/queue/operations/queryTcpPages.d.ts +14 -0
  222. package/dist/types/src/client/queue/queue.d.ts +12 -0
  223. package/dist/types/src/client/queue/rateLimit.d.ts +46 -0
  224. package/dist/types/src/client/queue/runtime/compatibility.d.ts +13 -0
  225. package/dist/types/src/client/queue/runtime/configuration.d.ts +46 -0
  226. package/dist/types/src/client/queue/runtime/connection.d.ts +6 -0
  227. package/dist/types/src/client/queue/runtime/control.d.ts +41 -0
  228. package/dist/types/src/client/queue/runtime/queries.d.ts +66 -0
  229. package/dist/types/src/client/queue/runtime/scheduling.d.ts +33 -0
  230. package/dist/types/src/client/queue/runtime/state.d.ts +101 -0
  231. package/dist/types/src/client/queue/scheduler.d.ts +58 -0
  232. package/dist/types/src/client/queue/schedulerPagination.d.ts +7 -0
  233. package/dist/types/src/client/queue/stall.d.ts +20 -0
  234. package/dist/types/src/client/queue/types/add.d.ts +40 -0
  235. package/dist/types/src/client/queue/types/contexts.d.ts +33 -0
  236. package/dist/types/src/client/queue/types/index.d.ts +3 -0
  237. package/dist/types/src/client/queue/types/job.d.ts +50 -0
  238. package/dist/types/src/client/queue/types/runtime.d.ts +35 -0
  239. package/dist/types/src/client/queue/workers.d.ts +36 -0
  240. package/dist/types/src/client/queue-events/tcpSubscription.d.ts +23 -0
  241. package/dist/types/src/client/queue.d.ts +5 -0
  242. package/dist/types/src/client/queueGroup.d.ts +51 -0
  243. package/dist/types/src/client/resolveToken.d.ts +10 -0
  244. package/dist/types/src/client/sandboxed/index.d.ts +7 -0
  245. package/dist/types/src/client/sandboxed/queueOps.d.ts +24 -0
  246. package/dist/types/src/client/sandboxed/runtime/dispatch.d.ts +13 -0
  247. package/dist/types/src/client/sandboxed/runtime/lifecycle.d.ts +20 -0
  248. package/dist/types/src/client/sandboxed/runtime/log.d.ts +1 -0
  249. package/dist/types/src/client/sandboxed/runtime/pool.d.ts +11 -0
  250. package/dist/types/src/client/sandboxed/runtime/recovery.d.ts +11 -0
  251. package/dist/types/src/client/sandboxed/runtime/state.d.ts +39 -0
  252. package/dist/types/src/client/sandboxed/types/index.d.ts +2 -0
  253. package/dist/types/src/client/sandboxed/types/options.d.ts +27 -0
  254. package/dist/types/src/client/sandboxed/types/process.d.ts +39 -0
  255. package/dist/types/src/client/sandboxed/worker.d.ts +4 -0
  256. package/dist/types/src/client/sandboxed/wrapper.d.ts +12 -0
  257. package/dist/types/src/client/sandboxedWorker.d.ts +6 -0
  258. package/dist/types/src/client/tcp/client.d.ts +6 -0
  259. package/dist/types/src/client/tcp/commandQueue.d.ts +23 -0
  260. package/dist/types/src/client/tcp/connection.d.ts +4 -0
  261. package/dist/types/src/client/tcp/errors.d.ts +6 -0
  262. package/dist/types/src/client/tcp/health.d.ts +60 -0
  263. package/dist/types/src/client/tcp/index.d.ts +11 -0
  264. package/dist/types/src/client/tcp/reconnect.d.ts +47 -0
  265. package/dist/types/src/client/tcp/runtime/commands.d.ts +9 -0
  266. package/dist/types/src/client/tcp/runtime/connectivity.d.ts +13 -0
  267. package/dist/types/src/client/tcp/runtime/health.d.ts +14 -0
  268. package/dist/types/src/client/tcp/runtime/lifecycle.d.ts +8 -0
  269. package/dist/types/src/client/tcp/runtime/state.d.ts +50 -0
  270. package/dist/types/src/client/tcp/shared.d.ts +12 -0
  271. package/dist/types/src/client/tcp/transport.d.ts +18 -0
  272. package/dist/types/src/client/tcp/types/command.d.ts +9 -0
  273. package/dist/types/src/client/tcp/types/connection.d.ts +31 -0
  274. package/dist/types/src/client/tcp/types/index.d.ts +5 -0
  275. package/dist/types/src/client/tcp/types/socket.d.ts +8 -0
  276. package/dist/types/src/client/tcp/types/tls.d.ts +4 -0
  277. package/dist/types/src/client/tcp/types.d.ts +2 -0
  278. package/dist/types/src/client/tcpClient.d.ts +6 -0
  279. package/dist/types/src/client/tcpPool.d.ts +69 -0
  280. package/dist/types/src/client/types/connection.d.ts +30 -0
  281. package/dist/types/src/client/types/dlq.d.ts +45 -0
  282. package/dist/types/src/client/types/events.d.ts +54 -0
  283. package/dist/types/src/client/types/flow.d.ts +22 -0
  284. package/dist/types/src/client/types/index.d.ts +10 -0
  285. package/dist/types/src/client/types/job.d.ts +131 -0
  286. package/dist/types/src/client/types/metrics.d.ts +1 -0
  287. package/dist/types/src/client/types/options.d.ts +70 -0
  288. package/dist/types/src/client/types/worker.d.ts +54 -0
  289. package/dist/types/src/client/types.d.ts +2 -0
  290. package/dist/types/src/client/worker/ackBatcher.d.ts +55 -0
  291. package/dist/types/src/client/worker/ackFrontier.d.ts +21 -0
  292. package/dist/types/src/client/worker/ackOutcome.d.ts +8 -0
  293. package/dist/types/src/client/worker/batchExecution.d.ts +14 -0
  294. package/dist/types/src/client/worker/constants.d.ts +7 -0
  295. package/dist/types/src/client/worker/groupConcurrency.d.ts +49 -0
  296. package/dist/types/src/client/worker/handlers/completion.d.ts +29 -0
  297. package/dist/types/src/client/worker/handlers/dependencies.d.ts +11 -0
  298. package/dist/types/src/client/worker/handlers/mutations.d.ts +23 -0
  299. package/dist/types/src/client/worker/handlers/queries.d.ts +15 -0
  300. package/dist/types/src/client/worker/jobParser.d.ts +9 -0
  301. package/dist/types/src/client/worker/processor.d.ts +11 -0
  302. package/dist/types/src/client/worker/processorHandlers.d.ts +4 -0
  303. package/dist/types/src/client/worker/processorOutcome.d.ts +14 -0
  304. package/dist/types/src/client/worker/processorResult.d.ts +2 -0
  305. package/dist/types/src/client/worker/runtime/buffer.d.ts +8 -0
  306. package/dist/types/src/client/worker/runtime/control.d.ts +28 -0
  307. package/dist/types/src/client/worker/runtime/execution.d.ts +16 -0
  308. package/dist/types/src/client/worker/runtime/lifecycle.d.ts +7 -0
  309. package/dist/types/src/client/worker/runtime/manual.d.ts +10 -0
  310. package/dist/types/src/client/worker/runtime/options.d.ts +5 -0
  311. package/dist/types/src/client/worker/runtime/polling.d.ts +14 -0
  312. package/dist/types/src/client/worker/runtime/state.d.ts +121 -0
  313. package/dist/types/src/client/worker/types/index.d.ts +5 -0
  314. package/dist/types/src/client/worker/types/manual.d.ts +7 -0
  315. package/dist/types/src/client/worker/types/options.d.ts +26 -0
  316. package/dist/types/src/client/worker/types/outcome.d.ts +23 -0
  317. package/dist/types/src/client/worker/types/processor.d.ts +25 -0
  318. package/dist/types/src/client/worker/types/transport.d.ts +11 -0
  319. package/dist/types/src/client/worker/worker.d.ts +6 -0
  320. package/dist/types/src/client/worker/workerHeartbeat.d.ts +15 -0
  321. package/dist/types/src/client/worker/workerPull.d.ts +24 -0
  322. package/dist/types/src/client/worker/workerRateLimiter.d.ts +51 -0
  323. package/dist/types/src/client/worker.d.ts +6 -0
  324. package/dist/types/src/client/workflow/admission.d.ts +45 -0
  325. package/dist/types/src/client/workflow/clock.d.ts +60 -0
  326. package/dist/types/src/client/workflow/compensationChild.d.ts +33 -0
  327. package/dist/types/src/client/workflow/compensationClaim.d.ts +11 -0
  328. package/dist/types/src/client/workflow/compensationPass.d.ts +17 -0
  329. package/dist/types/src/client/workflow/compensationSupport.d.ts +24 -0
  330. package/dist/types/src/client/workflow/compensator.d.ts +34 -0
  331. package/dist/types/src/client/workflow/definitionGuard.d.ts +11 -0
  332. package/dist/types/src/client/workflow/emitter.d.ts +17 -0
  333. package/dist/types/src/client/workflow/engine.d.ts +66 -0
  334. package/dist/types/src/client/workflow/eventTypes.d.ts +44 -0
  335. package/dist/types/src/client/workflow/executionFence.d.ts +15 -0
  336. package/dist/types/src/client/workflow/executionTypes.d.ts +133 -0
  337. package/dist/types/src/client/workflow/executor.d.ts +52 -0
  338. package/dist/types/src/client/workflow/executorLifecycle.d.ts +19 -0
  339. package/dist/types/src/client/workflow/executorNodes.d.ts +18 -0
  340. package/dist/types/src/client/workflow/executorQueue.d.ts +9 -0
  341. package/dist/types/src/client/workflow/forEachRunner.d.ts +4 -0
  342. package/dist/types/src/client/workflow/identity.d.ts +48 -0
  343. package/dist/types/src/client/workflow/index.d.ts +23 -0
  344. package/dist/types/src/client/workflow/loops.d.ts +11 -0
  345. package/dist/types/src/client/workflow/mapRunner.d.ts +4 -0
  346. package/dist/types/src/client/workflow/recovery.d.ts +32 -0
  347. package/dist/types/src/client/workflow/rollbackControl.d.ts +37 -0
  348. package/dist/types/src/client/workflow/runner.d.ts +23 -0
  349. package/dist/types/src/client/workflow/runnerTiming.d.ts +14 -0
  350. package/dist/types/src/client/workflow/stepTypes.d.ts +171 -0
  351. package/dist/types/src/client/workflow/store.d.ts +83 -0
  352. package/dist/types/src/client/workflow/storeCodec.d.ts +7 -0
  353. package/dist/types/src/client/workflow/storeExecutionCodec.d.ts +11 -0
  354. package/dist/types/src/client/workflow/storeListing.d.ts +11 -0
  355. package/dist/types/src/client/workflow/storeMaintenance.d.ts +4 -0
  356. package/dist/types/src/client/workflow/storeSignals.d.ts +70 -0
  357. package/dist/types/src/client/workflow/subWorkflowRunner.d.ts +14 -0
  358. package/dist/types/src/client/workflow/types.d.ts +4 -0
  359. package/dist/types/src/client/workflow/unwindPlan.d.ts +87 -0
  360. package/dist/types/src/client/workflow/waitFor.d.ts +56 -0
  361. package/dist/types/src/client/workflow/workflow.d.ts +70 -0
  362. package/dist/types/src/client/workflow/workflowDecisions.d.ts +11 -0
  363. package/dist/types/src/client/workflow/workflowDefinition.d.ts +16 -0
  364. package/dist/types/src/client/workflow/workflowIntrospection.d.ts +5 -0
  365. package/dist/types/src/client/workflow/workflowValidation.d.ts +44 -0
  366. package/dist/types/src/config/index.d.ts +9 -0
  367. package/dist/types/src/config/loader.d.ts +7 -0
  368. package/dist/types/src/config/resolve.d.ts +59 -0
  369. package/dist/types/src/config/types.d.ts +88 -0
  370. package/dist/types/src/domain/job/constants.d.ts +12 -0
  371. package/dist/types/src/domain/job/create.d.ts +2 -0
  372. package/dist/types/src/domain/job/groupFifoOrder.d.ts +9 -0
  373. package/dist/types/src/domain/job/ids.d.ts +7 -0
  374. package/dist/types/src/domain/job/locks.d.ts +4 -0
  375. package/dist/types/src/domain/job/payload.d.ts +18 -0
  376. package/dist/types/src/domain/job/state.d.ts +8 -0
  377. package/dist/types/src/domain/job/terminal.d.ts +3 -0
  378. package/dist/types/src/domain/queue/dependencyTracker.d.ts +78 -0
  379. package/dist/types/src/domain/queue/dlqShard.d.ts +66 -0
  380. package/dist/types/src/domain/queue/groupLimiterManager.d.ts +30 -0
  381. package/dist/types/src/domain/queue/groupScheduler.d.ts +31 -0
  382. package/dist/types/src/domain/queue/groupSchedulerOrder.d.ts +6 -0
  383. package/dist/types/src/domain/queue/limiterManager.d.ts +68 -0
  384. package/dist/types/src/domain/queue/priorityQueue.d.ts +54 -0
  385. package/dist/types/src/domain/queue/priorityQueueOrder.d.ts +3 -0
  386. package/dist/types/src/domain/queue/shard/dependencies.d.ts +11 -0
  387. package/dist/types/src/domain/queue/shard/dlq.d.ts +26 -0
  388. package/dist/types/src/domain/queue/shard/keys.d.ts +19 -0
  389. package/dist/types/src/domain/queue/shard/lifecycle.d.ts +10 -0
  390. package/dist/types/src/domain/queue/shard/limits.d.ts +47 -0
  391. package/dist/types/src/domain/queue/shard/metrics.d.ts +32 -0
  392. package/dist/types/src/domain/queue/shard/state.d.ts +40 -0
  393. package/dist/types/src/domain/queue/shard.d.ts +7 -0
  394. package/dist/types/src/domain/queue/shardCounters.d.ts +35 -0
  395. package/dist/types/src/domain/queue/temporalIndex.d.ts +24 -0
  396. package/dist/types/src/domain/queue/temporalManager.d.ts +72 -0
  397. package/dist/types/src/domain/queue/uniqueKeyManager.d.ts +33 -0
  398. package/dist/types/src/domain/queue/waiterManager.d.ts +18 -0
  399. package/dist/types/src/domain/response/builders.d.ts +15 -0
  400. package/dist/types/src/domain/types/command.d.ts +2 -0
  401. package/dist/types/src/domain/types/commands/base.d.ts +5 -0
  402. package/dist/types/src/domain/types/commands/core.d.ts +110 -0
  403. package/dist/types/src/domain/types/commands/cron.d.ts +36 -0
  404. package/dist/types/src/domain/types/commands/dashboard.d.ts +13 -0
  405. package/dist/types/src/domain/types/commands/dlq.d.ts +44 -0
  406. package/dist/types/src/domain/types/commands/extended.d.ts +63 -0
  407. package/dist/types/src/domain/types/commands/index.d.ts +12 -0
  408. package/dist/types/src/domain/types/commands/limits.d.ts +108 -0
  409. package/dist/types/src/domain/types/commands/management.d.ts +73 -0
  410. package/dist/types/src/domain/types/commands/monitoring.d.ts +49 -0
  411. package/dist/types/src/domain/types/commands/protocol.d.ts +20 -0
  412. package/dist/types/src/domain/types/commands/query.d.ts +46 -0
  413. package/dist/types/src/domain/types/commands/union.d.ts +13 -0
  414. package/dist/types/src/domain/types/commands/workers.d.ts +39 -0
  415. package/dist/types/src/domain/types/cron.d.ts +91 -0
  416. package/dist/types/src/domain/types/deduplication.d.ts +43 -0
  417. package/dist/types/src/domain/types/dlq.d.ts +136 -0
  418. package/dist/types/src/domain/types/flow.d.ts +25 -0
  419. package/dist/types/src/domain/types/group.d.ts +26 -0
  420. package/dist/types/src/domain/types/job.d.ts +8 -0
  421. package/dist/types/src/domain/types/jobs/model.d.ts +153 -0
  422. package/dist/types/src/domain/types/metrics.d.ts +16 -0
  423. package/dist/types/src/domain/types/priorityQueue.d.ts +13 -0
  424. package/dist/types/src/domain/types/protocol.d.ts +5 -0
  425. package/dist/types/src/domain/types/queue.d.ts +110 -0
  426. package/dist/types/src/domain/types/response.d.ts +3 -0
  427. package/dist/types/src/domain/types/responses/model.d.ts +152 -0
  428. package/dist/types/src/domain/types/shard.d.ts +4 -0
  429. package/dist/types/src/domain/types/stall.d.ts +48 -0
  430. package/dist/types/src/domain/types/webhook.d.ts +42 -0
  431. package/dist/types/src/domain/types/worker.d.ts +40 -0
  432. package/dist/types/src/infrastructure/backup/backupTelemetry.d.ts +30 -0
  433. package/dist/types/src/infrastructure/backup/s3BackupConfig.d.ts +80 -0
  434. package/dist/types/src/infrastructure/cloud/types/config.d.ts +18 -0
  435. package/dist/types/src/infrastructure/cloud/types/event.d.ts +14 -0
  436. package/dist/types/src/infrastructure/cloud/types/snapshot.d.ts +52 -0
  437. package/dist/types/src/infrastructure/cloud/types/snapshotCore.d.ts +125 -0
  438. package/dist/types/src/infrastructure/cloud/types/snapshotJobs.d.ts +124 -0
  439. package/dist/types/src/infrastructure/cloud/types/snapshotTelemetry.d.ts +100 -0
  440. package/dist/types/src/infrastructure/cloud/types.d.ts +3 -0
  441. package/dist/types/src/infrastructure/persistence/batchInsert.d.ts +13 -0
  442. package/dist/types/src/infrastructure/persistence/completedJobCountSchema.d.ts +6 -0
  443. package/dist/types/src/infrastructure/persistence/dependencyCompletionSchema.d.ts +6 -0
  444. package/dist/types/src/infrastructure/persistence/dependencyCompletionStore.d.ts +40 -0
  445. package/dist/types/src/infrastructure/persistence/index.d.ts +5 -0
  446. package/dist/types/src/infrastructure/persistence/jobOptionsBlob.d.ts +19 -0
  447. package/dist/types/src/infrastructure/persistence/legacyNameMigration.d.ts +17 -0
  448. package/dist/types/src/infrastructure/persistence/migrationProgressSchema.d.ts +2 -0
  449. package/dist/types/src/infrastructure/persistence/migrations.d.ts +3 -0
  450. package/dist/types/src/infrastructure/persistence/schema.d.ts +8 -0
  451. package/dist/types/src/infrastructure/persistence/sqlite/admission.d.ts +9 -0
  452. package/dist/types/src/infrastructure/persistence/sqlite/completed.d.ts +17 -0
  453. package/dist/types/src/infrastructure/persistence/sqlite/control.d.ts +48 -0
  454. package/dist/types/src/infrastructure/persistence/sqlite/flows.d.ts +26 -0
  455. package/dist/types/src/infrastructure/persistence/sqlite/jobLifecycle.d.ts +17 -0
  456. package/dist/types/src/infrastructure/persistence/sqlite/jobs.d.ts +15 -0
  457. package/dist/types/src/infrastructure/persistence/sqlite/lifecycle.d.ts +6 -0
  458. package/dist/types/src/infrastructure/persistence/sqlite/mutations.d.ts +27 -0
  459. package/dist/types/src/infrastructure/persistence/sqlite/queries.d.ts +23 -0
  460. package/dist/types/src/infrastructure/persistence/sqlite/queueDeletionSql.d.ts +3 -0
  461. package/dist/types/src/infrastructure/persistence/sqlite/records.d.ts +24 -0
  462. package/dist/types/src/infrastructure/persistence/sqlite/state.d.ts +42 -0
  463. package/dist/types/src/infrastructure/persistence/sqlite/telemetry.d.ts +17 -0
  464. package/dist/types/src/infrastructure/persistence/sqlite/telemetryStore.d.ts +30 -0
  465. package/dist/types/src/infrastructure/persistence/sqlite/telemetryWrites.d.ts +47 -0
  466. package/dist/types/src/infrastructure/persistence/sqlite.d.ts +6 -0
  467. package/dist/types/src/infrastructure/persistence/sqliteBatch.d.ts +4 -0
  468. package/dist/types/src/infrastructure/persistence/sqliteMigration.d.ts +5 -0
  469. package/dist/types/src/infrastructure/persistence/sqliteSerializer.d.ts +50 -0
  470. package/dist/types/src/infrastructure/persistence/statements.d.ts +86 -0
  471. package/dist/types/src/infrastructure/persistence/types/admission.d.ts +8 -0
  472. package/dist/types/src/infrastructure/persistence/types/batch.d.ts +12 -0
  473. package/dist/types/src/infrastructure/persistence/types/sqlite.d.ts +27 -0
  474. package/dist/types/src/infrastructure/persistence/writeBuffer.d.ts +48 -0
  475. package/dist/types/src/infrastructure/persistence/writeBufferPending.d.ts +11 -0
  476. package/dist/types/src/infrastructure/scheduler/cron/execution.d.ts +12 -0
  477. package/dist/types/src/infrastructure/scheduler/cron/persisted.d.ts +5 -0
  478. package/dist/types/src/infrastructure/scheduler/cron/runtime.d.ts +31 -0
  479. package/dist/types/src/infrastructure/scheduler/cron/validation.d.ts +3 -0
  480. package/dist/types/src/infrastructure/scheduler/cronParser.d.ts +45 -0
  481. package/dist/types/src/infrastructure/scheduler/cronScheduler.d.ts +5 -0
  482. package/dist/types/src/infrastructure/scheduler/types/cronScheduler.d.ts +16 -0
  483. package/dist/types/src/infrastructure/server/protocol/commands.d.ts +8 -0
  484. package/dist/types/src/infrastructure/server/protocol/frameParser.d.ts +16 -0
  485. package/dist/types/src/infrastructure/server/protocol/lineBuffer.d.ts +6 -0
  486. package/dist/types/src/infrastructure/server/protocol/validation.d.ts +10 -0
  487. package/dist/types/src/infrastructure/server/protocol.d.ts +6 -0
  488. package/dist/types/src/infrastructure/server/socketWriteQueue.d.ts +66 -0
  489. package/dist/types/src/infrastructure/server/types/protocol.d.ts +4 -0
  490. package/dist/types/src/require-bun.d.ts +13 -0
  491. package/dist/types/src/shared/asyncLock.d.ts +13 -0
  492. package/dist/types/src/shared/boundedMap.d.ts +30 -0
  493. package/dist/types/src/shared/boundedSet.d.ts +26 -0
  494. package/dist/types/src/shared/hash.d.ts +30 -0
  495. package/dist/types/src/shared/histogram.d.ts +23 -0
  496. package/dist/types/src/shared/lock.d.ts +13 -0
  497. package/dist/types/src/shared/lockError.d.ts +3 -0
  498. package/dist/types/src/shared/lockTimeout.d.ts +2 -0
  499. package/dist/types/src/shared/logger.d.ts +48 -0
  500. package/dist/types/src/shared/lru.d.ts +9 -0
  501. package/dist/types/src/shared/lruMap.d.ts +42 -0
  502. package/dist/types/src/shared/lruSet.d.ts +36 -0
  503. package/dist/types/src/shared/minHeap.d.ts +43 -0
  504. package/dist/types/src/shared/msgpack.d.ts +3 -0
  505. package/dist/types/src/shared/pausedView.d.ts +19 -0
  506. package/dist/types/src/shared/rwLock.d.ts +22 -0
  507. package/dist/types/src/shared/serialization.d.ts +24 -0
  508. package/dist/types/src/shared/skipList.d.ts +97 -0
  509. package/dist/types/src/shared/skipListNodes.d.ts +6 -0
  510. package/dist/types/src/shared/storageHealth.d.ts +9 -0
  511. package/dist/types/src/shared/ttlMap.d.ts +81 -0
  512. package/dist/types/src/shared/types/lock.d.ts +7 -0
  513. package/dist/types/src/shared/types/skipList.d.ts +4 -0
  514. package/dist/types/src/shared/version.d.ts +4 -0
  515. package/dist/types/src/shared/webhookValidation.d.ts +6 -0
  516. package/package.json +27 -9
  517. package/src/ack-batcher.ts +8 -5
  518. package/src/bunqueue/bunqueue-api.ts +1 -1
  519. package/src/bunqueue/bunqueue.ts +2 -1
  520. package/src/canonical-transport/bun-sqlite-types.ts +22 -0
  521. package/src/canonical-transport/dlq.ts +12 -0
  522. package/src/canonical-transport/embedded.ts +55 -0
  523. package/src/canonical-transport/runtime.ts +49 -0
  524. package/src/canonical-transport/thread-worker.ts +83 -0
  525. package/src/canonical-transport/transport.ts +153 -0
  526. package/src/connection.ts +25 -30
  527. package/src/errors.ts +3 -0
  528. package/src/flow-commit.ts +45 -0
  529. package/src/flow-plan-legacy.ts +117 -0
  530. package/src/flow-plan.ts +209 -0
  531. package/src/flow-types.ts +4 -0
  532. package/src/flow.ts +31 -163
  533. package/src/frame.ts +5 -2
  534. package/src/index.ts +7 -75
  535. package/src/job.ts +43 -9
  536. package/src/legacy.ts +91 -0
  537. package/src/observability.ts +59 -1
  538. package/src/queue-admin.ts +5 -5
  539. package/src/queue-control.ts +12 -8
  540. package/src/queue.ts +10 -6
  541. package/src/serialization.ts +93 -0
  542. package/src/terminal-outcome.ts +58 -0
  543. package/src/types.ts +3 -6
  544. package/src/worker-base.ts +9 -6
  545. package/src/worker-slot-signal.ts +23 -0
  546. package/src/worker.ts +11 -5
  547. package/dist/backpressure.js +0 -39
  548. package/dist/bunqueue/aging.js +0 -53
  549. package/dist/bunqueue/batch.js +0 -60
  550. package/dist/bunqueue/bunqueue-api.js +0 -116
  551. package/dist/bunqueue/bunqueue.js +0 -194
  552. package/dist/bunqueue/cancellation.js +0 -48
  553. package/dist/bunqueue/circuit-breaker.js +0 -69
  554. package/dist/bunqueue/dedup-debounce.js +0 -37
  555. package/dist/bunqueue/dlq-rate-limit.js +0 -65
  556. package/dist/bunqueue/rate-gate.js +0 -61
  557. package/dist/bunqueue/retry.js +0 -56
  558. package/dist/bunqueue/triggers.js +0 -42
  559. package/dist/bunqueue/ttl.js +0 -31
  560. package/dist/bunqueue/types.js +0 -6
  561. package/dist/connection-pool.js +0 -60
  562. package/dist/connection-types.js +0 -2
  563. package/dist/connection.js +0 -281
  564. package/dist/errors.js +0 -25
  565. package/dist/flow-types.js +0 -2
  566. package/dist/flow.js +0 -212
  567. package/dist/job.js +0 -155
  568. package/dist/observability.js +0 -110
  569. package/dist/queue-admin.js +0 -158
  570. package/dist/queue-control.js +0 -105
  571. package/dist/queue-query.js +0 -187
  572. package/dist/queue.js +0 -92
  573. package/dist/responses.js +0 -10
  574. package/dist/socket-factory.js +0 -47
  575. package/dist/types.js +0 -50
  576. package/dist/worker-base.js +0 -159
  577. package/dist/worker-types.js +0 -5
  578. package/dist/worker.js +0 -211
  579. /package/dist/{backpressure.d.ts → types/sdk/typescript/src/backpressure.d.ts} +0 -0
  580. /package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/cancellation.d.ts +0 -0
@@ -0,0 +1,4 @@
1
+ export * from "./handlers/completion.js";
2
+ export * from "./handlers/dependencies.js";
3
+ export * from "./handlers/mutations.js";
4
+ export * from "./handlers/queries.js";
@@ -0,0 +1,14 @@
1
+ import type { EventEmitter } from 'events';
2
+ import type { Job as InternalJob } from "../../domain/types/job.js";
3
+ import type { FlowJobData, Job } from "../types.js";
4
+ import type { FailureContext, ProcessorConfig } from "./types/index.js";
5
+ import type { ManualMove } from "./types/index.js";
6
+ /** Settle an explicit processor-owned outcome or nonterminal transition. */
7
+ export declare function handleManualMove<T extends FlowJobData>(manualMove: ManualMove, job: Job<T>, config: {
8
+ onOutcome?: (succeeded: boolean) => void;
9
+ emitter: EventEmitter;
10
+ shouldAbandonOutcome?: () => boolean;
11
+ }, internalJob: InternalJob): Promise<boolean>;
12
+ /** Identify an outcome that lost its processing generation before completion. */
13
+ export declare function isJobNotFoundError(err: Error): boolean;
14
+ export declare function handleJobFailure<T, R>(internalJob: InternalJob, error: unknown, config: ProcessorConfig<T, R>, context: FailureContext<T & FlowJobData>): Promise<void>;
@@ -0,0 +1,2 @@
1
+ import type { ObservableLike } from "../types.js";
2
+ export declare function resolveProcessorResult<T>(value: Promise<T> | ObservableLike<T> | T, signal: AbortSignal): Promise<T>;
@@ -0,0 +1,8 @@
1
+ import { WorkerLifecycle } from "./lifecycle.js";
2
+ import type { PulledJob, WorkerDelivery } from "./state.js";
3
+ export declare abstract class WorkerBuffer<T = unknown, R = unknown> extends WorkerLifecycle<T, R> {
4
+ protected registerPulledJobs(items: PulledJob[]): WorkerDelivery[];
5
+ protected getBufferedJob(): WorkerDelivery | null;
6
+ protected requeueItem(item: WorkerDelivery): void;
7
+ protected getNextEligibleJob(): WorkerDelivery | null;
8
+ }
@@ -0,0 +1,28 @@
1
+ import type { Job } from "../../types.js";
2
+ import { WorkerState } from "./state.js";
3
+ export declare abstract class WorkerControl<T = unknown, R = unknown> extends WorkerState<T, R> {
4
+ run(): void;
5
+ protected subscribeToStalledEvents(): void;
6
+ pause(): void;
7
+ resume(): void;
8
+ isRunning(): boolean;
9
+ isPaused(): boolean;
10
+ isClosed(): boolean;
11
+ get concurrency(): number;
12
+ set concurrency(value: number);
13
+ get closing(): Promise<void> | null;
14
+ waitUntilReady(): Promise<void>;
15
+ cancelJob(jobId: string, reason?: string): boolean;
16
+ cancelAllJobs(reason?: string): void;
17
+ isJobCancelled(jobId: string): boolean;
18
+ getRateLimiterInfo(): {
19
+ current: number;
20
+ max: number;
21
+ duration: number;
22
+ } | null;
23
+ rateLimit(expireTimeMs: number): void;
24
+ isRateLimited(): boolean;
25
+ rateLimitGroup(job: Job<T>, duration: number): Promise<void>;
26
+ startStalledCheckTimer(): Promise<void>;
27
+ delay(milliseconds?: number, abortController?: AbortController): Promise<void>;
28
+ }
@@ -0,0 +1,16 @@
1
+ import type { HeartbeatDeps } from "../workerHeartbeat.js";
2
+ import type { PullConfig } from "../workerPull.js";
3
+ import { WorkerPolling } from "./polling.js";
4
+ import type { WorkerDelivery } from "./state.js";
5
+ export declare class WorkerExecution<T = unknown, R = unknown> extends WorkerPolling<T, R> {
6
+ private batchWaitDeadline;
7
+ private batchFillPending;
8
+ protected startJob(delivery: WorkerDelivery): boolean;
9
+ private startBatch;
10
+ private fillPendingBatch;
11
+ private startDeliveries;
12
+ protected registerWithServer(): void;
13
+ protected startWorkerHeartbeat(): void;
14
+ protected getHeartbeatDeps(): HeartbeatDeps;
15
+ protected getPullConfig(): PullConfig;
16
+ }
@@ -0,0 +1,7 @@
1
+ import { WorkerManual } from "./manual.js";
2
+ export declare abstract class WorkerLifecycle<T = unknown, R = unknown> extends WorkerManual<T, R> {
3
+ close(force?: boolean): Promise<void>;
4
+ protected _doClose(force: boolean): Promise<void>;
5
+ protected releaseBufferedJobs(): Promise<void>;
6
+ private releasePulledJob;
7
+ }
@@ -0,0 +1,10 @@
1
+ import type { ManualJob } from "../types/index.js";
2
+ import { WorkerControl } from "./control.js";
3
+ export declare abstract class WorkerManual<T = unknown, R = unknown> extends WorkerControl<T, R> {
4
+ private registerManualJob;
5
+ getNextJob(token?: string, _opts?: {
6
+ block?: boolean;
7
+ }): Promise<ManualJob<T> | undefined>;
8
+ processJobManually(job: ManualJob<T>, token?: string, fetchNextCallback?: () => Promise<ManualJob<T> | undefined>): Promise<ManualJob<T> | undefined>;
9
+ extendJobLocks(jobIds: string[], tokens: string[], duration: number): Promise<number>;
10
+ }
@@ -0,0 +1,5 @@
1
+ import type { WorkerOptions } from "../../types.js";
2
+ import { TcpConnectionPool } from "../../tcpPool.js";
3
+ import type { ExtendedWorkerOptions } from "../types/index.js";
4
+ export declare function resolveWorkerOptions(options: WorkerOptions, embedded: boolean): ExtendedWorkerOptions;
5
+ export declare function createTcpPool(options: WorkerOptions, concurrency: number): TcpConnectionPool;
@@ -0,0 +1,14 @@
1
+ import { type PullConfig } from "../workerPull.js";
2
+ import { WorkerBuffer } from "./buffer.js";
3
+ import type { PulledJob, WorkerDelivery } from "./state.js";
4
+ export declare abstract class WorkerPolling<T = unknown, R = unknown> extends WorkerBuffer<T, R> {
5
+ protected poll(): void;
6
+ protected scheduleProcessing(): void;
7
+ protected tryProcess(): Promise<void>;
8
+ protected doPullBatch(): Promise<PulledJob[]>;
9
+ private scheduleRateLimitPoll;
10
+ private schedulePoll;
11
+ protected handlePullError(errorValue: unknown): void;
12
+ protected abstract startJob(delivery: WorkerDelivery): boolean;
13
+ protected abstract getPullConfig(): PullConfig;
14
+ }
@@ -0,0 +1,121 @@
1
+ import { EventEmitter } from 'events';
2
+ import type { Job as InternalJob } from "../../../domain/types/job.js";
3
+ import type { Job, Processor, WorkerOptions } from "../../types.js";
4
+ import type { TcpConnectionPool } from "../../tcpPool.js";
5
+ import { AckBatcher } from "../ackBatcher.js";
6
+ import { GroupConcurrencyLimiter } from "../groupConcurrency.js";
7
+ import type { HeartbeatDeps } from "../workerHeartbeat.js";
8
+ import { WorkerRateLimiter } from "../workerRateLimiter.js";
9
+ import type { ExtendedWorkerOptions, TcpConnection } from "../types/index.js";
10
+ import type { TcpEventSubscription } from "../../queue-events/tcpSubscription.js";
11
+ export interface PulledJob {
12
+ job: InternalJob;
13
+ token: string | null;
14
+ }
15
+ export interface WorkerDelivery extends PulledJob {
16
+ generation: number;
17
+ }
18
+ export declare abstract class WorkerState<T = unknown, R = unknown> extends EventEmitter {
19
+ readonly name: string;
20
+ protected readonly queueKey: string;
21
+ readonly opts: ExtendedWorkerOptions;
22
+ protected readonly processor: Processor<T, R>;
23
+ protected readonly embedded: boolean;
24
+ protected readonly tcp: TcpConnection | null;
25
+ protected readonly tcpPool: TcpConnectionPool | null;
26
+ protected readonly ackBatcher: AckBatcher;
27
+ protected readonly rateLimiter: WorkerRateLimiter;
28
+ protected readonly groupLimiter: GroupConcurrencyLimiter | null;
29
+ protected running: boolean;
30
+ protected paused: boolean;
31
+ protected _closing: boolean;
32
+ protected _forceClose: boolean;
33
+ protected _closingPromise: Promise<void> | null;
34
+ protected closed: boolean;
35
+ protected activeJobs: number;
36
+ protected pollTimer: ReturnType<typeof setTimeout> | null;
37
+ protected pollDeadline: number | null;
38
+ protected consecutiveErrors: number;
39
+ protected readonly pulledJobIds: Set<string>;
40
+ protected readonly jobTokens: Map<string, string>;
41
+ protected readonly cancelledJobs: Set<string>;
42
+ private readonly abortControllers;
43
+ private deliverySequence;
44
+ private readonly currentDeliveries;
45
+ private readonly activeDeliveries;
46
+ private readonly unqueuedAckCandidates;
47
+ protected heartbeatTimer: ReturnType<typeof setInterval> | null;
48
+ protected workerHeartbeatTimer: ReturnType<typeof setInterval> | null;
49
+ protected processedCount: number;
50
+ protected failedCount: number;
51
+ protected readonly startedAt: number;
52
+ protected registered: boolean;
53
+ protected readonly workerId: string;
54
+ protected pendingJobs: WorkerDelivery[];
55
+ protected pendingJobsHead: number;
56
+ protected processingScheduled: boolean;
57
+ protected batchAffinity: string | null | undefined;
58
+ protected pendingPull: number;
59
+ protected lastDrainedEmit: number;
60
+ protected stalledUnsubscribe: (() => void) | null;
61
+ protected stalledSubscription: TcpEventSubscription | null;
62
+ on(event: 'ready' | 'drained' | 'closed', listener: () => void): this;
63
+ on(event: 'active', listener: (job: Job<T>) => void): this;
64
+ on(event: 'completed', listener: (job: Job<T>, result: R) => void): this;
65
+ on(event: 'failed', listener: (job: Job<T>, error: Error) => void): this;
66
+ on(event: 'progress', listener: (job: Job<T> | null, progress: number) => void): this;
67
+ on(event: 'stalled', listener: (jobId: string, reason: string) => void): this;
68
+ on(event: 'error', listener: (error: Error) => void): this;
69
+ on(event: 'cancelled', listener: (data: {
70
+ jobId: string;
71
+ reason: string;
72
+ }) => void): this;
73
+ on(event: 'log', listener: (job: Job<T>, message: string) => void): this;
74
+ once(event: 'ready' | 'drained' | 'closed', listener: () => void): this;
75
+ once(event: 'active', listener: (job: Job<T>) => void): this;
76
+ once(event: 'completed', listener: (job: Job<T>, result: R) => void): this;
77
+ once(event: 'failed', listener: (job: Job<T>, error: Error) => void): this;
78
+ once(event: 'progress', listener: (job: Job<T> | null, progress: number) => void): this;
79
+ once(event: 'stalled', listener: (jobId: string, reason: string) => void): this;
80
+ once(event: 'error', listener: (error: Error) => void): this;
81
+ once(event: 'cancelled', listener: (data: {
82
+ jobId: string;
83
+ reason: string;
84
+ }) => void): this;
85
+ once(event: 'log', listener: (job: Job<T>, message: string) => void): this;
86
+ off(event: 'ready' | 'drained' | 'closed', listener: () => void): this;
87
+ off(event: 'active', listener: (job: Job<T>) => void): this;
88
+ off(event: 'completed', listener: (job: Job<T>, result: R) => void): this;
89
+ off(event: 'failed', listener: (job: Job<T>, error: Error) => void): this;
90
+ off(event: 'progress', listener: (job: Job<T> | null, progress: number) => void): this;
91
+ off(event: 'stalled', listener: (jobId: string, reason: string) => void): this;
92
+ off(event: 'error', listener: (error: Error) => void): this;
93
+ off(event: 'cancelled', listener: (data: {
94
+ jobId: string;
95
+ reason: string;
96
+ }) => void): this;
97
+ off(event: 'log', listener: (job: Job<T>, message: string) => void): this;
98
+ constructor(name: string, processor: Processor<T, R>, options?: WorkerOptions);
99
+ protected trackDelivery(item: PulledJob): WorkerDelivery;
100
+ protected currentDelivery(jobId: string): WorkerDelivery | undefined;
101
+ protected isCurrentDelivery(delivery: WorkerDelivery): boolean;
102
+ protected isActiveDelivery(delivery: WorkerDelivery): boolean;
103
+ protected beginDelivery(delivery: WorkerDelivery): void;
104
+ protected queueAckCandidate(delivery: WorkerDelivery): void;
105
+ protected retireAckCandidate(delivery: WorkerDelivery): void;
106
+ protected finishDelivery(delivery: WorkerDelivery): void;
107
+ protected forgetDelivery(delivery: WorkerDelivery): void;
108
+ protected hasActiveDelivery(jobId: string): boolean;
109
+ protected activeDeliveryIds(): IterableIterator<string>;
110
+ protected clearDeliveries(): void;
111
+ protected createAbortController(jobId: string): AbortController;
112
+ protected releaseAbortController(jobId: string, controller: AbortController): void;
113
+ protected abortJob(jobId: string, reason: string): boolean;
114
+ protected clearPollTimer(): void;
115
+ private reachableUnqueuedAckCount;
116
+ abstract run(): void;
117
+ protected abstract registerWithServer(): void;
118
+ protected abstract getHeartbeatDeps(): HeartbeatDeps;
119
+ protected abstract startWorkerHeartbeat(): void;
120
+ protected abstract poll(): void;
121
+ }
@@ -0,0 +1,5 @@
1
+ export type { ExtendedWorkerOptions } from "./options.js";
2
+ export type { ManualJob } from "./manual.js";
3
+ export type { ManualMove, PendingTransitionSettlement } from "./outcome.js";
4
+ export type { FailureContext, ProcessorConfig } from "./processor.js";
5
+ export type { PendingAck, TcpConnection } from "./transport.js";
@@ -0,0 +1,7 @@
1
+ import type { Job as InternalJob } from "../../../domain/types/job.js";
2
+ /** Job returned by Worker.getNextJob() for explicit manual processing. */
3
+ export type ManualJob<T = unknown> = Omit<InternalJob, 'data'> & {
4
+ readonly data: T;
5
+ /** Broker lease token when WorkerOptions.useLocks is enabled. */
6
+ readonly token?: string;
7
+ };
@@ -0,0 +1,26 @@
1
+ import type { BatchWorkerOptions, ConnectionOptions, GroupWorkerOptions } from "../../types.js";
2
+ export interface ExtendedWorkerOptions {
3
+ concurrency: number;
4
+ autorun: boolean;
5
+ heartbeatInterval: number;
6
+ batchSize: number;
7
+ pollTimeout: number;
8
+ embedded: boolean;
9
+ useLocks: boolean;
10
+ skipLockRenewal: boolean;
11
+ skipStalledCheck: boolean;
12
+ drainDelay: number;
13
+ lockDuration: number;
14
+ maxStalledCount: number;
15
+ removeOnComplete?: boolean | number | {
16
+ age?: number;
17
+ count?: number;
18
+ };
19
+ removeOnFail?: boolean | number | {
20
+ age?: number;
21
+ count?: number;
22
+ };
23
+ connection?: ConnectionOptions;
24
+ group?: GroupWorkerOptions;
25
+ batch?: Required<BatchWorkerOptions>;
26
+ }
@@ -0,0 +1,23 @@
1
+ export type PendingTransitionSettlement = {
2
+ status: 'applied';
3
+ } | {
4
+ status: 'ignored';
5
+ } | {
6
+ status: 'failed';
7
+ error: Error;
8
+ };
9
+ export interface ManualMove {
10
+ result: {
11
+ type: 'completed';
12
+ value?: unknown;
13
+ } | {
14
+ type: 'failed';
15
+ error?: Error;
16
+ } | {
17
+ type: 'ignored' | 'transitioned';
18
+ } | {
19
+ type: 'pending-transition';
20
+ context: 'discard';
21
+ pending: Promise<PendingTransitionSettlement>;
22
+ } | null;
23
+ }
@@ -0,0 +1,25 @@
1
+ import type { EventEmitter } from 'events';
2
+ import type { FlowJobData, Job, Processor } from "../../types.js";
3
+ import type { AckBatcher } from "../ackBatcher.js";
4
+ import type { TcpConnection } from "./transport.js";
5
+ export interface ProcessorConfig<T, R> {
6
+ name: string;
7
+ processor: Processor<T, R>;
8
+ embedded: boolean;
9
+ tcp: TcpConnection | null;
10
+ ackBatcher: AckBatcher;
11
+ emitter: EventEmitter;
12
+ token?: string | null;
13
+ removeOnComplete?: boolean;
14
+ removeOnFail?: boolean;
15
+ onOutcome?: (succeeded: boolean) => void;
16
+ onAckQueued?: () => void;
17
+ onAckUnavailable?: () => void;
18
+ shouldAbandonOutcome?: () => boolean;
19
+ abortController?: AbortController;
20
+ }
21
+ export interface FailureContext<T extends FlowJobData> {
22
+ job: Job<T>;
23
+ jobIdStr: string;
24
+ token?: string | null;
25
+ }
@@ -0,0 +1,11 @@
1
+ export interface PendingAck {
2
+ id: string;
3
+ result: unknown;
4
+ token?: string;
5
+ removeOnComplete?: boolean;
6
+ resolve: (applied: boolean) => void;
7
+ reject: (error: Error) => void;
8
+ }
9
+ export interface TcpConnection {
10
+ send: (command: Record<string, unknown>) => Promise<Record<string, unknown>>;
11
+ }
@@ -0,0 +1,6 @@
1
+ /** Public Worker façade. Runtime implementation lives in worker/runtime/. */
2
+ import { WorkerExecution } from "./runtime/execution.js";
3
+ import { RateLimitError } from "../errors.js";
4
+ export declare class Worker<T = unknown, R = unknown> extends WorkerExecution<T, R> {
5
+ static RateLimitError(): RateLimitError;
6
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * WorkerHeartbeat - Heartbeat sending for TCP worker connections
3
+ * Sends periodic heartbeats to keep locks alive and prevent stall detection
4
+ */
5
+ import type { EventEmitter } from 'events';
6
+ import type { TcpConnection } from "./types/index.js";
7
+ export interface HeartbeatDeps {
8
+ readonly pulledJobIds: Set<string>;
9
+ readonly jobTokens: Map<string, string>;
10
+ readonly tcp: TcpConnection | null;
11
+ readonly useLocks: boolean;
12
+ readonly emitter: EventEmitter;
13
+ }
14
+ export declare function startHeartbeat(deps: HeartbeatDeps, intervalMs: number): ReturnType<typeof setInterval>;
15
+ export declare function sendHeartbeat(deps: HeartbeatDeps): Promise<void>;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * WorkerPull - Job pulling functions for embedded and TCP modes
3
+ * Handles batch pulling with optional lock-based ownership
4
+ */
5
+ import type { Job as InternalJob } from "../../domain/types/job.js";
6
+ import type { TcpConnection } from "./types/index.js";
7
+ import type { GroupWorkerOptions } from "../types.js";
8
+ export interface PullConfig {
9
+ readonly name: string;
10
+ readonly workerId: string;
11
+ readonly useLocks: boolean;
12
+ readonly pollTimeout: number;
13
+ /** Lock TTL in ms to request from the server on a lock-based pull. */
14
+ readonly lockDuration?: number;
15
+ readonly group?: GroupWorkerOptions;
16
+ }
17
+ export declare function pullEmbedded(config: PullConfig, count: number): Promise<Array<{
18
+ job: InternalJob;
19
+ token: string | null;
20
+ }>>;
21
+ export declare function pullTcp(config: PullConfig, tcp: TcpConnection, count: number, closing: boolean): Promise<Array<{
22
+ job: InternalJob;
23
+ token: string | null;
24
+ }>>;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * WorkerRateLimiter - Rate limiting for worker job processing
3
+ * BullMQ v5 compatible sliding window rate limiter
4
+ *
5
+ * Uses a head-pointer approach instead of Array.filter() for O(1) amortized
6
+ * token expiration. Tokens are always pushed in chronological order, so
7
+ * expired tokens are always at the front — we just advance the head pointer.
8
+ */
9
+ import type { RateLimiterOptions } from "../types.js";
10
+ export declare class WorkerRateLimiter {
11
+ private readonly limiter;
12
+ private limiterTokens;
13
+ private head;
14
+ private rateLimitExpiration;
15
+ constructor(limiter: RateLimiterOptions | null);
16
+ /**
17
+ * Check if rate limiter allows processing another job.
18
+ * Returns true if we can process, false if rate limited.
19
+ * O(1) amortized — advances head pointer past expired tokens.
20
+ */
21
+ canProcessWithinLimit(): boolean;
22
+ /** Atomically reserve starts in the current window. */
23
+ tryAcquire(count?: number): boolean;
24
+ /** Record a synthetic start, retained for diagnostics and focused unit tests. */
25
+ recordJobForLimiter(): void;
26
+ /** Number of starts that can be admitted without waiting. */
27
+ getAvailableSlots(): number;
28
+ /**
29
+ * Get time until rate limiter allows next job (ms).
30
+ * Returns 0 if not rate limited.
31
+ * O(1) — oldest active token is at this.limiterTokens[this.head].
32
+ */
33
+ getTimeUntilNextSlot(): number;
34
+ /** Get rate limiter info (for debugging/monitoring). */
35
+ getRateLimiterInfo(): {
36
+ current: number;
37
+ max: number;
38
+ duration: number;
39
+ } | null;
40
+ /**
41
+ * Apply rate limiting (BullMQ v5 compatible).
42
+ * The worker will not process jobs until the rate limit expires.
43
+ */
44
+ rateLimit(expireTimeMs: number): void;
45
+ /** Check if worker is currently rate limited. */
46
+ isRateLimited(): boolean;
47
+ /** Number of active (non-expired) tokens. */
48
+ private activeCount;
49
+ /** Advance head pointer past expired tokens. Compact when head > half the array. */
50
+ private evictExpired;
51
+ }
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Worker - Re-exports from worker module
3
+ * @deprecated Import from './worker' instead
4
+ */
5
+ export { Worker } from "./worker/worker.js";
6
+ export type { ManualJob } from "./worker/types/index.js";
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Whether a node job may run, decided as a pure function.
3
+ *
4
+ * WHY THIS FILE EXISTS. Job delivery is at-least-once, so the same node job arrives
5
+ * twice as a matter of course: a queue retry, a `recover()` over a run the live engine
6
+ * is already driving, a timeout re-check racing a signal. Three guards decide whether
7
+ * an arrival is the real one, and when one of them was missing a duplicate re-ran the
8
+ * node AND every node after it, giving one execution two independent advance chains,
9
+ * doubled side effects, and a final state of `completed` that hid the whole thing.
10
+ *
11
+ * That defect was found by the state-machine model after a long campaign, because the
12
+ * decision lived inside an async method that also read SQLite and dispatched work: the
13
+ * only way to observe it was to reproduce the race. As a function of its inputs it is
14
+ * a table, and a table can be enumerated.
15
+ *
16
+ * The three rejections are deliberately distinguished rather than collapsed into a
17
+ * boolean. `stale-cursor` and `already-in-flight` mean very different things to anyone
18
+ * reading a log: one is an arrival for work the run has already moved past, the other
19
+ * is a second arrival for work in progress right now.
20
+ */
21
+ import type { Execution } from "./types.js";
22
+ export type Admission = {
23
+ kind: 'run';
24
+ } | {
25
+ kind: 'reject';
26
+ /**
27
+ * `missing` the execution is not in the store at all
28
+ * `not-live` it is terminal, compensating or parked, so no node may run
29
+ * `stale-cursor` the job names a node the run has already left
30
+ * `already-in-flight` this exact node is executing in this process right now
31
+ */
32
+ reason: 'missing' | 'not-live' | 'stale-cursor' | 'already-in-flight';
33
+ };
34
+ /** States in which a node job may execute. Anything else is not a live run. */
35
+ export declare function isLive(state: Execution['state']): boolean;
36
+ /**
37
+ * Decide whether the job for `nodeIndex` of `exec` may run.
38
+ *
39
+ * `inFlight` is the set of `<executionId>:<nodeIndex>` claims held by this process.
40
+ * It is passed in rather than read from module state so the decision stays a function
41
+ * of its arguments.
42
+ */
43
+ export declare function decideAdmission(exec: Execution | null, nodeIndex: number, inFlight: ReadonlySet<string>): Admission;
44
+ /** The claim a running node holds. One string, one place that builds it. */
45
+ export declare function claimKey(executionId: string, nodeIndex: number): string;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * The engine's only source of time and randomness.
3
+ *
4
+ * WHY THIS EXISTS. Every defect this engine has shipped in a crash or concurrency
5
+ * window took a property-based campaign roughly one run in eleven to surface, and the
6
+ * seed that produced it did NOT reproduce it: the seed drove the sequence of commands,
7
+ * while the interleaving came from real timers and real process death. A failing seed
8
+ * you cannot replay is a bug report you cannot act on.
9
+ *
10
+ * With every `Date.now()`, `Math.random()` and `setTimeout` routed through here, a
11
+ * simulated clock makes a seed drive the interleaving too, so a failure replays
12
+ * exactly, every time, and a fix can be proven rather than hoped for.
13
+ *
14
+ * WHAT THIS IS NOT. It does not make the engine deterministic on its own: SQLite, the
15
+ * queue's own worker loop and the OS scheduler are still outside. It removes the
16
+ * engine's own contribution, which is the part the engine can be held responsible for.
17
+ *
18
+ * The default is the real clock, and it is installed by default, so nothing changes
19
+ * for anyone who does not ask for a simulated one.
20
+ */
21
+ export interface Clock {
22
+ /** Milliseconds since the epoch. */
23
+ now(): number;
24
+ /** Schedule `fn` after `ms`. The handle is whatever `clear` accepts. */
25
+ setTimeout(fn: () => void, ms: number): TimerHandle;
26
+ clearTimeout(handle: TimerHandle): void;
27
+ /** A number in [0, 1). Used for retry jitter. */
28
+ random(): number;
29
+ /** Replayable entropy; cryptographically strong on the real clock. */
30
+ randomBytes(length: number): Uint8Array;
31
+ }
32
+ export interface TimerHandle {
33
+ /** Real timers can be unref'd so a pending one does not hold the process open. */
34
+ unref?(): void;
35
+ }
36
+ /** The clock the engine reads. Real unless a simulation installed its own. */
37
+ export declare function clock(): Clock;
38
+ /**
39
+ * Install a clock, returning the previous one so a test can restore it.
40
+ *
41
+ * Deliberately process-global rather than threaded through every call site: the
42
+ * alternative is a `Clock` parameter on roughly forty internal functions, which is a
43
+ * large diff through code whose correctness was hard-won, for no gain in a runtime
44
+ * that already keeps one engine per process.
45
+ */
46
+ export declare function setClock(next: Clock): Clock;
47
+ /** Restore the real clock. */
48
+ export declare function resetClock(): void;
49
+ /**
50
+ * A clock where time only moves when the simulation says so.
51
+ *
52
+ * `advance` fires every timer due at or before the new instant, in due order, and
53
+ * timers scheduled BY those callbacks are picked up in the same advance, so a chain of
54
+ * re-armed timeouts settles the way it would in real time rather than needing one
55
+ * `advance` per link. Ties break by insertion order, so a seed replays identically.
56
+ */
57
+ export declare function simulatedClock(seed: number, startAt?: number): Clock & {
58
+ advance(ms: number): number;
59
+ pending(): number;
60
+ };
@@ -0,0 +1,33 @@
1
+ /** Nested-saga compensation. */
2
+ import type { LostCompensationClaim } from "./compensationClaim.js";
3
+ import type { WorkflowEmitter } from "./emitter.js";
4
+ import type { WorkflowStore } from "./store.js";
5
+ import type { Execution, StepRecord } from "./types.js";
6
+ import type { Workflow } from "./workflow.js";
7
+ export interface ChildUnwindRequest {
8
+ exec: Execution;
9
+ workflow: Workflow;
10
+ store: WorkflowStore;
11
+ emitter: WorkflowEmitter | null;
12
+ workflows?: Map<string, Workflow>;
13
+ retryFailed?: boolean;
14
+ assertActive: () => void;
15
+ }
16
+ export type ChildUnwind = (request: ChildUnwindRequest) => Promise<'ran' | LostCompensationClaim>;
17
+ export interface UnwindChildRequest {
18
+ record: StepRecord;
19
+ store: WorkflowStore;
20
+ emitter: WorkflowEmitter | null;
21
+ workflows?: Map<string, Workflow>;
22
+ runChild: ChildUnwind;
23
+ retryFailed?: boolean;
24
+ assertActive: () => void;
25
+ }
26
+ /** Run the child workflow's own unwind and propagate every uncertain outcome. */
27
+ export declare function unwindChild(request: UnwindChildRequest): Promise<void>;
28
+ export declare class AbandonedCompensationError extends Error {
29
+ constructor(workflowName: string, executionId: string);
30
+ }
31
+ export declare class CommittedChildError extends Error {
32
+ constructor(workflowName: string, executionId: string);
33
+ }
@@ -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,17 @@
1
+ /** One checkpointed compensation pass. */
2
+ import { type ChildUnwind } from "./compensationChild.js";
3
+ import type { WorkflowEmitter } from "./emitter.js";
4
+ import type { WorkflowStore } from "./store.js";
5
+ import type { Execution, StepRecord } from "./types.js";
6
+ import type { Workflow } from "./workflow.js";
7
+ export interface UnwindPass {
8
+ exec: Execution;
9
+ wf: Workflow;
10
+ store: WorkflowStore;
11
+ emitter: WorkflowEmitter | null;
12
+ eligible: [string, StepRecord][];
13
+ workflows?: Map<string, Workflow>;
14
+ retryFailed?: boolean;
15
+ assertActive: () => void;
16
+ }
17
+ export declare function unwind(pass: UnwindPass, runChild: ChildUnwind): Promise<void>;