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.
- package/CHANGELOG.md +150 -0
- package/LEGACY.md +460 -0
- package/README.md +204 -349
- package/dist/ack-batcher.js +7 -67
- package/dist/canonical-manifest.json +930 -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 +16418 -0
- package/dist/frame.js +14 -57
- package/dist/index.d.ts +1 -27
- package/dist/index.js +10905 -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/clientTracking.d.ts +44 -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 +43 -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/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 +96 -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 +10 -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 +87 -0
- package/dist/types/src/application/types/contexts.d.ts +114 -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 +98 -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 +74 -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 +70 -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 +12 -0
- package/dist/types/src/domain/job/create.d.ts +2 -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 +4 -0
- package/dist/types/src/domain/job/payload.d.ts +18 -0
- package/dist/types/src/domain/job/state.d.ts +8 -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 +110 -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 +91 -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 +153 -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/dist/bunqueue/retry.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bunqueue Simple Mode — advanced in-process retry with backoff strategies.
|
|
3
|
-
* 1:1 port of src/client/bunqueue/retry.ts (identical formulas).
|
|
4
|
-
*/
|
|
5
|
-
/** Calculate backoff delay based on strategy. */
|
|
6
|
-
export function calculateBackoff(strategy, attempt, baseDelay, error, config) {
|
|
7
|
-
switch (strategy) {
|
|
8
|
-
case 'fixed':
|
|
9
|
-
return baseDelay;
|
|
10
|
-
case 'exponential':
|
|
11
|
-
return baseDelay * 2 ** (attempt - 1);
|
|
12
|
-
case 'jitter': {
|
|
13
|
-
const exp = baseDelay * 2 ** (attempt - 1);
|
|
14
|
-
return Math.floor(exp * (0.5 + Math.random()));
|
|
15
|
-
}
|
|
16
|
-
case 'fibonacci': {
|
|
17
|
-
let a = 1;
|
|
18
|
-
let b = 1;
|
|
19
|
-
for (let i = 0; i < attempt - 1; i++) {
|
|
20
|
-
const next = a + b;
|
|
21
|
-
a = b;
|
|
22
|
-
b = next;
|
|
23
|
-
}
|
|
24
|
-
return baseDelay * b;
|
|
25
|
-
}
|
|
26
|
-
case 'custom':
|
|
27
|
-
if (config.customBackoff) {
|
|
28
|
-
return config.customBackoff(attempt, error);
|
|
29
|
-
}
|
|
30
|
-
return baseDelay;
|
|
31
|
-
default:
|
|
32
|
-
return baseDelay;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
/** Execute a function with retry logic (the job stays active throughout). */
|
|
36
|
-
export function executeWithRetry(fn, config) {
|
|
37
|
-
const maxAttempts = config.maxAttempts ?? 3;
|
|
38
|
-
const baseDelay = config.delay ?? 1000;
|
|
39
|
-
const strategy = config.strategy ?? 'exponential';
|
|
40
|
-
const attempt = (n) => {
|
|
41
|
-
return fn().catch((err) => {
|
|
42
|
-
const error = err instanceof Error ? err : new Error(String(err));
|
|
43
|
-
if (n >= maxAttempts)
|
|
44
|
-
throw error;
|
|
45
|
-
if (config.retryIf && !config.retryIf(error, n))
|
|
46
|
-
throw error;
|
|
47
|
-
const delay = calculateBackoff(strategy, n, baseDelay, error, config);
|
|
48
|
-
return new Promise((resolve) => {
|
|
49
|
-
setTimeout(() => {
|
|
50
|
-
resolve(attempt(n + 1));
|
|
51
|
-
}, delay);
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
};
|
|
55
|
-
return attempt(1);
|
|
56
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bunqueue Simple Mode — event triggers.
|
|
3
|
-
* 1:1 port of src/client/bunqueue/triggers.ts: when a job completes/fails,
|
|
4
|
-
* automatically create another job.
|
|
5
|
-
*/
|
|
6
|
-
export class TriggerManager {
|
|
7
|
-
rules = [];
|
|
8
|
-
active = false;
|
|
9
|
-
queue;
|
|
10
|
-
worker;
|
|
11
|
-
constructor(queue, worker) {
|
|
12
|
-
this.queue = queue;
|
|
13
|
-
this.worker = worker;
|
|
14
|
-
}
|
|
15
|
-
add(rule) {
|
|
16
|
-
this.rules.push(rule);
|
|
17
|
-
this.ensureActive();
|
|
18
|
-
}
|
|
19
|
-
ensureActive() {
|
|
20
|
-
if (this.active)
|
|
21
|
-
return;
|
|
22
|
-
this.active = true;
|
|
23
|
-
this.worker.on('completed', (job, result) => {
|
|
24
|
-
this.fire('completed', job, result);
|
|
25
|
-
});
|
|
26
|
-
this.worker.on('failed', (job, error) => {
|
|
27
|
-
this.fire('failed', job, error);
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
fire(event, job, resultOrError) {
|
|
31
|
-
for (const rule of this.rules) {
|
|
32
|
-
if (rule.on !== job.name)
|
|
33
|
-
continue;
|
|
34
|
-
if ((rule.event ?? 'completed') !== event)
|
|
35
|
-
continue;
|
|
36
|
-
if (rule.condition && !rule.condition(resultOrError, job))
|
|
37
|
-
continue;
|
|
38
|
-
const data = rule.data(resultOrError, job);
|
|
39
|
-
void this.queue.add(rule.create, data, rule.opts);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
package/dist/bunqueue/ttl.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Bunqueue Simple Mode — job TTL (time to live).
|
|
3
|
-
* 1:1 port of src/client/bunqueue/ttl.ts: expire unprocessed jobs, checked
|
|
4
|
-
* when the worker picks the job up. Resolution: perName -> defaultTtl -> 0.
|
|
5
|
-
*/
|
|
6
|
-
export class TtlChecker {
|
|
7
|
-
config;
|
|
8
|
-
constructor(config) {
|
|
9
|
-
this.config = config;
|
|
10
|
-
}
|
|
11
|
-
/** Get TTL for a specific job name. */
|
|
12
|
-
getTtl(jobName) {
|
|
13
|
-
return this.config.perName?.[jobName] ?? this.config.defaultTtl ?? 0;
|
|
14
|
-
}
|
|
15
|
-
/** Check if a job has expired. */
|
|
16
|
-
isExpired(jobName, jobTimestamp) {
|
|
17
|
-
const ttl = this.getTtl(jobName);
|
|
18
|
-
if (ttl <= 0)
|
|
19
|
-
return false;
|
|
20
|
-
return Date.now() - jobTimestamp > ttl;
|
|
21
|
-
}
|
|
22
|
-
/** Set default TTL. */
|
|
23
|
-
setDefaultTtl(ttlMs) {
|
|
24
|
-
this.config.defaultTtl = ttlMs;
|
|
25
|
-
}
|
|
26
|
-
/** Set TTL for a specific job name. */
|
|
27
|
-
setNameTtl(jobName, ttlMs) {
|
|
28
|
-
this.config.perName ??= {};
|
|
29
|
-
this.config.perName[jobName] = ttlMs;
|
|
30
|
-
}
|
|
31
|
-
}
|
package/dist/bunqueue/types.js
DELETED
package/dist/connection-pool.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A round-robin pool of TCP connections for producer-side throughput.
|
|
3
|
-
*
|
|
4
|
-
* Each `call()` is dispatched to the next connection, so independent commands
|
|
5
|
-
* (PUSH, queries, control) fan out across N sockets instead of head-of-lining
|
|
6
|
-
* on one. Use it for {@link Queue} / {@link FlowProducer}; NOT for a Worker,
|
|
7
|
-
* whose pull→ack flow is bound to a single connection's lock ownership and
|
|
8
|
-
* reconnect/registration lifecycle.
|
|
9
|
-
*
|
|
10
|
-
* Satisfies {@link ConnectionLike}, so it is a drop-in for a single Connection.
|
|
11
|
-
* Lifecycle events from every member connection are re-emitted here.
|
|
12
|
-
*/
|
|
13
|
-
import { EventEmitter } from 'node:events';
|
|
14
|
-
import { Connection } from './connection.js';
|
|
15
|
-
import { LIFECYCLE_EVENTS } from './observability.js';
|
|
16
|
-
export class ConnectionPool extends EventEmitter {
|
|
17
|
-
connections;
|
|
18
|
-
cursor = 0;
|
|
19
|
-
constructor(size, options = {}) {
|
|
20
|
-
super();
|
|
21
|
-
const n = Math.max(1, Math.floor(size));
|
|
22
|
-
this.connections = Array.from({ length: n }, () => {
|
|
23
|
-
const conn = new Connection(options);
|
|
24
|
-
for (const event of LIFECYCLE_EVENTS) {
|
|
25
|
-
conn.on(event, (payload) => this.emit(event, payload));
|
|
26
|
-
}
|
|
27
|
-
return conn;
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
/** How many connections back this pool. */
|
|
31
|
-
get size() {
|
|
32
|
-
return this.connections.length;
|
|
33
|
-
}
|
|
34
|
-
next() {
|
|
35
|
-
const conn = this.connections[this.cursor];
|
|
36
|
-
this.cursor = (this.cursor + 1) % this.connections.length;
|
|
37
|
-
return conn;
|
|
38
|
-
}
|
|
39
|
-
call(command, timeoutMs) {
|
|
40
|
-
return this.next().call(command, timeoutMs);
|
|
41
|
-
}
|
|
42
|
-
ping() {
|
|
43
|
-
return this.connections[0].ping();
|
|
44
|
-
}
|
|
45
|
-
async connect() {
|
|
46
|
-
await Promise.all(this.connections.map((conn) => conn.connect()));
|
|
47
|
-
}
|
|
48
|
-
close() {
|
|
49
|
-
for (const conn of this.connections)
|
|
50
|
-
conn.close();
|
|
51
|
-
}
|
|
52
|
-
/** True while at least one member connection is up. */
|
|
53
|
-
get isConnected() {
|
|
54
|
-
return this.connections.some((conn) => conn.isConnected);
|
|
55
|
-
}
|
|
56
|
-
/** Representative generation (first connection); pools are producer-side. */
|
|
57
|
-
get generation() {
|
|
58
|
-
return this.connections[0].generation;
|
|
59
|
-
}
|
|
60
|
-
}
|
package/dist/connection-types.js
DELETED
package/dist/connection.js
DELETED
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TCP connection to a bunqueue server — cross-runtime (Node.js, Bun, Deno).
|
|
3
|
-
*
|
|
4
|
-
* Requests carry a `reqId` string; the server echoes it back, enabling
|
|
5
|
-
* pipelining (many in-flight commands per socket). Uses only `node:`
|
|
6
|
-
* builtins (net/tls), which Node, Bun and Deno all support.
|
|
7
|
-
*/
|
|
8
|
-
import { EventEmitter } from 'node:events';
|
|
9
|
-
import { pack, unpack } from 'msgpackr';
|
|
10
|
-
import { Backpressure } from './backpressure.js';
|
|
11
|
-
import { AuthError, CommandError, CommandTimeoutError, ConnectionClosedError } from './errors.js';
|
|
12
|
-
import { compact, FrameParser, frame, PROTOCOL_VERSION } from './frame.js';
|
|
13
|
-
import { nowMs, Telemetry } from './observability.js';
|
|
14
|
-
import { openSocket } from './socket-factory.js';
|
|
15
|
-
/**
|
|
16
|
-
* A single pipelined TCP connection to a bunqueue server.
|
|
17
|
-
*
|
|
18
|
-
* Emits typed lifecycle events for observability: `connect`, `disconnect` and
|
|
19
|
-
* `reconnect_scheduled` (payloads mirror the telemetry events). Attach a
|
|
20
|
-
* telemetry sink via the `onTelemetry` option for per-command latency metrics.
|
|
21
|
-
*/
|
|
22
|
-
export class Connection extends EventEmitter {
|
|
23
|
-
host;
|
|
24
|
-
port;
|
|
25
|
-
token;
|
|
26
|
-
tls;
|
|
27
|
-
connectTimeoutMs;
|
|
28
|
-
commandTimeoutMs;
|
|
29
|
-
socket = null;
|
|
30
|
-
connected = false;
|
|
31
|
-
closed = false;
|
|
32
|
-
connecting = null;
|
|
33
|
-
pending = new Map();
|
|
34
|
-
reqCounter = 0;
|
|
35
|
-
parser = new FrameParser();
|
|
36
|
-
connectGeneration = 0;
|
|
37
|
-
failedAttempts = 0;
|
|
38
|
-
nextAttemptAt = 0;
|
|
39
|
-
// Half-open recovery (#94): after this many consecutive command timeouts the
|
|
40
|
-
// socket is presumed dead and torn down so the next call reconnects.
|
|
41
|
-
maxCommandTimeouts = 3;
|
|
42
|
-
consecutiveTimeouts = 0;
|
|
43
|
-
telemetry;
|
|
44
|
-
backpressure;
|
|
45
|
-
constructor(options = {}) {
|
|
46
|
-
super();
|
|
47
|
-
this.host = options.host ?? 'localhost';
|
|
48
|
-
this.port = options.port ?? 6789;
|
|
49
|
-
this.token = options.token;
|
|
50
|
-
this.tls = options.tls;
|
|
51
|
-
this.connectTimeoutMs = options.connectTimeoutMs ?? 5000;
|
|
52
|
-
this.commandTimeoutMs = options.commandTimeoutMs ?? 10_000;
|
|
53
|
-
this.telemetry = new Telemetry(options, (event, payload) => this.emit(event, payload));
|
|
54
|
-
const maxInFlight = options.maxInFlight ?? 0;
|
|
55
|
-
this.backpressure = new Backpressure(maxInFlight, () => this.telemetry.backpressure(this.pending.size, maxInFlight));
|
|
56
|
-
}
|
|
57
|
-
get isConnected() {
|
|
58
|
-
return this.connected;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Monotonic counter, incremented on every successful (re)connect. Consumers
|
|
62
|
-
* that hold per-connection server state (e.g. a Worker registration) compare
|
|
63
|
-
* it between operations and re-establish that state after a reconnect.
|
|
64
|
-
*/
|
|
65
|
-
get generation() {
|
|
66
|
-
return this.connectGeneration;
|
|
67
|
-
}
|
|
68
|
-
/** Open the socket (and authenticate) if not already connected. */
|
|
69
|
-
async connect() {
|
|
70
|
-
if (this.connected)
|
|
71
|
-
return;
|
|
72
|
-
if (this.closed)
|
|
73
|
-
throw new ConnectionClosedError('connection closed by client');
|
|
74
|
-
// Fast-fail while inside the reconnect backoff window: without this, a
|
|
75
|
-
// producer calling add() against a downed server pays the full connect
|
|
76
|
-
// timeout on EVERY call (reconnect storm).
|
|
77
|
-
if (Date.now() < this.nextAttemptAt) {
|
|
78
|
-
throw new ConnectionClosedError(`server unreachable, retry in ${this.nextAttemptAt - Date.now()}ms`);
|
|
79
|
-
}
|
|
80
|
-
if (this.connecting)
|
|
81
|
-
return this.connecting;
|
|
82
|
-
this.connecting = this.doConnect()
|
|
83
|
-
.then(() => {
|
|
84
|
-
this.failedAttempts = 0;
|
|
85
|
-
this.nextAttemptAt = 0;
|
|
86
|
-
})
|
|
87
|
-
.catch((err) => {
|
|
88
|
-
this.failedAttempts += 1;
|
|
89
|
-
const backoff = Math.min(500 * 2 ** (this.failedAttempts - 1), 5000);
|
|
90
|
-
this.nextAttemptAt = Date.now() + backoff;
|
|
91
|
-
this.telemetry.reconnectScheduled(this.host, this.port, this.failedAttempts, backoff);
|
|
92
|
-
throw err;
|
|
93
|
-
})
|
|
94
|
-
.finally(() => {
|
|
95
|
-
this.connecting = null;
|
|
96
|
-
});
|
|
97
|
-
return this.connecting;
|
|
98
|
-
}
|
|
99
|
-
async doConnect() {
|
|
100
|
-
const startMs = nowMs();
|
|
101
|
-
const socket = await openSocket(this.host, this.port, this.tls, this.connectTimeoutMs);
|
|
102
|
-
socket.setNoDelay(true);
|
|
103
|
-
// TCP keepalive (~15s idle) surfaces a half-open link (cloud LB/NAT idle
|
|
104
|
-
// drop with no FIN/RST) in seconds instead of ~tcp_retries2 minutes.
|
|
105
|
-
socket.setKeepAlive(true, 15_000);
|
|
106
|
-
this.parser.clear();
|
|
107
|
-
this.socket = socket;
|
|
108
|
-
socket.on('data', (chunk) => this.handleData(chunk));
|
|
109
|
-
socket.on('error', () => this.teardown());
|
|
110
|
-
socket.on('close', () => this.teardown());
|
|
111
|
-
this.connected = true;
|
|
112
|
-
this.connectGeneration += 1;
|
|
113
|
-
this.consecutiveTimeouts = 0;
|
|
114
|
-
this.telemetry.connected(this.host, this.port, this.connectGeneration, startMs);
|
|
115
|
-
// INVARIANT (H3): connected is flipped true before Auth, which is safe
|
|
116
|
-
// ONLY because call() writes the Auth frame synchronously — there is no
|
|
117
|
-
// `await` between this line and the Auth socket.write, so no concurrent
|
|
118
|
-
// call() can interleave a frame ahead of Auth on the wire. Do NOT insert
|
|
119
|
-
// an await here or before the Auth call, or a command could race ahead of
|
|
120
|
-
// Auth (the Python SDK guards this with a lock; JS relies on this ordering).
|
|
121
|
-
if (this.token) {
|
|
122
|
-
try {
|
|
123
|
-
await this.call({ cmd: 'Auth', token: this.token });
|
|
124
|
-
this.telemetry.auth(true);
|
|
125
|
-
}
|
|
126
|
-
catch (err) {
|
|
127
|
-
this.telemetry.auth(false);
|
|
128
|
-
this.teardown();
|
|
129
|
-
if (err instanceof CommandError)
|
|
130
|
-
throw new AuthError(err.message);
|
|
131
|
-
throw err;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Send a command and await its response. Rejects with CommandError when
|
|
137
|
-
* the server answers ok=false. Reconnects lazily if the link was lost.
|
|
138
|
-
*/
|
|
139
|
-
async call(command, timeoutMs) {
|
|
140
|
-
if (!this.connected)
|
|
141
|
-
await this.connect();
|
|
142
|
-
// Backpressure: park here if too many commands are already in flight. The
|
|
143
|
-
// socket may be torn down while parked, so re-check after the gate.
|
|
144
|
-
const gate = this.backpressure.acquire(this.pending.size);
|
|
145
|
-
if (gate)
|
|
146
|
-
await gate;
|
|
147
|
-
const socket = this.socket;
|
|
148
|
-
if (!this.connected || !socket)
|
|
149
|
-
throw new ConnectionClosedError('not connected');
|
|
150
|
-
this.reqCounter = (this.reqCounter + 1) & 0x7fffffff;
|
|
151
|
-
const reqId = String(this.reqCounter);
|
|
152
|
-
const payload = pack({ ...compact(command), reqId });
|
|
153
|
-
const gen = this.connectGeneration; // snapshot: a timeout must not tear down a newer conn
|
|
154
|
-
const startMs = nowMs();
|
|
155
|
-
return new Promise((resolve, reject) => {
|
|
156
|
-
const timer = setTimeout(() => {
|
|
157
|
-
this.pending.delete(reqId);
|
|
158
|
-
this.backpressure.release();
|
|
159
|
-
this.telemetry.timeout(command.cmd, reqId);
|
|
160
|
-
this.noteTimeout(gen);
|
|
161
|
-
reject(new CommandTimeoutError(`no response for ${command.cmd} within timeout`));
|
|
162
|
-
}, timeoutMs ?? this.commandTimeoutMs);
|
|
163
|
-
this.pending.set(reqId, {
|
|
164
|
-
resolve: (response) => {
|
|
165
|
-
clearTimeout(timer);
|
|
166
|
-
this.consecutiveTimeouts = 0; // any reply means the link is alive
|
|
167
|
-
this.telemetry.command(command.cmd, reqId, startMs, response.ok);
|
|
168
|
-
if (!response.ok) {
|
|
169
|
-
reject(new CommandError(String(response.error ?? 'unknown server error')));
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
resolve(response);
|
|
173
|
-
}
|
|
174
|
-
},
|
|
175
|
-
reject: (err) => {
|
|
176
|
-
clearTimeout(timer);
|
|
177
|
-
reject(err);
|
|
178
|
-
},
|
|
179
|
-
timer,
|
|
180
|
-
});
|
|
181
|
-
socket.write(frame(payload), (err) => {
|
|
182
|
-
if (err) {
|
|
183
|
-
const entry = this.pending.get(reqId);
|
|
184
|
-
this.pending.delete(reqId);
|
|
185
|
-
this.backpressure.release();
|
|
186
|
-
entry?.reject(new ConnectionClosedError(`send failed: ${err.message}`));
|
|
187
|
-
this.teardown();
|
|
188
|
-
}
|
|
189
|
-
});
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
/** Ping the server; returns true when it answers pong. */
|
|
193
|
-
async ping() {
|
|
194
|
-
try {
|
|
195
|
-
const response = await this.call({ cmd: 'Ping' });
|
|
196
|
-
const data = response.data;
|
|
197
|
-
return data?.pong === true;
|
|
198
|
-
}
|
|
199
|
-
catch {
|
|
200
|
-
return false;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
/** Protocol negotiation; returns server name/version/protocolVersion. */
|
|
204
|
-
hello() {
|
|
205
|
-
return this.call({
|
|
206
|
-
cmd: 'Hello',
|
|
207
|
-
protocolVersion: PROTOCOL_VERSION,
|
|
208
|
-
capabilities: ['pipelining'],
|
|
209
|
-
});
|
|
210
|
-
}
|
|
211
|
-
/** Close permanently; in-flight commands reject. */
|
|
212
|
-
close() {
|
|
213
|
-
this.closed = true;
|
|
214
|
-
this.teardown();
|
|
215
|
-
}
|
|
216
|
-
handleData(chunk) {
|
|
217
|
-
let frames;
|
|
218
|
-
try {
|
|
219
|
-
frames = this.parser.addData(chunk);
|
|
220
|
-
}
|
|
221
|
-
catch {
|
|
222
|
-
this.teardown();
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
for (const framePayload of frames) {
|
|
226
|
-
let message;
|
|
227
|
-
try {
|
|
228
|
-
message = unpack(framePayload);
|
|
229
|
-
}
|
|
230
|
-
catch {
|
|
231
|
-
continue; // skip unparseable frame; a desynced stream dies via socket error
|
|
232
|
-
}
|
|
233
|
-
if (typeof message !== 'object' || message === null)
|
|
234
|
-
continue;
|
|
235
|
-
const response = message;
|
|
236
|
-
const reqId = response.reqId;
|
|
237
|
-
if (reqId === undefined || reqId === null)
|
|
238
|
-
continue; // server-push unsupported
|
|
239
|
-
const entry = this.pending.get(String(reqId));
|
|
240
|
-
if (entry) {
|
|
241
|
-
this.pending.delete(String(reqId));
|
|
242
|
-
this.backpressure.release();
|
|
243
|
-
entry.resolve(response);
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
/**
|
|
248
|
-
* A dead/half-open link makes every command time out while the socket still
|
|
249
|
-
* looks connected. After maxCommandTimeouts consecutive timeouts, tear down
|
|
250
|
-
* so the next call() reconnects instead of wedging (mirrors #94).
|
|
251
|
-
*/
|
|
252
|
-
noteTimeout(gen) {
|
|
253
|
-
// A timeout from an already-replaced connection must not tear down (or
|
|
254
|
-
// miscount against) the current one.
|
|
255
|
-
if (gen !== this.connectGeneration)
|
|
256
|
-
return;
|
|
257
|
-
this.consecutiveTimeouts += 1;
|
|
258
|
-
if (this.consecutiveTimeouts >= this.maxCommandTimeouts)
|
|
259
|
-
this.teardown();
|
|
260
|
-
}
|
|
261
|
-
teardown() {
|
|
262
|
-
const wasConnected = this.socket !== null;
|
|
263
|
-
const gen = this.connectGeneration;
|
|
264
|
-
this.connected = false;
|
|
265
|
-
const socket = this.socket;
|
|
266
|
-
this.socket = null;
|
|
267
|
-
if (socket) {
|
|
268
|
-
socket.removeAllListeners();
|
|
269
|
-
socket.destroy();
|
|
270
|
-
}
|
|
271
|
-
const pending = this.pending;
|
|
272
|
-
this.pending = new Map();
|
|
273
|
-
for (const entry of pending.values()) {
|
|
274
|
-
clearTimeout(entry.timer);
|
|
275
|
-
entry.reject(new ConnectionClosedError('connection lost'));
|
|
276
|
-
}
|
|
277
|
-
this.backpressure.clear(); // release parked callers; they re-check + fail/reconnect
|
|
278
|
-
if (wasConnected)
|
|
279
|
-
this.telemetry.disconnected(this.host, this.port, gen);
|
|
280
|
-
}
|
|
281
|
-
}
|
package/dist/errors.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/** Exception hierarchy for the bunqueue cross-runtime SDK. */
|
|
2
|
-
export class BunqueueError extends Error {
|
|
3
|
-
constructor(message) {
|
|
4
|
-
super(message);
|
|
5
|
-
this.name = new.target.name;
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
/** The TCP connection is closed or was lost mid-command. */
|
|
9
|
-
export class ConnectionClosedError extends BunqueueError {
|
|
10
|
-
}
|
|
11
|
-
/** No response received for a command within the timeout. */
|
|
12
|
-
export class CommandTimeoutError extends BunqueueError {
|
|
13
|
-
}
|
|
14
|
-
/** The server answered ok=false; message carries the server error. */
|
|
15
|
-
export class CommandError extends BunqueueError {
|
|
16
|
-
}
|
|
17
|
-
/** Authentication with the server failed. */
|
|
18
|
-
export class AuthError extends BunqueueError {
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Throw inside a Worker processor to fail the job terminally: skips all
|
|
22
|
-
* remaining retry attempts and sends the job straight to the DLQ.
|
|
23
|
-
*/
|
|
24
|
-
export class UnrecoverableError extends BunqueueError {
|
|
25
|
-
}
|
package/dist/flow-types.js
DELETED