bunqueue 2.8.54 → 2.8.57
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 -442
- package/dist/application/cleanupTasks.js +1 -0
- package/dist/application/clientTracking.js +2 -0
- package/dist/application/contextFactory.d.ts +13 -90
- package/dist/application/contextFactory.js +8 -0
- package/dist/application/dependencyResultTracker.d.ts +1 -0
- package/dist/application/dependencyResultTracker.js +3 -0
- package/dist/application/dlqManager.d.ts +2 -8
- package/dist/application/dlqManager.js +33 -162
- package/dist/application/dlqRetry.d.ts +12 -0
- package/dist/application/dlqRetry.js +97 -0
- package/dist/application/lockManager.js +21 -1
- 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 +10 -3
- 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 +44 -7
- 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 -400
- package/dist/application/queueManager.js +3 -1922
- 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 +6 -1
- 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.js → types/config.js} +3 -4
- 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/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 +31 -16
- 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 +0 -4
- package/dist/client/jobConversion.js +32 -33
- package/dist/client/jobConversionHelpers.d.ts +18 -2
- package/dist/client/jobConversionHelpers.js +17 -10
- package/dist/client/jobConversionTypes.d.ts +5 -1
- package/dist/client/jobHelpers.d.ts +7 -2
- package/dist/client/jobHelpers.js +16 -8
- package/dist/client/queue/dlq.js +12 -14
- package/dist/client/queue/dlqJobMethods.js +11 -10
- package/dist/client/queue/dlqOps.js +2 -8
- 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 +82 -24
- package/dist/client/queue/jobProxy.d.ts +4 -50
- package/dist/client/queue/jobProxy.js +3 -516
- 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 -364
- package/dist/client/queue/operations/management.js +2 -1
- package/dist/client/queue/operations/query.js +20 -63
- package/dist/client/queue/queue.d.ts +6 -192
- package/dist/client/queue/queue.js +6 -559
- 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/{queueTypes.d.ts → types/contexts.d.ts} +2 -2
- 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 +4 -8
- package/dist/client/queue/workers.js +22 -14
- package/dist/client/queue-events/tcpSubscription.d.ts +23 -0
- package/dist/client/queue-events/tcpSubscription.js +99 -0
- 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/{types.js → constants.js} +0 -6
- 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 +67 -124
- package/dist/client/worker/processorHandlers.d.ts +4 -61
- package/dist/client/worker/processorHandlers.js +4 -398
- 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 -928
- 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/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 -145
- package/dist/domain/queue/shard.js +4 -409
- 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 -555
- 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 +2 -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 -280
- package/dist/infrastructure/persistence/sqlite.js +3 -1013
- 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 -270
- 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/flow.js +6 -1
- package/dist/infrastructure/server/handlers/introspection.js +1 -1
- 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 +12 -3
- 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
- package/dist/application/types.d.ts +0 -148
- package/dist/client/sandboxed/types.d.ts +0 -79
- package/dist/client/sandboxed/types.js +0 -5
- package/dist/client/worker/types.d.ts +0 -50
- /package/dist/client/queue/{queueTypes.js → types/contexts.js} +0 -0
|
@@ -1,437 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* Uses min-heap for O(k log n) tick instead of O(n) full scan
|
|
5
|
-
* Event-driven: uses precise setTimeout to wake exactly when the next cron is due
|
|
6
|
-
*/
|
|
7
|
-
import { createCronJob, isAtLimit } from '../../domain/types/cron';
|
|
8
|
-
import { validateCronExpression, getNextCronRun, getNextIntervalRun, expandCronShortcut, } from './cronParser';
|
|
9
|
-
import { cronLog } from '../../shared/logger';
|
|
10
|
-
import { MinHeap } from '../../shared/minHeap';
|
|
11
|
-
/** Safety fallback interval (60s) - catches edge cases like timer drift */
|
|
12
|
-
const SAFETY_FALLBACK_MS = 60_000;
|
|
13
|
-
/**
|
|
14
|
-
* Cron Scheduler
|
|
15
|
-
* Event-driven: wakes exactly when the next cron is due via setTimeout
|
|
16
|
-
* Safety fallback: setInterval(60s) catches missed events
|
|
17
|
-
* Optimized with min-heap for O(k log n) tick where k = due crons
|
|
18
|
-
* Uses lazy deletion with generation numbers for O(1) remove
|
|
19
|
-
*/
|
|
20
|
-
export class CronScheduler {
|
|
21
|
-
/** Map for O(1) lookup by name with generation tracking */
|
|
22
|
-
cronJobs = new Map();
|
|
23
|
-
/** Min-heap ordered by nextRun for O(k log n) tick */
|
|
24
|
-
cronHeap = new MinHeap((a, b) => a.cron.nextRun - b.cron.nextRun);
|
|
25
|
-
/** Current generation counter */
|
|
26
|
-
generation = 0;
|
|
27
|
-
/** Precise timer targeting the next cron's nextRun */
|
|
28
|
-
nextTimer = null;
|
|
29
|
-
/** Safety fallback interval (60s) */
|
|
30
|
-
safetyInterval = null;
|
|
31
|
-
/** Whether the scheduler is running */
|
|
32
|
-
started = false;
|
|
33
|
-
pushJob = null;
|
|
34
|
-
persistCron = null;
|
|
35
|
-
hasWorkers = null;
|
|
36
|
-
dashboardEmit = null;
|
|
37
|
-
/** Track last fire time per cron for overlap detection */
|
|
38
|
-
lastFiredAt = new Map();
|
|
39
|
-
// Accept config for backward compatibility (no longer used internally)
|
|
40
|
-
constructor(_config) {
|
|
41
|
-
// noop - scheduler now uses precise setTimeout instead of configurable interval
|
|
42
|
-
void _config;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Set the push job callback
|
|
46
|
-
*/
|
|
47
|
-
setPushCallback(callback) {
|
|
48
|
-
this.pushJob = callback;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Set the persist cron callback for saving state after execution
|
|
52
|
-
*/
|
|
53
|
-
setPersistCallback(callback) {
|
|
54
|
-
this.persistCron = callback;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Set the worker check callback for skipIfNoWorker
|
|
58
|
-
*/
|
|
59
|
-
setWorkerCheckCallback(callback) {
|
|
60
|
-
this.hasWorkers = callback;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Set the dashboard event emitter callback
|
|
64
|
-
*/
|
|
65
|
-
setDashboardEmit(callback) {
|
|
66
|
-
this.dashboardEmit = callback;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Start the scheduler
|
|
70
|
-
* Uses precise setTimeout for the fast path + 60s safety fallback
|
|
71
|
-
*/
|
|
72
|
-
start() {
|
|
73
|
-
if (this.started)
|
|
74
|
-
return;
|
|
75
|
-
this.started = true;
|
|
76
|
-
// Safety fallback: tick every 60s as last-resort for missed events
|
|
77
|
-
this.safetyInterval = setInterval(() => {
|
|
78
|
-
void this.tick();
|
|
79
|
-
}, SAFETY_FALLBACK_MS);
|
|
80
|
-
// Schedule precise timer for the next due cron
|
|
81
|
-
this.scheduleNext();
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Stop the scheduler
|
|
85
|
-
*/
|
|
86
|
-
stop() {
|
|
87
|
-
this.started = false;
|
|
88
|
-
if (this.nextTimer !== null) {
|
|
89
|
-
clearTimeout(this.nextTimer);
|
|
90
|
-
this.nextTimer = null;
|
|
91
|
-
}
|
|
92
|
-
if (this.safetyInterval !== null) {
|
|
93
|
-
clearInterval(this.safetyInterval);
|
|
94
|
-
this.safetyInterval = null;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Add a cron job
|
|
99
|
-
*/
|
|
100
|
-
add(input) {
|
|
101
|
-
// Validate
|
|
102
|
-
if (!input.schedule && !input.repeatEvery) {
|
|
103
|
-
throw new Error('Cron job must have either schedule or repeatEvery');
|
|
104
|
-
}
|
|
105
|
-
if (input.schedule) {
|
|
106
|
-
const expanded = expandCronShortcut(input.schedule);
|
|
107
|
-
const error = validateCronExpression(expanded, input.timezone);
|
|
108
|
-
if (error) {
|
|
109
|
-
throw new Error(`Invalid cron expression: ${error}`);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
// Calculate next run
|
|
113
|
-
const now = Date.now();
|
|
114
|
-
let nextRun;
|
|
115
|
-
if (input.schedule) {
|
|
116
|
-
const expanded = expandCronShortcut(input.schedule);
|
|
117
|
-
nextRun = getNextCronRun(expanded, now, input.timezone);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
nextRun = getNextIntervalRun(input.repeatEvery, now);
|
|
121
|
-
}
|
|
122
|
-
// Create cron job with generation tracking
|
|
123
|
-
const cron = createCronJob(input, nextRun);
|
|
124
|
-
// Preserve existing executions count when upserting
|
|
125
|
-
const existing = this.cronJobs.get(cron.name);
|
|
126
|
-
if (existing) {
|
|
127
|
-
cron.executions = existing.cron.executions;
|
|
128
|
-
// Reset per-name overlap tracking on upsert: the redefined cron starts
|
|
129
|
-
// fresh and must not be blocked by the previous definition's last fire (H10)
|
|
130
|
-
this.lastFiredAt.delete(cron.name);
|
|
131
|
-
}
|
|
132
|
-
// Handle immediately option: set nextRun to now so it fires on next tick
|
|
133
|
-
// Only on first creation, not on upsert (otherwise it overrides skipMissedOnRestart)
|
|
134
|
-
if (input.immediately && !existing) {
|
|
135
|
-
cron.nextRun = Date.now();
|
|
136
|
-
}
|
|
137
|
-
const gen = this.generation++;
|
|
138
|
-
this.cronJobs.set(cron.name, { cron, generation: gen });
|
|
139
|
-
this.cronHeap.push({ cron, generation: gen });
|
|
140
|
-
// Reschedule if this cron might be sooner than current timer
|
|
141
|
-
if (this.started) {
|
|
142
|
-
this.scheduleNext();
|
|
143
|
-
}
|
|
144
|
-
return cron;
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Remove a cron job - O(1) with lazy deletion
|
|
148
|
-
* The heap entry becomes stale and will be skipped in tick()
|
|
149
|
-
*/
|
|
150
|
-
remove(name) {
|
|
151
|
-
const entry = this.cronJobs.get(name);
|
|
152
|
-
if (!entry)
|
|
153
|
-
return false;
|
|
154
|
-
// Just remove from map - heap entry becomes stale (lazy deletion)
|
|
155
|
-
this.cronJobs.delete(name);
|
|
156
|
-
// Clear per-name overlap tracking so a future cron re-added with the same
|
|
157
|
-
// name isn't blocked by this cron's stale last-fire timestamp (fixes H10)
|
|
158
|
-
this.lastFiredAt.delete(name);
|
|
159
|
-
// Reschedule in case removed cron was the next timer target
|
|
160
|
-
if (this.started) {
|
|
161
|
-
this.scheduleNext();
|
|
162
|
-
}
|
|
163
|
-
return true;
|
|
164
|
-
}
|
|
165
|
-
/**
|
|
166
|
-
* Get a cron job by name
|
|
167
|
-
*/
|
|
168
|
-
get(name) {
|
|
169
|
-
return this.cronJobs.get(name)?.cron;
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* List all cron jobs
|
|
173
|
-
*/
|
|
174
|
-
list() {
|
|
175
|
-
return Array.from(this.cronJobs.values()).map((e) => e.cron);
|
|
176
|
-
}
|
|
177
|
-
/**
|
|
178
|
-
* Load cron jobs from storage
|
|
179
|
-
*/
|
|
180
|
-
load(crons) {
|
|
181
|
-
const now = Date.now();
|
|
182
|
-
const entries = [];
|
|
183
|
-
for (const cron of crons) {
|
|
184
|
-
// Recalculate past nextRun to the future on restart (fixes #73)
|
|
185
|
-
// Default: always skip missed crons unless explicitly opted out
|
|
186
|
-
if ((cron.skipMissedOnRestart || cron.skipIfNoWorker) && cron.nextRun < now) {
|
|
187
|
-
if (cron.schedule) {
|
|
188
|
-
cron.nextRun = getNextCronRun(cron.schedule, now, cron.timezone ?? undefined);
|
|
189
|
-
}
|
|
190
|
-
else if (cron.repeatEvery) {
|
|
191
|
-
cron.nextRun = getNextIntervalRun(cron.repeatEvery, now);
|
|
192
|
-
}
|
|
193
|
-
// Persist the recalculated nextRun to the DB
|
|
194
|
-
this.persistCron?.(cron.name, cron.executions, cron.nextRun);
|
|
195
|
-
}
|
|
196
|
-
const gen = this.generation++;
|
|
197
|
-
this.cronJobs.set(cron.name, { cron, generation: gen });
|
|
198
|
-
entries.push({ cron, generation: gen });
|
|
199
|
-
}
|
|
200
|
-
// Rebuild heap from loaded crons - O(n)
|
|
201
|
-
this.cronHeap.buildFrom(entries);
|
|
202
|
-
// Reschedule if running
|
|
203
|
-
if (this.started) {
|
|
204
|
-
this.scheduleNext();
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Schedule a precise setTimeout for the next due cron
|
|
209
|
-
* Called after every mutation (add, remove, load, tick)
|
|
210
|
-
*/
|
|
211
|
-
scheduleNext() {
|
|
212
|
-
if (!this.started)
|
|
213
|
-
return;
|
|
214
|
-
// Cancel existing precise timer
|
|
215
|
-
if (this.nextTimer !== null) {
|
|
216
|
-
clearTimeout(this.nextTimer);
|
|
217
|
-
this.nextTimer = null;
|
|
218
|
-
}
|
|
219
|
-
// Find next non-stale entry, popping stale ones from the heap
|
|
220
|
-
while (!this.cronHeap.isEmpty) {
|
|
221
|
-
const entry = this.cronHeap.peek();
|
|
222
|
-
if (!entry)
|
|
223
|
-
return;
|
|
224
|
-
// Check if stale (cron was removed or updated since this heap entry was created)
|
|
225
|
-
if (this.cronJobs.get(entry.cron.name)?.generation !== entry.generation) {
|
|
226
|
-
this.cronHeap.pop(); // Remove stale entry and continue looking
|
|
227
|
-
continue;
|
|
228
|
-
}
|
|
229
|
-
const delay = Math.max(0, entry.cron.nextRun - Date.now());
|
|
230
|
-
this.nextTimer = setTimeout(() => {
|
|
231
|
-
this.nextTimer = null;
|
|
232
|
-
void this.tick();
|
|
233
|
-
}, delay);
|
|
234
|
-
return;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Check and execute due cron jobs
|
|
239
|
-
* O(k log n) where k = number of due crons, instead of O(n) full scan
|
|
240
|
-
* Skips stale entries (lazy deletion) automatically
|
|
241
|
-
*/
|
|
242
|
-
async tick() {
|
|
243
|
-
if (!this.pushJob)
|
|
244
|
-
return;
|
|
245
|
-
const now = Date.now();
|
|
246
|
-
const toReinsert = [];
|
|
247
|
-
const toRemove = [];
|
|
248
|
-
// Process only due crons from heap - O(k log n)
|
|
249
|
-
while (!this.cronHeap.isEmpty) {
|
|
250
|
-
const entry = this.cronHeap.peek();
|
|
251
|
-
if (!entry || entry.cron.nextRun > now)
|
|
252
|
-
break;
|
|
253
|
-
// Remove from heap
|
|
254
|
-
this.cronHeap.pop();
|
|
255
|
-
// Check if stale (cron was removed or updated)
|
|
256
|
-
const current = this.cronJobs.get(entry.cron.name);
|
|
257
|
-
if (current?.generation !== entry.generation) {
|
|
258
|
-
// Stale entry, skip
|
|
259
|
-
continue;
|
|
260
|
-
}
|
|
261
|
-
const cron = entry.cron;
|
|
262
|
-
// Check if at limit
|
|
263
|
-
if (isAtLimit(cron)) {
|
|
264
|
-
toRemove.push(cron.name);
|
|
265
|
-
continue;
|
|
266
|
-
}
|
|
267
|
-
try {
|
|
268
|
-
// Calculate new state BEFORE pushing job
|
|
269
|
-
const newExecutions = cron.executions + 1;
|
|
270
|
-
const executionTime = Date.now();
|
|
271
|
-
// The slot this fire was scheduled for (anchor for fixed-rate intervals)
|
|
272
|
-
const scheduledRun = cron.nextRun;
|
|
273
|
-
let newNextRun;
|
|
274
|
-
if (cron.schedule) {
|
|
275
|
-
const expanded = expandCronShortcut(cron.schedule);
|
|
276
|
-
newNextRun = getNextCronRun(expanded, executionTime, cron.timezone ?? undefined);
|
|
277
|
-
}
|
|
278
|
-
else if (cron.repeatEvery) {
|
|
279
|
-
// Fixed-rate: anchor to the scheduled slot, not wall-clock now, so a
|
|
280
|
-
// slow/late job does not cumulatively drift the schedule forward (M4)
|
|
281
|
-
newNextRun = getNextIntervalRun(cron.repeatEvery, scheduledRun);
|
|
282
|
-
}
|
|
283
|
-
else {
|
|
284
|
-
newNextRun = executionTime;
|
|
285
|
-
}
|
|
286
|
-
// Skip decision comes BEFORE the executions increment: a skipped fire
|
|
287
|
-
// pushes no job, so it must not consume the maxLimit budget (a cron
|
|
288
|
-
// with maxLimit=N must deliver N jobs, not N-minus-skips — worst case
|
|
289
|
-
// skipIfNoWorker used to burn the whole budget with zero deliveries).
|
|
290
|
-
// The schedule still advances so the heap doesn't hot-loop on it.
|
|
291
|
-
const skipReason = this.getSkipReason(cron, now);
|
|
292
|
-
if (skipReason) {
|
|
293
|
-
if (this.persistCron) {
|
|
294
|
-
try {
|
|
295
|
-
this.persistCron(cron.name, cron.executions, newNextRun);
|
|
296
|
-
}
|
|
297
|
-
catch (persistErr) {
|
|
298
|
-
// Benign here: nothing was pushed, in-memory advance is enough;
|
|
299
|
-
// the next successful persist catches the row up.
|
|
300
|
-
cronLog.error('Failed to persist cron nextRun on skip', {
|
|
301
|
-
name: cron.name,
|
|
302
|
-
error: String(persistErr),
|
|
303
|
-
});
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
cron.nextRun = newNextRun;
|
|
307
|
-
this.dashboardEmit?.('cron:skipped', {
|
|
308
|
-
name: cron.name,
|
|
309
|
-
queue: cron.queue,
|
|
310
|
-
reason: skipReason,
|
|
311
|
-
});
|
|
312
|
-
toReinsert.push(entry);
|
|
313
|
-
continue;
|
|
314
|
-
}
|
|
315
|
-
// PERSIST STATE FIRST (before pushing job to prevent duplicates)
|
|
316
|
-
if (this.persistCron) {
|
|
317
|
-
try {
|
|
318
|
-
this.persistCron(cron.name, newExecutions, newNextRun);
|
|
319
|
-
}
|
|
320
|
-
catch (persistErr) {
|
|
321
|
-
// Persist failed - do NOT push job, retry on next tick
|
|
322
|
-
cronLog.error('Failed to persist cron state, skipping job push', {
|
|
323
|
-
name: cron.name,
|
|
324
|
-
error: String(persistErr),
|
|
325
|
-
});
|
|
326
|
-
this.dashboardEmit?.('cron:missed', {
|
|
327
|
-
name: cron.name,
|
|
328
|
-
queue: cron.queue,
|
|
329
|
-
error: String(persistErr),
|
|
330
|
-
});
|
|
331
|
-
toReinsert.push(entry);
|
|
332
|
-
continue;
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
// Update in-memory state AFTER successful persist
|
|
336
|
-
cron.executions = newExecutions;
|
|
337
|
-
cron.nextRun = newNextRun;
|
|
338
|
-
// NOW push the job (state already persisted, safe from duplicates)
|
|
339
|
-
await this.fireCronJob(cron, now);
|
|
340
|
-
// Re-insert with same generation (not stale)
|
|
341
|
-
toReinsert.push(entry);
|
|
342
|
-
}
|
|
343
|
-
catch (err) {
|
|
344
|
-
// Push failed but state was already persisted
|
|
345
|
-
// Job is lost but cron state is consistent - no duplicates on retry
|
|
346
|
-
cronLog.error('Failed to push cron job (state already persisted)', {
|
|
347
|
-
name: cron.name,
|
|
348
|
-
error: String(err),
|
|
349
|
-
});
|
|
350
|
-
this.dashboardEmit?.('cron:missed', {
|
|
351
|
-
name: cron.name,
|
|
352
|
-
queue: cron.queue,
|
|
353
|
-
error: String(err),
|
|
354
|
-
});
|
|
355
|
-
// Re-insert to continue scheduling (next execution will work)
|
|
356
|
-
toReinsert.push(entry);
|
|
357
|
-
}
|
|
358
|
-
}
|
|
359
|
-
// Re-insert processed crons with updated nextRun
|
|
360
|
-
for (const entry of toReinsert) {
|
|
361
|
-
this.cronHeap.push(entry);
|
|
362
|
-
}
|
|
363
|
-
// Remove limit-reached crons from map
|
|
364
|
-
for (const name of toRemove) {
|
|
365
|
-
this.cronJobs.delete(name);
|
|
366
|
-
}
|
|
367
|
-
// Schedule next precise wake-up
|
|
368
|
-
this.scheduleNext();
|
|
369
|
-
}
|
|
370
|
-
/** Fire a cron job with overlap and worker detection */
|
|
371
|
-
/**
|
|
372
|
-
* Reasons a due cron must not push right now. Evaluated BEFORE the
|
|
373
|
-
* executions increment in tick(), so skips never consume maxLimit budget.
|
|
374
|
-
*/
|
|
375
|
-
getSkipReason(cron, now) {
|
|
376
|
-
// skipIfNoWorker: skip if no workers registered for this queue
|
|
377
|
-
if (cron.skipIfNoWorker && this.hasWorkers && !this.hasWorkers(cron.queue)) {
|
|
378
|
-
return 'no-worker';
|
|
379
|
-
}
|
|
380
|
-
// Overlap detection: skip if last fire was within repeatEvery window
|
|
381
|
-
const lastFire = this.lastFiredAt.get(cron.name);
|
|
382
|
-
const interval = cron.repeatEvery ?? 60000;
|
|
383
|
-
if (lastFire && now - lastFire < interval * 0.8) {
|
|
384
|
-
return 'overlap';
|
|
385
|
-
}
|
|
386
|
-
return null;
|
|
387
|
-
}
|
|
388
|
-
async fireCronJob(cron, now) {
|
|
389
|
-
// preventOverlap: auto-set uniqueKey to block pushes while previous job is active
|
|
390
|
-
const effectiveUniqueKey = cron.uniqueKey ?? (cron.preventOverlap ? `cron:${cron.name}` : undefined);
|
|
391
|
-
const opts = cron.jobOptions;
|
|
392
|
-
await this.pushJob(cron.queue, {
|
|
393
|
-
data: cron.data,
|
|
394
|
-
priority: cron.priority,
|
|
395
|
-
uniqueKey: effectiveUniqueKey,
|
|
396
|
-
dedup: cron.dedup ?? undefined,
|
|
397
|
-
maxAttempts: opts?.maxAttempts,
|
|
398
|
-
backoff: opts?.backoff,
|
|
399
|
-
timeout: opts?.timeout,
|
|
400
|
-
delay: opts?.delay,
|
|
401
|
-
stallTimeout: opts?.stallTimeout,
|
|
402
|
-
removeOnComplete: opts?.removeOnComplete,
|
|
403
|
-
removeOnFail: opts?.removeOnFail,
|
|
404
|
-
});
|
|
405
|
-
this.lastFiredAt.set(cron.name, now);
|
|
406
|
-
this.dashboardEmit?.('cron:fired', { name: cron.name, queue: cron.queue });
|
|
407
|
-
}
|
|
408
|
-
/**
|
|
409
|
-
* Get scheduler stats
|
|
410
|
-
* O(1) for nextRun using min-heap peek (skips stale entries)
|
|
411
|
-
*/
|
|
412
|
-
getStats() {
|
|
413
|
-
// Find first non-stale entry for nextRun
|
|
414
|
-
let nextRun = null;
|
|
415
|
-
// Peek and skip stale entries to find valid nextRun
|
|
416
|
-
// This is typically O(1) as stale entries are cleaned during tick()
|
|
417
|
-
const entry = this.cronHeap.peek();
|
|
418
|
-
if (entry) {
|
|
419
|
-
const current = this.cronJobs.get(entry.cron.name);
|
|
420
|
-
if (current?.generation === entry.generation && !isAtLimit(entry.cron)) {
|
|
421
|
-
nextRun = entry.cron.nextRun;
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
// Count pending (crons not at limit) - still O(n) but called rarely
|
|
425
|
-
let pending = 0;
|
|
426
|
-
for (const { cron } of this.cronJobs.values()) {
|
|
427
|
-
if (!isAtLimit(cron)) {
|
|
428
|
-
pending++;
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
return {
|
|
432
|
-
total: this.cronJobs.size,
|
|
433
|
-
pending,
|
|
434
|
-
nextRun,
|
|
435
|
-
};
|
|
436
|
-
}
|
|
1
|
+
import { CronExecution } from './cron/execution';
|
|
2
|
+
/** Event-driven cron scheduler façade. */
|
|
3
|
+
export class CronScheduler extends CronExecution {
|
|
437
4
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CronJob } from '../../../domain/types/cron';
|
|
2
|
+
import type { JobInput } from '../../../domain/types/job';
|
|
3
|
+
export interface CronSchedulerConfig {
|
|
4
|
+
/** @deprecated The scheduler now uses a precise event-driven timer. */
|
|
5
|
+
checkIntervalMs?: number;
|
|
6
|
+
}
|
|
7
|
+
export type PushJobCallback = (queue: string, input: JobInput) => Promise<void>;
|
|
8
|
+
export type PersistCronCallback = (name: string, executions: number, nextRun: number) => void;
|
|
9
|
+
export interface CronHeapEntry {
|
|
10
|
+
cron: CronJob;
|
|
11
|
+
generation: number;
|
|
12
|
+
}
|
|
13
|
+
export interface CronRegistryEntry {
|
|
14
|
+
cron: CronJob;
|
|
15
|
+
generation: number;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -161,6 +161,9 @@ export function bootServer(fileConfig, config) {
|
|
|
161
161
|
getWsClientCount: () => httpServer.getWsClientCount(),
|
|
162
162
|
getSseClientCount: () => httpServer.getSseClientCount(),
|
|
163
163
|
getBackupStatus: () => backupManager?.getStatus() ?? null,
|
|
164
|
+
...(config.s3BackupEnabled && backupManager
|
|
165
|
+
? { triggerBackup: () => backupManager.backup() }
|
|
166
|
+
: {}),
|
|
164
167
|
});
|
|
165
168
|
}
|
|
166
169
|
queueManager.emitDashboardEvent('server:started', {
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Command } from '../../../domain/types/command';
|
|
2
|
+
import type { Response } from '../../../domain/types/response';
|
|
3
|
+
import type { HandlerContext } from '../types';
|
|
4
|
+
export declare function routeQueueControlCommand(command: Command, context: HandlerContext, requestId?: string): Response | null;
|
|
5
|
+
export declare function routeDlqCommand(command: Command, context: HandlerContext, requestId?: string): Response | null;
|
|
6
|
+
export declare function routeRateLimitCommand(command: Command, context: HandlerContext, requestId?: string): Response | null;
|
|
7
|
+
export declare function routeCronCommand(command: Command, context: HandlerContext, requestId?: string): Response | null;
|
|
8
|
+
export declare function routeConfigCommand(command: Command, context: HandlerContext, requestId?: string): Response | null;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { handleClean, handleClearConcurrency, handleGetDlqConfig, handleGetStallConfig, handleIsPaused, handleListQueues, handleObliterate, handleRateLimit, handleRateLimitClear, handleSetConcurrency, handleSetDlqConfig, handleSetStallConfig, } from '../handlers/advanced';
|
|
2
|
+
import { handleCron, handleCronDelete, handleCronGet, handleCronList } from '../handlers/cron';
|
|
3
|
+
import { handleDlq, handleGetDlqStats, handlePurgeDlq, handleRetryCompleted, handleRetryDlq, } from '../handlers/dlq';
|
|
4
|
+
import { handleDrain, handlePause, handleResume } from '../handlers/management';
|
|
5
|
+
export function routeQueueControlCommand(command, context, requestId) {
|
|
6
|
+
switch (command.cmd) {
|
|
7
|
+
case 'Pause':
|
|
8
|
+
return handlePause(command, context, requestId);
|
|
9
|
+
case 'Resume':
|
|
10
|
+
return handleResume(command, context, requestId);
|
|
11
|
+
case 'IsPaused':
|
|
12
|
+
return handleIsPaused(command, context, requestId);
|
|
13
|
+
case 'Drain':
|
|
14
|
+
return handleDrain(command, context, requestId);
|
|
15
|
+
case 'Obliterate':
|
|
16
|
+
return handleObliterate(command, context, requestId);
|
|
17
|
+
case 'ListQueues':
|
|
18
|
+
return handleListQueues(command, context, requestId);
|
|
19
|
+
case 'Clean':
|
|
20
|
+
return handleClean(command, context, requestId);
|
|
21
|
+
default:
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export function routeDlqCommand(command, context, requestId) {
|
|
26
|
+
switch (command.cmd) {
|
|
27
|
+
case 'Dlq':
|
|
28
|
+
return handleDlq(command, context, requestId);
|
|
29
|
+
case 'GetDlqStats':
|
|
30
|
+
return handleGetDlqStats(command, context, requestId);
|
|
31
|
+
case 'RetryDlq':
|
|
32
|
+
return handleRetryDlq(command, context, requestId);
|
|
33
|
+
case 'PurgeDlq':
|
|
34
|
+
return handlePurgeDlq(command, context, requestId);
|
|
35
|
+
case 'RetryCompleted':
|
|
36
|
+
return handleRetryCompleted(command, context, requestId);
|
|
37
|
+
default:
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export function routeRateLimitCommand(command, context, requestId) {
|
|
42
|
+
switch (command.cmd) {
|
|
43
|
+
case 'RateLimit':
|
|
44
|
+
return handleRateLimit(command, context, requestId);
|
|
45
|
+
case 'RateLimitClear':
|
|
46
|
+
return handleRateLimitClear(command, context, requestId);
|
|
47
|
+
case 'SetConcurrency':
|
|
48
|
+
return handleSetConcurrency(command, context, requestId);
|
|
49
|
+
case 'ClearConcurrency':
|
|
50
|
+
return handleClearConcurrency(command, context, requestId);
|
|
51
|
+
default:
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function routeCronCommand(command, context, requestId) {
|
|
56
|
+
switch (command.cmd) {
|
|
57
|
+
case 'Cron':
|
|
58
|
+
return handleCron(command, context, requestId);
|
|
59
|
+
case 'CronGet':
|
|
60
|
+
return handleCronGet(command, context, requestId);
|
|
61
|
+
case 'CronDelete':
|
|
62
|
+
return handleCronDelete(command, context, requestId);
|
|
63
|
+
case 'CronList':
|
|
64
|
+
return handleCronList(command, context, requestId);
|
|
65
|
+
default:
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export function routeConfigCommand(command, context, requestId) {
|
|
70
|
+
switch (command.cmd) {
|
|
71
|
+
case 'SetStallConfig':
|
|
72
|
+
return handleSetStallConfig(command, context, requestId);
|
|
73
|
+
case 'GetStallConfig':
|
|
74
|
+
return handleGetStallConfig(command, context, requestId);
|
|
75
|
+
case 'SetDlqConfig':
|
|
76
|
+
return handleSetDlqConfig(command, context, requestId);
|
|
77
|
+
case 'GetDlqConfig':
|
|
78
|
+
return handleGetDlqConfig(command, context, requestId);
|
|
79
|
+
default:
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Command } from '../../../domain/types/command';
|
|
2
|
+
import type { Response } from '../../../domain/types/response';
|
|
3
|
+
import type { HandlerContext } from '../types';
|
|
4
|
+
export declare function routeCoreCommand(command: Command, context: HandlerContext, requestId?: string): Promise<Response | null>;
|
|
5
|
+
export declare function routeQueryCommand(command: Command, context: HandlerContext, requestId?: string): Promise<Response | null>;
|
|
6
|
+
export declare function routeManagementCommand(command: Command, context: HandlerContext, requestId?: string): Promise<Response | null>;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { handleChangeDelay, handleChangePriority, handleCount, handleDiscard, handleGetFailedChildrenValues, handleGetIgnoredChildrenFailures, handleMoveToDelayed, handleMoveToWait, handlePromote, handlePromoteJobs, handleRemoveChildDependency, handleRemoveUnprocessedChildren, handleUpdate, handleUpdateParent, handleWaitJob, } from '../handlers/advanced';
|
|
2
|
+
import { handleAck, handleAckBatch, handleFail, handlePull, handlePullBatch, handlePush, handlePushBatch, } from '../handlers/core';
|
|
3
|
+
import { handlePushFlow } from '../handlers/flow';
|
|
4
|
+
import { handleGetDeduplicationJobId, handleGetQueueLimits, handleMoveToWaitingChildren, handleRemoveDeduplicationKey, handleRemoveJobDeduplicationKey, } from '../handlers/introspection';
|
|
5
|
+
import { handleCancel, handleGetProgress, handleProgress } from '../handlers/management';
|
|
6
|
+
import { handleExtendLock, handleExtendLocks } from '../handlers/monitoring';
|
|
7
|
+
import { handleGetChildrenValues, handleGetCountsPerPriority, handleGetJob, handleGetJobByCustomId, handleGetJobCounts, handleGetJobs, handleGetResult, handleGetState, } from '../handlers/query';
|
|
8
|
+
// biome-ignore lint/suspicious/useAwait: stable router API always returns a Promise.
|
|
9
|
+
export async function routeCoreCommand(command, context, requestId) {
|
|
10
|
+
switch (command.cmd) {
|
|
11
|
+
case 'PUSH':
|
|
12
|
+
return handlePush(command, context, requestId);
|
|
13
|
+
case 'PUSHB':
|
|
14
|
+
return handlePushBatch(command, context, requestId);
|
|
15
|
+
case 'PUSHF':
|
|
16
|
+
return handlePushFlow(command, context, requestId);
|
|
17
|
+
case 'PULL':
|
|
18
|
+
return handlePull(command, context, requestId);
|
|
19
|
+
case 'PULLB':
|
|
20
|
+
return handlePullBatch(command, context, requestId);
|
|
21
|
+
case 'ACK':
|
|
22
|
+
return handleAck(command, context, requestId);
|
|
23
|
+
case 'ACKB':
|
|
24
|
+
return handleAckBatch(command, context, requestId);
|
|
25
|
+
case 'FAIL':
|
|
26
|
+
return handleFail(command, context, requestId);
|
|
27
|
+
default:
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// biome-ignore lint/suspicious/useAwait: stable router API always returns a Promise.
|
|
32
|
+
export async function routeQueryCommand(command, context, requestId) {
|
|
33
|
+
switch (command.cmd) {
|
|
34
|
+
case 'GetJob':
|
|
35
|
+
return handleGetJob(command, context, requestId);
|
|
36
|
+
case 'GetState':
|
|
37
|
+
return handleGetState(command, context, requestId);
|
|
38
|
+
case 'GetResult':
|
|
39
|
+
return handleGetResult(command, context, requestId);
|
|
40
|
+
case 'GetJobCounts':
|
|
41
|
+
return handleGetJobCounts(command, context, requestId);
|
|
42
|
+
case 'GetCountsPerPriority':
|
|
43
|
+
return handleGetCountsPerPriority(command, context, requestId);
|
|
44
|
+
case 'GetJobByCustomId':
|
|
45
|
+
return handleGetJobByCustomId(command, context, requestId);
|
|
46
|
+
case 'GetJobs':
|
|
47
|
+
return handleGetJobs(command, context, requestId);
|
|
48
|
+
case 'Count':
|
|
49
|
+
return handleCount(command, context, requestId);
|
|
50
|
+
case 'GetProgress':
|
|
51
|
+
return handleGetProgress(command, context, requestId);
|
|
52
|
+
case 'GetChildrenValues':
|
|
53
|
+
return handleGetChildrenValues(command, context, requestId);
|
|
54
|
+
case 'GetQueueLimits':
|
|
55
|
+
return handleGetQueueLimits(command, context, requestId);
|
|
56
|
+
case 'GetDeduplicationJobId':
|
|
57
|
+
return handleGetDeduplicationJobId(command, context, requestId);
|
|
58
|
+
default:
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
// biome-ignore lint/suspicious/useAwait: stable router API always returns a Promise.
|
|
63
|
+
export async function routeManagementCommand(command, context, requestId) {
|
|
64
|
+
switch (command.cmd) {
|
|
65
|
+
case 'Cancel':
|
|
66
|
+
return handleCancel(command, context, requestId);
|
|
67
|
+
case 'Progress':
|
|
68
|
+
return handleProgress(command, context, requestId);
|
|
69
|
+
case 'Update':
|
|
70
|
+
return handleUpdate(command, context, requestId);
|
|
71
|
+
case 'UpdateParent':
|
|
72
|
+
return handleUpdateParent(command, context, requestId);
|
|
73
|
+
case 'ChangePriority':
|
|
74
|
+
return handleChangePriority(command, context, requestId);
|
|
75
|
+
case 'Promote':
|
|
76
|
+
return handlePromote(command, context, requestId);
|
|
77
|
+
case 'MoveToDelayed':
|
|
78
|
+
return handleMoveToDelayed(command, context, requestId);
|
|
79
|
+
case 'Discard':
|
|
80
|
+
return handleDiscard(command, context, requestId);
|
|
81
|
+
case 'WaitJob':
|
|
82
|
+
return handleWaitJob(command, context, requestId);
|
|
83
|
+
case 'ChangeDelay':
|
|
84
|
+
return handleChangeDelay(command, context, requestId);
|
|
85
|
+
case 'MoveToWait':
|
|
86
|
+
return handleMoveToWait(command, context, requestId);
|
|
87
|
+
case 'PromoteJobs':
|
|
88
|
+
return handlePromoteJobs(command, context, requestId);
|
|
89
|
+
case 'ExtendLock':
|
|
90
|
+
return handleExtendLock(command, context, requestId);
|
|
91
|
+
case 'ExtendLocks':
|
|
92
|
+
return handleExtendLocks(command, context, requestId);
|
|
93
|
+
case 'GetFailedChildrenValues':
|
|
94
|
+
return handleGetFailedChildrenValues(command, context, requestId);
|
|
95
|
+
case 'GetIgnoredChildrenFailures':
|
|
96
|
+
return handleGetIgnoredChildrenFailures(command, context, requestId);
|
|
97
|
+
case 'RemoveChildDependency':
|
|
98
|
+
return handleRemoveChildDependency(command, context, requestId);
|
|
99
|
+
case 'RemoveUnprocessedChildren':
|
|
100
|
+
return handleRemoveUnprocessedChildren(command, context, requestId);
|
|
101
|
+
case 'RemoveDeduplicationKey':
|
|
102
|
+
return handleRemoveDeduplicationKey(command, context, requestId);
|
|
103
|
+
case 'RemoveJobDeduplicationKey':
|
|
104
|
+
return handleRemoveJobDeduplicationKey(command, context, requestId);
|
|
105
|
+
case 'MoveToWaitingChildren':
|
|
106
|
+
return handleMoveToWaitingChildren(command, context, requestId);
|
|
107
|
+
default:
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
}
|