bunqueue 2.8.53 → 2.8.56
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/dist/application/background/dlq.d.ts +2 -0
- package/dist/application/background/dlq.js +26 -0
- package/dist/application/background/lifecycle.d.ts +4 -0
- package/dist/application/background/lifecycle.js +90 -0
- package/dist/application/background/recovery/active.d.ts +4 -0
- package/dist/application/background/recovery/active.js +69 -0
- package/dist/application/background/recovery/index.d.ts +2 -0
- package/dist/application/background/recovery/index.js +22 -0
- package/dist/application/background/recovery/pending.d.ts +3 -0
- package/dist/application/background/recovery/pending.js +69 -0
- package/dist/application/background/recovery/restore.d.ts +5 -0
- package/dist/application/background/recovery/restore.js +58 -0
- package/dist/application/background/recovery/shared.d.ts +6 -0
- package/dist/application/background/recovery/shared.js +15 -0
- package/dist/application/background/timeouts.d.ts +25 -0
- package/dist/application/background/timeouts.js +191 -0
- package/dist/application/backgroundTasks.d.ts +7 -31
- package/dist/application/backgroundTasks.js +6 -438
- package/dist/application/cleanupTasks.js +2 -1
- package/dist/application/clientTracking.js +3 -1
- package/dist/application/contextFactory.d.ts +13 -90
- package/dist/application/contextFactory.js +9 -0
- package/dist/application/dependencyResultTracker.d.ts +1 -0
- package/dist/application/dependencyResultTracker.js +3 -0
- package/dist/application/dlqManager.d.ts +9 -9
- package/dist/application/dlqManager.js +49 -167
- package/dist/application/dlqRetry.d.ts +12 -0
- package/dist/application/dlqRetry.js +97 -0
- package/dist/application/lockManager.js +24 -4
- package/dist/application/lockOperations.js +16 -3
- package/dist/application/operations/ack/batch.d.ts +8 -0
- package/dist/application/operations/ack/batch.js +64 -0
- package/dist/application/operations/ack/completion.d.ts +3 -0
- package/dist/application/operations/ack/completion.js +74 -0
- package/dist/application/operations/ack/failure.d.ts +3 -0
- package/dist/application/operations/ack/failure.js +160 -0
- package/dist/application/operations/ack.d.ts +5 -79
- package/dist/application/operations/ack.js +4 -319
- package/dist/application/operations/ackHelpers.d.ts +3 -52
- package/dist/application/operations/ackHelpers.js +11 -4
- package/dist/application/operations/customId.d.ts +18 -5
- package/dist/application/operations/customId.js +36 -25
- package/dist/application/operations/flowValidation.js +9 -4
- package/dist/application/operations/jobManagement.js +50 -11
- package/dist/application/operations/jobMoveOperations.js +3 -3
- package/dist/application/operations/jobStateTransitions.d.ts +1 -1
- package/dist/application/operations/jobStateTransitions.js +16 -2
- package/dist/application/operations/parentLink.d.ts +36 -0
- package/dist/application/operations/parentLink.js +153 -0
- package/dist/application/operations/parentLinkInput.d.ts +8 -0
- package/dist/application/operations/parentLinkInput.js +23 -0
- package/dist/application/operations/push.d.ts +5 -44
- package/dist/application/operations/push.js +62 -152
- package/dist/application/operations/pushAdmission.d.ts +32 -0
- package/dist/application/operations/pushAdmission.js +38 -0
- package/dist/application/operations/pushBatch.d.ts +4 -0
- package/dist/application/operations/pushBatch.js +136 -0
- package/dist/application/operations/pushContext.d.ts +39 -0
- package/dist/application/operations/pushContext.js +1 -0
- package/dist/application/operations/pushDeduplication.d.ts +42 -0
- package/dist/application/operations/pushDeduplication.js +131 -0
- package/dist/application/operations/pushInsert.d.ts +13 -1
- package/dist/application/operations/pushInsert.js +33 -17
- package/dist/application/operations/pushLocks.js +13 -9
- package/dist/application/operations/query/collect.d.ts +12 -0
- package/dist/application/operations/query/collect.js +118 -0
- package/dist/application/operations/query/jobLookup.d.ts +9 -0
- package/dist/application/operations/query/jobLookup.js +110 -0
- package/dist/application/operations/query/pagination.d.ts +8 -0
- package/dist/application/operations/query/pagination.js +90 -0
- package/dist/application/operations/query/state.d.ts +4 -0
- package/dist/application/operations/query/state.js +63 -0
- package/dist/application/operations/queryOperations.d.ts +5 -50
- package/dist/application/operations/queryOperations.js +4 -474
- package/dist/application/queue-manager/ack.d.ts +23 -0
- package/dist/application/queue-manager/ack.js +242 -0
- package/dist/application/queue-manager/configuration.d.ts +27 -0
- package/dist/application/queue-manager/configuration.js +84 -0
- package/dist/application/queue-manager/context.d.ts +5 -0
- package/dist/application/queue-manager/context.js +61 -0
- package/dist/application/queue-manager/control.d.ts +17 -0
- package/dist/application/queue-manager/control.js +133 -0
- package/dist/application/queue-manager/delivery.d.ts +32 -0
- package/dist/application/queue-manager/delivery.js +143 -0
- package/dist/application/queue-manager/dependencies.d.ts +8 -0
- package/dist/application/queue-manager/dependencies.js +127 -0
- package/dist/application/queue-manager/dependency-runtime.d.ts +8 -0
- package/dist/application/queue-manager/dependency-runtime.js +40 -0
- package/dist/application/queue-manager/flow-failures.d.ts +18 -0
- package/dist/application/queue-manager/flow-failures.js +107 -0
- package/dist/application/queue-manager/flow-options.d.ts +8 -0
- package/dist/application/queue-manager/flow-options.js +129 -0
- package/dist/application/queue-manager/job-management.d.ts +17 -0
- package/dist/application/queue-manager/job-management.js +100 -0
- package/dist/application/queue-manager/lifecycle.d.ts +4 -0
- package/dist/application/queue-manager/lifecycle.js +41 -0
- package/dist/application/queue-manager/limits.d.ts +41 -0
- package/dist/application/queue-manager/limits.js +108 -0
- package/dist/application/queue-manager/locks.d.ts +21 -0
- package/dist/application/queue-manager/locks.js +59 -0
- package/dist/application/queue-manager/observability.d.ts +16 -0
- package/dist/application/queue-manager/observability.js +44 -0
- package/dist/application/queue-manager/queries.d.ts +17 -0
- package/dist/application/queue-manager/queries.js +118 -0
- package/dist/application/queue-manager/repeat.d.ts +4 -0
- package/dist/application/queue-manager/repeat.js +26 -0
- package/dist/application/queue-manager/services.d.ts +19 -0
- package/dist/application/queue-manager/services.js +80 -0
- package/dist/application/queue-manager/state.d.ts +92 -0
- package/dist/application/queue-manager/state.js +144 -0
- package/dist/application/queue-manager/stats.d.ts +28 -0
- package/dist/application/queue-manager/stats.js +52 -0
- package/dist/application/queueManager.d.ts +4 -380
- package/dist/application/queueManager.js +3 -1880
- package/dist/application/queueTelemetryJournal.d.ts +20 -0
- package/dist/application/queueTelemetryJournal.js +133 -0
- package/dist/application/repeatJobs.d.ts +7 -0
- package/dist/application/repeatJobs.js +132 -0
- package/dist/application/stallDetection.js +9 -4
- package/dist/application/types/ack.d.ts +132 -0
- package/dist/application/types/ack.js +1 -0
- package/dist/application/types/background.d.ts +18 -0
- package/dist/application/types/background.js +1 -0
- package/dist/application/types/config.d.ts +37 -0
- package/dist/application/types/config.js +15 -0
- package/dist/application/types/contextFactory.d.ts +83 -0
- package/dist/application/types/contextFactory.js +1 -0
- package/dist/application/types/contexts.d.ts +110 -0
- package/dist/application/types/contexts.js +1 -0
- package/dist/application/types/index.d.ts +7 -0
- package/dist/application/types/index.js +1 -0
- package/dist/application/types/query.d.ts +23 -0
- package/dist/application/types/query.js +1 -0
- package/dist/application/types/queueManager.d.ts +94 -0
- package/dist/application/types/queueManager.js +1 -0
- package/dist/cli/commandRouter.d.ts +1 -1
- package/dist/cli/commands/core.js +1 -0
- package/dist/cli/output/collections.d.ts +8 -0
- package/dist/cli/output/collections.js +131 -0
- package/dist/cli/output/jobs.d.ts +2 -0
- package/dist/cli/output/jobs.js +61 -0
- package/dist/cli/output/style.d.ts +14 -0
- package/dist/cli/output/style.js +28 -0
- package/dist/cli/output/success.d.ts +1 -0
- package/dist/cli/output/success.js +108 -0
- package/dist/cli/output.d.ts +1 -6
- package/dist/cli/output.js +7 -395
- package/dist/client/bunqueue/dlqRateLimit.d.ts +8 -0
- package/dist/client/bunqueue/dlqRateLimit.js +24 -0
- package/dist/client/bunqueue/runtime.d.ts +35 -0
- package/dist/client/bunqueue/runtime.js +138 -0
- package/dist/client/bunqueue.d.ts +19 -34
- package/dist/client/bunqueue.js +45 -166
- package/dist/client/dlqConversion.d.ts +5 -0
- package/dist/client/dlqConversion.js +28 -0
- package/dist/client/events.d.ts +7 -56
- package/dist/client/events.js +38 -15
- package/dist/client/flow.d.ts +6 -12
- package/dist/client/flow.js +16 -34
- package/dist/client/flowJobDependencies.js +3 -1
- package/dist/client/flowJobFactory.d.ts +9 -1
- package/dist/client/flowJobFactory.js +25 -9
- package/dist/client/flowJobMoveMethods.d.ts +5 -5
- package/dist/client/flowJobMoveMethods.js +37 -17
- package/dist/client/flowLegacyPlan.js +22 -8
- package/dist/client/flowOptions.d.ts +1 -1
- package/dist/client/flowOptions.js +2 -1
- package/dist/client/flowPlan.js +2 -3
- package/dist/client/flowPush.d.ts +1 -0
- package/dist/client/flowPush.js +5 -1
- package/dist/client/flowReader.js +5 -5
- package/dist/client/flowResults.d.ts +11 -0
- package/dist/client/flowResults.js +42 -0
- package/dist/client/index.d.ts +3 -1
- package/dist/client/jobConversion.d.ts +3 -7
- package/dist/client/jobConversion.js +36 -33
- package/dist/client/jobConversionHelpers.d.ts +19 -3
- package/dist/client/jobConversionHelpers.js +20 -16
- package/dist/client/jobConversionTypes.d.ts +8 -0
- package/dist/client/jobDeduplication.d.ts +6 -0
- package/dist/client/jobDeduplication.js +14 -0
- package/dist/client/jobHelpers.d.ts +7 -2
- package/dist/client/jobHelpers.js +16 -8
- package/dist/client/queue/bullmqCompat.d.ts +18 -8
- package/dist/client/queue/bullmqCompat.js +39 -71
- package/dist/client/queue/deduplication.d.ts +2 -0
- package/dist/client/queue/deduplication.js +20 -11
- package/dist/client/queue/dlq.d.ts +11 -6
- package/dist/client/queue/dlq.js +57 -16
- package/dist/client/queue/dlqJobMethods.d.ts +9 -0
- package/dist/client/queue/dlqJobMethods.js +177 -0
- package/dist/client/queue/dlqOps.d.ts +2 -1
- package/dist/client/queue/dlqOps.js +4 -10
- package/dist/client/queue/dlqStats.d.ts +3 -0
- package/dist/client/queue/dlqStats.js +21 -0
- package/dist/client/queue/job-proxy/dependencies.d.ts +9 -0
- package/dist/client/queue/job-proxy/dependencies.js +67 -0
- package/dist/client/queue/job-proxy/reflection.d.ts +2 -0
- package/dist/client/queue/job-proxy/reflection.js +18 -0
- package/dist/client/queue/job-proxy/simple.d.ts +3 -0
- package/dist/client/queue/job-proxy/simple.js +316 -0
- package/dist/client/queue/job-proxy/tcp.d.ts +4 -0
- package/dist/client/queue/job-proxy/tcp.js +191 -0
- package/dist/client/queue/jobMetadata.d.ts +10 -0
- package/dist/client/queue/jobMetadata.js +24 -0
- package/dist/client/queue/jobMove.d.ts +4 -4
- package/dist/client/queue/jobMove.js +87 -24
- package/dist/client/queue/jobProxy.d.ts +4 -50
- package/dist/client/queue/jobProxy.js +3 -511
- package/dist/client/queue/operations/add/bulk.d.ts +7 -0
- package/dist/client/queue/operations/add/bulk.js +129 -0
- package/dist/client/queue/operations/add/payload.d.ts +24 -0
- package/dist/client/queue/operations/add/payload.js +85 -0
- package/dist/client/queue/operations/add/single.d.ts +3 -0
- package/dist/client/queue/operations/add/single.js +107 -0
- package/dist/client/queue/operations/add.d.ts +2 -47
- package/dist/client/queue/operations/add.js +2 -347
- package/dist/client/queue/operations/index.d.ts +1 -0
- package/dist/client/queue/operations/index.js +1 -0
- package/dist/client/queue/operations/management.d.ts +0 -4
- package/dist/client/queue/operations/management.js +35 -6
- package/dist/client/queue/operations/query.d.ts +1 -20
- package/dist/client/queue/operations/query.js +38 -116
- package/dist/client/queue/operations/queryStates.d.ts +13 -0
- package/dist/client/queue/operations/queryStates.js +32 -0
- package/dist/client/queue/operations/queryTcpPages.d.ts +14 -0
- package/dist/client/queue/operations/queryTcpPages.js +40 -0
- package/dist/client/queue/queue.d.ts +6 -189
- package/dist/client/queue/queue.js +6 -547
- package/dist/client/queue/rateLimit.d.ts +4 -4
- package/dist/client/queue/rateLimit.js +17 -8
- package/dist/client/queue/runtime/compatibility.d.ts +13 -0
- package/dist/client/queue/runtime/compatibility.js +38 -0
- package/dist/client/queue/runtime/configuration.d.ts +42 -0
- package/dist/client/queue/runtime/configuration.js +109 -0
- package/dist/client/queue/runtime/connection.d.ts +6 -0
- package/dist/client/queue/runtime/connection.js +16 -0
- package/dist/client/queue/runtime/control.d.ts +41 -0
- package/dist/client/queue/runtime/control.js +87 -0
- package/dist/client/queue/runtime/queries.d.ts +48 -0
- package/dist/client/queue/runtime/queries.js +95 -0
- package/dist/client/queue/runtime/scheduling.d.ts +33 -0
- package/dist/client/queue/runtime/scheduling.js +56 -0
- package/dist/client/queue/runtime/state.d.ts +96 -0
- package/dist/client/queue/runtime/state.js +149 -0
- package/dist/client/queue/scheduler.d.ts +2 -5
- package/dist/client/queue/scheduler.js +25 -23
- package/dist/client/queue/schedulerPagination.d.ts +7 -0
- package/dist/client/queue/schedulerPagination.js +10 -0
- package/dist/client/queue/types/add.d.ts +40 -0
- package/dist/client/queue/types/add.js +1 -0
- package/dist/client/queue/types/contexts.d.ts +33 -0
- package/dist/client/queue/types/contexts.js +5 -0
- package/dist/client/queue/types/index.d.ts +3 -0
- package/dist/client/queue/types/index.js +1 -0
- package/dist/client/queue/types/job.d.ts +50 -0
- package/dist/client/queue/types/job.js +1 -0
- package/dist/client/queue/types/runtime.d.ts +35 -0
- package/dist/client/queue/types/runtime.js +1 -0
- package/dist/client/queue/workers.d.ts +16 -8
- package/dist/client/queue/workers.js +42 -16
- package/dist/client/queue-events/tcpSubscription.d.ts +23 -0
- package/dist/client/queue-events/tcpSubscription.js +99 -0
- package/dist/client/queueGroup.d.ts +11 -0
- package/dist/client/queueGroup.js +28 -1
- package/dist/client/sandboxed/queueOps.d.ts +2 -2
- package/dist/client/sandboxed/queueOps.js +32 -5
- package/dist/client/sandboxed/runtime/dispatch.d.ts +13 -0
- package/dist/client/sandboxed/runtime/dispatch.js +186 -0
- package/dist/client/sandboxed/runtime/lifecycle.d.ts +20 -0
- package/dist/client/sandboxed/runtime/lifecycle.js +95 -0
- package/dist/client/sandboxed/runtime/log.d.ts +1 -0
- package/dist/client/sandboxed/runtime/log.js +15 -0
- package/dist/client/sandboxed/runtime/pool.d.ts +11 -0
- package/dist/client/sandboxed/runtime/pool.js +121 -0
- package/dist/client/sandboxed/runtime/recovery.d.ts +11 -0
- package/dist/client/sandboxed/runtime/recovery.js +122 -0
- package/dist/client/sandboxed/runtime/state.d.ts +39 -0
- package/dist/client/sandboxed/runtime/state.js +59 -0
- package/dist/client/sandboxed/types/index.d.ts +2 -0
- package/dist/client/sandboxed/types/index.js +1 -0
- package/dist/client/sandboxed/types/options.d.ts +27 -0
- package/dist/client/sandboxed/types/options.js +1 -0
- package/dist/client/sandboxed/types/process.d.ts +30 -0
- package/dist/client/sandboxed/types/process.js +1 -0
- package/dist/client/sandboxed/worker.d.ts +3 -85
- package/dist/client/sandboxed/worker.js +3 -557
- package/dist/client/sandboxed/wrapper.js +1 -0
- package/dist/client/tcp/client.d.ts +5 -112
- package/dist/client/tcp/client.js +5 -481
- package/dist/client/tcp/commandQueue.d.ts +23 -0
- package/dist/client/tcp/commandQueue.js +89 -0
- package/dist/client/tcp/connection.d.ts +4 -85
- package/dist/client/tcp/connection.js +3 -315
- package/dist/client/tcp/errors.d.ts +6 -0
- package/dist/client/tcp/errors.js +18 -0
- package/dist/client/tcp/runtime/commands.d.ts +9 -0
- package/dist/client/tcp/runtime/commands.js +124 -0
- package/dist/client/tcp/runtime/connectivity.d.ts +13 -0
- package/dist/client/tcp/runtime/connectivity.js +77 -0
- package/dist/client/tcp/runtime/health.d.ts +14 -0
- package/dist/client/tcp/runtime/health.js +127 -0
- package/dist/client/tcp/runtime/lifecycle.d.ts +8 -0
- package/dist/client/tcp/runtime/lifecycle.js +32 -0
- package/dist/client/tcp/runtime/state.d.ts +50 -0
- package/dist/client/tcp/runtime/state.js +45 -0
- package/dist/client/tcp/transport.d.ts +18 -0
- package/dist/client/tcp/transport.js +158 -0
- package/dist/client/tcp/types/command.d.ts +9 -0
- package/dist/client/tcp/types/command.js +1 -0
- package/dist/client/tcp/types/connection.d.ts +31 -0
- package/dist/client/tcp/types/connection.js +17 -0
- package/dist/client/tcp/types/index.d.ts +5 -0
- package/dist/client/tcp/types/index.js +1 -0
- package/dist/client/tcp/types/socket.d.ts +8 -0
- package/dist/client/tcp/types/socket.js +1 -0
- package/dist/client/tcp/types/tls.d.ts +4 -0
- package/dist/client/tcp/types/tls.js +1 -0
- package/dist/client/tcp/types.d.ts +2 -106
- package/dist/client/tcp/types.js +2 -22
- package/dist/client/types/connection.d.ts +29 -0
- package/dist/client/types/connection.js +1 -0
- package/dist/client/types/dlq.d.ts +45 -0
- package/dist/client/types/dlq.js +1 -0
- package/dist/client/types/events.d.ts +54 -0
- package/dist/client/types/events.js +1 -0
- package/dist/client/types/flow.d.ts +10 -0
- package/dist/client/types/flow.js +1 -0
- package/dist/client/types/index.d.ts +10 -0
- package/dist/client/types/index.js +1 -0
- package/dist/client/types/job.d.ts +127 -0
- package/dist/client/types/job.js +1 -0
- package/dist/client/types/metrics.d.ts +1 -0
- package/dist/client/types/metrics.js +1 -0
- package/dist/client/types/options.d.ts +62 -0
- package/dist/client/types/options.js +1 -0
- package/dist/client/types/worker.d.ts +38 -0
- package/dist/client/types/worker.js +1 -0
- package/dist/client/types.d.ts +2 -583
- package/dist/client/types.js +2 -6
- package/dist/client/worker/ackBatcher.d.ts +1 -1
- package/dist/client/worker/ackBatcher.js +17 -5
- package/dist/client/worker/ackOutcome.d.ts +8 -0
- package/dist/client/worker/ackOutcome.js +58 -0
- package/dist/client/worker/constants.d.ts +7 -0
- package/dist/client/worker/constants.js +7 -0
- package/dist/client/worker/groupConcurrency.js +3 -0
- package/dist/client/worker/handlers/completion.d.ts +28 -0
- package/dist/client/worker/handlers/completion.js +68 -0
- package/dist/client/worker/handlers/dependencies.d.ts +11 -0
- package/dist/client/worker/handlers/dependencies.js +107 -0
- package/dist/client/worker/handlers/mutations.d.ts +23 -0
- package/dist/client/worker/handlers/mutations.js +211 -0
- package/dist/client/worker/handlers/queries.d.ts +15 -0
- package/dist/client/worker/handlers/queries.js +100 -0
- package/dist/client/worker/index.d.ts +2 -2
- package/dist/client/worker/index.js +1 -1
- package/dist/client/worker/jobParser.js +4 -2
- package/dist/client/worker/processor.d.ts +2 -15
- package/dist/client/worker/processor.js +68 -125
- package/dist/client/worker/processorHandlers.d.ts +4 -65
- package/dist/client/worker/processorHandlers.js +4 -400
- package/dist/client/worker/processorOutcome.d.ts +14 -0
- package/dist/client/worker/processorOutcome.js +125 -0
- package/dist/client/worker/runtime/buffer.d.ts +8 -0
- package/dist/client/worker/runtime/buffer.js +50 -0
- package/dist/client/worker/runtime/control.d.ts +26 -0
- package/dist/client/worker/runtime/control.js +175 -0
- package/dist/client/worker/runtime/execution.d.ts +11 -0
- package/dist/client/worker/runtime/execution.js +123 -0
- package/dist/client/worker/runtime/lifecycle.d.ts +7 -0
- package/dist/client/worker/runtime/lifecycle.js +114 -0
- package/dist/client/worker/runtime/manual.d.ts +10 -0
- package/dist/client/worker/runtime/manual.js +137 -0
- package/dist/client/worker/runtime/options.d.ts +5 -0
- package/dist/client/worker/runtime/options.js +39 -0
- package/dist/client/worker/runtime/polling.d.ts +12 -0
- package/dist/client/worker/runtime/polling.js +123 -0
- package/dist/client/worker/runtime/state.d.ts +110 -0
- package/dist/client/worker/runtime/state.js +156 -0
- package/dist/client/worker/types/index.d.ts +5 -0
- package/dist/client/worker/types/index.js +1 -0
- package/dist/client/worker/types/manual.d.ts +7 -0
- package/dist/client/worker/types/manual.js +1 -0
- package/dist/client/worker/types/options.d.ts +24 -0
- package/dist/client/worker/types/options.js +1 -0
- package/dist/client/worker/types/outcome.d.ts +23 -0
- package/dist/client/worker/types/outcome.js +1 -0
- package/dist/client/worker/types/processor.d.ts +22 -0
- package/dist/client/worker/types/processor.js +1 -0
- package/dist/client/worker/types/transport.d.ts +11 -0
- package/dist/client/worker/types/transport.js +1 -0
- package/dist/client/worker/worker.d.ts +3 -160
- package/dist/client/worker/worker.js +3 -904
- package/dist/client/worker/workerRateLimiter.d.ts +5 -1
- package/dist/client/worker/workerRateLimiter.js +40 -20
- package/dist/client/worker.d.ts +1 -0
- package/dist/client/workflow/compensationChild.d.ts +2 -1
- package/dist/client/workflow/compensationChild.js +1 -1
- package/dist/client/workflow/compensationClaim.d.ts +11 -0
- package/dist/client/workflow/compensationClaim.js +30 -0
- package/dist/client/workflow/compensator.d.ts +7 -2
- package/dist/client/workflow/compensator.js +5 -11
- package/dist/client/workflow/recovery.js +25 -2
- package/dist/client/workflow/rollbackControl.js +1 -1
- package/dist/domain/job/constants.d.ts +12 -0
- package/dist/domain/job/constants.js +12 -0
- package/dist/domain/job/create.d.ts +2 -0
- package/dist/domain/job/create.js +103 -0
- package/dist/domain/job/ids.d.ts +5 -0
- package/dist/domain/job/ids.js +12 -0
- package/dist/domain/job/locks.d.ts +4 -0
- package/dist/domain/job/locks.js +23 -0
- package/dist/domain/job/payload.d.ts +18 -0
- package/dist/domain/job/payload.js +43 -0
- package/dist/domain/job/state.d.ts +8 -0
- package/dist/domain/job/state.js +51 -0
- package/dist/domain/job/terminal.d.ts +3 -0
- package/dist/domain/job/terminal.js +9 -0
- package/dist/domain/queue/dlqShard.d.ts +2 -0
- package/dist/domain/queue/dlqShard.js +34 -9
- package/dist/domain/queue/limiterManager.d.ts +11 -0
- package/dist/domain/queue/limiterManager.js +28 -0
- package/dist/domain/queue/priorityQueue.js +3 -39
- package/dist/domain/queue/priorityQueueOrder.d.ts +3 -0
- package/dist/domain/queue/priorityQueueOrder.js +21 -0
- package/dist/domain/queue/shard/dependencies.d.ts +11 -0
- package/dist/domain/queue/shard/dependencies.js +22 -0
- package/dist/domain/queue/shard/dlq.d.ts +25 -0
- package/dist/domain/queue/shard/dlq.js +71 -0
- package/dist/domain/queue/shard/keys.d.ts +18 -0
- package/dist/domain/queue/shard/keys.js +45 -0
- package/dist/domain/queue/shard/lifecycle.d.ts +10 -0
- package/dist/domain/queue/shard/lifecycle.js +43 -0
- package/dist/domain/queue/shard/limits.d.ts +24 -0
- package/dist/domain/queue/shard/limits.js +57 -0
- package/dist/domain/queue/shard/metrics.d.ts +32 -0
- package/dist/domain/queue/shard/metrics.js +72 -0
- package/dist/domain/queue/shard/state.d.ts +34 -0
- package/dist/domain/queue/shard/state.js +80 -0
- package/dist/domain/queue/shard.d.ts +5 -137
- package/dist/domain/queue/shard.js +4 -390
- package/dist/domain/queue/uniqueKeyManager.d.ts +3 -1
- package/dist/domain/queue/uniqueKeyManager.js +9 -1
- package/dist/domain/response/builders.d.ts +15 -0
- package/dist/domain/response/builders.js +39 -0
- package/dist/domain/types/command.d.ts +2 -522
- package/dist/domain/types/command.js +2 -5
- package/dist/domain/types/commands/base.d.ts +5 -0
- package/dist/domain/types/commands/base.js +1 -0
- package/dist/domain/types/commands/core.d.ts +106 -0
- package/dist/domain/types/commands/core.js +1 -0
- package/dist/domain/types/commands/cron.d.ts +36 -0
- package/dist/domain/types/commands/cron.js +1 -0
- package/dist/domain/types/commands/dashboard.d.ts +13 -0
- package/dist/domain/types/commands/dashboard.js +1 -0
- package/dist/domain/types/commands/dlq.d.ts +39 -0
- package/dist/domain/types/commands/dlq.js +1 -0
- package/dist/domain/types/commands/extended.d.ts +63 -0
- package/dist/domain/types/commands/extended.js +1 -0
- package/dist/domain/types/commands/index.d.ts +12 -0
- package/dist/domain/types/commands/index.js +12 -0
- package/dist/domain/types/commands/limits.d.ts +54 -0
- package/dist/domain/types/commands/limits.js +1 -0
- package/dist/domain/types/commands/management.d.ts +73 -0
- package/dist/domain/types/commands/management.js +1 -0
- package/dist/domain/types/commands/monitoring.d.ts +49 -0
- package/dist/domain/types/commands/monitoring.js +1 -0
- package/dist/domain/types/commands/protocol.d.ts +20 -0
- package/dist/domain/types/commands/protocol.js +1 -0
- package/dist/domain/types/commands/query.d.ts +46 -0
- package/dist/domain/types/commands/query.js +1 -0
- package/dist/domain/types/commands/union.d.ts +13 -0
- package/dist/domain/types/commands/union.js +1 -0
- package/dist/domain/types/commands/workers.d.ts +39 -0
- package/dist/domain/types/commands/workers.js +1 -0
- package/dist/domain/types/cron.d.ts +4 -2
- package/dist/domain/types/cron.js +3 -0
- package/dist/domain/types/dlq.d.ts +17 -0
- package/dist/domain/types/dlq.js +70 -14
- package/dist/domain/types/index.d.ts +2 -0
- package/dist/domain/types/index.js +1 -0
- package/dist/domain/types/job.d.ts +8 -269
- package/dist/domain/types/job.js +8 -234
- package/dist/domain/types/jobs/model.d.ts +152 -0
- package/dist/domain/types/jobs/model.js +1 -0
- package/dist/domain/types/metrics.d.ts +16 -0
- package/dist/domain/types/metrics.js +1 -0
- package/dist/domain/types/priorityQueue.d.ts +12 -0
- package/dist/domain/types/priorityQueue.js +1 -0
- package/dist/domain/types/protocol.d.ts +5 -0
- package/dist/domain/types/protocol.js +4 -0
- package/dist/domain/types/queue.d.ts +7 -0
- package/dist/domain/types/queue.js +13 -0
- package/dist/domain/types/response.d.ts +3 -192
- package/dist/domain/types/response.js +3 -101
- package/dist/domain/types/responses/model.d.ts +152 -0
- package/dist/domain/types/responses/model.js +1 -0
- package/dist/domain/types/shard.d.ts +4 -0
- package/dist/domain/types/shard.js +1 -0
- package/dist/infrastructure/cloud/cloudAgent.js +6 -0
- package/dist/infrastructure/cloud/commandHandler.d.ts +2 -41
- package/dist/infrastructure/cloud/commandHandler.js +1 -1
- package/dist/infrastructure/cloud/commands/integrations.d.ts +2 -0
- package/dist/infrastructure/cloud/commands/integrations.js +31 -0
- package/dist/infrastructure/cloud/commands/jobMapper.d.ts +56 -0
- package/dist/infrastructure/cloud/commands/jobMapper.js +72 -0
- package/dist/infrastructure/cloud/commands/jobs.d.ts +2 -0
- package/dist/infrastructure/cloud/commands/jobs.js +111 -0
- package/dist/infrastructure/cloud/commands/queues.d.ts +2 -0
- package/dist/infrastructure/cloud/commands/queues.js +126 -0
- package/dist/infrastructure/cloud/commands.d.ts +3 -10
- package/dist/infrastructure/cloud/commands.js +7 -344
- package/dist/infrastructure/cloud/snapshot/analytics.d.ts +16 -0
- package/dist/infrastructure/cloud/snapshot/analytics.js +132 -0
- package/dist/infrastructure/cloud/snapshot/collector.d.ts +24 -0
- package/dist/infrastructure/cloud/snapshot/collector.js +105 -0
- package/dist/infrastructure/cloud/snapshot/config.d.ts +5 -0
- package/dist/infrastructure/cloud/snapshot/config.js +86 -0
- package/dist/infrastructure/cloud/snapshot/jobs.d.ts +5 -0
- package/dist/infrastructure/cloud/snapshot/jobs.js +148 -0
- package/dist/infrastructure/cloud/snapshot/stalls.d.ts +3 -0
- package/dist/infrastructure/cloud/snapshot/stalls.js +34 -0
- package/dist/infrastructure/cloud/snapshotCollector.d.ts +2 -53
- package/dist/infrastructure/cloud/snapshotCollector.js +5 -107
- package/dist/infrastructure/cloud/snapshotHelpers.d.ts +5 -45
- package/dist/infrastructure/cloud/snapshotHelpers.js +4 -426
- package/dist/infrastructure/cloud/types/collector.d.ts +54 -0
- package/dist/infrastructure/cloud/types/collector.js +1 -0
- package/dist/infrastructure/cloud/types/command.d.ts +44 -0
- package/dist/infrastructure/cloud/types/command.js +1 -0
- package/dist/infrastructure/cloud/types/config.d.ts +18 -0
- package/dist/infrastructure/cloud/types/config.js +1 -0
- package/dist/infrastructure/cloud/types/event.d.ts +14 -0
- package/dist/infrastructure/cloud/types/event.js +1 -0
- package/dist/infrastructure/cloud/types/redact.d.ts +4 -0
- package/dist/infrastructure/cloud/types/redact.js +1 -0
- package/dist/infrastructure/cloud/types/snapshot.d.ts +52 -0
- package/dist/infrastructure/cloud/types/snapshot.js +1 -0
- package/dist/infrastructure/cloud/types/snapshotCore.d.ts +125 -0
- package/dist/infrastructure/cloud/types/snapshotCore.js +1 -0
- package/dist/infrastructure/cloud/types/snapshotJobs.d.ts +124 -0
- package/dist/infrastructure/cloud/types/snapshotJobs.js +1 -0
- package/dist/infrastructure/cloud/types/snapshotTelemetry.d.ts +100 -0
- package/dist/infrastructure/cloud/types/snapshotTelemetry.js +1 -0
- package/dist/infrastructure/cloud/types.d.ts +3 -445
- package/dist/infrastructure/cloud/types.js +0 -4
- package/dist/infrastructure/persistence/batchInsert.d.ts +13 -0
- package/dist/infrastructure/persistence/batchInsert.js +96 -0
- package/dist/infrastructure/persistence/jobOptionsBlob.d.ts +18 -0
- package/dist/infrastructure/persistence/jobOptionsBlob.js +56 -0
- package/dist/infrastructure/persistence/legacyNameMigration.d.ts +5 -0
- package/dist/infrastructure/persistence/legacyNameMigration.js +42 -0
- package/dist/infrastructure/persistence/migrations.d.ts +3 -0
- package/dist/infrastructure/persistence/migrations.js +120 -0
- package/dist/infrastructure/persistence/schema.d.ts +3 -5
- package/dist/infrastructure/persistence/schema.js +40 -136
- package/dist/infrastructure/persistence/sqlite/admission.d.ts +9 -0
- package/dist/infrastructure/persistence/sqlite/admission.js +34 -0
- package/dist/infrastructure/persistence/sqlite/control.d.ts +32 -0
- package/dist/infrastructure/persistence/sqlite/control.js +90 -0
- package/dist/infrastructure/persistence/sqlite/flows.d.ts +26 -0
- package/dist/infrastructure/persistence/sqlite/flows.js +167 -0
- package/dist/infrastructure/persistence/sqlite/jobs.d.ts +23 -0
- package/dist/infrastructure/persistence/sqlite/jobs.js +166 -0
- package/dist/infrastructure/persistence/sqlite/lifecycle.d.ts +6 -0
- package/dist/infrastructure/persistence/sqlite/lifecycle.js +30 -0
- package/dist/infrastructure/persistence/sqlite/mutations.d.ts +20 -0
- package/dist/infrastructure/persistence/sqlite/mutations.js +149 -0
- package/dist/infrastructure/persistence/sqlite/queries.d.ts +23 -0
- package/dist/infrastructure/persistence/sqlite/queries.js +89 -0
- package/dist/infrastructure/persistence/sqlite/records.d.ts +24 -0
- package/dist/infrastructure/persistence/sqlite/records.js +115 -0
- package/dist/infrastructure/persistence/sqlite/state.d.ts +36 -0
- package/dist/infrastructure/persistence/sqlite/state.js +207 -0
- package/dist/infrastructure/persistence/sqlite/telemetry.d.ts +16 -0
- package/dist/infrastructure/persistence/sqlite/telemetry.js +126 -0
- package/dist/infrastructure/persistence/sqlite.d.ts +5 -276
- package/dist/infrastructure/persistence/sqlite.js +3 -997
- package/dist/infrastructure/persistence/sqliteBatch.d.ts +4 -121
- package/dist/infrastructure/persistence/sqliteBatch.js +3 -422
- package/dist/infrastructure/persistence/sqliteSerializer.d.ts +6 -1
- package/dist/infrastructure/persistence/sqliteSerializer.js +33 -11
- package/dist/infrastructure/persistence/statements.d.ts +5 -1
- package/dist/infrastructure/persistence/statements.js +14 -9
- package/dist/infrastructure/persistence/types/admission.d.ts +8 -0
- package/dist/infrastructure/persistence/types/admission.js +1 -0
- package/dist/infrastructure/persistence/types/batch.d.ts +12 -0
- package/dist/infrastructure/persistence/types/batch.js +1 -0
- package/dist/infrastructure/persistence/types/sqlite.d.ts +17 -0
- package/dist/infrastructure/persistence/types/sqlite.js +1 -0
- package/dist/infrastructure/persistence/writeBuffer.d.ts +38 -0
- package/dist/infrastructure/persistence/writeBuffer.js +221 -0
- package/dist/infrastructure/scheduler/cron/execution.d.ts +12 -0
- package/dist/infrastructure/scheduler/cron/execution.js +150 -0
- package/dist/infrastructure/scheduler/cron/runtime.d.ts +31 -0
- package/dist/infrastructure/scheduler/cron/runtime.js +143 -0
- package/dist/infrastructure/scheduler/cronScheduler.d.ts +4 -117
- package/dist/infrastructure/scheduler/cronScheduler.js +3 -436
- package/dist/infrastructure/scheduler/types/cronScheduler.d.ts +16 -0
- package/dist/infrastructure/scheduler/types/cronScheduler.js +1 -0
- package/dist/infrastructure/server/bootstrap.js +3 -0
- package/dist/infrastructure/server/handler-routes/control.d.ts +8 -0
- package/dist/infrastructure/server/handler-routes/control.js +82 -0
- package/dist/infrastructure/server/handler-routes/jobs.d.ts +6 -0
- package/dist/infrastructure/server/handler-routes/jobs.js +110 -0
- package/dist/infrastructure/server/handler-routes/monitoring.d.ts +5 -0
- package/dist/infrastructure/server/handler-routes/monitoring.js +65 -0
- package/dist/infrastructure/server/handlerRoutes.d.ts +3 -26
- package/dist/infrastructure/server/handlerRoutes.js +3 -257
- package/dist/infrastructure/server/handlers/advanced/configNumbers.d.ts +2 -0
- package/dist/infrastructure/server/handlers/advanced/configNumbers.js +26 -0
- package/dist/infrastructure/server/handlers/advanced/dependencies.d.ts +15 -0
- package/dist/infrastructure/server/handlers/advanced/dependencies.js +38 -0
- package/dist/infrastructure/server/handlers/advanced/jobs.d.ts +33 -0
- package/dist/infrastructure/server/handlers/advanced/jobs.js +136 -0
- package/dist/infrastructure/server/handlers/advanced/queue.d.ts +42 -0
- package/dist/infrastructure/server/handlers/advanced/queue.js +111 -0
- package/dist/infrastructure/server/handlers/advanced.d.ts +3 -121
- package/dist/infrastructure/server/handlers/advanced.js +3 -336
- package/dist/infrastructure/server/handlers/core.d.ts +1 -4
- package/dist/infrastructure/server/handlers/core.js +37 -20
- package/dist/infrastructure/server/handlers/cron.js +9 -1
- package/dist/infrastructure/server/handlers/dlq.d.ts +3 -0
- package/dist/infrastructure/server/handlers/dlq.js +18 -4
- package/dist/infrastructure/server/handlers/flow.js +6 -1
- package/dist/infrastructure/server/handlers/introspection.d.ts +19 -0
- package/dist/infrastructure/server/handlers/introspection.js +21 -0
- package/dist/infrastructure/server/handlers/management.d.ts +8 -0
- package/dist/infrastructure/server/handlers/management.js +30 -0
- package/dist/infrastructure/server/handlers/monitoring/health.d.ts +13 -0
- package/dist/infrastructure/server/handlers/monitoring/health.js +61 -0
- package/dist/infrastructure/server/handlers/monitoring/operations.d.ts +8 -0
- package/dist/infrastructure/server/handlers/monitoring/operations.js +28 -0
- package/dist/infrastructure/server/handlers/monitoring/webhooks.d.ts +7 -0
- package/dist/infrastructure/server/handlers/monitoring/webhooks.js +56 -0
- package/dist/infrastructure/server/handlers/monitoring/workers.d.ts +6 -0
- package/dist/infrastructure/server/handlers/monitoring/workers.js +57 -0
- package/dist/infrastructure/server/handlers/monitoring.d.ts +4 -30
- package/dist/infrastructure/server/handlers/monitoring.js +4 -222
- package/dist/infrastructure/server/handlers/pushBatchValidation.d.ts +1 -1
- package/dist/infrastructure/server/handlers/pushBatchValidation.js +7 -0
- package/dist/infrastructure/server/handlers/query.js +13 -4
- package/dist/infrastructure/server/http-routes/jobAdvanced.d.ts +2 -0
- package/dist/infrastructure/server/http-routes/jobAdvanced.js +106 -0
- package/dist/infrastructure/server/http-routes/jobManagement.d.ts +2 -0
- package/dist/infrastructure/server/http-routes/jobManagement.js +74 -0
- package/dist/infrastructure/server/http-routes/queueJobs.d.ts +2 -0
- package/dist/infrastructure/server/http-routes/queueJobs.js +108 -0
- package/dist/infrastructure/server/httpRouteJobs.d.ts +1 -8
- package/dist/infrastructure/server/httpRouteJobs.js +33 -222
- package/dist/infrastructure/server/httpRouteQueues.d.ts +1 -6
- package/dist/infrastructure/server/httpRouteQueues.js +51 -217
- package/dist/infrastructure/server/httpRouteResources.js +1 -0
- package/dist/infrastructure/server/protocol/commands.d.ts +8 -0
- package/dist/infrastructure/server/protocol/commands.js +31 -0
- package/dist/infrastructure/server/protocol/frameParser.d.ts +16 -0
- package/dist/infrastructure/server/protocol/frameParser.js +65 -0
- package/dist/infrastructure/server/protocol/lineBuffer.d.ts +6 -0
- package/dist/infrastructure/server/protocol/lineBuffer.js +21 -0
- package/dist/infrastructure/server/protocol/validation.d.ts +9 -0
- package/dist/infrastructure/server/protocol/validation.js +75 -0
- package/dist/infrastructure/server/protocol.d.ts +5 -77
- package/dist/infrastructure/server/protocol.js +4 -265
- package/dist/infrastructure/server/rateLimiter.js +1 -0
- package/dist/infrastructure/server/socketWriteQueue.d.ts +1 -1
- package/dist/infrastructure/server/socketWriteQueue.js +8 -5
- package/dist/infrastructure/server/sse/constants.d.ts +5 -0
- package/dist/infrastructure/server/sse/constants.js +5 -0
- package/dist/infrastructure/server/sse/eventBuffer.d.ts +3 -0
- package/dist/infrastructure/server/sse/eventBuffer.js +21 -0
- package/dist/infrastructure/server/sseHandler.d.ts +2 -6
- package/dist/infrastructure/server/sseHandler.js +20 -96
- package/dist/infrastructure/server/tcp/clientRelease.d.ts +2 -0
- package/dist/infrastructure/server/tcp/clientRelease.js +18 -0
- package/dist/infrastructure/server/tcp/connections.d.ts +24 -0
- package/dist/infrastructure/server/tcp/connections.js +162 -0
- package/dist/infrastructure/server/tcp/constants.d.ts +3 -0
- package/dist/infrastructure/server/tcp/constants.js +3 -0
- package/dist/infrastructure/server/tcp/eventSubscriptions.d.ts +10 -0
- package/dist/infrastructure/server/tcp/eventSubscriptions.js +17 -0
- package/dist/infrastructure/server/tcp/responses.d.ts +3 -0
- package/dist/infrastructure/server/tcp/responses.js +8 -0
- package/dist/infrastructure/server/tcp.d.ts +10 -68
- package/dist/infrastructure/server/tcp.js +47 -256
- package/dist/infrastructure/server/types/protocol.d.ts +4 -0
- package/dist/infrastructure/server/types/protocol.js +1 -0
- package/dist/infrastructure/server/types/sse.d.ts +11 -0
- package/dist/infrastructure/server/types/sse.js +1 -0
- package/dist/infrastructure/server/types/tcpServer.d.ts +25 -0
- package/dist/infrastructure/server/types/tcpServer.js +1 -0
- package/dist/infrastructure/server/types/ws.d.ts +6 -0
- package/dist/infrastructure/server/types/ws.js +1 -0
- package/dist/infrastructure/server/ws/constants.d.ts +6 -0
- package/dist/infrastructure/server/ws/constants.js +130 -0
- package/dist/infrastructure/server/ws/snapshots.d.ts +4 -0
- package/dist/infrastructure/server/ws/snapshots.js +52 -0
- package/dist/infrastructure/server/ws/subscriptions.d.ts +10 -0
- package/dist/infrastructure/server/ws/subscriptions.js +39 -0
- package/dist/infrastructure/server/wsHandler.d.ts +2 -10
- package/dist/infrastructure/server/wsHandler.js +12 -237
- package/dist/mcp/adapter.d.ts +5 -403
- package/dist/mcp/adapter.js +6 -778
- package/dist/mcp/backend/embedded/base.d.ts +7 -0
- package/dist/mcp/backend/embedded/base.js +15 -0
- package/dist/mcp/backend/embedded/index.d.ts +14 -0
- package/dist/mcp/backend/embedded/index.js +22 -0
- package/dist/mcp/backend/embedded/jobs.d.ts +44 -0
- package/dist/mcp/backend/embedded/jobs.js +98 -0
- package/dist/mcp/backend/embedded/queues.d.ts +27 -0
- package/dist/mcp/backend/embedded/queues.js +84 -0
- package/dist/mcp/backend/embedded/services.d.ts +29 -0
- package/dist/mcp/backend/embedded/services.js +107 -0
- package/dist/mcp/backend/serializers.d.ts +7 -0
- package/dist/mcp/backend/serializers.js +32 -0
- package/dist/mcp/backend/tcp/base.d.ts +19 -0
- package/dist/mcp/backend/tcp/base.js +54 -0
- package/dist/mcp/backend/tcp/index.d.ts +14 -0
- package/dist/mcp/backend/tcp/index.js +20 -0
- package/dist/mcp/backend/tcp/jobs.d.ts +44 -0
- package/dist/mcp/backend/tcp/jobs.js +122 -0
- package/dist/mcp/backend/tcp/queues.d.ts +27 -0
- package/dist/mcp/backend/tcp/queues.js +89 -0
- package/dist/mcp/backend/tcp/services.d.ts +30 -0
- package/dist/mcp/backend/tcp/services.js +161 -0
- package/dist/mcp/types/adapter.d.ts +176 -0
- package/dist/mcp/types/adapter.js +1 -0
- package/dist/shared/asyncLock.d.ts +13 -0
- package/dist/shared/asyncLock.js +65 -0
- package/dist/shared/lock.d.ts +10 -72
- package/dist/shared/lock.js +7 -231
- package/dist/shared/lockError.d.ts +3 -0
- package/dist/shared/lockError.js +6 -0
- package/dist/shared/lockTimeout.d.ts +2 -0
- package/dist/shared/lockTimeout.js +2 -0
- package/dist/shared/rwLock.d.ts +22 -0
- package/dist/shared/rwLock.js +124 -0
- package/dist/shared/serialization.js +1 -0
- package/dist/shared/skipList.d.ts +0 -5
- package/dist/shared/skipList.js +10 -57
- package/dist/shared/skipListNodes.d.ts +6 -0
- package/dist/shared/skipListNodes.js +43 -0
- package/dist/shared/types/lock.d.ts +7 -0
- package/dist/shared/types/lock.js +1 -0
- package/dist/shared/types/skipList.d.ts +4 -0
- package/dist/shared/types/skipList.js +1 -0
- package/package.json +2 -1
|
@@ -1,282 +1,96 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* TCP Server
|
|
3
|
-
* Handles TCP connections with msgpack binary protocol
|
|
4
|
-
* Supports pipelining with parallel command processing
|
|
5
|
-
*/
|
|
6
|
-
import { handleCommand } from './handler';
|
|
7
|
-
import { FrameParser, FrameSizeError, createConnectionState, } from './protocol';
|
|
8
|
-
import { uuid } from '../../shared/hash';
|
|
9
1
|
import { tcpLog } from '../../shared/logger';
|
|
2
|
+
import { decodeMessagePack } from '../../shared/msgpack';
|
|
3
|
+
import { withSemaphore } from '../../shared/semaphore';
|
|
4
|
+
import { handleCommand } from './handler';
|
|
5
|
+
import { FrameSizeError } from './protocol';
|
|
10
6
|
import { getRateLimiter } from './rateLimiter';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
7
|
+
import { TcpConnectionRegistry } from './tcp/connections';
|
|
8
|
+
import { MAX_WRITE_QUEUE_BYTES, TCP_IDLE_TIMEOUT_MS } from './tcp/constants';
|
|
9
|
+
import { handleEventSubscription } from './tcp/eventSubscriptions';
|
|
10
|
+
import { serializeTcpResponse, tcpErrorResponse } from './tcp/responses';
|
|
13
11
|
import { loadTlsOptions } from './tls';
|
|
14
|
-
|
|
15
|
-
/** Max concurrent commands per connection for pipelining */
|
|
16
|
-
const MAX_CONCURRENT_PER_CONNECTION = 50;
|
|
17
|
-
/**
|
|
18
|
-
* Idle/read stall timeout (ms) for the slowloris mitigation. A connection that
|
|
19
|
-
* has STARTED a frame (partial bytes buffered) but makes no further progress
|
|
20
|
-
* toward completing it within this window is closed. Healthy connections that
|
|
21
|
-
* are simply idle (no partial frame buffered) are never affected, so long-lived
|
|
22
|
-
* idle-but-healthy clients are not disturbed. 0 disables the timeout.
|
|
23
|
-
*
|
|
24
|
-
* Implemented with a manual per-connection timer (Bun.listen has no
|
|
25
|
-
* `idleTimeout` socket option as of Bun 1.3.x, and `socket.timeout()` resets on
|
|
26
|
-
* every byte — so a slowloris that trickles one byte per window would defeat
|
|
27
|
-
* it). The manual timer is armed only while a partial frame is in progress.
|
|
28
|
-
*/
|
|
29
|
-
const TCP_IDLE_TIMEOUT_MS = Math.max(0, parseInt(Bun.env.TCP_IDLE_TIMEOUT_MS ?? '60000', 10) || 0);
|
|
30
|
-
/**
|
|
31
|
-
* Maximum bytes that may be buffered in a connection's outbound write queue
|
|
32
|
-
* before the connection is dropped. A client that stops reading while the
|
|
33
|
-
* server keeps producing responses would otherwise grow the pending queue
|
|
34
|
-
* without bound (write-side memory DoS). Generous default (64MB). 0 disables.
|
|
35
|
-
*/
|
|
36
|
-
const MAX_WRITE_QUEUE_BYTES = Math.max(0, parseInt(Bun.env.TCP_MAX_WRITE_QUEUE_BYTES ?? String(64 * 1024 * 1024), 10) || 0);
|
|
37
|
-
/**
|
|
38
|
-
* Release client jobs with retry logic and exponential backoff.
|
|
39
|
-
* Ensures jobs are not left in an inconsistent state if release fails.
|
|
40
|
-
*/
|
|
41
|
-
async function releaseClientJobsWithRetry(queueManager, clientId, maxRetries = 3) {
|
|
42
|
-
let lastError;
|
|
43
|
-
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
44
|
-
try {
|
|
45
|
-
return await queueManager.releaseClientJobs(clientId);
|
|
46
|
-
}
|
|
47
|
-
catch (err) {
|
|
48
|
-
lastError = err instanceof Error ? err : new Error(String(err));
|
|
49
|
-
// Exponential backoff: 100ms, 200ms, 400ms
|
|
50
|
-
await Bun.sleep(100 * Math.pow(2, attempt));
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
tcpLog.error('Failed to release client jobs after retries', {
|
|
54
|
-
clientId,
|
|
55
|
-
error: lastError?.message,
|
|
56
|
-
});
|
|
57
|
-
throw lastError ?? new Error('Failed to release client jobs after retries');
|
|
58
|
-
}
|
|
59
|
-
/** Serialize response to framed msgpack */
|
|
60
|
-
function serializeResponse(response) {
|
|
61
|
-
return FrameParser.frame(encodeMessagePack(response));
|
|
62
|
-
}
|
|
63
|
-
/** Error response as framed msgpack */
|
|
64
|
-
function errorResponse(message, reqId) {
|
|
65
|
-
return FrameParser.frame(encodeMessagePack({ ok: false, error: message, reqId }));
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Create and start TCP server
|
|
69
|
-
*/
|
|
12
|
+
/** Create and start the MessagePack TCP server. */
|
|
70
13
|
export function createTcpServer(queueManager, config) {
|
|
71
14
|
const authTokens = new Set(config.authTokens ?? []);
|
|
72
|
-
const
|
|
73
|
-
const idleTimeoutMs = config.idleTimeoutMs ?? TCP_IDLE_TIMEOUT_MS;
|
|
74
|
-
const maxWriteQueueBytes = config.maxWriteQueueBytes ?? MAX_WRITE_QUEUE_BYTES;
|
|
75
|
-
/** Cancel any pending stall timer for a connection. */
|
|
76
|
-
function clearStallTimer(socket) {
|
|
77
|
-
if (socket.data.stallTimer !== null) {
|
|
78
|
-
clearTimeout(socket.data.stallTimer);
|
|
79
|
-
socket.data.stallTimer = null;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
/**
|
|
83
|
-
* (Re)arm the slowloris stall timer based on parser state. The timer runs
|
|
84
|
-
* ONLY while a partial frame is buffered (a frame was started but not yet
|
|
85
|
-
* completed). It is reset on every data event that still leaves a partial
|
|
86
|
-
* frame, and cleared once the buffer drains to empty (frame completed). If it
|
|
87
|
-
* fires, the peer started a frame and then stalled -> terminate.
|
|
88
|
-
*/
|
|
89
|
-
function updateStallTimer(socket) {
|
|
90
|
-
if (idleTimeoutMs <= 0)
|
|
91
|
-
return;
|
|
92
|
-
clearStallTimer(socket);
|
|
93
|
-
if (!socket.data.frameParser.hasPartialFrame)
|
|
94
|
-
return;
|
|
95
|
-
socket.data.stallTimer = setTimeout(() => {
|
|
96
|
-
socket.data.stallTimer = null;
|
|
97
|
-
tcpLog.warn('Closing stalled connection (incomplete frame)', {
|
|
98
|
-
clientId: socket.data.state.clientId,
|
|
99
|
-
bufferedBytes: socket.data.frameParser.bufferedBytes,
|
|
100
|
-
idleTimeoutMs,
|
|
101
|
-
});
|
|
102
|
-
socket.data.writeQueue.clear();
|
|
103
|
-
socket.terminate();
|
|
104
|
-
}, idleTimeoutMs);
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Initialise the per-socket state. Idempotent: safe to call from both `open`
|
|
108
|
-
* and lazily from `data`. Under native TLS, Bun can deliver a `data` event
|
|
109
|
-
* BEFORE `open` has run (observed near-deterministically when a Worker boots
|
|
110
|
-
* its connections concurrently) — the handler would then destructure a null
|
|
111
|
-
* `socket.data` and the resulting TypeError escalates to the process-level
|
|
112
|
-
* unhandledRejection handler, taking the whole server down (a pre-auth remote
|
|
113
|
-
* DoS on an exposed TLS port). Initialising lazily preserves that first frame
|
|
114
|
-
* instead of dropping it; the guard makes a second `open` a no-op. See #108.
|
|
115
|
-
*/
|
|
116
|
-
function initConnection(socket) {
|
|
117
|
-
if (socket.data)
|
|
118
|
-
return;
|
|
119
|
-
const clientId = uuid();
|
|
120
|
-
const state = createConnectionState(clientId);
|
|
121
|
-
const abortController = new AbortController();
|
|
122
|
-
const ctx = {
|
|
123
|
-
queueManager,
|
|
124
|
-
authTokens,
|
|
125
|
-
authenticated: authTokens.size === 0, // Auto-auth if no tokens
|
|
126
|
-
clientId, // For job ownership tracking
|
|
127
|
-
signal: abortController.signal,
|
|
128
|
-
};
|
|
129
|
-
socket.data = {
|
|
130
|
-
state,
|
|
131
|
-
abortController,
|
|
132
|
-
frameParser: new FrameParser(),
|
|
133
|
-
ctx,
|
|
134
|
-
semaphore: new Semaphore(MAX_CONCURRENT_PER_CONNECTION),
|
|
135
|
-
writeQueue: new SocketWriteQueue(maxWriteQueueBytes),
|
|
136
|
-
stallTimer: null,
|
|
137
|
-
};
|
|
138
|
-
connections.set(clientId, socket);
|
|
139
|
-
queueManager.emitDashboardEvent('client:connected', { clientId, transport: 'tcp' });
|
|
140
|
-
}
|
|
15
|
+
const registry = new TcpConnectionRegistry(queueManager, authTokens, config.idleTimeoutMs ?? TCP_IDLE_TIMEOUT_MS, config.maxWriteQueueBytes ?? MAX_WRITE_QUEUE_BYTES);
|
|
141
16
|
const socketHandlers = {
|
|
142
17
|
open(socket) {
|
|
143
|
-
|
|
18
|
+
registry.init(socket);
|
|
144
19
|
},
|
|
145
20
|
async data(socket, data) {
|
|
146
|
-
|
|
147
|
-
initConnection(socket);
|
|
21
|
+
registry.init(socket);
|
|
148
22
|
const { frameParser, ctx, state, semaphore, writeQueue } = socket.data;
|
|
149
23
|
const rateLimiter = getRateLimiter();
|
|
150
24
|
let frames;
|
|
151
25
|
try {
|
|
152
|
-
// `data` is a Bun Buffer (a Uint8Array). addData copies it into its own
|
|
153
|
-
// buffer synchronously and never retains it, so the previous defensive
|
|
154
|
-
// `new Uint8Array(data)` wrapper was a redundant full copy per read.
|
|
155
26
|
frames = frameParser.addData(data);
|
|
156
27
|
}
|
|
157
|
-
catch (
|
|
158
|
-
if (
|
|
159
|
-
clearStallTimer(socket);
|
|
160
|
-
writeQueue.write(socket,
|
|
28
|
+
catch (error) {
|
|
29
|
+
if (error instanceof FrameSizeError) {
|
|
30
|
+
registry.clearStallTimer(socket);
|
|
31
|
+
writeQueue.write(socket, tcpErrorResponse(`Frame too large: ${error.requestedSize} bytes exceeds maximum ${error.maxSize}`));
|
|
161
32
|
socket.end();
|
|
162
33
|
return;
|
|
163
34
|
}
|
|
164
|
-
throw
|
|
35
|
+
throw error;
|
|
165
36
|
}
|
|
166
|
-
|
|
167
|
-
// frame is now buffered. Progress (a completed frame draining the buffer)
|
|
168
|
-
// disarms it; a started-but-unfinished frame arms it. This bounds memory
|
|
169
|
-
// held by a peer that declares a large (legal) frame then never finishes.
|
|
170
|
-
updateStallTimer(socket);
|
|
171
|
-
// Drop a connection whose outbound queue grew unbounded (client stopped
|
|
172
|
-
// reading while we keep producing responses) — bounds write-side memory.
|
|
173
|
-
const dropForWriteOverflow = () => {
|
|
174
|
-
if (writeQueue.isOverBudget) {
|
|
175
|
-
tcpLog.warn('Closing connection: write queue exceeded budget', {
|
|
176
|
-
clientId: state.clientId,
|
|
177
|
-
queuedBytes: writeQueue.bytesQueued,
|
|
178
|
-
});
|
|
179
|
-
clearStallTimer(socket);
|
|
180
|
-
writeQueue.clear();
|
|
181
|
-
socket.terminate();
|
|
182
|
-
return true;
|
|
183
|
-
}
|
|
184
|
-
return false;
|
|
185
|
-
};
|
|
186
|
-
// Process frames in parallel for pipelining support
|
|
187
|
-
// Each command is processed with semaphore-controlled concurrency
|
|
37
|
+
registry.updateStallTimer(socket);
|
|
188
38
|
const processFrame = async (frame) => {
|
|
189
|
-
let
|
|
39
|
+
let command;
|
|
190
40
|
try {
|
|
191
|
-
|
|
41
|
+
command = decodeMessagePack(frame);
|
|
192
42
|
}
|
|
193
43
|
catch {
|
|
194
|
-
// Invalid
|
|
195
|
-
// carry a trustworthy reqId because msgpack decoding failed.
|
|
44
|
+
// Invalid frames still consume protocol quota.
|
|
196
45
|
}
|
|
197
|
-
const
|
|
46
|
+
const requestId = typeof command?.reqId === 'string' ? command.reqId : undefined;
|
|
198
47
|
if (!rateLimiter.isAllowed(state.clientId)) {
|
|
199
48
|
ctx.queueManager.emitDashboardEvent('ratelimit:hit', { clientId: state.clientId });
|
|
200
|
-
writeQueue.write(socket,
|
|
201
|
-
dropForWriteOverflow();
|
|
49
|
+
writeQueue.write(socket, tcpErrorResponse('Rate limit exceeded', requestId));
|
|
50
|
+
registry.dropForWriteOverflow(socket);
|
|
202
51
|
return;
|
|
203
52
|
}
|
|
204
|
-
if (!
|
|
205
|
-
writeQueue.write(socket,
|
|
206
|
-
dropForWriteOverflow();
|
|
53
|
+
if (!command) {
|
|
54
|
+
writeQueue.write(socket, tcpErrorResponse('Invalid command format'));
|
|
55
|
+
registry.dropForWriteOverflow(socket);
|
|
207
56
|
return;
|
|
208
57
|
}
|
|
209
|
-
if (!cmd
|
|
210
|
-
writeQueue.write(socket,
|
|
211
|
-
dropForWriteOverflow();
|
|
58
|
+
if (!command.cmd) {
|
|
59
|
+
writeQueue.write(socket, tcpErrorResponse('Invalid command', requestId));
|
|
60
|
+
registry.dropForWriteOverflow(socket);
|
|
212
61
|
return;
|
|
213
62
|
}
|
|
214
|
-
// Process with concurrency limit
|
|
215
63
|
await withSemaphore(semaphore, async () => {
|
|
216
64
|
try {
|
|
217
|
-
const response =
|
|
218
|
-
|
|
219
|
-
|
|
65
|
+
const response = command.cmd === 'SubscribeEvents' || command.cmd === 'UnsubscribeEvents'
|
|
66
|
+
? handleEventSubscription(command, socket, registry)
|
|
67
|
+
: await handleCommand(command, ctx);
|
|
68
|
+
writeQueue.write(socket, serializeTcpResponse(response));
|
|
69
|
+
registry.dropForWriteOverflow(socket);
|
|
220
70
|
}
|
|
221
|
-
catch (
|
|
222
|
-
const raw =
|
|
71
|
+
catch (error) {
|
|
72
|
+
const raw = error instanceof Error ? error.message : 'Unknown error';
|
|
223
73
|
const message = raw.includes('SQLITE') || raw.includes('database') ? 'Internal server error' : raw;
|
|
224
|
-
writeQueue.write(socket,
|
|
225
|
-
dropForWriteOverflow();
|
|
74
|
+
writeQueue.write(socket, tcpErrorResponse(message, command.reqId));
|
|
75
|
+
registry.dropForWriteOverflow(socket);
|
|
226
76
|
}
|
|
227
77
|
});
|
|
228
78
|
};
|
|
229
|
-
// Process all frames in parallel (client uses reqId to match responses)
|
|
230
79
|
await Promise.all(frames.map(processFrame));
|
|
231
80
|
},
|
|
232
81
|
close(socket) {
|
|
233
|
-
|
|
234
|
-
// (e.g. TLS handshake aborted) — nothing to release. #108
|
|
235
|
-
if (!socket.data)
|
|
236
|
-
return;
|
|
237
|
-
socket.data.abortController.abort();
|
|
238
|
-
const clientId = socket.data.state.clientId;
|
|
239
|
-
// Cancel the slowloris stall timer and drop any buffered-but-unwritten
|
|
240
|
-
// bytes; the socket is gone.
|
|
241
|
-
clearStallTimer(socket);
|
|
242
|
-
socket.data.writeQueue.clear();
|
|
243
|
-
connections.delete(clientId);
|
|
244
|
-
getRateLimiter().removeClient(clientId);
|
|
245
|
-
queueManager.unregisterWorkersByClientId(clientId);
|
|
246
|
-
queueManager.emitDashboardEvent('client:disconnected', { clientId, transport: 'tcp' });
|
|
247
|
-
// Release all jobs owned by this client back to queue with retry logic
|
|
248
|
-
releaseClientJobsWithRetry(queueManager, clientId)
|
|
249
|
-
.then(() => {
|
|
250
|
-
// Jobs released successfully
|
|
251
|
-
})
|
|
252
|
-
.catch((err) => {
|
|
253
|
-
// After all retries failed, fall back to a force-release that
|
|
254
|
-
// unconditionally clears client tracking (prevents Map leak) and
|
|
255
|
-
// resets heartbeats so the stall detector recovers any orphaned
|
|
256
|
-
// 'active' jobs on its next tick.
|
|
257
|
-
const touched = queueManager.forceReleaseClientJobs(clientId);
|
|
258
|
-
tcpLog.error('Client jobs release failed; fell back to force-release', {
|
|
259
|
-
clientId,
|
|
260
|
-
error: String(err),
|
|
261
|
-
forcedJobs: touched,
|
|
262
|
-
note: 'Stall detector will recover orphaned active jobs on next tick',
|
|
263
|
-
});
|
|
264
|
-
});
|
|
82
|
+
registry.close(socket);
|
|
265
83
|
},
|
|
266
84
|
error(_socket, error) {
|
|
267
85
|
tcpLog.error('Connection error', { error: error.message });
|
|
268
86
|
},
|
|
269
87
|
drain(socket) {
|
|
270
|
-
// Can fire before per-socket state is initialised under TLS. #108
|
|
271
88
|
if (!socket.data)
|
|
272
89
|
return;
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
socket.data.writeQueue.flush(socket);
|
|
90
|
+
if (!socket.data.writeQueue.flush(socket))
|
|
91
|
+
socket.terminate();
|
|
276
92
|
},
|
|
277
93
|
};
|
|
278
|
-
// Create TCP server (validate TLS files BEFORE binding the port, so a bad
|
|
279
|
-
// path doesn't leave a half-started listener behind)
|
|
280
94
|
const tlsOptions = config.tls ? loadTlsOptions(config.tls) : undefined;
|
|
281
95
|
const server = Bun.listen({
|
|
282
96
|
hostname: config.hostname ?? '0.0.0.0',
|
|
@@ -286,40 +100,17 @@ export function createTcpServer(queueManager, config) {
|
|
|
286
100
|
});
|
|
287
101
|
return {
|
|
288
102
|
server,
|
|
289
|
-
connections,
|
|
290
|
-
/**
|
|
291
|
-
* Raw Bun socket handlers. Exposed for tests that need to drive the socket
|
|
292
|
-
* lifecycle directly (e.g. a `data` event arriving before `open` under TLS,
|
|
293
|
-
* #108) — production code goes through Bun.listen above.
|
|
294
|
-
*/
|
|
103
|
+
connections: registry.connections,
|
|
295
104
|
_socketHandlers: socketHandlers,
|
|
296
|
-
/** Get connection count */
|
|
297
105
|
getConnectionCount() {
|
|
298
|
-
return connections.size;
|
|
106
|
+
return registry.connections.size;
|
|
299
107
|
},
|
|
300
|
-
/** Broadcast to all connections */
|
|
301
108
|
broadcast(message) {
|
|
302
|
-
|
|
303
|
-
for (const socket of connections.values()) {
|
|
304
|
-
// Each connection writes through its own backpressure-aware queue so a
|
|
305
|
-
// slow reader buffers (in order) instead of dropping frame tail bytes.
|
|
306
|
-
socket.data.writeQueue.write(socket, frame);
|
|
307
|
-
// Drop any reader that has fallen too far behind (write-side bound).
|
|
308
|
-
if (socket.data.writeQueue.isOverBudget) {
|
|
309
|
-
clearStallTimer(socket);
|
|
310
|
-
socket.data.writeQueue.clear();
|
|
311
|
-
socket.terminate();
|
|
312
|
-
}
|
|
313
|
-
}
|
|
109
|
+
registry.broadcast(message);
|
|
314
110
|
},
|
|
315
|
-
/** Stop the server */
|
|
316
111
|
stop() {
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
clearStallTimer(socket);
|
|
320
|
-
socket.end();
|
|
321
|
-
}
|
|
322
|
-
connections.clear();
|
|
112
|
+
registry.closeAll();
|
|
113
|
+
server.stop(true);
|
|
323
114
|
},
|
|
324
115
|
};
|
|
325
116
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { FrameParser } from '../protocol';
|
|
2
|
+
import type { ConnectionState } from './protocol';
|
|
3
|
+
import type { HandlerContext } from '../types';
|
|
4
|
+
import type { Semaphore } from '../../../shared/semaphore';
|
|
5
|
+
import type { SocketWriteQueue } from '../socketWriteQueue';
|
|
6
|
+
import type { TlsServerOptions } from '../tls';
|
|
7
|
+
export interface TcpServerConfig {
|
|
8
|
+
port?: number;
|
|
9
|
+
hostname?: string;
|
|
10
|
+
authTokens?: string[];
|
|
11
|
+
idleTimeoutMs?: number;
|
|
12
|
+
maxWriteQueueBytes?: number;
|
|
13
|
+
tls?: TlsServerOptions;
|
|
14
|
+
}
|
|
15
|
+
export interface TcpConnectionData {
|
|
16
|
+
state: ConnectionState;
|
|
17
|
+
abortController: AbortController;
|
|
18
|
+
frameParser: FrameParser;
|
|
19
|
+
ctx: HandlerContext;
|
|
20
|
+
semaphore: Semaphore;
|
|
21
|
+
writeQueue: SocketWriteQueue;
|
|
22
|
+
stallTimer: ReturnType<typeof setTimeout> | null;
|
|
23
|
+
/** A dedicated event connection may own exactly one queue subscription. */
|
|
24
|
+
eventQueue: string | null;
|
|
25
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const textDecoder: TextDecoder;
|
|
2
|
+
export declare const MAX_WS_CLIENTS = 1000;
|
|
3
|
+
export declare const WS_BACKPRESSURE_BYTES: number;
|
|
4
|
+
export declare const WS_EVENT_MAP: Record<string, string>;
|
|
5
|
+
export declare const VALID_WS_PATTERNS: Set<string>;
|
|
6
|
+
export declare function matchesWsSubscription(event: string, subscriptions: Set<string>): boolean;
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
export const textDecoder = new TextDecoder();
|
|
2
|
+
export const MAX_WS_CLIENTS = 1000;
|
|
3
|
+
export const WS_BACKPRESSURE_BYTES = 1024 * 1024;
|
|
4
|
+
export const WS_EVENT_MAP = {
|
|
5
|
+
pushed: 'job:pushed',
|
|
6
|
+
pulled: 'job:active',
|
|
7
|
+
completed: 'job:completed',
|
|
8
|
+
failed: 'job:failed',
|
|
9
|
+
progress: 'job:progress',
|
|
10
|
+
stalled: 'job:stalled',
|
|
11
|
+
removed: 'job:removed',
|
|
12
|
+
delayed: 'job:delayed',
|
|
13
|
+
duplicated: 'job:duplicated',
|
|
14
|
+
retried: 'job:retried',
|
|
15
|
+
'waiting-children': 'job:waiting-children',
|
|
16
|
+
drained: 'queue:drained',
|
|
17
|
+
};
|
|
18
|
+
export const VALID_WS_PATTERNS = new Set([
|
|
19
|
+
'*',
|
|
20
|
+
'job:pushed',
|
|
21
|
+
'job:active',
|
|
22
|
+
'job:completed',
|
|
23
|
+
'job:failed',
|
|
24
|
+
'job:removed',
|
|
25
|
+
'job:promoted',
|
|
26
|
+
'job:progress',
|
|
27
|
+
'job:delayed',
|
|
28
|
+
'job:stalled',
|
|
29
|
+
'job:retried',
|
|
30
|
+
'job:discarded',
|
|
31
|
+
'job:priority-changed',
|
|
32
|
+
'job:data-updated',
|
|
33
|
+
'job:delay-changed',
|
|
34
|
+
'job:timeout',
|
|
35
|
+
'job:lock-expired',
|
|
36
|
+
'job:deduplicated',
|
|
37
|
+
'job:waiting-children',
|
|
38
|
+
'job:dependencies-resolved',
|
|
39
|
+
'job:moved-to-delayed',
|
|
40
|
+
'job:expired',
|
|
41
|
+
'job:*',
|
|
42
|
+
'queue:created',
|
|
43
|
+
'queue:removed',
|
|
44
|
+
'queue:paused',
|
|
45
|
+
'queue:resumed',
|
|
46
|
+
'queue:drained',
|
|
47
|
+
'queue:cleaned',
|
|
48
|
+
'queue:obliterated',
|
|
49
|
+
'queue:counts',
|
|
50
|
+
'queue:idle',
|
|
51
|
+
'queue:threshold',
|
|
52
|
+
'queue:*',
|
|
53
|
+
'dlq:added',
|
|
54
|
+
'dlq:retried',
|
|
55
|
+
'dlq:retry-all',
|
|
56
|
+
'dlq:purged',
|
|
57
|
+
'dlq:auto-retried',
|
|
58
|
+
'dlq:expired',
|
|
59
|
+
'dlq:*',
|
|
60
|
+
'flow:completed',
|
|
61
|
+
'flow:failed',
|
|
62
|
+
'flow:*',
|
|
63
|
+
'cron:created',
|
|
64
|
+
'cron:updated',
|
|
65
|
+
'cron:deleted',
|
|
66
|
+
'cron:fired',
|
|
67
|
+
'cron:missed',
|
|
68
|
+
'cron:skipped',
|
|
69
|
+
'cron:*',
|
|
70
|
+
'worker:connected',
|
|
71
|
+
'worker:disconnected',
|
|
72
|
+
'worker:heartbeat',
|
|
73
|
+
'worker:idle',
|
|
74
|
+
'worker:removed-stale',
|
|
75
|
+
'worker:overloaded',
|
|
76
|
+
'worker:error',
|
|
77
|
+
'worker:*',
|
|
78
|
+
'ratelimit:set',
|
|
79
|
+
'ratelimit:cleared',
|
|
80
|
+
'ratelimit:hit',
|
|
81
|
+
'ratelimit:rejected',
|
|
82
|
+
'concurrency:set',
|
|
83
|
+
'concurrency:cleared',
|
|
84
|
+
'concurrency:rejected',
|
|
85
|
+
'ratelimit:*',
|
|
86
|
+
'concurrency:*',
|
|
87
|
+
'webhook:added',
|
|
88
|
+
'webhook:removed',
|
|
89
|
+
'webhook:fired',
|
|
90
|
+
'webhook:failed',
|
|
91
|
+
'webhook:enabled',
|
|
92
|
+
'webhook:disabled',
|
|
93
|
+
'webhook:*',
|
|
94
|
+
'batch:pushed',
|
|
95
|
+
'batch:pulled',
|
|
96
|
+
'batch:*',
|
|
97
|
+
'client:connected',
|
|
98
|
+
'client:disconnected',
|
|
99
|
+
'client:*',
|
|
100
|
+
'auth:failed',
|
|
101
|
+
'auth:*',
|
|
102
|
+
'cleanup:orphans-removed',
|
|
103
|
+
'cleanup:stale-deps-removed',
|
|
104
|
+
'cleanup:*',
|
|
105
|
+
'health:status',
|
|
106
|
+
'health:*',
|
|
107
|
+
'stats:snapshot',
|
|
108
|
+
'stats:*',
|
|
109
|
+
'storage:status',
|
|
110
|
+
'storage:backup-started',
|
|
111
|
+
'storage:backup-completed',
|
|
112
|
+
'storage:backup-failed',
|
|
113
|
+
'storage:size-warning',
|
|
114
|
+
'storage:*',
|
|
115
|
+
'server:started',
|
|
116
|
+
'server:shutdown',
|
|
117
|
+
'server:recovered',
|
|
118
|
+
'server:memory-warning',
|
|
119
|
+
'server:*',
|
|
120
|
+
'memory:compacted',
|
|
121
|
+
'memory:*',
|
|
122
|
+
'config:stall-changed',
|
|
123
|
+
'config:dlq-changed',
|
|
124
|
+
'config:*',
|
|
125
|
+
]);
|
|
126
|
+
export function matchesWsSubscription(event, subscriptions) {
|
|
127
|
+
if (subscriptions.has('*') || subscriptions.has(event))
|
|
128
|
+
return true;
|
|
129
|
+
return subscriptions.has(`${event.split(':')[0]}:*`);
|
|
130
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { QueueManager } from '../../../application/queueManager';
|
|
2
|
+
export declare function buildStatsSnapshot(queueManager: QueueManager): Record<string, unknown>;
|
|
3
|
+
export declare function buildHealthSnapshot(queueManager: QueueManager, connectionCount: number, connectionType?: 'ws' | 'sse'): Record<string, unknown>;
|
|
4
|
+
export declare function buildStorageSnapshot(queueManager: QueueManager): Record<string, unknown>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { throughputTracker } from '../../../application/throughputTracker';
|
|
2
|
+
export function buildStatsSnapshot(queueManager) {
|
|
3
|
+
const stats = queueManager.getStats();
|
|
4
|
+
const rates = throughputTracker.getRates();
|
|
5
|
+
const perQueue = queueManager.getPerQueueStats();
|
|
6
|
+
const workerStats = queueManager.workerManager.getStats();
|
|
7
|
+
const queues = {};
|
|
8
|
+
for (const [name, value] of perQueue) {
|
|
9
|
+
queues[name] = {
|
|
10
|
+
waiting: value.waiting ?? 0,
|
|
11
|
+
active: value.active ?? 0,
|
|
12
|
+
delayed: value.delayed ?? 0,
|
|
13
|
+
dlq: value.dlq ?? 0,
|
|
14
|
+
paused: queueManager.isPaused(name),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
waiting: stats.waiting,
|
|
19
|
+
active: stats.active,
|
|
20
|
+
delayed: stats.delayed,
|
|
21
|
+
completed: stats.completed,
|
|
22
|
+
dlq: stats.dlq,
|
|
23
|
+
totalPushed: Number(stats.totalPushed),
|
|
24
|
+
totalCompleted: Number(stats.totalCompleted),
|
|
25
|
+
totalFailed: Number(stats.totalFailed),
|
|
26
|
+
pushPerSec: rates.pushPerSec,
|
|
27
|
+
pullPerSec: rates.pullPerSec,
|
|
28
|
+
uptime: stats.uptime,
|
|
29
|
+
queues,
|
|
30
|
+
workers: { total: workerStats.total, active: workerStats.active },
|
|
31
|
+
cronJobs: queueManager.listCrons().length,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function buildHealthSnapshot(queueManager, connectionCount, connectionType = 'ws') {
|
|
35
|
+
const memory = process.memoryUsage();
|
|
36
|
+
const storage = queueManager.getStorageStatus();
|
|
37
|
+
return {
|
|
38
|
+
ok: !storage.diskFull,
|
|
39
|
+
uptime: Math.floor(process.uptime()),
|
|
40
|
+
memory: {
|
|
41
|
+
rss: Math.round(memory.rss / 1024 / 1024),
|
|
42
|
+
heapUsed: Math.round(memory.heapUsed / 1024 / 1024),
|
|
43
|
+
},
|
|
44
|
+
connections: { [connectionType]: connectionCount },
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function buildStorageSnapshot(queueManager) {
|
|
48
|
+
return {
|
|
49
|
+
collections: queueManager.getMemoryStats(),
|
|
50
|
+
diskFull: queueManager.getStorageStatus().diskFull,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ServerWebSocket } from 'bun';
|
|
2
|
+
import type { WsData } from '../types/ws';
|
|
3
|
+
export declare function handleWsSubscribe(websocket: ServerWebSocket<WsData>, command: {
|
|
4
|
+
events?: string[];
|
|
5
|
+
reqId?: string;
|
|
6
|
+
}): void;
|
|
7
|
+
export declare function handleWsUnsubscribe(websocket: ServerWebSocket<WsData>, command: {
|
|
8
|
+
events?: string[];
|
|
9
|
+
reqId?: string;
|
|
10
|
+
}): void;
|