bunqueue-client 0.1.9 → 0.2.1
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.
- package/CHANGELOG.md +165 -0
- package/LEGACY.md +460 -0
- package/README.md +204 -349
- package/dist/ack-batcher.js +7 -67
- package/dist/canonical-manifest.json +934 -0
- package/dist/chunk-b967v3w3.js +79 -0
- package/dist/chunk-fekm0ma6.js +110 -0
- package/dist/chunk-jxkszwqp.js +573 -0
- package/dist/embedded.js +16510 -0
- package/dist/frame.js +14 -57
- package/dist/index.d.ts +1 -27
- package/dist/index.js +10953 -16
- package/dist/legacy.d.ts +1 -0
- package/dist/legacy.js +2081 -0
- package/dist/{ack-batcher.d.ts → types/sdk/typescript/src/ack-batcher.d.ts} +3 -3
- package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/aging.d.ts +2 -2
- package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/batch.d.ts +2 -2
- package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/bunqueue-api.d.ts +5 -5
- package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/bunqueue.d.ts +13 -13
- package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/circuit-breaker.d.ts +2 -2
- package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/dedup-debounce.d.ts +2 -2
- package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/dlq-rate-limit.d.ts +2 -2
- package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/rate-gate.d.ts +1 -1
- package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/retry.d.ts +1 -1
- package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/triggers.d.ts +3 -3
- package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/ttl.d.ts +1 -1
- package/dist/{bunqueue → types/sdk/typescript/src/bunqueue}/types.d.ts +4 -4
- package/dist/types/sdk/typescript/src/canonical-transport/bun-sqlite-types.d.ts +21 -0
- package/dist/{connection-pool.d.ts → types/sdk/typescript/src/connection-pool.d.ts} +1 -1
- package/dist/{connection-types.d.ts → types/sdk/typescript/src/connection-types.d.ts} +1 -1
- package/dist/{connection.d.ts → types/sdk/typescript/src/connection.d.ts} +6 -19
- package/dist/{errors.d.ts → types/sdk/typescript/src/errors.d.ts} +3 -0
- package/dist/types/sdk/typescript/src/flow-commit.d.ts +5 -0
- package/dist/types/sdk/typescript/src/flow-plan-legacy.d.ts +13 -0
- package/dist/types/sdk/typescript/src/flow-plan.d.ts +29 -0
- package/dist/{flow-types.d.ts → types/sdk/typescript/src/flow-types.d.ts} +7 -4
- package/dist/{flow.d.ts → types/sdk/typescript/src/flow.d.ts} +6 -10
- package/dist/{frame.d.ts → types/sdk/typescript/src/frame.d.ts} +1 -1
- package/dist/types/sdk/typescript/src/index.d.ts +10 -0
- package/dist/{job.d.ts → types/sdk/typescript/src/job.d.ts} +4 -3
- package/dist/types/sdk/typescript/src/legacy.d.ts +27 -0
- package/dist/{observability.d.ts → types/sdk/typescript/src/observability.d.ts} +14 -0
- package/dist/{queue-admin.d.ts → types/sdk/typescript/src/queue-admin.d.ts} +3 -4
- package/dist/{queue-control.d.ts → types/sdk/typescript/src/queue-control.d.ts} +5 -5
- package/dist/{queue-query.d.ts → types/sdk/typescript/src/queue-query.d.ts} +3 -3
- package/dist/{queue.d.ts → types/sdk/typescript/src/queue.d.ts} +8 -8
- package/dist/{responses.d.ts → types/sdk/typescript/src/responses.d.ts} +2 -2
- package/dist/types/sdk/typescript/src/serialization.d.ts +10 -0
- package/dist/{socket-factory.d.ts → types/sdk/typescript/src/socket-factory.d.ts} +1 -1
- package/dist/types/sdk/typescript/src/terminal-outcome.d.ts +8 -0
- package/dist/{types.d.ts → types/sdk/typescript/src/types.d.ts} +5 -2
- package/dist/{worker-base.d.ts → types/sdk/typescript/src/worker-base.d.ts} +6 -6
- package/dist/types/sdk/typescript/src/worker-slot-signal.d.ts +6 -0
- package/dist/{worker-types.d.ts → types/sdk/typescript/src/worker-types.d.ts} +3 -3
- package/dist/{worker.d.ts → types/sdk/typescript/src/worker.d.ts} +3 -2
- package/dist/types/src/application/background/dlq.d.ts +2 -0
- package/dist/types/src/application/background/lifecycle.d.ts +4 -0
- package/dist/types/src/application/background/recovery/active.d.ts +5 -0
- package/dist/types/src/application/background/recovery/index.d.ts +2 -0
- package/dist/types/src/application/background/recovery/pending.d.ts +3 -0
- package/dist/types/src/application/background/recovery/restore.d.ts +5 -0
- package/dist/types/src/application/background/recovery/shared.d.ts +6 -0
- package/dist/types/src/application/background/timeouts.d.ts +25 -0
- package/dist/types/src/application/backgroundTasks.d.ts +7 -0
- package/dist/types/src/application/cleanupTasks.d.ts +10 -0
- package/dist/types/src/application/clientOwnership.d.ts +65 -0
- package/dist/types/src/application/clientTracking.d.ts +40 -0
- package/dist/types/src/application/completedCleanup.d.ts +34 -0
- package/dist/types/src/application/completedRetry.d.ts +21 -0
- package/dist/types/src/application/contextFactory.d.ts +49 -0
- package/dist/types/src/application/dependencyCompletions.d.ts +63 -0
- package/dist/types/src/application/dependencyProcessor.d.ts +15 -0
- package/dist/types/src/application/dependencyResultTracker.d.ts +18 -0
- package/dist/types/src/application/dlqManager.d.ts +49 -0
- package/dist/types/src/application/dlqRetry.d.ts +12 -0
- package/dist/types/src/application/emptyQueueCleanup.d.ts +3 -0
- package/dist/types/src/application/eventsManager.d.ts +50 -0
- package/dist/types/src/application/flowFailureRecovery.d.ts +20 -0
- package/dist/types/src/application/flowParentBackpatch.d.ts +27 -0
- package/dist/types/src/application/jobLogsManager.d.ts +21 -0
- package/dist/types/src/application/latencyTracker.d.ts +39 -0
- package/dist/types/src/application/lockManager.d.ts +15 -0
- package/dist/types/src/application/lockOperations.d.ts +38 -0
- package/dist/types/src/application/metricsExporter.d.ts +27 -0
- package/dist/types/src/application/monitoringChecks.d.ts +36 -0
- package/dist/types/src/application/operations/ack/batch.d.ts +8 -0
- package/dist/types/src/application/operations/ack/completion.d.ts +3 -0
- package/dist/types/src/application/operations/ack/failure.d.ts +3 -0
- package/dist/types/src/application/operations/ack.d.ts +5 -0
- package/dist/types/src/application/operations/ackHelpers.d.ts +36 -0
- package/dist/types/src/application/operations/customId.d.ts +51 -0
- package/dist/types/src/application/operations/flowPush.d.ts +9 -0
- package/dist/types/src/application/operations/flowTopologyValidation.d.ts +3 -0
- package/dist/types/src/application/operations/flowValidation.d.ts +3 -0
- package/dist/types/src/application/operations/jobClaim.d.ts +17 -0
- package/dist/types/src/application/operations/jobManagement.d.ts +45 -0
- package/dist/types/src/application/operations/jobMoveOperations.d.ts +9 -0
- package/dist/types/src/application/operations/jobPromotion.d.ts +7 -0
- package/dist/types/src/application/operations/jobStateTransitions.d.ts +15 -0
- package/dist/types/src/application/operations/parentLink.d.ts +36 -0
- package/dist/types/src/application/operations/parentLinkInput.d.ts +8 -0
- package/dist/types/src/application/operations/pull.d.ts +20 -0
- package/dist/types/src/application/operations/pullFinalization.d.ts +6 -0
- package/dist/types/src/application/operations/pullStateTransition.d.ts +51 -0
- package/dist/types/src/application/operations/push.d.ts +13 -0
- package/dist/types/src/application/operations/pushAdmission.d.ts +36 -0
- package/dist/types/src/application/operations/pushBatch.d.ts +4 -0
- package/dist/types/src/application/operations/pushContext.d.ts +48 -0
- package/dist/types/src/application/operations/pushDeduplication.d.ts +42 -0
- package/dist/types/src/application/operations/pushInsert.d.ts +39 -0
- package/dist/types/src/application/operations/pushLocks.d.ts +15 -0
- package/dist/types/src/application/operations/query/collect.d.ts +12 -0
- package/dist/types/src/application/operations/query/jobLookup.d.ts +9 -0
- package/dist/types/src/application/operations/query/pagination.d.ts +8 -0
- package/dist/types/src/application/operations/query/state.d.ts +4 -0
- package/dist/types/src/application/operations/queryOperations.d.ts +5 -0
- package/dist/types/src/application/operations/queueControl.d.ts +50 -0
- package/dist/types/src/application/orphanRecovery.d.ts +25 -0
- package/dist/types/src/application/prometheusOperationalMetrics.d.ts +31 -0
- package/dist/types/src/application/queue-manager/ack.d.ts +23 -0
- package/dist/types/src/application/queue-manager/configuration.d.ts +27 -0
- package/dist/types/src/application/queue-manager/context.d.ts +5 -0
- package/dist/types/src/application/queue-manager/control.d.ts +20 -0
- package/dist/types/src/application/queue-manager/delivery.d.ts +33 -0
- package/dist/types/src/application/queue-manager/dependencies.d.ts +8 -0
- package/dist/types/src/application/queue-manager/dependency-runtime.d.ts +8 -0
- package/dist/types/src/application/queue-manager/flow-failures.d.ts +18 -0
- package/dist/types/src/application/queue-manager/flow-options.d.ts +8 -0
- package/dist/types/src/application/queue-manager/job-management.d.ts +17 -0
- package/dist/types/src/application/queue-manager/lifecycle.d.ts +4 -0
- package/dist/types/src/application/queue-manager/limits.d.ts +58 -0
- package/dist/types/src/application/queue-manager/locks.d.ts +21 -0
- package/dist/types/src/application/queue-manager/observability.d.ts +16 -0
- package/dist/types/src/application/queue-manager/queries.d.ts +24 -0
- package/dist/types/src/application/queue-manager/repeat.d.ts +4 -0
- package/dist/types/src/application/queue-manager/services.d.ts +19 -0
- package/dist/types/src/application/queue-manager/state.d.ts +98 -0
- package/dist/types/src/application/queue-manager/stats.d.ts +28 -0
- package/dist/types/src/application/queueManager.d.ts +5 -0
- package/dist/types/src/application/queueStatsAggregator.d.ts +23 -0
- package/dist/types/src/application/queueTelemetryJournal.d.ts +24 -0
- package/dist/types/src/application/repeatJobs.d.ts +7 -0
- package/dist/types/src/application/stallDetection.d.ts +26 -0
- package/dist/types/src/application/statsManager.d.ts +59 -0
- package/dist/types/src/application/taskErrorTracking.d.ts +22 -0
- package/dist/types/src/application/throughputTracker.d.ts +34 -0
- package/dist/types/src/application/types/ack.d.ts +136 -0
- package/dist/types/src/application/types/background.d.ts +18 -0
- package/dist/types/src/application/types/config.d.ts +41 -0
- package/dist/types/src/application/types/contextFactory.d.ts +89 -0
- package/dist/types/src/application/types/contexts.d.ts +117 -0
- package/dist/types/src/application/types/index.d.ts +7 -0
- package/dist/types/src/application/types/query.d.ts +23 -0
- package/dist/types/src/application/types/queueManager.d.ts +100 -0
- package/dist/types/src/application/webhookManager.d.ts +47 -0
- package/dist/types/src/application/workerManager.d.ts +61 -0
- package/dist/types/src/client/bunqueue/aging.d.ts +16 -0
- package/dist/types/src/client/bunqueue/batch.d.ts +16 -0
- package/dist/types/src/client/bunqueue/cancellation.d.ts +21 -0
- package/dist/types/src/client/bunqueue/circuitBreaker.d.ts +21 -0
- package/dist/types/src/client/bunqueue/dedupDebounce.d.ts +12 -0
- package/dist/types/src/client/bunqueue/dlqRateLimit.d.ts +26 -0
- package/dist/types/src/client/bunqueue/retry.d.ts +8 -0
- package/dist/types/src/client/bunqueue/runtime.d.ts +35 -0
- package/dist/types/src/client/bunqueue/triggers.d.ts +17 -0
- package/dist/types/src/client/bunqueue/ttl.d.ts +17 -0
- package/dist/types/src/client/bunqueue/types.d.ts +147 -0
- package/dist/types/src/client/bunqueue.d.ts +73 -0
- package/dist/types/src/client/dlqConversion.d.ts +5 -0
- package/dist/types/src/client/errors.d.ts +24 -0
- package/dist/types/src/client/events.d.ts +85 -0
- package/dist/types/src/client/flow.d.ts +70 -0
- package/dist/types/src/client/flowAtomic.d.ts +9 -0
- package/dist/types/src/client/flowJobCoreMethods.d.ts +28 -0
- package/dist/types/src/client/flowJobDependencies.d.ts +7 -0
- package/dist/types/src/client/flowJobFactory.d.ts +24 -0
- package/dist/types/src/client/flowJobMoveMethods.d.ts +16 -0
- package/dist/types/src/client/flowJobTypes.d.ts +29 -0
- package/dist/types/src/client/flowLegacyPlan.d.ts +16 -0
- package/dist/types/src/client/flowOptions.d.ts +10 -0
- package/dist/types/src/client/flowPlan.d.ts +16 -0
- package/dist/types/src/client/flowPush.d.ts +27 -0
- package/dist/types/src/client/flowReader.d.ts +10 -0
- package/dist/types/src/client/flowResults.d.ts +11 -0
- package/dist/types/src/client/flowTypes.d.ts +77 -0
- package/dist/types/src/client/forwarder.d.ts +75 -0
- package/dist/types/src/client/groupId.d.ts +1 -0
- package/dist/types/src/client/index.d.ts +46 -0
- package/dist/types/src/client/jobConversion.d.ts +10 -0
- package/dist/types/src/client/jobConversionHelpers.d.ts +28 -0
- package/dist/types/src/client/jobConversionTypes.d.ts +88 -0
- package/dist/types/src/client/jobDeduplication.d.ts +6 -0
- package/dist/types/src/client/jobHelpers.d.ts +31 -0
- package/dist/types/src/client/legacyConnectionOptions.d.ts +8 -0
- package/dist/types/src/client/manager.d.ts +15 -0
- package/dist/types/src/client/pro.d.ts +9 -0
- package/dist/types/src/client/queue/addBatcher.d.ts +59 -0
- package/dist/types/src/client/queue/bullmqCompat.d.ts +57 -0
- package/dist/types/src/client/queue/deduplication.d.ts +14 -0
- package/dist/types/src/client/queue/dlq.d.ts +61 -0
- package/dist/types/src/client/queue/dlqJobMethods.d.ts +9 -0
- package/dist/types/src/client/queue/dlqOps.d.ts +26 -0
- package/dist/types/src/client/queue/dlqStats.d.ts +3 -0
- package/dist/types/src/client/queue/failWire.d.ts +17 -0
- package/dist/types/src/client/queue/helpers.d.ts +19 -0
- package/dist/types/src/client/queue/job-proxy/dependencies.d.ts +9 -0
- package/dist/types/src/client/queue/job-proxy/reflection.d.ts +2 -0
- package/dist/types/src/client/queue/job-proxy/simple.d.ts +3 -0
- package/dist/types/src/client/queue/job-proxy/tcp.d.ts +4 -0
- package/dist/types/src/client/queue/jobMetadata.d.ts +10 -0
- package/dist/types/src/client/queue/jobMove.d.ts +32 -0
- package/dist/types/src/client/queue/jobProxy.d.ts +4 -0
- package/dist/types/src/client/queue/operations/add/bulk.d.ts +7 -0
- package/dist/types/src/client/queue/operations/add/payload.d.ts +25 -0
- package/dist/types/src/client/queue/operations/add/single.d.ts +3 -0
- package/dist/types/src/client/queue/operations/add.d.ts +2 -0
- package/dist/types/src/client/queue/operations/control.d.ts +42 -0
- package/dist/types/src/client/queue/operations/counts.d.ts +48 -0
- package/dist/types/src/client/queue/operations/groups.d.ts +24 -0
- package/dist/types/src/client/queue/operations/management.d.ts +51 -0
- package/dist/types/src/client/queue/operations/query.d.ts +50 -0
- package/dist/types/src/client/queue/operations/queryStates.d.ts +13 -0
- package/dist/types/src/client/queue/operations/queryTcpPages.d.ts +14 -0
- package/dist/types/src/client/queue/queue.d.ts +12 -0
- package/dist/types/src/client/queue/rateLimit.d.ts +46 -0
- package/dist/types/src/client/queue/runtime/compatibility.d.ts +13 -0
- package/dist/types/src/client/queue/runtime/configuration.d.ts +46 -0
- package/dist/types/src/client/queue/runtime/connection.d.ts +6 -0
- package/dist/types/src/client/queue/runtime/control.d.ts +41 -0
- package/dist/types/src/client/queue/runtime/queries.d.ts +66 -0
- package/dist/types/src/client/queue/runtime/scheduling.d.ts +33 -0
- package/dist/types/src/client/queue/runtime/state.d.ts +101 -0
- package/dist/types/src/client/queue/scheduler.d.ts +58 -0
- package/dist/types/src/client/queue/schedulerPagination.d.ts +7 -0
- package/dist/types/src/client/queue/stall.d.ts +20 -0
- package/dist/types/src/client/queue/types/add.d.ts +40 -0
- package/dist/types/src/client/queue/types/contexts.d.ts +33 -0
- package/dist/types/src/client/queue/types/index.d.ts +3 -0
- package/dist/types/src/client/queue/types/job.d.ts +50 -0
- package/dist/types/src/client/queue/types/runtime.d.ts +35 -0
- package/dist/types/src/client/queue/workers.d.ts +36 -0
- package/dist/types/src/client/queue-events/tcpSubscription.d.ts +23 -0
- package/dist/types/src/client/queue.d.ts +5 -0
- package/dist/types/src/client/queueGroup.d.ts +51 -0
- package/dist/types/src/client/resolveToken.d.ts +10 -0
- package/dist/types/src/client/sandboxed/index.d.ts +7 -0
- package/dist/types/src/client/sandboxed/queueOps.d.ts +24 -0
- package/dist/types/src/client/sandboxed/runtime/dispatch.d.ts +13 -0
- package/dist/types/src/client/sandboxed/runtime/lifecycle.d.ts +20 -0
- package/dist/types/src/client/sandboxed/runtime/log.d.ts +1 -0
- package/dist/types/src/client/sandboxed/runtime/pool.d.ts +11 -0
- package/dist/types/src/client/sandboxed/runtime/recovery.d.ts +11 -0
- package/dist/types/src/client/sandboxed/runtime/state.d.ts +39 -0
- package/dist/types/src/client/sandboxed/types/index.d.ts +2 -0
- package/dist/types/src/client/sandboxed/types/options.d.ts +27 -0
- package/dist/types/src/client/sandboxed/types/process.d.ts +39 -0
- package/dist/types/src/client/sandboxed/worker.d.ts +4 -0
- package/dist/types/src/client/sandboxed/wrapper.d.ts +12 -0
- package/dist/types/src/client/sandboxedWorker.d.ts +6 -0
- package/dist/types/src/client/tcp/client.d.ts +6 -0
- package/dist/types/src/client/tcp/commandQueue.d.ts +23 -0
- package/dist/types/src/client/tcp/connection.d.ts +4 -0
- package/dist/types/src/client/tcp/errors.d.ts +6 -0
- package/dist/types/src/client/tcp/health.d.ts +60 -0
- package/dist/types/src/client/tcp/index.d.ts +11 -0
- package/dist/types/src/client/tcp/reconnect.d.ts +47 -0
- package/dist/types/src/client/tcp/runtime/commands.d.ts +9 -0
- package/dist/types/src/client/tcp/runtime/connectivity.d.ts +13 -0
- package/dist/types/src/client/tcp/runtime/health.d.ts +14 -0
- package/dist/types/src/client/tcp/runtime/lifecycle.d.ts +8 -0
- package/dist/types/src/client/tcp/runtime/state.d.ts +50 -0
- package/dist/types/src/client/tcp/shared.d.ts +12 -0
- package/dist/types/src/client/tcp/transport.d.ts +18 -0
- package/dist/types/src/client/tcp/types/command.d.ts +9 -0
- package/dist/types/src/client/tcp/types/connection.d.ts +31 -0
- package/dist/types/src/client/tcp/types/index.d.ts +5 -0
- package/dist/types/src/client/tcp/types/socket.d.ts +8 -0
- package/dist/types/src/client/tcp/types/tls.d.ts +4 -0
- package/dist/types/src/client/tcp/types.d.ts +2 -0
- package/dist/types/src/client/tcpClient.d.ts +6 -0
- package/dist/types/src/client/tcpPool.d.ts +69 -0
- package/dist/types/src/client/types/connection.d.ts +30 -0
- package/dist/types/src/client/types/dlq.d.ts +45 -0
- package/dist/types/src/client/types/events.d.ts +54 -0
- package/dist/types/src/client/types/flow.d.ts +22 -0
- package/dist/types/src/client/types/index.d.ts +10 -0
- package/dist/types/src/client/types/job.d.ts +131 -0
- package/dist/types/src/client/types/metrics.d.ts +1 -0
- package/dist/types/src/client/types/options.d.ts +72 -0
- package/dist/types/src/client/types/worker.d.ts +54 -0
- package/dist/types/src/client/types.d.ts +2 -0
- package/dist/types/src/client/worker/ackBatcher.d.ts +55 -0
- package/dist/types/src/client/worker/ackFrontier.d.ts +21 -0
- package/dist/types/src/client/worker/ackOutcome.d.ts +8 -0
- package/dist/types/src/client/worker/batchExecution.d.ts +14 -0
- package/dist/types/src/client/worker/constants.d.ts +7 -0
- package/dist/types/src/client/worker/groupConcurrency.d.ts +49 -0
- package/dist/types/src/client/worker/handlers/completion.d.ts +29 -0
- package/dist/types/src/client/worker/handlers/dependencies.d.ts +11 -0
- package/dist/types/src/client/worker/handlers/mutations.d.ts +23 -0
- package/dist/types/src/client/worker/handlers/queries.d.ts +15 -0
- package/dist/types/src/client/worker/jobParser.d.ts +9 -0
- package/dist/types/src/client/worker/processor.d.ts +11 -0
- package/dist/types/src/client/worker/processorHandlers.d.ts +4 -0
- package/dist/types/src/client/worker/processorOutcome.d.ts +14 -0
- package/dist/types/src/client/worker/processorResult.d.ts +2 -0
- package/dist/types/src/client/worker/runtime/buffer.d.ts +8 -0
- package/dist/types/src/client/worker/runtime/control.d.ts +28 -0
- package/dist/types/src/client/worker/runtime/execution.d.ts +16 -0
- package/dist/types/src/client/worker/runtime/lifecycle.d.ts +7 -0
- package/dist/types/src/client/worker/runtime/manual.d.ts +10 -0
- package/dist/types/src/client/worker/runtime/options.d.ts +5 -0
- package/dist/types/src/client/worker/runtime/polling.d.ts +14 -0
- package/dist/types/src/client/worker/runtime/state.d.ts +121 -0
- package/dist/types/src/client/worker/types/index.d.ts +5 -0
- package/dist/types/src/client/worker/types/manual.d.ts +7 -0
- package/dist/types/src/client/worker/types/options.d.ts +26 -0
- package/dist/types/src/client/worker/types/outcome.d.ts +23 -0
- package/dist/types/src/client/worker/types/processor.d.ts +25 -0
- package/dist/types/src/client/worker/types/transport.d.ts +11 -0
- package/dist/types/src/client/worker/worker.d.ts +6 -0
- package/dist/types/src/client/worker/workerHeartbeat.d.ts +15 -0
- package/dist/types/src/client/worker/workerPull.d.ts +24 -0
- package/dist/types/src/client/worker/workerRateLimiter.d.ts +51 -0
- package/dist/types/src/client/worker.d.ts +6 -0
- package/dist/types/src/client/workflow/admission.d.ts +45 -0
- package/dist/types/src/client/workflow/clock.d.ts +60 -0
- package/dist/types/src/client/workflow/compensationChild.d.ts +33 -0
- package/dist/types/src/client/workflow/compensationClaim.d.ts +11 -0
- package/dist/types/src/client/workflow/compensationPass.d.ts +17 -0
- package/dist/types/src/client/workflow/compensationSupport.d.ts +24 -0
- package/dist/types/src/client/workflow/compensator.d.ts +34 -0
- package/dist/types/src/client/workflow/definitionGuard.d.ts +11 -0
- package/dist/types/src/client/workflow/emitter.d.ts +17 -0
- package/dist/types/src/client/workflow/engine.d.ts +66 -0
- package/dist/types/src/client/workflow/eventTypes.d.ts +44 -0
- package/dist/types/src/client/workflow/executionFence.d.ts +15 -0
- package/dist/types/src/client/workflow/executionTypes.d.ts +133 -0
- package/dist/types/src/client/workflow/executor.d.ts +52 -0
- package/dist/types/src/client/workflow/executorLifecycle.d.ts +19 -0
- package/dist/types/src/client/workflow/executorNodes.d.ts +18 -0
- package/dist/types/src/client/workflow/executorQueue.d.ts +9 -0
- package/dist/types/src/client/workflow/forEachRunner.d.ts +4 -0
- package/dist/types/src/client/workflow/identity.d.ts +48 -0
- package/dist/types/src/client/workflow/index.d.ts +23 -0
- package/dist/types/src/client/workflow/loops.d.ts +11 -0
- package/dist/types/src/client/workflow/mapRunner.d.ts +4 -0
- package/dist/types/src/client/workflow/recovery.d.ts +32 -0
- package/dist/types/src/client/workflow/rollbackControl.d.ts +37 -0
- package/dist/types/src/client/workflow/runner.d.ts +23 -0
- package/dist/types/src/client/workflow/runnerTiming.d.ts +14 -0
- package/dist/types/src/client/workflow/stepTypes.d.ts +171 -0
- package/dist/types/src/client/workflow/store.d.ts +83 -0
- package/dist/types/src/client/workflow/storeCodec.d.ts +7 -0
- package/dist/types/src/client/workflow/storeExecutionCodec.d.ts +11 -0
- package/dist/types/src/client/workflow/storeListing.d.ts +11 -0
- package/dist/types/src/client/workflow/storeMaintenance.d.ts +4 -0
- package/dist/types/src/client/workflow/storeSignals.d.ts +70 -0
- package/dist/types/src/client/workflow/subWorkflowRunner.d.ts +14 -0
- package/dist/types/src/client/workflow/types.d.ts +4 -0
- package/dist/types/src/client/workflow/unwindPlan.d.ts +87 -0
- package/dist/types/src/client/workflow/waitFor.d.ts +56 -0
- package/dist/types/src/client/workflow/workflow.d.ts +70 -0
- package/dist/types/src/client/workflow/workflowDecisions.d.ts +11 -0
- package/dist/types/src/client/workflow/workflowDefinition.d.ts +16 -0
- package/dist/types/src/client/workflow/workflowIntrospection.d.ts +5 -0
- package/dist/types/src/client/workflow/workflowValidation.d.ts +44 -0
- package/dist/types/src/config/index.d.ts +9 -0
- package/dist/types/src/config/loader.d.ts +7 -0
- package/dist/types/src/config/resolve.d.ts +59 -0
- package/dist/types/src/config/types.d.ts +88 -0
- package/dist/types/src/domain/job/constants.d.ts +14 -0
- package/dist/types/src/domain/job/create.d.ts +9 -0
- package/dist/types/src/domain/job/groupFifoOrder.d.ts +9 -0
- package/dist/types/src/domain/job/ids.d.ts +7 -0
- package/dist/types/src/domain/job/locks.d.ts +16 -0
- package/dist/types/src/domain/job/payload.d.ts +18 -0
- package/dist/types/src/domain/job/state.d.ts +23 -0
- package/dist/types/src/domain/job/terminal.d.ts +3 -0
- package/dist/types/src/domain/queue/dependencyTracker.d.ts +78 -0
- package/dist/types/src/domain/queue/dlqShard.d.ts +66 -0
- package/dist/types/src/domain/queue/groupLimiterManager.d.ts +30 -0
- package/dist/types/src/domain/queue/groupScheduler.d.ts +31 -0
- package/dist/types/src/domain/queue/groupSchedulerOrder.d.ts +6 -0
- package/dist/types/src/domain/queue/limiterManager.d.ts +68 -0
- package/dist/types/src/domain/queue/priorityQueue.d.ts +54 -0
- package/dist/types/src/domain/queue/priorityQueueOrder.d.ts +3 -0
- package/dist/types/src/domain/queue/shard/dependencies.d.ts +11 -0
- package/dist/types/src/domain/queue/shard/dlq.d.ts +26 -0
- package/dist/types/src/domain/queue/shard/keys.d.ts +19 -0
- package/dist/types/src/domain/queue/shard/lifecycle.d.ts +10 -0
- package/dist/types/src/domain/queue/shard/limits.d.ts +47 -0
- package/dist/types/src/domain/queue/shard/metrics.d.ts +32 -0
- package/dist/types/src/domain/queue/shard/state.d.ts +40 -0
- package/dist/types/src/domain/queue/shard.d.ts +7 -0
- package/dist/types/src/domain/queue/shardCounters.d.ts +35 -0
- package/dist/types/src/domain/queue/temporalIndex.d.ts +24 -0
- package/dist/types/src/domain/queue/temporalManager.d.ts +72 -0
- package/dist/types/src/domain/queue/uniqueKeyManager.d.ts +33 -0
- package/dist/types/src/domain/queue/waiterManager.d.ts +18 -0
- package/dist/types/src/domain/response/builders.d.ts +15 -0
- package/dist/types/src/domain/types/command.d.ts +2 -0
- package/dist/types/src/domain/types/commands/base.d.ts +5 -0
- package/dist/types/src/domain/types/commands/core.d.ts +107 -0
- package/dist/types/src/domain/types/commands/cron.d.ts +36 -0
- package/dist/types/src/domain/types/commands/dashboard.d.ts +13 -0
- package/dist/types/src/domain/types/commands/dlq.d.ts +44 -0
- package/dist/types/src/domain/types/commands/extended.d.ts +63 -0
- package/dist/types/src/domain/types/commands/index.d.ts +12 -0
- package/dist/types/src/domain/types/commands/limits.d.ts +108 -0
- package/dist/types/src/domain/types/commands/management.d.ts +73 -0
- package/dist/types/src/domain/types/commands/monitoring.d.ts +49 -0
- package/dist/types/src/domain/types/commands/protocol.d.ts +20 -0
- package/dist/types/src/domain/types/commands/query.d.ts +46 -0
- package/dist/types/src/domain/types/commands/union.d.ts +13 -0
- package/dist/types/src/domain/types/commands/workers.d.ts +39 -0
- package/dist/types/src/domain/types/cron.d.ts +89 -0
- package/dist/types/src/domain/types/deduplication.d.ts +43 -0
- package/dist/types/src/domain/types/dlq.d.ts +136 -0
- package/dist/types/src/domain/types/flow.d.ts +25 -0
- package/dist/types/src/domain/types/group.d.ts +26 -0
- package/dist/types/src/domain/types/job.d.ts +8 -0
- package/dist/types/src/domain/types/jobs/model.d.ts +150 -0
- package/dist/types/src/domain/types/metrics.d.ts +16 -0
- package/dist/types/src/domain/types/priorityQueue.d.ts +13 -0
- package/dist/types/src/domain/types/protocol.d.ts +5 -0
- package/dist/types/src/domain/types/queue.d.ts +110 -0
- package/dist/types/src/domain/types/response.d.ts +3 -0
- package/dist/types/src/domain/types/responses/model.d.ts +152 -0
- package/dist/types/src/domain/types/shard.d.ts +4 -0
- package/dist/types/src/domain/types/stall.d.ts +48 -0
- package/dist/types/src/domain/types/webhook.d.ts +42 -0
- package/dist/types/src/domain/types/worker.d.ts +40 -0
- package/dist/types/src/infrastructure/backup/backupTelemetry.d.ts +30 -0
- package/dist/types/src/infrastructure/backup/s3BackupConfig.d.ts +80 -0
- package/dist/types/src/infrastructure/cloud/types/config.d.ts +18 -0
- package/dist/types/src/infrastructure/cloud/types/event.d.ts +14 -0
- package/dist/types/src/infrastructure/cloud/types/snapshot.d.ts +52 -0
- package/dist/types/src/infrastructure/cloud/types/snapshotCore.d.ts +125 -0
- package/dist/types/src/infrastructure/cloud/types/snapshotJobs.d.ts +124 -0
- package/dist/types/src/infrastructure/cloud/types/snapshotTelemetry.d.ts +100 -0
- package/dist/types/src/infrastructure/cloud/types.d.ts +3 -0
- package/dist/types/src/infrastructure/persistence/batchInsert.d.ts +13 -0
- package/dist/types/src/infrastructure/persistence/completedJobCountSchema.d.ts +6 -0
- package/dist/types/src/infrastructure/persistence/dependencyCompletionSchema.d.ts +6 -0
- package/dist/types/src/infrastructure/persistence/dependencyCompletionStore.d.ts +40 -0
- package/dist/types/src/infrastructure/persistence/index.d.ts +5 -0
- package/dist/types/src/infrastructure/persistence/jobOptionsBlob.d.ts +19 -0
- package/dist/types/src/infrastructure/persistence/legacyNameMigration.d.ts +17 -0
- package/dist/types/src/infrastructure/persistence/migrationProgressSchema.d.ts +2 -0
- package/dist/types/src/infrastructure/persistence/migrations.d.ts +3 -0
- package/dist/types/src/infrastructure/persistence/schema.d.ts +8 -0
- package/dist/types/src/infrastructure/persistence/sqlite/admission.d.ts +9 -0
- package/dist/types/src/infrastructure/persistence/sqlite/completed.d.ts +17 -0
- package/dist/types/src/infrastructure/persistence/sqlite/control.d.ts +48 -0
- package/dist/types/src/infrastructure/persistence/sqlite/flows.d.ts +26 -0
- package/dist/types/src/infrastructure/persistence/sqlite/jobLifecycle.d.ts +17 -0
- package/dist/types/src/infrastructure/persistence/sqlite/jobs.d.ts +15 -0
- package/dist/types/src/infrastructure/persistence/sqlite/lifecycle.d.ts +6 -0
- package/dist/types/src/infrastructure/persistence/sqlite/mutations.d.ts +27 -0
- package/dist/types/src/infrastructure/persistence/sqlite/queries.d.ts +23 -0
- package/dist/types/src/infrastructure/persistence/sqlite/queueDeletionSql.d.ts +3 -0
- package/dist/types/src/infrastructure/persistence/sqlite/records.d.ts +24 -0
- package/dist/types/src/infrastructure/persistence/sqlite/state.d.ts +42 -0
- package/dist/types/src/infrastructure/persistence/sqlite/telemetry.d.ts +17 -0
- package/dist/types/src/infrastructure/persistence/sqlite/telemetryStore.d.ts +30 -0
- package/dist/types/src/infrastructure/persistence/sqlite/telemetryWrites.d.ts +47 -0
- package/dist/types/src/infrastructure/persistence/sqlite.d.ts +6 -0
- package/dist/types/src/infrastructure/persistence/sqliteBatch.d.ts +4 -0
- package/dist/types/src/infrastructure/persistence/sqliteMigration.d.ts +5 -0
- package/dist/types/src/infrastructure/persistence/sqliteSerializer.d.ts +50 -0
- package/dist/types/src/infrastructure/persistence/statements.d.ts +86 -0
- package/dist/types/src/infrastructure/persistence/types/admission.d.ts +8 -0
- package/dist/types/src/infrastructure/persistence/types/batch.d.ts +12 -0
- package/dist/types/src/infrastructure/persistence/types/sqlite.d.ts +27 -0
- package/dist/types/src/infrastructure/persistence/writeBuffer.d.ts +48 -0
- package/dist/types/src/infrastructure/persistence/writeBufferPending.d.ts +11 -0
- package/dist/types/src/infrastructure/scheduler/cron/execution.d.ts +12 -0
- package/dist/types/src/infrastructure/scheduler/cron/persisted.d.ts +5 -0
- package/dist/types/src/infrastructure/scheduler/cron/runtime.d.ts +31 -0
- package/dist/types/src/infrastructure/scheduler/cron/validation.d.ts +3 -0
- package/dist/types/src/infrastructure/scheduler/cronParser.d.ts +45 -0
- package/dist/types/src/infrastructure/scheduler/cronScheduler.d.ts +5 -0
- package/dist/types/src/infrastructure/scheduler/types/cronScheduler.d.ts +16 -0
- package/dist/types/src/infrastructure/server/protocol/commands.d.ts +8 -0
- package/dist/types/src/infrastructure/server/protocol/frameParser.d.ts +16 -0
- package/dist/types/src/infrastructure/server/protocol/lineBuffer.d.ts +6 -0
- package/dist/types/src/infrastructure/server/protocol/validation.d.ts +10 -0
- package/dist/types/src/infrastructure/server/protocol.d.ts +6 -0
- package/dist/types/src/infrastructure/server/socketWriteQueue.d.ts +66 -0
- package/dist/types/src/infrastructure/server/types/protocol.d.ts +4 -0
- package/dist/types/src/require-bun.d.ts +13 -0
- package/dist/types/src/shared/asyncLock.d.ts +13 -0
- package/dist/types/src/shared/boundedMap.d.ts +30 -0
- package/dist/types/src/shared/boundedSet.d.ts +26 -0
- package/dist/types/src/shared/hash.d.ts +30 -0
- package/dist/types/src/shared/histogram.d.ts +23 -0
- package/dist/types/src/shared/lock.d.ts +13 -0
- package/dist/types/src/shared/lockError.d.ts +3 -0
- package/dist/types/src/shared/lockTimeout.d.ts +2 -0
- package/dist/types/src/shared/logger.d.ts +48 -0
- package/dist/types/src/shared/lru.d.ts +9 -0
- package/dist/types/src/shared/lruMap.d.ts +42 -0
- package/dist/types/src/shared/lruSet.d.ts +36 -0
- package/dist/types/src/shared/minHeap.d.ts +43 -0
- package/dist/types/src/shared/msgpack.d.ts +3 -0
- package/dist/types/src/shared/pausedView.d.ts +19 -0
- package/dist/types/src/shared/rwLock.d.ts +22 -0
- package/dist/types/src/shared/serialization.d.ts +24 -0
- package/dist/types/src/shared/skipList.d.ts +97 -0
- package/dist/types/src/shared/skipListNodes.d.ts +6 -0
- package/dist/types/src/shared/storageHealth.d.ts +9 -0
- package/dist/types/src/shared/ttlMap.d.ts +81 -0
- package/dist/types/src/shared/types/lock.d.ts +7 -0
- package/dist/types/src/shared/types/skipList.d.ts +4 -0
- package/dist/types/src/shared/version.d.ts +4 -0
- package/dist/types/src/shared/webhookValidation.d.ts +6 -0
- package/package.json +27 -9
- package/src/ack-batcher.ts +8 -5
- package/src/bunqueue/bunqueue-api.ts +1 -1
- package/src/bunqueue/bunqueue.ts +2 -1
- package/src/canonical-transport/bun-sqlite-types.ts +22 -0
- package/src/canonical-transport/dlq.ts +12 -0
- package/src/canonical-transport/embedded.ts +55 -0
- package/src/canonical-transport/runtime.ts +49 -0
- package/src/canonical-transport/thread-worker.ts +83 -0
- package/src/canonical-transport/transport.ts +153 -0
- package/src/connection.ts +25 -30
- package/src/errors.ts +3 -0
- package/src/flow-commit.ts +45 -0
- package/src/flow-plan-legacy.ts +117 -0
- package/src/flow-plan.ts +209 -0
- package/src/flow-types.ts +4 -0
- package/src/flow.ts +31 -163
- package/src/frame.ts +5 -2
- package/src/index.ts +7 -75
- package/src/job.ts +43 -9
- package/src/legacy.ts +91 -0
- package/src/observability.ts +59 -1
- package/src/queue-admin.ts +5 -5
- package/src/queue-control.ts +8 -6
- package/src/queue.ts +10 -6
- package/src/serialization.ts +93 -0
- package/src/terminal-outcome.ts +58 -0
- package/src/types.ts +3 -6
- package/src/worker-base.ts +9 -6
- package/src/worker-slot-signal.ts +23 -0
- package/src/worker.ts +11 -5
- package/dist/backpressure.js +0 -39
- package/dist/bunqueue/aging.js +0 -53
- package/dist/bunqueue/batch.js +0 -60
- package/dist/bunqueue/bunqueue-api.js +0 -116
- package/dist/bunqueue/bunqueue.js +0 -194
- package/dist/bunqueue/cancellation.js +0 -48
- package/dist/bunqueue/circuit-breaker.js +0 -69
- package/dist/bunqueue/dedup-debounce.js +0 -37
- package/dist/bunqueue/dlq-rate-limit.js +0 -65
- package/dist/bunqueue/rate-gate.js +0 -61
- package/dist/bunqueue/retry.js +0 -56
- package/dist/bunqueue/triggers.js +0 -42
- package/dist/bunqueue/ttl.js +0 -31
- package/dist/bunqueue/types.js +0 -6
- package/dist/connection-pool.js +0 -60
- package/dist/connection-types.js +0 -2
- package/dist/connection.js +0 -281
- package/dist/errors.js +0 -25
- package/dist/flow-types.js +0 -2
- package/dist/flow.js +0 -212
- package/dist/job.js +0 -155
- package/dist/observability.js +0 -110
- package/dist/queue-admin.js +0 -158
- package/dist/queue-control.js +0 -107
- package/dist/queue-query.js +0 -187
- package/dist/queue.js +0 -92
- package/dist/responses.js +0 -10
- package/dist/socket-factory.js +0 -47
- package/dist/types.js +0 -50
- package/dist/worker-base.js +0 -159
- package/dist/worker-types.js +0 -5
- package/dist/worker.js +0 -211
- /package/dist/{backpressure.d.ts → types/sdk/typescript/src/backpressure.d.ts} +0 -0
- /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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
[](https://www.npmjs.com/package/bunqueue-client)
|
|
15
|
-
[](https://www.npmjs.com/package/bunqueue-client)
|
|
16
|
-
[](https://github.com/egeominotti/bunqueue/blob/main/sdk/typescript/LICENSE)
|
|
17
|
-
[](#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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
19
|
+
Start a bunqueue broker, then use the same code in Node.js, Deno, or Bun:
|
|
132
20
|
|
|
133
21
|
```typescript
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
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
|
-
|
|
142
|
+
### 4. Use `*Async` reads in TCP mode
|
|
301
143
|
|
|
302
|
-
|
|
144
|
+
The synchronous reads are embedded-only. In TCP mode they return a default
|
|
145
|
+
without contacting the broker:
|
|
303
146
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
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
|
-
|
|
318
|
-
|
|
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
|
-
|
|
162
|
+
### 5. `Job` is a type, not a class
|
|
323
163
|
|
|
324
164
|
```typescript
|
|
325
|
-
//
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
//
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
`
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
|
348
|
-
|
|
349
|
-
|
|
|
350
|
-
|
|
|
351
|
-
|
|
|
352
|
-
|
|
|
353
|
-
|
|
|
354
|
-
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
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.
|