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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function log(level: 'info' | 'warn' | 'error', message: string, data?: Record<string, unknown>): void;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Job as DomainJob } from "../../../domain/types/job.js";
|
|
2
|
+
import type { IPCResponse, WorkerProcess } from "../types/index.js";
|
|
3
|
+
import { SandboxedLifecycle } from "./lifecycle.js";
|
|
4
|
+
export declare abstract class SandboxedPool<T = unknown> extends SandboxedLifecycle<T> {
|
|
5
|
+
protected spawnWorker(index: number): Promise<void>;
|
|
6
|
+
protected pullLoop(): Promise<void>;
|
|
7
|
+
protected recycleIdleWorkers(): void;
|
|
8
|
+
protected abstract dispatch(worker: WorkerProcess, job: DomainJob, token: string | null): void;
|
|
9
|
+
protected abstract handleMessage(worker: WorkerProcess, message: IPCResponse): void;
|
|
10
|
+
protected abstract handleCrash(worker: WorkerProcess, index: number, reportError?: boolean): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Job as DomainJob } from "../../../domain/types/job.js";
|
|
2
|
+
import type { Job } from "../../types.js";
|
|
3
|
+
import type { WorkerProcess } from "../types/index.js";
|
|
4
|
+
import { SandboxedDispatch } from "./dispatch.js";
|
|
5
|
+
export declare class SandboxedRecovery<T = unknown> extends SandboxedDispatch<T> {
|
|
6
|
+
protected handleCrash(worker: WorkerProcess, index: number, reportError?: boolean): void;
|
|
7
|
+
protected startHeartbeat(): void;
|
|
8
|
+
protected sendHeartbeat(): Promise<void>;
|
|
9
|
+
protected safeEmitError(error: Error): void;
|
|
10
|
+
protected createEventJob(domainJob: DomainJob): Job;
|
|
11
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import type { Job } from "../../types.js";
|
|
3
|
+
import { type TcpConnectionPool } from "../../tcpPool.js";
|
|
4
|
+
import { type QueueOps } from "../queueOps.js";
|
|
5
|
+
import type { RequiredSandboxedWorkerOptions, SandboxedWorkerOptions, WorkerProcess } from "../types/index.js";
|
|
6
|
+
export declare abstract class SandboxedState<T = unknown> extends EventEmitter {
|
|
7
|
+
on(event: 'ready' | 'closed', listener: () => void): this;
|
|
8
|
+
on(event: 'active', listener: (job: Job<T>) => void): this;
|
|
9
|
+
on(event: 'completed', listener: (job: Job<T>, result: unknown) => void): this;
|
|
10
|
+
on(event: 'failed', listener: (job: Job<T>, error: Error) => void): this;
|
|
11
|
+
on(event: 'progress', listener: (job: Job<T>, progress: number) => void): this;
|
|
12
|
+
on(event: 'log', listener: (job: Job<T>, message: string) => void): this;
|
|
13
|
+
on(event: 'error', listener: (error: Error) => void): this;
|
|
14
|
+
once(event: 'ready' | 'closed', listener: () => void): this;
|
|
15
|
+
once(event: 'active', listener: (job: Job<T>) => void): this;
|
|
16
|
+
once(event: 'completed', listener: (job: Job<T>, result: unknown) => void): this;
|
|
17
|
+
once(event: 'failed', listener: (job: Job<T>, error: Error) => void): this;
|
|
18
|
+
once(event: 'progress', listener: (job: Job<T>, progress: number) => void): this;
|
|
19
|
+
once(event: 'log', listener: (job: Job<T>, message: string) => void): this;
|
|
20
|
+
once(event: 'error', listener: (error: Error) => void): this;
|
|
21
|
+
protected readonly queueName: string;
|
|
22
|
+
protected readonly options: RequiredSandboxedWorkerOptions;
|
|
23
|
+
protected readonly workers: WorkerProcess[];
|
|
24
|
+
protected running: boolean;
|
|
25
|
+
protected pullPromise: Promise<void> | null;
|
|
26
|
+
protected wrapperPath: string | null;
|
|
27
|
+
protected readonly ops: QueueOps;
|
|
28
|
+
protected readonly tcp: TcpConnectionPool | null;
|
|
29
|
+
protected readonly workerId: string;
|
|
30
|
+
protected heartbeatTimer: ReturnType<typeof setInterval> | null;
|
|
31
|
+
protected readonly heartbeatInterval: number;
|
|
32
|
+
protected readonly idleTimeout: number;
|
|
33
|
+
protected readonly idleRecycleMs: number;
|
|
34
|
+
protected readonly autoStart: boolean;
|
|
35
|
+
protected readonly autoStartPollMs: number;
|
|
36
|
+
protected lastActivityTime: number;
|
|
37
|
+
protected autoStartTimer: ReturnType<typeof setInterval> | null;
|
|
38
|
+
constructor(queueName: string, options: SandboxedWorkerOptions);
|
|
39
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { SharedManager } from "../../manager.js";
|
|
2
|
+
import type { ConnectionOptions } from "../../types.js";
|
|
3
|
+
export interface SandboxedWorkerOptions {
|
|
4
|
+
processor: string;
|
|
5
|
+
concurrency?: number;
|
|
6
|
+
maxMemory?: number;
|
|
7
|
+
timeout?: number;
|
|
8
|
+
autoRestart?: boolean;
|
|
9
|
+
maxRestarts?: number;
|
|
10
|
+
pollInterval?: number;
|
|
11
|
+
manager?: SharedManager;
|
|
12
|
+
connection?: ConnectionOptions;
|
|
13
|
+
heartbeatInterval?: number;
|
|
14
|
+
idleTimeout?: number;
|
|
15
|
+
idleRecycleMs?: number;
|
|
16
|
+
autoStart?: boolean;
|
|
17
|
+
autoStartPollMs?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface RequiredSandboxedWorkerOptions {
|
|
20
|
+
processor: string;
|
|
21
|
+
concurrency: number;
|
|
22
|
+
maxMemory: number;
|
|
23
|
+
timeout: number;
|
|
24
|
+
autoRestart: boolean;
|
|
25
|
+
maxRestarts: number;
|
|
26
|
+
pollInterval: number;
|
|
27
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Job as DomainJob } from "../../../domain/types/job.js";
|
|
2
|
+
/**
|
|
3
|
+
* The pool only posts jobs to and terminates a sandbox thread: Bun's Web Worker
|
|
4
|
+
* here, a worker_threads adapter in bunqueue-client. Portable types keep the
|
|
5
|
+
* published declarations free of Bun and DOM globals.
|
|
6
|
+
*/
|
|
7
|
+
export interface SandboxThread {
|
|
8
|
+
postMessage(message: unknown): void;
|
|
9
|
+
terminate(): unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface WorkerProcess {
|
|
12
|
+
worker: SandboxThread;
|
|
13
|
+
busy: boolean;
|
|
14
|
+
currentJob: DomainJob | null;
|
|
15
|
+
currentToken: string | null;
|
|
16
|
+
restarts: number;
|
|
17
|
+
timeoutId: ReturnType<typeof setTimeout> | null;
|
|
18
|
+
lastIdleAt: number;
|
|
19
|
+
terminated: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface IPCRequest {
|
|
22
|
+
type: 'job';
|
|
23
|
+
job: {
|
|
24
|
+
id: string;
|
|
25
|
+
name: string;
|
|
26
|
+
data: unknown;
|
|
27
|
+
queue: string;
|
|
28
|
+
attempts: number;
|
|
29
|
+
parentId?: string;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export interface IPCResponse {
|
|
33
|
+
type: 'result' | 'error' | 'progress' | 'log' | 'fail' | 'ready';
|
|
34
|
+
jobId?: string;
|
|
35
|
+
result?: unknown;
|
|
36
|
+
error?: string;
|
|
37
|
+
progress?: number;
|
|
38
|
+
message?: string;
|
|
39
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker Wrapper Script Generator
|
|
3
|
+
* Creates the wrapper script that loads processor in worker process
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Create wrapper script file that loads the processor
|
|
7
|
+
*/
|
|
8
|
+
export declare function createWrapperScript(queueName: string, processorPath: string): Promise<string>;
|
|
9
|
+
/**
|
|
10
|
+
* Cleanup wrapper script file
|
|
11
|
+
*/
|
|
12
|
+
export declare function cleanupWrapperScript(wrapperPath: string | null): Promise<void>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Production TCP client façade. */
|
|
2
|
+
import { TcpClientLifecycle } from "./runtime/lifecycle.js";
|
|
3
|
+
export { ClientClosedError } from "./errors.js";
|
|
4
|
+
/** Behavior is composed from focused connection, health, and command layers. */
|
|
5
|
+
export declare class TcpClient extends TcpClientLifecycle {
|
|
6
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { PendingCommand } from "./types.js";
|
|
2
|
+
/** Pending-command queue with reqId-based in-flight tracking. */
|
|
3
|
+
export declare class CommandQueue {
|
|
4
|
+
private readonly pendingCommands;
|
|
5
|
+
private pendingQueue;
|
|
6
|
+
private currentCommand;
|
|
7
|
+
private commandIdCounter;
|
|
8
|
+
private readonly inFlightByReqId;
|
|
9
|
+
getCurrentCommand(): PendingCommand | null;
|
|
10
|
+
setCurrentCommand(command: PendingCommand | null): void;
|
|
11
|
+
hasPending(): boolean;
|
|
12
|
+
getInFlightCount(): number;
|
|
13
|
+
canSendMore(maxInFlight: number): boolean;
|
|
14
|
+
addInFlight(command: PendingCommand): void;
|
|
15
|
+
getByReqId(reqId: string): PendingCommand | undefined;
|
|
16
|
+
removeByReqId(reqId: string): PendingCommand | undefined;
|
|
17
|
+
enqueue(command: PendingCommand): void;
|
|
18
|
+
nextId(): number;
|
|
19
|
+
dequeue(): PendingCommand | null;
|
|
20
|
+
remove(id: number): boolean;
|
|
21
|
+
rejectAll(error: Error): void;
|
|
22
|
+
clearCurrent(error?: Error): void;
|
|
23
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Stable low-level TCP connection import surface. */
|
|
2
|
+
export { CommandQueue } from "./commandQueue.js";
|
|
3
|
+
export { buildClientTls, createConnection, tlsRequiresVerification } from "./transport.js";
|
|
4
|
+
export type { ConnectionEvents, ConnectionResult, ConnectionTarget } from "./transport.js";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Synthetic rejection issued when a client closes with commands pending. */
|
|
2
|
+
export declare class ClientClosedError extends Error {
|
|
3
|
+
constructor(message?: string);
|
|
4
|
+
}
|
|
5
|
+
/** Install the process filter for synthetic close rejections if none is active. */
|
|
6
|
+
export declare function installClientClosedFilter(): void;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TCP Health Tracker
|
|
3
|
+
* Monitors connection health with ping and latency tracking
|
|
4
|
+
*/
|
|
5
|
+
import type { ConnectionHealth } from "./types.js";
|
|
6
|
+
/** Health tracker configuration */
|
|
7
|
+
export interface HealthConfig {
|
|
8
|
+
pingInterval: number;
|
|
9
|
+
maxPingFailures: number;
|
|
10
|
+
/**
|
|
11
|
+
* Consecutive command timeouts before the link is concluded dead (0 = off).
|
|
12
|
+
* Optional for backward compatibility; defaults to 3 when omitted.
|
|
13
|
+
*/
|
|
14
|
+
maxCommandTimeouts?: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Tracks connection health metrics
|
|
18
|
+
*/
|
|
19
|
+
export declare class HealthTracker {
|
|
20
|
+
private readonly config;
|
|
21
|
+
private consecutivePingFailures;
|
|
22
|
+
private consecutiveCommandTimeouts;
|
|
23
|
+
private lastSuccessAt;
|
|
24
|
+
private lastErrorAt;
|
|
25
|
+
private connectedAt;
|
|
26
|
+
private totalCommands;
|
|
27
|
+
private totalErrors;
|
|
28
|
+
private readonly latencyHistory;
|
|
29
|
+
private pingTimer;
|
|
30
|
+
private static readonly MAX_LATENCY_HISTORY;
|
|
31
|
+
constructor(config: HealthConfig);
|
|
32
|
+
/** Record successful command */
|
|
33
|
+
recordSuccess(latencyMs: number): void;
|
|
34
|
+
/** Record command error */
|
|
35
|
+
recordError(): void;
|
|
36
|
+
/** Record command sent (for total count) */
|
|
37
|
+
recordCommandSent(): void;
|
|
38
|
+
/** Record connection established */
|
|
39
|
+
recordConnected(): void;
|
|
40
|
+
/** Record ping success */
|
|
41
|
+
recordPingSuccess(latencyMs: number): void;
|
|
42
|
+
/** Record ping failure, returns true if max failures reached */
|
|
43
|
+
recordPingFailure(): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Record a command timeout. Returns true when the configured consecutive
|
|
46
|
+
* threshold is reached (and the feature is enabled), signalling the caller to
|
|
47
|
+
* force a reconnect. Any intervening success resets the counter, so this only
|
|
48
|
+
* fires on a sustained run of timeouts — the signature of a dead/half-open
|
|
49
|
+
* socket where writes succeed but no response ever comes back.
|
|
50
|
+
*/
|
|
51
|
+
recordCommandTimeout(): boolean;
|
|
52
|
+
/** Get current health metrics */
|
|
53
|
+
getHealth(state: 'connected' | 'connecting' | 'disconnected' | 'closed'): ConnectionHealth;
|
|
54
|
+
/** Start ping timer */
|
|
55
|
+
startPing(pingFn: () => Promise<void>): void;
|
|
56
|
+
/** Stop ping timer */
|
|
57
|
+
stopPing(): void;
|
|
58
|
+
/** Record latency for averaging */
|
|
59
|
+
private recordLatency;
|
|
60
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TCP Client Module
|
|
3
|
+
* Re-exports all TCP client components
|
|
4
|
+
*/
|
|
5
|
+
export type { ConnectionOptions, ConnectionHealth, PendingCommand, SocketWrapper, ClientTlsOptions, } from "./types.js";
|
|
6
|
+
export { DEFAULT_CONNECTION } from "./types.js";
|
|
7
|
+
export { HealthTracker, type HealthConfig } from "./health.js";
|
|
8
|
+
export { ReconnectManager, type ReconnectConfig } from "./reconnect.js";
|
|
9
|
+
export { createConnection, CommandQueue } from "./connection.js";
|
|
10
|
+
export { TcpClient } from "./client.js";
|
|
11
|
+
export { getSharedTcpClient, closeSharedTcpClient } from "./shared.js";
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TCP Reconnection Manager
|
|
3
|
+
* Handles automatic reconnection with exponential backoff
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
/** Reconnection configuration */
|
|
7
|
+
export interface ReconnectConfig {
|
|
8
|
+
maxReconnectAttempts: number;
|
|
9
|
+
reconnectDelay: number;
|
|
10
|
+
maxReconnectDelay: number;
|
|
11
|
+
autoReconnect: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Manages reconnection attempts with exponential backoff
|
|
15
|
+
*/
|
|
16
|
+
export declare class ReconnectManager extends EventEmitter {
|
|
17
|
+
private readonly config;
|
|
18
|
+
on(event: 'maxReconnectAttemptsReached', listener: () => void): this;
|
|
19
|
+
on(event: 'reconnecting', listener: (data: {
|
|
20
|
+
attempt: number;
|
|
21
|
+
delay: number;
|
|
22
|
+
}) => void): this;
|
|
23
|
+
once(event: 'maxReconnectAttemptsReached', listener: () => void): this;
|
|
24
|
+
once(event: 'reconnecting', listener: (data: {
|
|
25
|
+
attempt: number;
|
|
26
|
+
delay: number;
|
|
27
|
+
}) => void): this;
|
|
28
|
+
private reconnectAttempts;
|
|
29
|
+
private reconnectTimer;
|
|
30
|
+
private closed;
|
|
31
|
+
constructor(config: ReconnectConfig);
|
|
32
|
+
/** Mark as closed (prevents further reconnects) */
|
|
33
|
+
setClosed(closed: boolean): void;
|
|
34
|
+
/** Check if closed */
|
|
35
|
+
isClosed(): boolean;
|
|
36
|
+
/** Reset reconnect attempts (call on successful connect) */
|
|
37
|
+
reset(): void;
|
|
38
|
+
/** Cancel pending reconnection */
|
|
39
|
+
cancelReconnect(): void;
|
|
40
|
+
/** Check if reconnection is allowed */
|
|
41
|
+
canReconnect(): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Schedule reconnection with exponential backoff
|
|
44
|
+
* Returns false if max attempts reached
|
|
45
|
+
*/
|
|
46
|
+
scheduleReconnect(connectFn: () => Promise<void>): boolean;
|
|
47
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { HelloResponse } from "../../../domain/types/response.js";
|
|
2
|
+
import { TcpClientHealth } from "./health.js";
|
|
3
|
+
/** Command framing, queueing, pipelining, and timeout handling. */
|
|
4
|
+
export declare abstract class TcpClientCommands extends TcpClientHealth {
|
|
5
|
+
hello(): Promise<HelloResponse>;
|
|
6
|
+
protected sendDirect(command: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
7
|
+
protected processQueue(): void;
|
|
8
|
+
send(command: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { TcpClientState } from "./state.js";
|
|
2
|
+
/** Connection establishment and authentication lifecycle. */
|
|
3
|
+
export declare abstract class TcpClientConnectivity extends TcpClientState {
|
|
4
|
+
protected abstract handleData(frame: Uint8Array): void;
|
|
5
|
+
protected abstract handleClose(): void;
|
|
6
|
+
protected abstract processQueue(): void;
|
|
7
|
+
protected abstract sendDirect(command: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
8
|
+
connect(): Promise<void>;
|
|
9
|
+
protected abstract ping(): Promise<boolean>;
|
|
10
|
+
private waitForConnection;
|
|
11
|
+
private doConnect;
|
|
12
|
+
private authenticate;
|
|
13
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TcpClientConnectivity } from "./connectivity.js";
|
|
2
|
+
/** Response dispatch, health tracking, and reconnect decisions. */
|
|
3
|
+
export declare abstract class TcpClientHealth extends TcpClientConnectivity {
|
|
4
|
+
protected handleData(frame: Uint8Array): void;
|
|
5
|
+
protected handleClose(): void;
|
|
6
|
+
ping(): Promise<boolean>;
|
|
7
|
+
protected abstract send(command: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
8
|
+
private handlePingFailure;
|
|
9
|
+
protected handleCommandTimeout(): void;
|
|
10
|
+
private forceReconnect;
|
|
11
|
+
getHealth(): import("../index.js").ConnectionHealth;
|
|
12
|
+
protected abstract getState(): 'connected' | 'connecting' | 'disconnected' | 'closed';
|
|
13
|
+
protected generateReqId(): string;
|
|
14
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { TcpClientCommands } from "./commands.js";
|
|
2
|
+
/** Public shutdown and connection-state inspection. */
|
|
3
|
+
export declare class TcpClientLifecycle extends TcpClientCommands {
|
|
4
|
+
close(): void;
|
|
5
|
+
isConnected(): boolean;
|
|
6
|
+
getState(): 'connected' | 'connecting' | 'disconnected' | 'closed';
|
|
7
|
+
getInFlightCount(): number;
|
|
8
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { CommandQueue } from "../connection.js";
|
|
3
|
+
import { HealthTracker } from "../health.js";
|
|
4
|
+
import { ReconnectManager } from "../reconnect.js";
|
|
5
|
+
import type { ConnectionOptions, SocketWrapper } from "../types.js";
|
|
6
|
+
import type { JobEvent } from "../../../domain/types/queue.js";
|
|
7
|
+
/** Shared TCP client state and event contract. */
|
|
8
|
+
export declare class TcpClientState extends EventEmitter {
|
|
9
|
+
on(event: 'connected' | 'disconnected' | 'maxReconnectAttemptsReached', listener: () => void): this;
|
|
10
|
+
on(event: 'reconnecting', listener: (data: {
|
|
11
|
+
attempt: number;
|
|
12
|
+
delay: number;
|
|
13
|
+
}) => void): this;
|
|
14
|
+
on(event: 'error', listener: (error: Error) => void): this;
|
|
15
|
+
on(event: 'warning', listener: (data: {
|
|
16
|
+
type: string;
|
|
17
|
+
reqId?: string;
|
|
18
|
+
}) => void): this;
|
|
19
|
+
on(event: 'queueEvent', listener: (event: JobEvent) => void): this;
|
|
20
|
+
on(event: 'health', listener: (data: {
|
|
21
|
+
type: string;
|
|
22
|
+
latency?: number;
|
|
23
|
+
reason?: string;
|
|
24
|
+
}) => void): this;
|
|
25
|
+
once(event: 'connected' | 'disconnected' | 'maxReconnectAttemptsReached', listener: () => void): this;
|
|
26
|
+
once(event: 'reconnecting', listener: (data: {
|
|
27
|
+
attempt: number;
|
|
28
|
+
delay: number;
|
|
29
|
+
}) => void): this;
|
|
30
|
+
once(event: 'error', listener: (error: Error) => void): this;
|
|
31
|
+
once(event: 'warning', listener: (data: {
|
|
32
|
+
type: string;
|
|
33
|
+
reqId?: string;
|
|
34
|
+
}) => void): this;
|
|
35
|
+
once(event: 'queueEvent', listener: (event: JobEvent) => void): this;
|
|
36
|
+
once(event: 'health', listener: (data: {
|
|
37
|
+
type: string;
|
|
38
|
+
latency?: number;
|
|
39
|
+
reason?: string;
|
|
40
|
+
}) => void): this;
|
|
41
|
+
protected socket: SocketWrapper | null;
|
|
42
|
+
protected connected: boolean;
|
|
43
|
+
protected connecting: boolean;
|
|
44
|
+
protected readonly options: Required<ConnectionOptions>;
|
|
45
|
+
protected readonly health: HealthTracker;
|
|
46
|
+
protected readonly reconnect: ReconnectManager;
|
|
47
|
+
protected readonly commands: CommandQueue;
|
|
48
|
+
protected reqIdCounter: number;
|
|
49
|
+
constructor(options?: Partial<ConnectionOptions>);
|
|
50
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared TCP Client Instances
|
|
3
|
+
* One shared client per distinct connection target. Keyed by
|
|
4
|
+
* host/port/token/tls so callers with different configs (notably TLS vs
|
|
5
|
+
* plaintext to the same server) never receive each other's connection.
|
|
6
|
+
*/
|
|
7
|
+
import type { ConnectionOptions } from "./types.js";
|
|
8
|
+
import { TcpClient } from "./client.js";
|
|
9
|
+
/** Get shared TCP client for the given connection target */
|
|
10
|
+
export declare function getSharedTcpClient(options?: Partial<ConnectionOptions>): TcpClient;
|
|
11
|
+
/** Close all shared clients */
|
|
12
|
+
export declare function closeSharedTcpClient(): void;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ClientTlsOptions, SocketWrapper } from "./types.js";
|
|
2
|
+
export interface ConnectionEvents {
|
|
3
|
+
onData: (frame: Uint8Array) => void;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
onError: (error: Error) => void;
|
|
6
|
+
}
|
|
7
|
+
export interface ConnectionResult {
|
|
8
|
+
socket: SocketWrapper;
|
|
9
|
+
cleanup: () => void;
|
|
10
|
+
}
|
|
11
|
+
export interface ConnectionTarget {
|
|
12
|
+
host?: string;
|
|
13
|
+
port?: number;
|
|
14
|
+
tls?: boolean | ClientTlsOptions;
|
|
15
|
+
}
|
|
16
|
+
export declare function buildClientTls(tls: boolean | ClientTlsOptions | undefined): true | Record<string, unknown> | undefined;
|
|
17
|
+
export declare function tlsRequiresVerification(tls: boolean | ClientTlsOptions | undefined): boolean;
|
|
18
|
+
export declare function createConnection(target: ConnectionTarget, connectTimeout: number, events: ConnectionEvents): Promise<ConnectionResult>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface PendingCommand {
|
|
2
|
+
id: number;
|
|
3
|
+
reqId: string;
|
|
4
|
+
command: Record<string, unknown>;
|
|
5
|
+
resolve: (value: Record<string, unknown>) => void;
|
|
6
|
+
reject: (error: Error) => void;
|
|
7
|
+
timeout: ReturnType<typeof setTimeout>;
|
|
8
|
+
promise?: Promise<Record<string, unknown>>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ClientTlsOptions } from "./tls.js";
|
|
2
|
+
export interface ConnectionOptions {
|
|
3
|
+
host: string;
|
|
4
|
+
port: number;
|
|
5
|
+
token?: string;
|
|
6
|
+
tls?: boolean | ClientTlsOptions;
|
|
7
|
+
maxReconnectAttempts?: number;
|
|
8
|
+
reconnectDelay?: number;
|
|
9
|
+
maxReconnectDelay?: number;
|
|
10
|
+
connectTimeout?: number;
|
|
11
|
+
commandTimeout?: number;
|
|
12
|
+
autoReconnect?: boolean;
|
|
13
|
+
pingInterval?: number;
|
|
14
|
+
maxPingFailures?: number;
|
|
15
|
+
maxCommandTimeouts?: number;
|
|
16
|
+
pipelining?: boolean;
|
|
17
|
+
maxInFlight?: number;
|
|
18
|
+
}
|
|
19
|
+
export interface ConnectionHealth {
|
|
20
|
+
healthy: boolean;
|
|
21
|
+
state: 'connected' | 'connecting' | 'disconnected' | 'closed';
|
|
22
|
+
lastSuccessAt: number | null;
|
|
23
|
+
lastErrorAt: number | null;
|
|
24
|
+
avgLatencyMs: number;
|
|
25
|
+
consecutivePingFailures: number;
|
|
26
|
+
consecutiveCommandTimeouts: number;
|
|
27
|
+
totalCommands: number;
|
|
28
|
+
totalErrors: number;
|
|
29
|
+
uptimeMs: number;
|
|
30
|
+
}
|
|
31
|
+
export declare const DEFAULT_CONNECTION: Required<ConnectionOptions>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { PendingCommand } from "./command.js";
|
|
2
|
+
export { DEFAULT_CONNECTION } from "./connection.js";
|
|
3
|
+
export type { ConnectionHealth, ConnectionOptions } from "./connection.js";
|
|
4
|
+
export type { FrameParser, SocketWrapper } from "./socket.js";
|
|
5
|
+
export type { ClientTlsOptions } from "./tls.js";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TCP Client - Re-exports from tcp module
|
|
3
|
+
* @deprecated Import from './tcp' instead
|
|
4
|
+
*/
|
|
5
|
+
export type { ConnectionOptions, ConnectionHealth } from "./tcp/index.js";
|
|
6
|
+
export { DEFAULT_CONNECTION, TcpClient, getSharedTcpClient, closeSharedTcpClient } from "./tcp/index.js";
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TCP Connection Pool
|
|
3
|
+
* Manages multiple TCP connections for parallel operations
|
|
4
|
+
*/
|
|
5
|
+
import { type ConnectionOptions, type ConnectionHealth } from "./tcpClient.js";
|
|
6
|
+
export interface PoolOptions extends Partial<ConnectionOptions> {
|
|
7
|
+
/** Number of connections in pool (default: 4) */
|
|
8
|
+
poolSize?: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Connection pool for parallel TCP operations
|
|
12
|
+
* Load-aware distribution - prefers connected clients with capacity
|
|
13
|
+
*/
|
|
14
|
+
export declare class TcpConnectionPool {
|
|
15
|
+
private readonly clients;
|
|
16
|
+
private readonly options;
|
|
17
|
+
private currentIndex;
|
|
18
|
+
private closed;
|
|
19
|
+
private refCount;
|
|
20
|
+
private poolKey;
|
|
21
|
+
constructor(options?: PoolOptions);
|
|
22
|
+
/** Connect all clients in pool */
|
|
23
|
+
connect(): Promise<void>;
|
|
24
|
+
/** Get next client with load-aware selection */
|
|
25
|
+
private getNextClient;
|
|
26
|
+
/** Send command using next available connection */
|
|
27
|
+
send(command: Record<string, unknown>): Promise<Record<string, unknown>>;
|
|
28
|
+
/** Send multiple commands in parallel across pool */
|
|
29
|
+
sendParallel(commands: Array<Record<string, unknown>>): Promise<Array<Record<string, unknown>>>;
|
|
30
|
+
/**
|
|
31
|
+
* Invoke `cb` whenever a pooled connection (re)establishes. TcpClient emits
|
|
32
|
+
* 'connected' on every successful connect, including reconnects. Used by
|
|
33
|
+
* Worker to re-register after a reconnect (the server drops registration when
|
|
34
|
+
* the registering connection closes and each reconnect gets a fresh clientId).
|
|
35
|
+
*/
|
|
36
|
+
onReconnect(cb: () => void): void;
|
|
37
|
+
/** Check if any connection is ready */
|
|
38
|
+
isConnected(): boolean;
|
|
39
|
+
/** Get number of connected clients */
|
|
40
|
+
getConnectedCount(): number;
|
|
41
|
+
/** Get pool size */
|
|
42
|
+
getPoolSize(): number;
|
|
43
|
+
/** Increment reference count (for shared pools) */
|
|
44
|
+
addRef(): void;
|
|
45
|
+
/** Decrement reference count and close if zero */
|
|
46
|
+
release(): void;
|
|
47
|
+
/** Set pool key for shared pool cleanup */
|
|
48
|
+
setPoolKey(key: string): void;
|
|
49
|
+
/** Close all connections */
|
|
50
|
+
close(): void;
|
|
51
|
+
/** Check if pool is closed */
|
|
52
|
+
isClosed(): boolean;
|
|
53
|
+
/** Get aggregated health metrics for the pool */
|
|
54
|
+
getHealth(): {
|
|
55
|
+
healthy: boolean;
|
|
56
|
+
connectedCount: number;
|
|
57
|
+
totalCount: number;
|
|
58
|
+
clients: ConnectionHealth[];
|
|
59
|
+
avgLatencyMs: number;
|
|
60
|
+
totalCommands: number;
|
|
61
|
+
totalErrors: number;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/** Get or create shared connection pool */
|
|
65
|
+
export declare function getSharedPool(options?: PoolOptions): TcpConnectionPool;
|
|
66
|
+
/** Release shared pool reference */
|
|
67
|
+
export declare function releaseSharedPool(pool: TcpConnectionPool): void;
|
|
68
|
+
/** Close all shared pools */
|
|
69
|
+
export declare function closeAllSharedPools(): void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { ClientTlsOptions } from "../tcp/types.js";
|
|
2
|
+
import type { JobOptions } from "./options.js";
|
|
3
|
+
export type { ClientTlsOptions } from "../tcp/types.js";
|
|
4
|
+
export interface ConnectionOptions {
|
|
5
|
+
host?: string;
|
|
6
|
+
port?: number;
|
|
7
|
+
socketPath?: string;
|
|
8
|
+
tls?: boolean | ClientTlsOptions;
|
|
9
|
+
token?: string;
|
|
10
|
+
poolSize?: number;
|
|
11
|
+
pingInterval?: number;
|
|
12
|
+
commandTimeout?: number;
|
|
13
|
+
maxCommandTimeouts?: number;
|
|
14
|
+
pipelining?: boolean;
|
|
15
|
+
maxInFlight?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface AutoBatchOptions {
|
|
18
|
+
enabled?: boolean;
|
|
19
|
+
maxSize?: number;
|
|
20
|
+
maxDelayMs?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface QueueOptions {
|
|
23
|
+
defaultJobOptions?: JobOptions;
|
|
24
|
+
connection?: ConnectionOptions;
|
|
25
|
+
embedded?: boolean;
|
|
26
|
+
/** Must match the process-wide embedded manager when one is already active. */
|
|
27
|
+
dataPath?: string;
|
|
28
|
+
autoBatch?: AutoBatchOptions;
|
|
29
|
+
prefixKey?: string;
|
|
30
|
+
}
|