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,222 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { jobId } from '../../../domain/types/job';
|
|
6
|
-
import { VERSION } from '../../../shared/version';
|
|
7
|
-
import * as resp from '../../../domain/types/response';
|
|
8
|
-
import { validateWebhookUrl } from '../protocol';
|
|
9
|
-
import { WEBHOOK_EVENTS } from '../../../domain/types/webhook';
|
|
10
|
-
// ============ Job Logs ============
|
|
11
|
-
export function handleAddLog(cmd, ctx, reqId) {
|
|
12
|
-
const jid = jobId(cmd.id);
|
|
13
|
-
const level = cmd.level ?? 'info';
|
|
14
|
-
const success = ctx.queueManager.addLog(jid, cmd.message, level);
|
|
15
|
-
if (success) {
|
|
16
|
-
return resp.data({ added: true }, reqId);
|
|
17
|
-
}
|
|
18
|
-
return resp.error('Job not found', reqId);
|
|
19
|
-
}
|
|
20
|
-
export function handleGetLogs(cmd, ctx, reqId) {
|
|
21
|
-
const jid = jobId(cmd.id);
|
|
22
|
-
const all = ctx.queueManager.getLogs(jid);
|
|
23
|
-
// Honor optional pagination (start/end inclusive) the client already sends.
|
|
24
|
-
const total = all.length;
|
|
25
|
-
const logs = cmd.start === undefined && cmd.end === undefined
|
|
26
|
-
? all
|
|
27
|
-
: all.slice(cmd.start ?? 0, (cmd.end ?? total - 1) + 1);
|
|
28
|
-
return resp.data({ logs, count: total }, reqId);
|
|
29
|
-
}
|
|
30
|
-
// ============ Worker Heartbeat ============
|
|
31
|
-
export function handleHeartbeat(cmd, ctx, reqId) {
|
|
32
|
-
const stats = cmd.activeJobs !== undefined || cmd.processed !== undefined || cmd.failed !== undefined
|
|
33
|
-
? { activeJobs: cmd.activeJobs, processed: cmd.processed, failed: cmd.failed }
|
|
34
|
-
: undefined;
|
|
35
|
-
const success = ctx.queueManager.workerManager.heartbeat(cmd.id, stats);
|
|
36
|
-
if (success) {
|
|
37
|
-
ctx.queueManager.emitDashboardEvent('worker:heartbeat', { workerId: cmd.id });
|
|
38
|
-
return resp.data({ ok: true }, reqId);
|
|
39
|
-
}
|
|
40
|
-
return resp.error('Worker not found', reqId);
|
|
41
|
-
}
|
|
42
|
-
// ============ Job Heartbeat (for stall detection & lock renewal) ============
|
|
43
|
-
export function handleJobHeartbeat(cmd, ctx, reqId) {
|
|
44
|
-
const jid = jobId(cmd.id);
|
|
45
|
-
// If duration is specified, extend lock with that duration
|
|
46
|
-
if (cmd.duration && cmd.token) {
|
|
47
|
-
const success = ctx.queueManager.renewJobLock(jid, cmd.token, cmd.duration);
|
|
48
|
-
if (success)
|
|
49
|
-
return resp.data({ ok: true }, reqId);
|
|
50
|
-
return resp.error('Job not found or not active (or invalid token)', reqId);
|
|
51
|
-
}
|
|
52
|
-
// Standard heartbeat
|
|
53
|
-
const success = ctx.queueManager.jobHeartbeat(jid, cmd.token);
|
|
54
|
-
if (success) {
|
|
55
|
-
return resp.data({ ok: true }, reqId);
|
|
56
|
-
}
|
|
57
|
-
return resp.error('Job not found or not active (or invalid token)', reqId);
|
|
58
|
-
}
|
|
59
|
-
export function handleJobHeartbeatBatch(cmd, ctx, reqId) {
|
|
60
|
-
const ids = cmd.ids.map((id) => jobId(id));
|
|
61
|
-
// Pass tokens to renew locks if provided
|
|
62
|
-
const count = ctx.queueManager.jobHeartbeatBatch(ids, cmd.tokens);
|
|
63
|
-
return resp.data({ ok: true, count }, reqId);
|
|
64
|
-
}
|
|
65
|
-
// ============ Ping (health check) ============
|
|
66
|
-
export function handlePing(_cmd, _ctx, reqId) {
|
|
67
|
-
return resp.data({ pong: true, time: Date.now() }, reqId);
|
|
68
|
-
}
|
|
69
|
-
// ============ Hello (protocol negotiation) ============
|
|
70
|
-
/** Current protocol version */
|
|
71
|
-
export const PROTOCOL_VERSION = 2;
|
|
72
|
-
/** Supported capabilities */
|
|
73
|
-
export const SUPPORTED_CAPABILITIES = ['pipelining'];
|
|
74
|
-
export function handleHello(_cmd, _ctx, reqId) {
|
|
75
|
-
return resp.hello(PROTOCOL_VERSION, SUPPORTED_CAPABILITIES, 'bunqueue', VERSION, reqId);
|
|
76
|
-
}
|
|
77
|
-
// ============ Worker Management ============
|
|
78
|
-
export function handleRegisterWorker(cmd, ctx, reqId) {
|
|
79
|
-
const worker = ctx.queueManager.registerWorker(cmd.name, cmd.queues, cmd.concurrency, {
|
|
80
|
-
workerId: cmd.workerId,
|
|
81
|
-
hostname: cmd.hostname,
|
|
82
|
-
pid: cmd.pid,
|
|
83
|
-
startedAt: cmd.startedAt,
|
|
84
|
-
clientId: ctx.clientId,
|
|
85
|
-
});
|
|
86
|
-
return resp.data({
|
|
87
|
-
workerId: worker.id,
|
|
88
|
-
name: worker.name,
|
|
89
|
-
queues: worker.queues,
|
|
90
|
-
concurrency: worker.concurrency,
|
|
91
|
-
hostname: worker.hostname,
|
|
92
|
-
pid: worker.pid,
|
|
93
|
-
status: 'active',
|
|
94
|
-
registeredAt: worker.registeredAt,
|
|
95
|
-
lastSeen: worker.lastSeen,
|
|
96
|
-
activeJobs: worker.activeJobs,
|
|
97
|
-
processedJobs: worker.processedJobs,
|
|
98
|
-
failedJobs: worker.failedJobs,
|
|
99
|
-
currentJob: worker.currentJob,
|
|
100
|
-
}, reqId);
|
|
101
|
-
}
|
|
102
|
-
export function handleUnregisterWorker(cmd, ctx, reqId) {
|
|
103
|
-
const success = ctx.queueManager.unregisterWorker(cmd.workerId);
|
|
104
|
-
if (success) {
|
|
105
|
-
return resp.data({ removed: true }, reqId);
|
|
106
|
-
}
|
|
107
|
-
return resp.error('Worker not found', reqId);
|
|
108
|
-
}
|
|
109
|
-
/** Worker timeout for status computation */
|
|
110
|
-
const WORKER_TIMEOUT_MS = parseInt(Bun.env.WORKER_TIMEOUT_MS ?? '30000', 10);
|
|
111
|
-
/** Compute worker status from lastSeen timestamp */
|
|
112
|
-
function computeWorkerStatus(lastSeen, now) {
|
|
113
|
-
return now - lastSeen < WORKER_TIMEOUT_MS ? 'active' : 'stale';
|
|
114
|
-
}
|
|
115
|
-
export function handleListWorkers(_cmd, ctx, reqId) {
|
|
116
|
-
const workers = ctx.queueManager.workerManager.list();
|
|
117
|
-
const now = Date.now();
|
|
118
|
-
return resp.data({
|
|
119
|
-
workers: workers.map((w) => ({
|
|
120
|
-
id: w.id,
|
|
121
|
-
name: w.name,
|
|
122
|
-
queues: w.queues,
|
|
123
|
-
concurrency: w.concurrency,
|
|
124
|
-
hostname: w.hostname,
|
|
125
|
-
pid: w.pid,
|
|
126
|
-
status: computeWorkerStatus(w.lastSeen, now),
|
|
127
|
-
registeredAt: w.registeredAt,
|
|
128
|
-
lastSeen: w.lastSeen,
|
|
129
|
-
activeJobs: w.activeJobs,
|
|
130
|
-
processedJobs: w.processedJobs,
|
|
131
|
-
failedJobs: w.failedJobs,
|
|
132
|
-
currentJob: w.currentJob,
|
|
133
|
-
uptime: now - w.registeredAt,
|
|
134
|
-
})),
|
|
135
|
-
stats: ctx.queueManager.workerManager.getStats(),
|
|
136
|
-
}, reqId);
|
|
137
|
-
}
|
|
138
|
-
// ============ Webhooks ============
|
|
139
|
-
export function handleAddWebhook(cmd, ctx, reqId) {
|
|
140
|
-
// Validate webhook URL to prevent SSRF
|
|
141
|
-
const urlError = validateWebhookUrl(cmd.url);
|
|
142
|
-
if (urlError)
|
|
143
|
-
return resp.error(urlError, reqId);
|
|
144
|
-
// Reject events that are never triggered — a webhook subscribed to a dead
|
|
145
|
-
// event would be created "ok" and then never fire (silent failure).
|
|
146
|
-
const invalidEvents = cmd.events.filter((e) => !WEBHOOK_EVENTS.includes(e));
|
|
147
|
-
if (invalidEvents.length > 0) {
|
|
148
|
-
return resp.error(`Invalid webhook event(s): ${invalidEvents.join(', ')}. Valid: ${WEBHOOK_EVENTS.join(', ')}`, reqId);
|
|
149
|
-
}
|
|
150
|
-
const webhook = ctx.queueManager.webhookManager.add(cmd.url, cmd.events, cmd.queue, cmd.secret);
|
|
151
|
-
ctx.queueManager.emitDashboardEvent('webhook:added', {
|
|
152
|
-
id: webhook.id,
|
|
153
|
-
url: webhook.url,
|
|
154
|
-
events: webhook.events,
|
|
155
|
-
});
|
|
156
|
-
return resp.data({
|
|
157
|
-
webhookId: webhook.id,
|
|
158
|
-
url: webhook.url,
|
|
159
|
-
events: webhook.events,
|
|
160
|
-
queue: webhook.queue,
|
|
161
|
-
createdAt: webhook.createdAt,
|
|
162
|
-
}, reqId);
|
|
163
|
-
}
|
|
164
|
-
export function handleRemoveWebhook(cmd, ctx, reqId) {
|
|
165
|
-
const success = ctx.queueManager.webhookManager.remove(cmd.webhookId);
|
|
166
|
-
if (success) {
|
|
167
|
-
ctx.queueManager.emitDashboardEvent('webhook:removed', { id: cmd.webhookId });
|
|
168
|
-
return resp.data({ removed: true }, reqId);
|
|
169
|
-
}
|
|
170
|
-
return resp.error('Webhook not found', reqId);
|
|
171
|
-
}
|
|
172
|
-
export function handleListWebhooks(_cmd, ctx, reqId) {
|
|
173
|
-
const webhooks = ctx.queueManager.webhookManager.list();
|
|
174
|
-
return resp.data({
|
|
175
|
-
webhooks: webhooks.map((w) => ({
|
|
176
|
-
id: w.id,
|
|
177
|
-
url: w.url,
|
|
178
|
-
events: w.events,
|
|
179
|
-
queue: w.queue,
|
|
180
|
-
createdAt: w.createdAt,
|
|
181
|
-
lastTriggered: w.lastTriggered,
|
|
182
|
-
successCount: w.successCount,
|
|
183
|
-
failureCount: w.failureCount,
|
|
184
|
-
enabled: w.enabled,
|
|
185
|
-
})),
|
|
186
|
-
stats: ctx.queueManager.webhookManager.getStats(),
|
|
187
|
-
}, reqId);
|
|
188
|
-
}
|
|
189
|
-
// ============ Prometheus Metrics ============
|
|
190
|
-
export function handlePrometheus(_cmd, ctx, reqId) {
|
|
191
|
-
const metrics = ctx.queueManager.getPrometheusMetrics();
|
|
192
|
-
return resp.data({ metrics }, reqId);
|
|
193
|
-
}
|
|
194
|
-
// ============ Clear Logs ============
|
|
195
|
-
export function handleClearLogs(cmd, ctx, reqId) {
|
|
196
|
-
ctx.queueManager.clearLogs(jobId(cmd.id), cmd.keepLogs);
|
|
197
|
-
return resp.ok(undefined, reqId);
|
|
198
|
-
}
|
|
199
|
-
// ============ Extend Lock ============
|
|
200
|
-
export async function handleExtendLock(cmd, ctx, reqId) {
|
|
201
|
-
const success = await ctx.queueManager.extendLock(jobId(cmd.id), cmd.token ?? null, cmd.duration);
|
|
202
|
-
return success ? resp.ok(undefined, reqId) : resp.error('Lock not found or invalid token', reqId);
|
|
203
|
-
}
|
|
204
|
-
export async function handleExtendLocks(cmd, ctx, reqId) {
|
|
205
|
-
let count = 0;
|
|
206
|
-
for (let i = 0; i < cmd.ids.length; i++) {
|
|
207
|
-
const success = await ctx.queueManager.extendLock(jobId(cmd.ids[i]), cmd.tokens[i] ?? null, cmd.durations[i]);
|
|
208
|
-
if (success)
|
|
209
|
-
count++;
|
|
210
|
-
}
|
|
211
|
-
return { ok: true, count, reqId };
|
|
212
|
-
}
|
|
213
|
-
// ============ Set Webhook Enabled ============
|
|
214
|
-
export function handleSetWebhookEnabled(cmd, ctx, reqId) {
|
|
215
|
-
const success = ctx.queueManager.webhookManager.setEnabled(cmd.id, cmd.enabled);
|
|
216
|
-
return success ? resp.ok(undefined, reqId) : resp.error('Webhook not found', reqId);
|
|
217
|
-
}
|
|
218
|
-
// ============ Compact Memory ============
|
|
219
|
-
export function handleCompactMemory(_cmd, ctx, reqId) {
|
|
220
|
-
ctx.queueManager.compactMemory();
|
|
221
|
-
return resp.ok(undefined, reqId);
|
|
222
|
-
}
|
|
1
|
+
export { handleAddLog, handleGetLogs, handleHeartbeat, handleHello, handleJobHeartbeat, handleJobHeartbeatBatch, handlePing, PROTOCOL_VERSION, SUPPORTED_CAPABILITIES, } from './monitoring/health';
|
|
2
|
+
export { handleClearLogs, handleCompactMemory, handleExtendLock, handleExtendLocks, handlePrometheus, } from './monitoring/operations';
|
|
3
|
+
export { handleAddWebhook, handleListWebhooks, handleRemoveWebhook, handleSetWebhookEnabled, } from './monitoring/webhooks';
|
|
4
|
+
export { handleListWorkers, handleRegisterWorker, handleUnregisterWorker, } from './monitoring/workers';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* validateJobData/validateJobOptions bounds and the same dependsOn
|
|
5
5
|
* existence gate handlePush enforces (core.ts).
|
|
6
6
|
*/
|
|
7
|
-
import type
|
|
7
|
+
import { type JobInput } from '../../../domain/types/job';
|
|
8
8
|
import type { HandlerContext } from '../types';
|
|
9
9
|
/**
|
|
10
10
|
* Validate every job of a PUSHB batch. Returns an error message naming the
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
* validateJobData/validateJobOptions bounds and the same dependsOn
|
|
5
5
|
* existence gate handlePush enforces (core.ts).
|
|
6
6
|
*/
|
|
7
|
+
import { normalizeLegacyJobPayload } from '../../../domain/types/job';
|
|
7
8
|
import { validateJobData, validateJobOptions } from '../protocol';
|
|
8
9
|
/**
|
|
9
10
|
* Validate every job of a PUSHB batch. Returns an error message naming the
|
|
@@ -35,6 +36,12 @@ export function validatePushBatchJobs(jobs, ctx) {
|
|
|
35
36
|
}
|
|
36
37
|
for (let i = 0; i < jobs.length; i++) {
|
|
37
38
|
const job = jobs[i];
|
|
39
|
+
try {
|
|
40
|
+
normalizeLegacyJobPayload(job);
|
|
41
|
+
}
|
|
42
|
+
catch (error) {
|
|
43
|
+
return `jobs[${i}]: ${error instanceof Error ? error.message : String(error)}`;
|
|
44
|
+
}
|
|
38
45
|
const dataError = validateJobData(job.data);
|
|
39
46
|
if (dataError)
|
|
40
47
|
return `jobs[${i}]: ${dataError}`;
|
|
@@ -4,7 +4,16 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import * as resp from '../../../domain/types/response';
|
|
6
6
|
import { jobId } from '../../../domain/types/job';
|
|
7
|
+
import { lastFailedReason } from '../../../domain/job/terminal';
|
|
7
8
|
import { pausedView } from '../../../shared/pausedView';
|
|
9
|
+
function jobView(ctx, job, state) {
|
|
10
|
+
return {
|
|
11
|
+
...job,
|
|
12
|
+
...(state === undefined ? {} : { state }),
|
|
13
|
+
returnvalue: ctx.queueManager.getResult(job.id),
|
|
14
|
+
failedReason: lastFailedReason(job),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
8
17
|
/** Handle GetJob command */
|
|
9
18
|
export async function handleGetJob(cmd, ctx, reqId) {
|
|
10
19
|
const jid = jobId(cmd.id);
|
|
@@ -12,7 +21,7 @@ export async function handleGetJob(cmd, ctx, reqId) {
|
|
|
12
21
|
if (!job)
|
|
13
22
|
return resp.error('Job not found', reqId);
|
|
14
23
|
const state = await ctx.queueManager.getJobState(jid);
|
|
15
|
-
return { ok: true, job:
|
|
24
|
+
return { ok: true, job: jobView(ctx, job, state), reqId };
|
|
16
25
|
}
|
|
17
26
|
/** Handle GetState command */
|
|
18
27
|
export async function handleGetState(cmd, ctx, reqId) {
|
|
@@ -51,7 +60,7 @@ export function handleGetCountsPerPriority(cmd, ctx, reqId) {
|
|
|
51
60
|
/** Handle GetJobByCustomId command */
|
|
52
61
|
export function handleGetJobByCustomId(cmd, ctx, reqId) {
|
|
53
62
|
const job = ctx.queueManager.getJobByCustomId(cmd.customId);
|
|
54
|
-
return job ? resp.job(job, reqId) : resp.error('Job not found', reqId);
|
|
63
|
+
return job ? resp.job(jobView(ctx, job), reqId) : resp.error('Job not found', reqId);
|
|
55
64
|
}
|
|
56
65
|
/** Handle GetJobs command - list jobs with filtering and pagination */
|
|
57
66
|
export async function handleGetJobs(cmd, ctx, reqId) {
|
|
@@ -60,14 +69,14 @@ export async function handleGetJobs(cmd, ctx, reqId) {
|
|
|
60
69
|
state: stateFilter,
|
|
61
70
|
start: cmd.offset ?? 0,
|
|
62
71
|
end: (cmd.offset ?? 0) + (cmd.limit ?? 100),
|
|
63
|
-
asc: true,
|
|
72
|
+
asc: cmd.asc ?? true,
|
|
64
73
|
});
|
|
65
74
|
// Inject state into each job for display
|
|
66
75
|
// When state is a single string, use it directly; otherwise resolve per-job
|
|
67
76
|
const singleState = typeof stateFilter === 'string' ? stateFilter : undefined;
|
|
68
77
|
const jobsWithState = await Promise.all(jobs.map(async (job) => {
|
|
69
78
|
const state = singleState ?? (await ctx.queueManager.getJobState(job.id));
|
|
70
|
-
return
|
|
79
|
+
return jobView(ctx, job, state);
|
|
71
80
|
}));
|
|
72
81
|
return resp.jobs(jobsWithState, reqId);
|
|
73
82
|
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { handleCommand } from '../handler';
|
|
2
|
+
import { jsonResponse, parseJsonBody } from '../httpEndpoints';
|
|
3
|
+
const RE_JOB_MOVE_DELAYED = /^\/jobs\/([^/]+)\/move-to-delayed$/;
|
|
4
|
+
const RE_JOB_DELAY = /^\/jobs\/([^/]+)\/delay$/;
|
|
5
|
+
const RE_JOB_CHILDREN = /^\/jobs\/([^/]+)\/children$/;
|
|
6
|
+
const RE_JOB_LOGS = /^\/jobs\/([^/]+)\/logs$/;
|
|
7
|
+
const RE_JOB_HEARTBEAT = /^\/jobs\/([^/]+)\/heartbeat$/;
|
|
8
|
+
const RE_JOB_WAIT = /^\/jobs\/([^/]+)\/wait$/;
|
|
9
|
+
const RE_JOB_EXTEND_LOCK = /^\/jobs\/([^/]+)\/extend-lock$/;
|
|
10
|
+
const RE_JOB_MOVE_TO_WAIT = /^\/jobs\/([^/]+)\/move-to-wait$/;
|
|
11
|
+
export async function routeJobAdvanced(request, path, method, context, cors) {
|
|
12
|
+
const moveDelayedMatch = path.match(RE_JOB_MOVE_DELAYED);
|
|
13
|
+
if (moveDelayedMatch && method === 'POST') {
|
|
14
|
+
const body = await parseJsonBody(request, cors);
|
|
15
|
+
if (body instanceof Response)
|
|
16
|
+
return body;
|
|
17
|
+
const result = await handleCommand({
|
|
18
|
+
cmd: 'MoveToDelayed',
|
|
19
|
+
id: moveDelayedMatch[1],
|
|
20
|
+
delay: body['delay'],
|
|
21
|
+
token: body['token'],
|
|
22
|
+
}, context);
|
|
23
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
24
|
+
}
|
|
25
|
+
const changeDelayMatch = path.match(RE_JOB_DELAY);
|
|
26
|
+
if (changeDelayMatch && method === 'PUT') {
|
|
27
|
+
const body = await parseJsonBody(request, cors);
|
|
28
|
+
if (body instanceof Response)
|
|
29
|
+
return body;
|
|
30
|
+
const result = await handleCommand({ cmd: 'ChangeDelay', id: changeDelayMatch[1], delay: body['delay'] }, context);
|
|
31
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
32
|
+
}
|
|
33
|
+
const childrenMatch = path.match(RE_JOB_CHILDREN);
|
|
34
|
+
if (childrenMatch && method === 'GET') {
|
|
35
|
+
const result = await handleCommand({ cmd: 'GetChildrenValues', id: childrenMatch[1] }, context);
|
|
36
|
+
return jsonResponse(result, result.ok ? 200 : 404, cors);
|
|
37
|
+
}
|
|
38
|
+
const logsMatch = path.match(RE_JOB_LOGS);
|
|
39
|
+
if (logsMatch && method === 'GET') {
|
|
40
|
+
const result = await handleCommand({ cmd: 'GetLogs', id: logsMatch[1] }, context);
|
|
41
|
+
return jsonResponse(result, 200, cors);
|
|
42
|
+
}
|
|
43
|
+
if (logsMatch && method === 'POST') {
|
|
44
|
+
const body = await parseJsonBody(request, cors);
|
|
45
|
+
if (body instanceof Response)
|
|
46
|
+
return body;
|
|
47
|
+
const result = await handleCommand({
|
|
48
|
+
cmd: 'AddLog',
|
|
49
|
+
id: logsMatch[1],
|
|
50
|
+
message: body['message'],
|
|
51
|
+
level: body['level'],
|
|
52
|
+
}, context);
|
|
53
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
54
|
+
}
|
|
55
|
+
if (logsMatch && method === 'DELETE') {
|
|
56
|
+
const result = await handleCommand({ cmd: 'ClearLogs', id: logsMatch[1] }, context);
|
|
57
|
+
return jsonResponse(result, 200, cors);
|
|
58
|
+
}
|
|
59
|
+
const heartbeatMatch = path.match(RE_JOB_HEARTBEAT);
|
|
60
|
+
if (heartbeatMatch && method === 'POST') {
|
|
61
|
+
const body = await parseJsonBody(request, cors);
|
|
62
|
+
if (body instanceof Response)
|
|
63
|
+
return body;
|
|
64
|
+
const result = await handleCommand({
|
|
65
|
+
cmd: 'JobHeartbeat',
|
|
66
|
+
id: heartbeatMatch[1],
|
|
67
|
+
token: body['token'],
|
|
68
|
+
duration: body['duration'],
|
|
69
|
+
}, context);
|
|
70
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
71
|
+
}
|
|
72
|
+
const waitMatch = path.match(RE_JOB_WAIT);
|
|
73
|
+
if (waitMatch && method === 'POST') {
|
|
74
|
+
const body = await parseJsonBody(request, cors);
|
|
75
|
+
if (body instanceof Response)
|
|
76
|
+
return body;
|
|
77
|
+
const result = await handleCommand({ cmd: 'WaitJob', id: waitMatch[1], timeout: body['timeout'] }, context);
|
|
78
|
+
return jsonResponse(result, 200, cors);
|
|
79
|
+
}
|
|
80
|
+
const extendLockMatch = path.match(RE_JOB_EXTEND_LOCK);
|
|
81
|
+
if (extendLockMatch && method === 'POST') {
|
|
82
|
+
const body = await parseJsonBody(request, cors);
|
|
83
|
+
if (body instanceof Response)
|
|
84
|
+
return body;
|
|
85
|
+
const result = await handleCommand({
|
|
86
|
+
cmd: 'ExtendLock',
|
|
87
|
+
id: extendLockMatch[1],
|
|
88
|
+
duration: body['duration'],
|
|
89
|
+
token: body['token'],
|
|
90
|
+
}, context);
|
|
91
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
92
|
+
}
|
|
93
|
+
const moveToWaitMatch = path.match(RE_JOB_MOVE_TO_WAIT);
|
|
94
|
+
if (moveToWaitMatch && method === 'POST') {
|
|
95
|
+
const body = await parseJsonBody(request, cors);
|
|
96
|
+
if (body instanceof Response)
|
|
97
|
+
return body;
|
|
98
|
+
const result = await handleCommand({
|
|
99
|
+
cmd: 'MoveToWait',
|
|
100
|
+
id: moveToWaitMatch[1],
|
|
101
|
+
token: body['token'],
|
|
102
|
+
}, context);
|
|
103
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
104
|
+
}
|
|
105
|
+
return null;
|
|
106
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { handleCommand } from '../handler';
|
|
2
|
+
import { jsonResponse, parseJsonBody } from '../httpEndpoints';
|
|
3
|
+
const RE_JOB_PROMOTE = /^\/jobs\/([^/]+)\/promote$/;
|
|
4
|
+
const RE_JOB_DATA = /^\/jobs\/([^/]+)\/data$/;
|
|
5
|
+
const RE_JOB_STATE = /^\/jobs\/([^/]+)\/state$/;
|
|
6
|
+
const RE_JOB_RESULT = /^\/jobs\/([^/]+)\/result$/;
|
|
7
|
+
const RE_JOB_PROGRESS = /^\/jobs\/([^/]+)\/progress$/;
|
|
8
|
+
const RE_JOB_PRIORITY = /^\/jobs\/([^/]+)\/priority$/;
|
|
9
|
+
const RE_JOB_DISCARD = /^\/jobs\/([^/]+)\/discard$/;
|
|
10
|
+
export async function routeJobManagement(request, path, method, context, cors) {
|
|
11
|
+
const promoteMatch = path.match(RE_JOB_PROMOTE);
|
|
12
|
+
if (promoteMatch && method === 'POST') {
|
|
13
|
+
const result = await handleCommand({ cmd: 'Promote', id: promoteMatch[1] }, context);
|
|
14
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
15
|
+
}
|
|
16
|
+
const dataMatch = path.match(RE_JOB_DATA);
|
|
17
|
+
if (dataMatch && method === 'PUT') {
|
|
18
|
+
let body;
|
|
19
|
+
try {
|
|
20
|
+
body = (await request.json());
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return jsonResponse({ ok: false, error: 'Invalid JSON body' }, 400, cors);
|
|
24
|
+
}
|
|
25
|
+
const result = await handleCommand({ cmd: 'Update', id: dataMatch[1], data: body['data'] }, context);
|
|
26
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
27
|
+
}
|
|
28
|
+
const stateMatch = path.match(RE_JOB_STATE);
|
|
29
|
+
if (stateMatch && method === 'GET') {
|
|
30
|
+
const result = await handleCommand({ cmd: 'GetState', id: stateMatch[1] }, context);
|
|
31
|
+
return jsonResponse(result, result.ok ? 200 : 404, cors);
|
|
32
|
+
}
|
|
33
|
+
const resultMatch = path.match(RE_JOB_RESULT);
|
|
34
|
+
if (resultMatch && method === 'GET') {
|
|
35
|
+
const result = await handleCommand({ cmd: 'GetResult', id: resultMatch[1] }, context);
|
|
36
|
+
return jsonResponse(result, result.ok ? 200 : 404, cors);
|
|
37
|
+
}
|
|
38
|
+
const progressMatch = path.match(RE_JOB_PROGRESS);
|
|
39
|
+
if (progressMatch && method === 'GET') {
|
|
40
|
+
const result = await handleCommand({ cmd: 'GetProgress', id: progressMatch[1] }, context);
|
|
41
|
+
return jsonResponse(result, result.ok ? 200 : 404, cors);
|
|
42
|
+
}
|
|
43
|
+
if (progressMatch && method === 'POST') {
|
|
44
|
+
const body = await parseJsonBody(request, cors);
|
|
45
|
+
if (body instanceof Response)
|
|
46
|
+
return body;
|
|
47
|
+
const result = await handleCommand({
|
|
48
|
+
cmd: 'Progress',
|
|
49
|
+
id: progressMatch[1],
|
|
50
|
+
progress: body['progress'],
|
|
51
|
+
message: body['message'],
|
|
52
|
+
}, context);
|
|
53
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
54
|
+
}
|
|
55
|
+
const priorityMatch = path.match(RE_JOB_PRIORITY);
|
|
56
|
+
if (priorityMatch && method === 'PUT') {
|
|
57
|
+
const body = await parseJsonBody(request, cors);
|
|
58
|
+
if (body instanceof Response)
|
|
59
|
+
return body;
|
|
60
|
+
const result = await handleCommand({
|
|
61
|
+
cmd: 'ChangePriority',
|
|
62
|
+
id: priorityMatch[1],
|
|
63
|
+
priority: body['priority'],
|
|
64
|
+
lifo: body['lifo'],
|
|
65
|
+
}, context);
|
|
66
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
67
|
+
}
|
|
68
|
+
const discardMatch = path.match(RE_JOB_DISCARD);
|
|
69
|
+
if (discardMatch && method === 'POST') {
|
|
70
|
+
const result = await handleCommand({ cmd: 'Discard', id: discardMatch[1] }, context);
|
|
71
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { handleCommand } from '../handler';
|
|
2
|
+
import { jsonResponse, parseJsonBody } from '../httpEndpoints';
|
|
3
|
+
const RE_QUEUE_JOBS = /^\/queues\/([^/]+)\/jobs$/;
|
|
4
|
+
const RE_QUEUE_JOBS_BULK = /^\/queues\/([^/]+)\/jobs\/bulk$/;
|
|
5
|
+
const RE_QUEUE_JOBS_PULL_BATCH = /^\/queues\/([^/]+)\/jobs\/pull-batch$/;
|
|
6
|
+
const RE_QUEUE_JOBS_LIST = /^\/queues\/([^/]+)\/jobs\/list$/;
|
|
7
|
+
export async function routeQueueJobOperations(request, path, method, context, cors) {
|
|
8
|
+
const queueJobsMatch = path.match(RE_QUEUE_JOBS);
|
|
9
|
+
if (queueJobsMatch) {
|
|
10
|
+
const queue = decodeURIComponent(queueJobsMatch[1]);
|
|
11
|
+
if (method === 'POST') {
|
|
12
|
+
let body;
|
|
13
|
+
try {
|
|
14
|
+
body = (await request.json());
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return jsonResponse({ ok: false, error: 'Invalid JSON body' }, 400, cors);
|
|
18
|
+
}
|
|
19
|
+
const command = {
|
|
20
|
+
cmd: 'PUSH',
|
|
21
|
+
queue,
|
|
22
|
+
name: typeof body.name === 'string' ? body.name : 'default',
|
|
23
|
+
data: body.data,
|
|
24
|
+
priority: body.priority,
|
|
25
|
+
delay: body.delay,
|
|
26
|
+
maxAttempts: body.maxAttempts ?? body.attempts,
|
|
27
|
+
backoff: body.backoff,
|
|
28
|
+
timeout: body.timeout,
|
|
29
|
+
jobId: body.jobId,
|
|
30
|
+
removeOnComplete: body.removeOnComplete,
|
|
31
|
+
removeOnFail: body.removeOnFail,
|
|
32
|
+
durable: body.durable,
|
|
33
|
+
ttl: body.ttl,
|
|
34
|
+
uniqueKey: body.uniqueKey,
|
|
35
|
+
groupId: body.groupId,
|
|
36
|
+
dependsOn: body.dependsOn,
|
|
37
|
+
tags: body.tags,
|
|
38
|
+
lifo: body.lifo,
|
|
39
|
+
repeat: body.repeat,
|
|
40
|
+
};
|
|
41
|
+
const result = await handleCommand(command, context);
|
|
42
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
43
|
+
}
|
|
44
|
+
if (method === 'GET') {
|
|
45
|
+
const timeout = parseInt(new URL(request.url).searchParams.get('timeout') ?? '0', 10);
|
|
46
|
+
const result = await handleCommand({ cmd: 'PULL', queue, timeout }, context);
|
|
47
|
+
return jsonResponse(result, 200, cors);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const bulkMatch = path.match(RE_QUEUE_JOBS_BULK);
|
|
51
|
+
if (bulkMatch && method === 'POST') {
|
|
52
|
+
const queue = decodeURIComponent(bulkMatch[1]);
|
|
53
|
+
let body;
|
|
54
|
+
try {
|
|
55
|
+
body = (await request.json());
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return jsonResponse({ ok: false, error: 'Invalid JSON body' }, 400, cors);
|
|
59
|
+
}
|
|
60
|
+
const jobs = (body['jobs'] ?? []).map((job) => ({
|
|
61
|
+
...job,
|
|
62
|
+
name: typeof job.name === 'string' ? job.name : 'default',
|
|
63
|
+
}));
|
|
64
|
+
const result = await handleCommand({ cmd: 'PUSHB', queue, jobs }, context);
|
|
65
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
66
|
+
}
|
|
67
|
+
const pullBatchMatch = path.match(RE_QUEUE_JOBS_PULL_BATCH);
|
|
68
|
+
if (pullBatchMatch && method === 'POST') {
|
|
69
|
+
const queue = decodeURIComponent(pullBatchMatch[1]);
|
|
70
|
+
const body = await parseJsonBody(request, cors);
|
|
71
|
+
if (body instanceof Response)
|
|
72
|
+
return body;
|
|
73
|
+
const result = await handleCommand({
|
|
74
|
+
cmd: 'PULLB',
|
|
75
|
+
queue,
|
|
76
|
+
count: body['count'],
|
|
77
|
+
timeout: body['timeout'],
|
|
78
|
+
owner: body['owner'],
|
|
79
|
+
lockTtl: body['lockTtl'],
|
|
80
|
+
}, context);
|
|
81
|
+
return jsonResponse(result, 200, cors);
|
|
82
|
+
}
|
|
83
|
+
const listMatch = path.match(RE_QUEUE_JOBS_LIST);
|
|
84
|
+
if (listMatch && method === 'GET') {
|
|
85
|
+
const queue = decodeURIComponent(listMatch[1]);
|
|
86
|
+
const url = new URL(request.url);
|
|
87
|
+
const stateValues = [
|
|
88
|
+
...url.searchParams.getAll('state'),
|
|
89
|
+
...url.searchParams.getAll('status'),
|
|
90
|
+
...url.searchParams.getAll('states'),
|
|
91
|
+
]
|
|
92
|
+
.flatMap((value) => value.split(','))
|
|
93
|
+
.map((state) => state.trim())
|
|
94
|
+
.filter(Boolean);
|
|
95
|
+
const state = stateValues.length === 0
|
|
96
|
+
? undefined
|
|
97
|
+
: stateValues.length === 1
|
|
98
|
+
? stateValues[0]
|
|
99
|
+
: stateValues;
|
|
100
|
+
const limitParam = url.searchParams.get('limit');
|
|
101
|
+
const offsetParam = url.searchParams.get('offset');
|
|
102
|
+
const limit = limitParam ? parseInt(limitParam, 10) : undefined;
|
|
103
|
+
const offset = offsetParam ? parseInt(offsetParam, 10) : undefined;
|
|
104
|
+
const result = await handleCommand({ cmd: 'GetJobs', queue, state, limit, offset }, context);
|
|
105
|
+
return jsonResponse(result, 200, cors);
|
|
106
|
+
}
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
@@ -1,9 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP Routes - Job operations
|
|
3
|
-
* All /jobs/:id/* endpoints, split into sub-routers for complexity
|
|
4
|
-
*/
|
|
5
1
|
import type { HandlerContext } from './types';
|
|
6
|
-
|
|
7
|
-
/** Route /jobs/* requests. Returns Response or null if no match. */
|
|
8
|
-
export declare function routeJobRoutes(req: Request, path: string, method: string, ctx: HandlerContext, cors: Cors): Promise<Response | null>;
|
|
9
|
-
export {};
|
|
2
|
+
export declare function routeJobRoutes(request: Request, path: string, method: string, context: HandlerContext, cors: Set<string>): Promise<Response | null>;
|