bunqueue-client 0.1.9 → 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 +150 -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} +5 -5
  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 +8 -6
  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 -107
  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
package/README.md CHANGED
@@ -1,381 +1,236 @@
1
- <div align="center">
2
-
3
- <a href="https://bunqueue.dev">
4
- <img src="https://raw.githubusercontent.com/egeominotti/bunqueue/main/.github/logo.png" alt="bunqueue logo" width="110" />
5
- </a>
6
-
7
1
  # bunqueue-client
8
2
 
9
- **The official TypeScript client for [bunqueue](https://bunqueue.dev), the high performance job queue server.**
10
-
11
- Native TCP protocol (msgpack, pipelined), full parity with the built in Bun client, one runtime dependency.
12
- Runs everywhere: Node.js, Bun, Deno and Cloudflare Workers.
13
-
14
- [![npm version](https://img.shields.io/npm/v/bunqueue-client?color=d3156d&label=npm)](https://www.npmjs.com/package/bunqueue-client)
15
- [![npm downloads](https://img.shields.io/npm/dm/bunqueue-client?color=ff4f9f)](https://www.npmjs.com/package/bunqueue-client)
16
- [![license](https://img.shields.io/npm/l/bunqueue-client?color=1a1a2e)](https://github.com/egeominotti/bunqueue/blob/main/sdk/typescript/LICENSE)
17
- [![runtimes](https://img.shields.io/badge/runtimes-node%20%7C%20bun%20%7C%20deno%20%7C%20workers-2ea44f)](#compatibility)
18
-
19
- [Documentation](https://bunqueue.dev/guide/sdks/) · [Server](https://github.com/egeominotti/bunqueue) · [Changelog](https://github.com/egeominotti/bunqueue/blob/main/sdk/typescript/CHANGELOG.md) · [Python SDK](https://github.com/egeominotti/bunqueue/tree/main/sdk/python)
20
-
21
- </div>
22
-
23
- ---
24
-
25
- The bunqueue server runs on Bun, distributed as a binary or a Docker image. This client allows any Node.js, Bun, Deno, or Cloudflare Workers service to produce and consume jobs against it: one queue, any language, any runtime.
26
-
27
- ## Why bunqueue-client
28
-
29
- - **Full API surface.** Queues, workers, flows (parent/children trees), schedulers, DLQ, rate limits, webhooks, Simple Mode: 110+ public methods, each covered by an e2e test against a real server.
30
- - **Cross runtime by design.** Only `node:*` builtins, zero `Bun.*` globals, a single dependency (`msgpackr`). The same package runs on Node 20+, Bun, Deno 2 and Cloudflare Workers (`nodejs_compat`).
31
- - **Production semantics.** Lock leasing with heartbeat renewal, at least once delivery with retries and backoff, unrecoverable failures straight to the DLQ, reconnection with half open detection, opt in ACK batching and connection pooling.
32
- - **Typed end to end.** Generic `Queue<T>` / `Worker<T, R>`, typed worker events, structured telemetry hooks for your metrics stack.
33
-
34
- ## Compatibility
35
-
36
- | Runtime | Status | Notes |
37
- |---|---|---|
38
- | Node.js 20 or later | Supported, 110/110 e2e and 8/8 integration tests | ESM. TypeScript files run directly on Node 22 or later via `--experimental-strip-types` |
39
- | Bun | Supported, 110/110 e2e and 8/8 integration tests | No additional configuration required |
40
- | Deno 2 or later | Supported, 110/110 e2e and 8/8 integration tests | Uses `node:` builtins and the npm `msgpackr` package |
41
- | tsx, ts-node, vitest, jest | Supported | These environments execute on Node.js |
42
- | Cloudflare Workers | Supported, 16/16 e2e tests inside workerd, including Simple Mode and the full API surface | Requires the `nodejs_compat` compatibility flag. The runtime is request scoped, so long lived worker loops are not available: consume in batches from Cron Triggers or Durable Object alarms, a pattern covered by the test suite. TLS connections require a publicly trusted certificate |
43
- | Browser | Not supported | Raw TCP sockets are unavailable. Use the server HTTP API instead |
44
-
45
- Portability is guaranteed by design: the client relies exclusively on `node:*` builtins (`net`, `tls`, `events`, `crypto`, `os`), uses no `Bun.*` globals and no runtime specific imports, and carries a single runtime dependency, `msgpackr`.
46
-
47
- ## Installation
3
+ The cross-runtime distribution of the canonical `bunqueue/client` API.
4
+ Queue, Worker, QueueEvents, QueueGroup, FlowProducer, Simple Mode, groups,
5
+ processor batches, options, job objects, and errors come from the same source.
6
+ The portable build replaces runtime I/O primitives; it does not maintain a
7
+ second implementation of queue or worker behavior.
48
8
 
49
- ```bash
50
- npm install bunqueue-client
51
- # or: bun add bunqueue-client / pnpm add bunqueue-client / deno add npm:bunqueue-client
52
- ```
53
-
54
- ## Quick start, step by step
55
-
56
- Every step from zero to a production ready queue.
57
-
58
- ### Step 1. Run the bunqueue server
59
-
60
- The server is the only component that requires [Bun](https://bun.sh). Pick one:
61
-
62
- ```bash
63
- # Option A: one command, no install (requires Bun)
64
- bunx bunqueue start
9
+ > **Upgrading from 0.1.x?** 0.2.0 is a breaking release: the default entry is
10
+ > now the canonical client. Read [Migrating from 0.1.x](#migrating-from-01x),
11
+ > or keep the old API unchanged with `bunqueue-client/legacy`.
65
12
 
66
- # Option B: Docker, with persistent data
67
- docker run -d --name bunqueue \
68
- -p 6789:6789 -p 6790:6790 \
69
- -v bunqueue-data:/app/data \
70
- ghcr.io/egeominotti/bunqueue:latest
71
- ```
72
-
73
- Port 6789 is the TCP protocol (what this client uses), port 6790 is the HTTP API with `/health`, `/metrics`, and dashboard endpoints.
13
+ ## Install and run
74
14
 
75
- ### Step 2. Install the client
76
-
77
- ```bash
15
+ ```sh
78
16
  npm install bunqueue-client
79
- # or: bun add bunqueue-client / pnpm add bunqueue-client / deno add npm:bunqueue-client
80
- ```
81
-
82
- ### Step 3. Add your first job and process it
83
-
84
- Create `app.ts`, one file for the sake of the demo:
85
-
86
- ```typescript
87
- import { Queue, Worker } from 'bunqueue-client';
88
-
89
- const worker = new Worker('hello', async (job) => {
90
- console.log('processing', job.data);
91
- return { greeted: job.data.name };
92
- });
93
- worker.on('completed', (job, result) => {
94
- console.log('completed', job.id, result);
95
- worker.close();
96
- });
97
-
98
- const queue = new Queue('hello');
99
- await queue.add('greet', { name: 'world' });
100
- queue.close();
101
- ```
102
-
103
- Run it with the runtime you already use:
104
-
105
- ```bash
106
- node --experimental-strip-types app.ts # Node 22 or later
107
- bun app.ts # Bun
108
- deno run -A app.ts # Deno 2 or later
109
- ```
110
-
111
- Expected output:
112
-
113
- ```
114
- processing { name: 'world' }
115
- completed 019f40a5-... { greeted: 'world' }
116
- ```
117
-
118
- Defaults are `host: 'localhost'` and `port: 6789`, so constructors need no options on a local setup.
119
-
120
- ### Step 4. Split producer and worker
121
-
122
- In production the producer and the worker are separate services, often in different languages. The producer is typically an API endpoint:
123
-
124
- ```typescript
125
- // api-service: adds jobs, no processing
126
- import { Queue } from 'bunqueue-client';
127
- const queue = new Queue('emails', { host: 'queue.internal', port: 6789 });
128
- await queue.add('welcome', { to: 'user@example.com' }, { attempts: 3 });
129
17
  ```
130
18
 
131
- The worker is a long running process:
19
+ Start a bunqueue broker, then use the same code in Node.js, Deno, or Bun:
132
20
 
133
21
  ```typescript
134
- // worker-service: processes jobs, no HTTP
135
- import { Worker } from 'bunqueue-client';
136
- new Worker('emails', sendEmail, { host: 'queue.internal', port: 6789, concurrency: 10 });
137
- ```
138
-
139
- The [Python client](https://github.com/egeominotti/bunqueue/tree/main/sdk/python) speaks the same protocol against the same queue, so the worker can be a Python service instead.
140
-
141
- ### Step 5. Observe and operate
22
+ import { Queue, Worker, QueueEvents } from 'bunqueue-client';
23
+
24
+ const options = {
25
+ embedded: false,
26
+ connection: { host: '127.0.0.1', port: 6789 },
27
+ };
28
+ const queue = new Queue<{ to: string }>('emails', options);
29
+ const events = new QueueEvents('emails', options);
30
+ await events.waitUntilReady();
31
+ const worker = new Worker('emails', async (job) => {
32
+ await job.updateProgress(50);
33
+ await job.log('Sending email');
34
+ return { sent: true };
35
+ }, { ...options, concurrency: 5 });
36
+ worker.on('error', console.error);
37
+
38
+ const job = await queue.add('welcome', { to: 'user@example.com' });
39
+ const result = await queue.waitJobUntilFinished(job.id, events, 30_000);
40
+ console.log(result);
41
+
42
+ await worker.close();
43
+ events.close();
44
+ await queue.close();
45
+ ```
46
+
47
+ Node.js 20+, Bun, Deno 2+, and Cloudflare Workers with `nodejs_compat` can
48
+ connect over TCP. Install with npm-compatible tooling in the chosen runtime.
49
+ The embedded SQLite engine continues to require Bun; under Bun the package
50
+ loads the actual shared engine synchronously the first time `embedded: true`
51
+ is used. Node, Deno, and Workers never load `bun:sqlite`. Database
52
+ configuration for TCP belongs on the broker.
53
+
54
+ The published JavaScript has no top-level `await`, so CommonJS bundlers
55
+ (for example `esbuild --bundle --format=cjs` for AWS Lambda) accept it. esbuild
56
+ reports one harmless `empty-import-meta` warning for the Bun-only engine
57
+ loader; embedded mode is unavailable from a CommonJS re-bundle and says so.
58
+
59
+ TypeScript declarations are self-contained: they reference neither `bun-types`
60
+ nor Bun globals, and the package does not install `@types/node`. Node projects
61
+ use their own `@types/node` (20 or newer) and type-check with
62
+ `skipLibCheck: false`, with or without the DOM library.
63
+
64
+ ## One public contract
65
+
66
+ Use the [Queue guide](https://bunqueue.dev/guide/queue/),
67
+ [Worker guide](https://bunqueue.dev/guide/worker/), and
68
+ [Flow guide](https://bunqueue.dev/guide/flow/), replacing the import path
69
+ `bunqueue/client` with `bunqueue-client`.
70
+
71
+ - Connection settings use `connection: { host, port, token, ... }`.
72
+ - Constructor defaults, per-job defaults, return shapes, errors, and events
73
+ follow the canonical Bun client.
74
+ - Use the `Async` administrative/query variants for authoritative TCP reads
75
+ and ordered operations. The synchronous embedded-only methods retain the
76
+ canonical contract; they do not become asynchronous by changing packages.
77
+ - `QueuePro`, `WorkerPro`, and `QueueEventsPro` are the same canonical aliases.
78
+ - Native processor batches and broker-authoritative job groups share the
79
+ same implementation and lease/counter transitions as the Bun client.
80
+ - `SandboxedWorker` shares its pool logic, with a portable worker-thread
81
+ adapter. It remains experimental execution isolation, not a security
82
+ boundary. Processor modules must be executable by the host runtime.
83
+
84
+ Low-level `Connection`, `ConnectionPool`, and telemetry helpers remain
85
+ additive exports. They do not redefine canonical Queue or Worker types.
86
+
87
+ ## Migrating from 0.1.x
88
+
89
+ 0.2.0 makes the canonical `bunqueue/client` API the default entry. Nothing
90
+ below applies to code that switches its import to `bunqueue-client/legacy`.
91
+
92
+ ### 1. Keep the 0.1.x API unchanged
93
+
94
+ The compatibility entry keeps the historical flat-option API, method
95
+ signatures, `Job` class, error classes, and wire types exactly as in 0.1.x.
96
+ See [LEGACY.md](./LEGACY.md).
142
97
 
143
98
  ```typescript
144
- await queue.getJobCounts(); // { waiting, active, completed, failed, delayed, ... }
145
- await queue.getDlq(); // jobs that exhausted their retries
146
- await queue.retryDlq(); // send them back to the queue
147
- await queue.getWorkers(); // connected workers
148
- await queue.getStats(); // throughput and totals
99
+ // Before (0.1.x)
100
+ import { Queue, Worker } from 'bunqueue-client';
101
+ // After: same behavior, no other change
102
+ import { Queue, Worker } from 'bunqueue-client/legacy';
149
103
  ```
150
104
 
151
- Or hit the HTTP side: `curl http://localhost:6790/health`.
152
-
153
- ### Step 6. Go to production
105
+ ### 2. Connection options live in `connection`
154
106
 
155
107
  ```typescript
108
+ // Before (0.1.x)
109
+ const queue = new Queue('emails', { host: 'queue.internal', port: 6789, token, tls: true });
110
+ // After (0.2.0)
156
111
  const queue = new Queue('emails', {
157
- host: 'queue.example.com',
158
- port: 6789,
159
- token: process.env.BUNQUEUE_TOKEN, // server started with AUTH_TOKENS=...
160
- tls: true, // or { caFile: './ca.pem' }
161
- });
162
- ```
163
-
164
- Checklist: set `AUTH_TOKENS` on the server, enable TLS (`TLS_CERT_FILE`/`TLS_KEY_FILE`), mount a volume for the SQLite data path, monitor `/health` and `/metrics`, and size worker `concurrency` to your workload. Full guide: [bunqueue.dev/guide/deployment](https://bunqueue.dev/guide/deployment/).
165
-
166
- ## Producing jobs
167
-
168
- ```typescript
169
- import { Queue } from 'bunqueue-client';
170
-
171
- const queue = new Queue('emails', { host: 'localhost', port: 6789 });
172
-
173
- await queue.add('send', { to: 'user@example.com' }, { priority: 5, attempts: 3 });
174
- await queue.addBulk([
175
- { name: 'send', data: { to: 'a@b.c' } },
176
- { name: 'send', data: { to: 'x@y.z' }, opts: { delay: 5000 } },
177
- ]);
178
-
179
- const counts = await queue.getJobCounts();
180
- queue.close();
181
- ```
182
-
183
- ## Processing jobs
184
-
185
- ```typescript
186
- import { Worker, UnrecoverableError } from 'bunqueue-client';
187
-
188
- const worker = new Worker(
189
- 'emails',
190
- async (job) => {
191
- await job.updateProgress(50);
192
- if (job.data.invalid) throw new UnrecoverableError('bad payload'); // no retries, straight to the DLQ
193
- return { sent: true };
194
- },
195
- { host: 'localhost', port: 6789, concurrency: 10 }
196
- );
197
-
198
- worker.on('completed', (job, result) => console.log(job.id, result));
199
- worker.on('failed', (job, err) => console.error(job.id, err.message));
200
-
201
- // later: await worker.close(); // graceful shutdown, waits for in flight jobs
202
- ```
203
-
204
- Retry, backoff, dead letter queue, stall detection, priorities, and rate limiting all execute server side. The worker only pulls, heartbeats, and acknowledges, which keeps the client thin and the behavior consistent across languages.
205
-
206
- ## Flows
207
-
208
- ```typescript
209
- import { FlowProducer } from 'bunqueue-client';
210
-
211
- const flow = new FlowProducer({ host: 'localhost', port: 6789 });
212
-
213
- // sequential chain: step1, then step2, then step3
214
- await flow.addChain([
215
- { name: 'step1', queueName: 'pipeline' },
216
- { name: 'step2', queueName: 'pipeline' },
217
- { name: 'step3', queueName: 'pipeline' },
218
- ]);
219
-
220
- // fan in: parallel jobs converge into a final job that reads their results
221
- const { finalId } = await flow.addBulkThen(
222
- [
223
- { name: 'part1', queueName: 'pipeline' },
224
- { name: 'part2', queueName: 'pipeline' },
225
- ],
226
- { name: 'merge', queueName: 'pipeline' }
227
- );
228
- // inside the 'merge' processor: await job.getChildrenValues()
229
-
230
- // parent and child tree: children always run before the parent
231
- const node = await flow.add({
232
- name: 'assemble', queueName: 'orders',
233
- children: [
234
- { name: 'reserve-stock', queueName: 'orders' },
235
- { name: 'charge-card', queueName: 'orders' },
236
- ],
112
+ connection: { host: 'queue.internal', port: 6789, token, tls: true },
237
113
  });
238
114
  ```
239
115
 
240
- ## Simple Mode
116
+ The same applies to `Worker`, `FlowProducer`, `QueueEvents`, `Bunqueue`,
117
+ `SandboxedWorker`, `QueueGroup.getQueue()/getWorker()`, and the workflow
118
+ `Engine`. Top-level `host`, `port`, `token`, or `tls` were never read by the
119
+ canonical client, which silently connected to `localhost:6789` without the
120
+ token or TLS. They now throw an `Error` that names the keys to move.
241
121
 
242
- `Bunqueue` bundles a Queue and a Worker in one object, with routes, onion middleware, in process retry strategies, a circuit breaker, batch accumulation, event triggers, job TTL, priority aging, cooperative cancellation, and dedup or debounce defaults. It is a 1:1 port of the official client's Simple Mode, TCP only (the `embedded` option raises).
243
-
244
- ```typescript
245
- import { Bunqueue, type Job } from 'bunqueue-client';
246
-
247
- const app = new Bunqueue('notifications', {
248
- connection: { host: 'localhost', port: 6789 },
249
- concurrency: 10,
250
- routes: {
251
- 'send-email': async (job: Job<{ to: string }>) => ({ channel: 'email' }),
252
- 'send-sms': async (job: Job<{ to: string }>) => ({ channel: 'sms' }),
253
- },
254
- retry: { maxAttempts: 5, delay: 1000, strategy: 'jitter' },
255
- circuitBreaker: { threshold: 5, resetTimeout: 30_000 },
256
- ttl: { perName: { 'verify-otp': 60_000 } },
257
- deduplication: { ttl: 5000 },
258
- });
259
-
260
- app.use(async (job, next) => {
261
- const start = Date.now();
262
- const result = await next();
263
- console.log(`${job.name}: ${Date.now() - start}ms`);
264
- return result;
265
- });
266
-
267
- app.trigger({
268
- on: 'send-email',
269
- create: 'send-sms',
270
- data: (result, job) => job.data,
271
- condition: (result) => (result as { channel: string }).channel === 'email',
272
- });
273
-
274
- await app.cron('daily-digest', '0 9 * * *', { to: 'all' });
275
- await app.add('send-email', { to: 'alice@example.com' });
276
- // later: await app.close();
277
- ```
278
-
279
- Use `processor` for a single handler, `routes` to dispatch by job name, or `batch` to accumulate N jobs into one call. Exactly one of the three is required.
280
-
281
- ## Scheduling
282
-
283
- ```typescript
284
- await queue.addCron('daily-report', '0 9 * * *', { type: 'report' });
285
- await queue.every('health-ping', 30_000, { type: 'ping' });
286
- await queue.removeJobScheduler('daily-report');
287
- ```
122
+ ### 3. Await the `*Async` control methods in TCP mode
288
123
 
289
- ## Security
124
+ `pause()`, `resume()`, `drain()`, `obliterate()`, `remove()`,
125
+ `setGlobalConcurrency()`, `removeGlobalConcurrency()`, `setGlobalRateLimit()`,
126
+ `removeGlobalRateLimit()`, `setStallConfig()`, `setDlqConfig()`, `retryDlq()`,
127
+ `retryDlqByFilter()`, `purgeDlq()`, and `retryCompleted()` return
128
+ synchronously and send their command without waiting for the broker. Awaiting
129
+ them waits for nothing, and a job added right after `obliterate()` or
130
+ `drain()` can be processed first and then wiped. Use the variant that resolves
131
+ after the broker applied the command:
290
132
 
291
133
  ```typescript
292
- const queue = new Queue('emails', {
293
- host: 'queue.example.com',
294
- port: 6789,
295
- token: process.env.BUNQUEUE_TOKEN,
296
- tls: { caFile: './ca.pem' }, // or `true` for system certificate authorities
297
- });
134
+ // Before (0.1.x): every method returned a broker-acknowledged Promise
135
+ await queue.obliterate();
136
+ await queue.add('fresh', data);
137
+ // After (0.2.0)
138
+ await queue.obliterateAsync(); // also pauseAsync, resumeAsync, drainAsync, removeAsync, ...
139
+ await queue.add('fresh', data);
298
140
  ```
299
141
 
300
- Authentication uses server side tokens (`AUTH_TOKENS`). Transport security uses native TLS, with support for system certificate authorities, a custom CA bundle, or disabled verification for development environments.
142
+ ### 4. Use `*Async` reads in TCP mode
301
143
 
302
- ## Observability
144
+ The synchronous reads are embedded-only. In TCP mode they return a default
145
+ without contacting the broker:
303
146
 
304
- Inject a logger and a telemetry sink to bridge the client into your stack. There are no hard dependencies — you wire OpenTelemetry, Prometheus or your own logger. Defaults are silent.
305
-
306
- ```typescript
307
- import { Queue, consoleLogger, type TelemetryEvent } from 'bunqueue-client';
308
-
309
- const queue = new Queue('emails', {
310
- logger: consoleLogger('info'), // or your own { debug, info, warn, error }
311
- onTelemetry: (e: TelemetryEvent) => {
312
- // per-command latency, connect/disconnect/reconnect, auth, backpressure
313
- if (e.type === 'command') metrics.observe(e.cmd, e.durationMs, e.ok);
314
- },
315
- });
147
+ | 0.1.x call (TCP) | 0.2.0 sync result in TCP mode | Use instead |
148
+ | ------------------------------------- | ----------------------------- | ------------------------------------- |
149
+ | `await queue.isPaused()` | `false` | `await queue.isPausedAsync()` |
150
+ | `await queue.count()` | `0` | `await queue.countAsync()` |
151
+ | `await queue.getJobs(...)` | `[]` | `await queue.getJobsAsync(...)` |
152
+ | `await queue.getWaiting()` (and `getActive`, `getDelayed`, `getCompleted`, `getFailed`) | `[]` | `await queue.getWaitingAsync()` (and the matching `*Async`) |
153
+ | `await queue.getCountsPerPriority()` | `{}` | `await queue.getCountsPerPriorityAsync()` |
154
+ | `await queue.getDlq(...)` | `[]` | `await queue.getDlqAsync(...)` |
155
+ | `queue.getDlqStats()` | empty stats | `await queue.getDlqStatsAsync()` |
156
+ | `queue.getStallConfig()` / `getDlqConfig()` | local cache or defaults | `await queue.getStallConfigAsync()` / `getDlqConfigAsync()` |
157
+ | `await queue.clean(...)` | `[]` | `await queue.cleanAsync(...)` |
316
158
 
317
- // Connection is an EventEmitter for lifecycle hooks:
318
- queue.connection.on('reconnect_scheduled', (i) => log.warn('reconnecting', i));
319
- queue.connection.on('disconnect', () => log.warn('link down'));
320
- ```
159
+ `getJobCounts()` returns a `Promise` in TCP mode; await it or call
160
+ `getJobCountsAsync()`.
321
161
 
322
- ## Throughput and resilience
162
+ ### 5. `Job` is a type, not a class
323
163
 
324
164
  ```typescript
325
- // Bound in-flight commands (backpressure) — parks callers instead of growing memory:
326
- const queue = new Queue('emails', { maxInFlight: 10_000 });
327
-
328
- // Fan producer commands across N connections (round-robin, producer-side):
329
- const pooled = new Queue('emails', { poolSize: 4 });
330
-
331
- // Batch worker ACKs into ACKB round-trips (opt-in) for high-volume consumers:
332
- const worker = new Worker('emails', process, {
333
- ackBatch: { enabled: true, maxSize: 50, maxDelayMs: 5 },
334
- });
335
- ```
336
-
337
- Always attach a `worker.on('error', …)` listener: per Node `EventEmitter` semantics an unhandled `error` event throws. The worker frees each job's concurrency slot before emitting, so even a throwing listener cannot degrade throughput — but the error itself is yours to observe.
338
-
339
- Half-open links are detected via TCP keepalive and a consecutive-timeout teardown, so a silently dropped connection (cloud LB/NAT idle drop) recovers in seconds rather than minutes.
340
-
341
- ## Typed responses
342
-
343
- `connection.call<R>()` and `queue.call<R>()` are generic over the exported response shapes (`JobResponse`, `PulledJobsResponse`, `JobCountsResponse`, `WaitJobResponse`, …), so raw command access is fully typed without casting.
344
-
345
- ## API surface
346
-
347
- | Area | Capabilities |
348
- |---|---|
349
- | Queue | `add`, `addBulk`, full `JobOptions`: priority, delay, attempts, backoff, ttl, timeout, jobId, deduplication, dependsOn, tags, groupId, lifo, removeOnComplete, removeOnFail, durable, repeat, debounce |
350
- | Query | `getJob`, `getJobByCustomId`, `getJobs` with per state helpers, state, result, progress, `waitForJob` (throws on timeout, BullMQ contract), counts, counts per priority, children values, job logs |
351
- | Control | pause, resume, drain, obliterate, clean, remove, discard, promote, `retryJob`, `retryJobs`, move to wait or delayed, change priority or delay, update data, extend lock |
352
- | Dead letter queue | `getDlq`, `retryDlq`, `purgeDlq`, DLQ configuration |
353
- | Administration | rate limiting, global concurrency, stall configuration, webhooks, stats, metrics, `listQueues`, `getWorkers` |
354
- | Worker events | `ready`, `active`, `completed`, `failed`, `progress`, `drained`, `error`, `closed`, with automatic lock heartbeats so that jobs longer than the lock TTL survive |
355
- | Simple Mode | `Bunqueue`: routes, middleware, in process retry (fixed, exponential, jitter, fibonacci, custom), circuit breaker, batch accumulation, triggers, TTL, priority aging, cancellation via `getSignal`, dedup and debounce defaults, cron shorthands |
356
-
357
- The following features require the in process Bun runtime and are intentionally out of scope for this client: embedded mode, sandboxed workers, and `QueueEvents`. Use webhooks or the HTTP SSE and WebSocket endpoints for event streaming.
358
-
359
- Note on numeric payloads: JavaScript numbers are IEEE 754 doubles, exact up to 2^53. Pass larger 64 bit identifiers, for example snowflake IDs, as strings to avoid silent precision loss. Never place `BigInt` values in job data.
360
-
361
- ## Quality assurance
362
-
363
- Every release is validated against a real bunqueue server, spawned fresh for each run, across every supported runtime:
364
-
365
- ```bash
366
- bun install
367
- bun run build # tsc, emits dist/
368
- bun run check # Biome lint and format verification
369
-
370
- bun tests/integration.ts # smoke suite
371
- bun tests/e2e.ts # full surface, edge cases, realistic load
372
- node --experimental-strip-types tests/e2e.ts # identical suite on Node 22 or later
373
- deno run -A tests/e2e.ts # identical suite on Deno 2 or later
374
- bun run test:workers # full suite inside workerd, the Cloudflare Workers runtime
375
- ```
376
-
377
- The e2e suite includes payload limits, unicode integrity, pipelining under concurrency, server crash and restart with automatic reconnection, and a realistic multi queue production scenario with zero loss accounting. Engineering standards: Biome, a maximum of 250 lines per file, and relative imports with explicit `.js` extensions for NodeNext resolution. See `CLAUDE.md` for the full development guide and wire protocol notes.
378
-
379
- ## License
380
-
381
- MIT. See the [LICENSE](./LICENSE) file. Documentation: [bunqueue.dev/guide/sdks](https://bunqueue.dev/guide/sdks/). Issues and feature requests: [GitHub issues](https://github.com/egeominotti/bunqueue/issues).
165
+ // Before (0.1.x)
166
+ import { Job } from 'bunqueue-client';
167
+ if (value instanceof Job) { /* ... */ }
168
+ // After (0.2.0): jobs come from add(), getJob(), and Worker callbacks
169
+ import type { Job } from 'bunqueue-client';
170
+ ```
171
+
172
+ There is no `job.raw`; use `job.toJSON()` (`JobJson`) or `job.asJSON()`
173
+ (`JobJsonRaw`).
174
+
175
+ ### 6. Removed type exports
176
+
177
+ | 0.1.x type | 0.2.0 replacement |
178
+ | ---------------------------------------------------------- | ---------------------------------------------------------- |
179
+ | `BunqueueConnection` | `ConnectionOptions` |
180
+ | `TlsOption` | `ConnectionOptions['tls']` |
181
+ | `BackoffOptions` | `Exclude<NonNullable<JobOptions['backoff']>, number>` |
182
+ | `DeduplicationOptions` | `NonNullable<JobOptions['deduplication']>` |
183
+ | `RepeatOptions` | `NonNullable<JobOptions['repeat']>` |
184
+ | `SchedulerOptions` | `RepeatOpts` (with `JobTemplate` for the job) |
185
+ | `FlowOptions` | `FlowOpts` |
186
+ | `GetFlowOptions` | `Parameters<FlowProducer['getFlow']>[0]` |
187
+ | `BulkJobEntry<T>` | `Parameters<Queue<T>['addBulk']>[0][number]` |
188
+ | `JobCounts` | `Awaited<ReturnType<Queue['getJobCountsAsync']>>` |
189
+ | `JobStateName` | `Awaited<ReturnType<Queue['getJobState']>>` |
190
+ | `JobRaw` | `JobJson` / `JobJsonRaw` |
191
+ | `CircuitState` | `ReturnType<Bunqueue['getCircuitState']>` |
192
+ | `TelemetryErrorOperation` | `Extract<TelemetryEvent, { type: 'error' }>['operation']` |
193
+ | `WorkerEventMap`, `AckBatchOptions` | none: `Worker.on()` overloads type every event |
194
+ | `Command`, `Response`, and the `*Response` wire types | none: import them from `bunqueue-client/legacy` |
195
+
196
+ ### 7. Error classes
197
+
198
+ `AuthError`, `BunqueueError`, `CommandError`, `CommandTimeoutError`,
199
+ `ConnectionClosedError`, and `SerializationError` are still exported, but only
200
+ the low-level `Connection` and `ConnectionPool` throw them. `Queue`, `Worker`,
201
+ `FlowProducer`, and `QueueEvents` reject with plain `Error` instances (for
202
+ example `Command timeout`, `Authentication failed`, `Connection lost`, or the
203
+ broker's error text), so `instanceof` checks against those classes no longer
204
+ match. `UnrecoverableError`, `DelayedError`, and `RateLimitError` are the
205
+ canonical processor errors.
206
+
207
+ ### 8. TypeScript setup
208
+
209
+ The package no longer installs `bun-types` or `@types/node`. Node projects keep
210
+ their own `@types/node` (20 or newer); Bun globals are not declared.
211
+
212
+ ## Parity gates
213
+
214
+ ```sh
215
+ bun run build
216
+ bun run test:parity
217
+ bun run test:shared-contract
218
+ bun run test:canonical
219
+ ```
220
+
221
+ The build consumes the repository's canonical sources and emits a manifest
222
+ covering source hashes and every generated artifact. The parity checker
223
+ rejects missing/stale artifacts, missing exports, changed signatures,
224
+ constructors, overloads, options, nested type references, and event contracts.
225
+ The unchanged native documentation suites also run against the built package
226
+ with real embedded engines and TCP brokers. Differential and generated-history
227
+ tests check results, states, counters, and lifecycle events.
228
+
229
+ Bun, Node, and Deno run the canonical public scenarios in CI. Protocol
230
+ conformance and Cloudflare Workers exercise the built package too. A failed
231
+ parity gate blocks the SDK build/publish preparation; it cannot be bypassed by
232
+ updating an API count or accepting a new snapshot.
233
+
234
+ Only `msgpackr` is needed at runtime for protocol serialization. Build and test
235
+ tooling stays in development dependencies. The Bun-only backend is loaded
236
+ conditionally and retains the same storage/runtime requirements as bunqueue.