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,284 +1,95 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP Routes - Job operations
|
|
3
|
-
* All /jobs/:id/* endpoints, split into sub-routers for complexity
|
|
4
|
-
*/
|
|
5
1
|
import { handleCommand } from './handler';
|
|
2
|
+
import { routeJobAdvanced } from './http-routes/jobAdvanced';
|
|
3
|
+
import { routeJobManagement } from './http-routes/jobManagement';
|
|
6
4
|
import { jsonResponse, parseJsonBody } from './httpEndpoints';
|
|
7
|
-
// Pre-compiled regex patterns for URL matching
|
|
8
|
-
const RE_JOB_PROMOTE = /^\/jobs\/([^/]+)\/promote$/;
|
|
9
|
-
const RE_JOB_DATA = /^\/jobs\/([^/]+)\/data$/;
|
|
10
|
-
const RE_JOB_STATE = /^\/jobs\/([^/]+)\/state$/;
|
|
11
|
-
const RE_JOB_RESULT = /^\/jobs\/([^/]+)\/result$/;
|
|
12
|
-
const RE_JOB_PROGRESS = /^\/jobs\/([^/]+)\/progress$/;
|
|
13
|
-
const RE_JOB_PRIORITY = /^\/jobs\/([^/]+)\/priority$/;
|
|
14
|
-
const RE_JOB_DISCARD = /^\/jobs\/([^/]+)\/discard$/;
|
|
15
|
-
const RE_JOB_MOVE_DELAYED = /^\/jobs\/([^/]+)\/move-to-delayed$/;
|
|
16
|
-
const RE_JOB_DELAY = /^\/jobs\/([^/]+)\/delay$/;
|
|
17
|
-
const RE_JOB_CHILDREN = /^\/jobs\/([^/]+)\/children$/;
|
|
18
|
-
const RE_JOB_LOGS = /^\/jobs\/([^/]+)\/logs$/;
|
|
19
|
-
const RE_JOB_HEARTBEAT = /^\/jobs\/([^/]+)\/heartbeat$/;
|
|
20
|
-
const RE_JOB_WAIT = /^\/jobs\/([^/]+)\/wait$/;
|
|
21
|
-
const RE_JOB_EXTEND_LOCK = /^\/jobs\/([^/]+)\/extend-lock$/;
|
|
22
|
-
const RE_JOB_MOVE_TO_WAIT = /^\/jobs\/([^/]+)\/move-to-wait$/;
|
|
23
5
|
const RE_JOB_CUSTOM_ID = /^\/jobs\/custom\/([^/]+)$/;
|
|
24
6
|
const RE_JOB_BY_ID = /^\/jobs\/([^/]+)$/;
|
|
25
7
|
const RE_JOB_ACK = /^\/jobs\/([^/]+)\/ack$/;
|
|
26
8
|
const RE_JOB_FAIL = /^\/jobs\/([^/]+)\/fail$/;
|
|
27
|
-
|
|
28
|
-
async function routeJobManagement(req, path, method, ctx, cors) {
|
|
29
|
-
const promoteMatch = path.match(RE_JOB_PROMOTE);
|
|
30
|
-
if (promoteMatch && method === 'POST') {
|
|
31
|
-
const r = await handleCommand({ cmd: 'Promote', id: promoteMatch[1] }, ctx);
|
|
32
|
-
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
33
|
-
}
|
|
34
|
-
const dataMatch = path.match(RE_JOB_DATA);
|
|
35
|
-
if (dataMatch && method === 'PUT') {
|
|
36
|
-
let body;
|
|
37
|
-
try {
|
|
38
|
-
body = (await req.json());
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
return jsonResponse({ ok: false, error: 'Invalid JSON body' }, 400, cors);
|
|
42
|
-
}
|
|
43
|
-
const r = await handleCommand({ cmd: 'Update', id: dataMatch[1], data: body['data'] }, ctx);
|
|
44
|
-
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
45
|
-
}
|
|
46
|
-
const stateMatch = path.match(RE_JOB_STATE);
|
|
47
|
-
if (stateMatch && method === 'GET') {
|
|
48
|
-
const r = await handleCommand({ cmd: 'GetState', id: stateMatch[1] }, ctx);
|
|
49
|
-
return jsonResponse(r, r.ok ? 200 : 404, cors);
|
|
50
|
-
}
|
|
51
|
-
const resultMatch = path.match(RE_JOB_RESULT);
|
|
52
|
-
if (resultMatch && method === 'GET') {
|
|
53
|
-
const r = await handleCommand({ cmd: 'GetResult', id: resultMatch[1] }, ctx);
|
|
54
|
-
return jsonResponse(r, r.ok ? 200 : 404, cors);
|
|
55
|
-
}
|
|
56
|
-
const progressMatch = path.match(RE_JOB_PROGRESS);
|
|
57
|
-
if (progressMatch && method === 'GET') {
|
|
58
|
-
const r = await handleCommand({ cmd: 'GetProgress', id: progressMatch[1] }, ctx);
|
|
59
|
-
return jsonResponse(r, r.ok ? 200 : 404, cors);
|
|
60
|
-
}
|
|
61
|
-
if (progressMatch && method === 'POST') {
|
|
62
|
-
const body = await parseJsonBody(req, cors);
|
|
63
|
-
if (body instanceof Response)
|
|
64
|
-
return body;
|
|
65
|
-
const r = await handleCommand({
|
|
66
|
-
cmd: 'Progress',
|
|
67
|
-
id: progressMatch[1],
|
|
68
|
-
progress: body['progress'],
|
|
69
|
-
message: body['message'],
|
|
70
|
-
}, ctx);
|
|
71
|
-
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
72
|
-
}
|
|
73
|
-
const priorityMatch = path.match(RE_JOB_PRIORITY);
|
|
74
|
-
if (priorityMatch && method === 'PUT') {
|
|
75
|
-
const body = await parseJsonBody(req, cors);
|
|
76
|
-
if (body instanceof Response)
|
|
77
|
-
return body;
|
|
78
|
-
const r = await handleCommand({
|
|
79
|
-
cmd: 'ChangePriority',
|
|
80
|
-
id: priorityMatch[1],
|
|
81
|
-
priority: body['priority'],
|
|
82
|
-
lifo: body['lifo'],
|
|
83
|
-
}, ctx);
|
|
84
|
-
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
85
|
-
}
|
|
86
|
-
const discardMatch = path.match(RE_JOB_DISCARD);
|
|
87
|
-
if (discardMatch && method === 'POST') {
|
|
88
|
-
const r = await handleCommand({ cmd: 'Discard', id: discardMatch[1] }, ctx);
|
|
89
|
-
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
90
|
-
}
|
|
91
|
-
return null;
|
|
92
|
-
}
|
|
93
|
-
/** Job advanced: delay, children, logs, heartbeat, wait, lock, move-to-wait */
|
|
94
|
-
async function routeJobAdvanced(req, path, method, ctx, cors) {
|
|
95
|
-
const moveDelayedMatch = path.match(RE_JOB_MOVE_DELAYED);
|
|
96
|
-
if (moveDelayedMatch && method === 'POST') {
|
|
97
|
-
const body = await parseJsonBody(req, cors);
|
|
98
|
-
if (body instanceof Response)
|
|
99
|
-
return body;
|
|
100
|
-
const r = await handleCommand({
|
|
101
|
-
cmd: 'MoveToDelayed',
|
|
102
|
-
id: moveDelayedMatch[1],
|
|
103
|
-
delay: body['delay'],
|
|
104
|
-
}, ctx);
|
|
105
|
-
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
106
|
-
}
|
|
107
|
-
const changeDelayMatch = path.match(RE_JOB_DELAY);
|
|
108
|
-
if (changeDelayMatch && method === 'PUT') {
|
|
109
|
-
const body = await parseJsonBody(req, cors);
|
|
110
|
-
if (body instanceof Response)
|
|
111
|
-
return body;
|
|
112
|
-
const r = await handleCommand({
|
|
113
|
-
cmd: 'ChangeDelay',
|
|
114
|
-
id: changeDelayMatch[1],
|
|
115
|
-
delay: body['delay'],
|
|
116
|
-
}, ctx);
|
|
117
|
-
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
118
|
-
}
|
|
119
|
-
const childrenMatch = path.match(RE_JOB_CHILDREN);
|
|
120
|
-
if (childrenMatch && method === 'GET') {
|
|
121
|
-
const r = await handleCommand({ cmd: 'GetChildrenValues', id: childrenMatch[1] }, ctx);
|
|
122
|
-
return jsonResponse(r, r.ok ? 200 : 404, cors);
|
|
123
|
-
}
|
|
124
|
-
const logsMatch = path.match(RE_JOB_LOGS);
|
|
125
|
-
if (logsMatch && method === 'GET') {
|
|
126
|
-
const r = await handleCommand({ cmd: 'GetLogs', id: logsMatch[1] }, ctx);
|
|
127
|
-
return jsonResponse(r, 200, cors);
|
|
128
|
-
}
|
|
129
|
-
if (logsMatch && method === 'POST') {
|
|
130
|
-
const body = await parseJsonBody(req, cors);
|
|
131
|
-
if (body instanceof Response)
|
|
132
|
-
return body;
|
|
133
|
-
const r = await handleCommand({
|
|
134
|
-
cmd: 'AddLog',
|
|
135
|
-
id: logsMatch[1],
|
|
136
|
-
message: body['message'],
|
|
137
|
-
level: body['level'],
|
|
138
|
-
}, ctx);
|
|
139
|
-
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
140
|
-
}
|
|
141
|
-
if (logsMatch && method === 'DELETE') {
|
|
142
|
-
const r = await handleCommand({ cmd: 'ClearLogs', id: logsMatch[1] }, ctx);
|
|
143
|
-
return jsonResponse(r, 200, cors);
|
|
144
|
-
}
|
|
145
|
-
const heartbeatMatch = path.match(RE_JOB_HEARTBEAT);
|
|
146
|
-
if (heartbeatMatch && method === 'POST') {
|
|
147
|
-
const body = await parseJsonBody(req, cors);
|
|
148
|
-
if (body instanceof Response)
|
|
149
|
-
return body;
|
|
150
|
-
const r = await handleCommand({
|
|
151
|
-
cmd: 'JobHeartbeat',
|
|
152
|
-
id: heartbeatMatch[1],
|
|
153
|
-
token: body['token'],
|
|
154
|
-
duration: body['duration'],
|
|
155
|
-
}, ctx);
|
|
156
|
-
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
157
|
-
}
|
|
158
|
-
const waitMatch = path.match(RE_JOB_WAIT);
|
|
159
|
-
if (waitMatch && method === 'POST') {
|
|
160
|
-
const body = await parseJsonBody(req, cors);
|
|
161
|
-
if (body instanceof Response)
|
|
162
|
-
return body;
|
|
163
|
-
const r = await handleCommand({
|
|
164
|
-
cmd: 'WaitJob',
|
|
165
|
-
id: waitMatch[1],
|
|
166
|
-
timeout: body['timeout'],
|
|
167
|
-
}, ctx);
|
|
168
|
-
return jsonResponse(r, 200, cors);
|
|
169
|
-
}
|
|
170
|
-
const extendLockMatch = path.match(RE_JOB_EXTEND_LOCK);
|
|
171
|
-
if (extendLockMatch && method === 'POST') {
|
|
172
|
-
const body = await parseJsonBody(req, cors);
|
|
173
|
-
if (body instanceof Response)
|
|
174
|
-
return body;
|
|
175
|
-
const r = await handleCommand({
|
|
176
|
-
cmd: 'ExtendLock',
|
|
177
|
-
id: extendLockMatch[1],
|
|
178
|
-
duration: body['duration'],
|
|
179
|
-
token: body['token'],
|
|
180
|
-
}, ctx);
|
|
181
|
-
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
182
|
-
}
|
|
183
|
-
const moveToWaitMatch = path.match(RE_JOB_MOVE_TO_WAIT);
|
|
184
|
-
if (moveToWaitMatch && method === 'POST') {
|
|
185
|
-
const r = await handleCommand({ cmd: 'MoveToWait', id: moveToWaitMatch[1] }, ctx);
|
|
186
|
-
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
187
|
-
}
|
|
188
|
-
return null;
|
|
189
|
-
}
|
|
190
|
-
/** Route /jobs/* requests. Returns Response or null if no match. */
|
|
191
|
-
export async function routeJobRoutes(req, path, method, ctx, cors) {
|
|
192
|
-
// Batch endpoints FIRST (exact match, before generic /jobs/:id pattern)
|
|
9
|
+
export async function routeJobRoutes(request, path, method, context, cors) {
|
|
193
10
|
if (path === '/jobs/ack-batch' && method === 'POST') {
|
|
194
|
-
const body = await parseJsonBody(
|
|
11
|
+
const body = await parseJsonBody(request, cors);
|
|
195
12
|
if (body instanceof Response)
|
|
196
13
|
return body;
|
|
197
|
-
const
|
|
14
|
+
const result = await handleCommand({
|
|
198
15
|
cmd: 'ACKB',
|
|
199
16
|
ids: body['ids'],
|
|
200
17
|
results: body['results'],
|
|
201
18
|
tokens: body['tokens'],
|
|
202
|
-
},
|
|
203
|
-
return jsonResponse(
|
|
19
|
+
}, context);
|
|
20
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
204
21
|
}
|
|
205
22
|
if (path === '/jobs/extend-locks' && method === 'POST') {
|
|
206
|
-
const body = await parseJsonBody(
|
|
23
|
+
const body = await parseJsonBody(request, cors);
|
|
207
24
|
if (body instanceof Response)
|
|
208
25
|
return body;
|
|
209
|
-
const
|
|
26
|
+
const result = await handleCommand({
|
|
210
27
|
cmd: 'ExtendLocks',
|
|
211
28
|
ids: body['ids'],
|
|
212
29
|
tokens: body['tokens'],
|
|
213
30
|
durations: body['durations'],
|
|
214
|
-
},
|
|
215
|
-
return jsonResponse(
|
|
31
|
+
}, context);
|
|
32
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
216
33
|
}
|
|
217
34
|
if (path === '/jobs/heartbeat-batch' && method === 'POST') {
|
|
218
|
-
const body = await parseJsonBody(
|
|
35
|
+
const body = await parseJsonBody(request, cors);
|
|
219
36
|
if (body instanceof Response)
|
|
220
37
|
return body;
|
|
221
|
-
const
|
|
38
|
+
const result = await handleCommand({
|
|
222
39
|
cmd: 'JobHeartbeatB',
|
|
223
40
|
ids: body['ids'],
|
|
224
41
|
tokens: body['tokens'],
|
|
225
|
-
},
|
|
226
|
-
return jsonResponse(
|
|
42
|
+
}, context);
|
|
43
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
227
44
|
}
|
|
228
|
-
// GET /jobs/custom/:customId (before generic /jobs/:id)
|
|
229
45
|
const customIdMatch = path.match(RE_JOB_CUSTOM_ID);
|
|
230
46
|
if (customIdMatch && method === 'GET') {
|
|
231
47
|
const customId = decodeURIComponent(customIdMatch[1]);
|
|
232
|
-
const
|
|
233
|
-
return jsonResponse(
|
|
48
|
+
const result = await handleCommand({ cmd: 'GetJobByCustomId', customId }, context);
|
|
49
|
+
return jsonResponse(result, result.ok ? 200 : 404, cors);
|
|
234
50
|
}
|
|
235
|
-
// GET/DELETE /jobs/:id (generic, after specific paths)
|
|
236
51
|
const jobMatch = path.match(RE_JOB_BY_ID);
|
|
237
52
|
if (jobMatch) {
|
|
238
53
|
const id = jobMatch[1];
|
|
239
54
|
if (method === 'GET') {
|
|
240
|
-
const
|
|
241
|
-
return jsonResponse(
|
|
55
|
+
const result = await handleCommand({ cmd: 'GetJob', id }, context);
|
|
56
|
+
return jsonResponse(result, result.ok ? 200 : 404, cors);
|
|
242
57
|
}
|
|
243
58
|
if (method === 'DELETE') {
|
|
244
|
-
const
|
|
245
|
-
return jsonResponse(
|
|
59
|
+
const result = await handleCommand({ cmd: 'Cancel', id }, context);
|
|
60
|
+
return jsonResponse(result, 200, cors);
|
|
246
61
|
}
|
|
247
62
|
}
|
|
248
|
-
// POST /jobs/:id/ack
|
|
249
63
|
const ackMatch = path.match(RE_JOB_ACK);
|
|
250
64
|
if (ackMatch && method === 'POST') {
|
|
251
|
-
const body = await parseJsonBody(
|
|
65
|
+
const body = await parseJsonBody(request, cors);
|
|
252
66
|
if (body instanceof Response)
|
|
253
67
|
return body;
|
|
254
|
-
const
|
|
68
|
+
const result = await handleCommand({
|
|
255
69
|
cmd: 'ACK',
|
|
256
70
|
id: ackMatch[1],
|
|
257
71
|
result: body['result'],
|
|
258
72
|
token: body['token'],
|
|
259
|
-
},
|
|
260
|
-
return jsonResponse(
|
|
73
|
+
}, context);
|
|
74
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
261
75
|
}
|
|
262
|
-
// POST /jobs/:id/fail
|
|
263
76
|
const failMatch = path.match(RE_JOB_FAIL);
|
|
264
77
|
if (failMatch && method === 'POST') {
|
|
265
|
-
const body = await parseJsonBody(
|
|
78
|
+
const body = await parseJsonBody(request, cors);
|
|
266
79
|
if (body instanceof Response)
|
|
267
80
|
return body;
|
|
268
|
-
const
|
|
81
|
+
const result = await handleCommand({
|
|
269
82
|
cmd: 'FAIL',
|
|
270
83
|
id: failMatch[1],
|
|
271
84
|
error: body['error'],
|
|
272
85
|
token: body['token'],
|
|
273
86
|
unrecoverable: body['unrecoverable'],
|
|
274
|
-
// Validated (string[] only, capped) in handleFail (#74)
|
|
275
87
|
stack: body['stack'],
|
|
276
|
-
},
|
|
277
|
-
return jsonResponse(
|
|
88
|
+
}, context);
|
|
89
|
+
return jsonResponse(result, result.ok ? 200 : 400, cors);
|
|
278
90
|
}
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
return routeJobAdvanced(req, path, method, ctx, cors);
|
|
91
|
+
const management = await routeJobManagement(request, path, method, context, cors);
|
|
92
|
+
if (management)
|
|
93
|
+
return management;
|
|
94
|
+
return routeJobAdvanced(request, path, method, context, cors);
|
|
284
95
|
}
|
|
@@ -1,7 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP Routes - Queue operations
|
|
3
|
-
* All /queues/:queue/* endpoints + /queues list
|
|
4
|
-
*/
|
|
5
1
|
import type { HandlerContext } from './types';
|
|
6
|
-
|
|
7
|
-
export declare function routeQueueRoutes(req: Request, path: string, method: string, ctx: HandlerContext, cors: Set<string>): Promise<Response | null>;
|
|
2
|
+
export declare function routeQueueRoutes(request: Request, path: string, method: string, context: HandlerContext, cors: Set<string>): Promise<Response | null>;
|
|
@@ -1,14 +1,6 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* HTTP Routes - Queue operations
|
|
3
|
-
* All /queues/:queue/* endpoints + /queues list
|
|
4
|
-
*/
|
|
5
1
|
import { handleCommand } from './handler';
|
|
2
|
+
import { routeQueueJobOperations } from './http-routes/queueJobs';
|
|
6
3
|
import { jsonResponse, parseJsonBody } from './httpEndpoints';
|
|
7
|
-
// Pre-compiled regex patterns for URL matching
|
|
8
|
-
const RE_QUEUE_JOBS = /^\/queues\/([^/]+)\/jobs$/;
|
|
9
|
-
const RE_QUEUE_JOBS_BULK = /^\/queues\/([^/]+)\/jobs\/bulk$/;
|
|
10
|
-
const RE_QUEUE_JOBS_PULL_BATCH = /^\/queues\/([^/]+)\/jobs\/pull-batch$/;
|
|
11
|
-
const RE_QUEUE_JOBS_LIST = /^\/queues\/([^/]+)\/jobs\/list$/;
|
|
12
4
|
const RE_QUEUE_COUNTS = /^\/queues\/([^/]+)\/counts$/;
|
|
13
5
|
const RE_QUEUE_COUNT = /^\/queues\/([^/]+)\/count$/;
|
|
14
6
|
const RE_QUEUE_PRIORITY_COUNTS = /^\/queues\/([^/]+)\/priority-counts$/;
|
|
@@ -21,258 +13,100 @@ const RE_QUEUE_CLEAN = /^\/queues\/([^/]+)\/clean$/;
|
|
|
21
13
|
const RE_QUEUE_PROMOTE_JOBS = /^\/queues\/([^/]+)\/promote-jobs$/;
|
|
22
14
|
const RE_QUEUE_RETRY_COMPLETED = /^\/queues\/([^/]+)\/retry-completed$/;
|
|
23
15
|
const RE_QUEUE_WORKERS = /^\/queues\/([^/]+)\/workers$/;
|
|
24
|
-
|
|
25
|
-
async function routeJobOps(req, path, method, ctx, cors) {
|
|
26
|
-
// POST/GET /queues/:queue/jobs - push/pull
|
|
27
|
-
const queueJobsMatch = path.match(RE_QUEUE_JOBS);
|
|
28
|
-
if (queueJobsMatch) {
|
|
29
|
-
const queue = decodeURIComponent(queueJobsMatch[1]);
|
|
30
|
-
if (method === 'POST') {
|
|
31
|
-
let body;
|
|
32
|
-
try {
|
|
33
|
-
body = (await req.json());
|
|
34
|
-
}
|
|
35
|
-
catch {
|
|
36
|
-
return jsonResponse({ ok: false, error: 'Invalid JSON body' }, 400, cors);
|
|
37
|
-
}
|
|
38
|
-
const cmd = {
|
|
39
|
-
cmd: 'PUSH',
|
|
40
|
-
queue,
|
|
41
|
-
data: body.data,
|
|
42
|
-
priority: body.priority,
|
|
43
|
-
delay: body.delay,
|
|
44
|
-
maxAttempts: body.maxAttempts ?? body.attempts,
|
|
45
|
-
backoff: body.backoff,
|
|
46
|
-
timeout: body.timeout,
|
|
47
|
-
jobId: body.jobId,
|
|
48
|
-
removeOnComplete: body.removeOnComplete,
|
|
49
|
-
removeOnFail: body.removeOnFail,
|
|
50
|
-
durable: body.durable,
|
|
51
|
-
ttl: body.ttl,
|
|
52
|
-
uniqueKey: body.uniqueKey,
|
|
53
|
-
groupId: body.groupId,
|
|
54
|
-
dependsOn: body.dependsOn,
|
|
55
|
-
tags: body.tags,
|
|
56
|
-
lifo: body.lifo,
|
|
57
|
-
repeat: body.repeat,
|
|
58
|
-
};
|
|
59
|
-
const r = await handleCommand(cmd, ctx);
|
|
60
|
-
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
61
|
-
}
|
|
62
|
-
if (method === 'GET') {
|
|
63
|
-
const timeout = parseInt(new URL(req.url).searchParams.get('timeout') ?? '0', 10);
|
|
64
|
-
const r = await handleCommand({ cmd: 'PULL', queue, timeout }, ctx);
|
|
65
|
-
return jsonResponse(r, 200, cors);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
// POST /queues/:queue/jobs/bulk - bulk push
|
|
69
|
-
const bulkMatch = path.match(RE_QUEUE_JOBS_BULK);
|
|
70
|
-
if (bulkMatch && method === 'POST') {
|
|
71
|
-
const queue = decodeURIComponent(bulkMatch[1]);
|
|
72
|
-
let body;
|
|
73
|
-
try {
|
|
74
|
-
body = (await req.json());
|
|
75
|
-
}
|
|
76
|
-
catch {
|
|
77
|
-
return jsonResponse({ ok: false, error: 'Invalid JSON body' }, 400, cors);
|
|
78
|
-
}
|
|
79
|
-
const r = await handleCommand({
|
|
80
|
-
cmd: 'PUSHB',
|
|
81
|
-
queue,
|
|
82
|
-
jobs: body['jobs'],
|
|
83
|
-
}, ctx);
|
|
84
|
-
return jsonResponse(r, r.ok ? 200 : 400, cors);
|
|
85
|
-
}
|
|
86
|
-
// POST /queues/:queue/jobs/pull-batch
|
|
87
|
-
const pullBatchMatch = path.match(RE_QUEUE_JOBS_PULL_BATCH);
|
|
88
|
-
if (pullBatchMatch && method === 'POST') {
|
|
89
|
-
const queue = decodeURIComponent(pullBatchMatch[1]);
|
|
90
|
-
const body = await parseJsonBody(req, cors);
|
|
91
|
-
if (body instanceof Response)
|
|
92
|
-
return body;
|
|
93
|
-
const r = await handleCommand({
|
|
94
|
-
cmd: 'PULLB',
|
|
95
|
-
queue,
|
|
96
|
-
count: body['count'],
|
|
97
|
-
timeout: body['timeout'],
|
|
98
|
-
owner: body['owner'],
|
|
99
|
-
lockTtl: body['lockTtl'],
|
|
100
|
-
}, ctx);
|
|
101
|
-
return jsonResponse(r, 200, cors);
|
|
102
|
-
}
|
|
103
|
-
// GET /queues/:queue/jobs/list?state=&limit=&offset=
|
|
104
|
-
const listMatch = path.match(RE_QUEUE_JOBS_LIST);
|
|
105
|
-
if (listMatch && method === 'GET') {
|
|
106
|
-
const queue = decodeURIComponent(listMatch[1]);
|
|
107
|
-
const url = new URL(req.url);
|
|
108
|
-
// Accept `state`, `status` (dashboard/REST convention), and `states` as
|
|
109
|
-
// aliases, each repeatable and comma-separated. Previously only `state` was
|
|
110
|
-
// read, so `?status=failed` silently fell through to an unfiltered list and
|
|
111
|
-
// returned the whole queue (#95). A state name never contains a comma, so
|
|
112
|
-
// splitting is safe.
|
|
113
|
-
const stateValues = [
|
|
114
|
-
...url.searchParams.getAll('state'),
|
|
115
|
-
...url.searchParams.getAll('status'),
|
|
116
|
-
...url.searchParams.getAll('states'),
|
|
117
|
-
]
|
|
118
|
-
.flatMap((v) => v.split(','))
|
|
119
|
-
.map((s) => s.trim())
|
|
120
|
-
.filter(Boolean);
|
|
121
|
-
const state = stateValues.length === 0
|
|
122
|
-
? undefined
|
|
123
|
-
: stateValues.length === 1
|
|
124
|
-
? stateValues[0]
|
|
125
|
-
: stateValues;
|
|
126
|
-
const limitParam = url.searchParams.get('limit');
|
|
127
|
-
const offsetParam = url.searchParams.get('offset');
|
|
128
|
-
const limit = limitParam ? parseInt(limitParam, 10) : undefined;
|
|
129
|
-
const offset = offsetParam ? parseInt(offsetParam, 10) : undefined;
|
|
130
|
-
const r = await handleCommand({
|
|
131
|
-
cmd: 'GetJobs',
|
|
132
|
-
queue,
|
|
133
|
-
state,
|
|
134
|
-
limit,
|
|
135
|
-
offset,
|
|
136
|
-
}, ctx);
|
|
137
|
-
return jsonResponse(r, 200, cors);
|
|
138
|
-
}
|
|
139
|
-
return null;
|
|
140
|
-
}
|
|
141
|
-
/** Route /queues/* requests. Returns Response or null if no match. */
|
|
142
|
-
export async function routeQueueRoutes(req, path, method, ctx, cors) {
|
|
143
|
-
// GET /queues - list all queues
|
|
16
|
+
export async function routeQueueRoutes(request, path, method, context, cors) {
|
|
144
17
|
if (path === '/queues' && method === 'GET') {
|
|
145
|
-
|
|
146
|
-
return jsonResponse(r, 200, cors);
|
|
18
|
+
return jsonResponse(await handleCommand({ cmd: 'ListQueues' }, context), 200, cors);
|
|
147
19
|
}
|
|
148
|
-
// GET /queues/summary - all queues with paused + counts in one call
|
|
149
20
|
if (path === '/queues/summary' && method === 'GET') {
|
|
150
|
-
|
|
151
|
-
return jsonResponse(summary, 200, cors);
|
|
21
|
+
return jsonResponse(context.queueManager.getQueuesSummary(), 200, cors);
|
|
152
22
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
return jobOpsResult;
|
|
157
|
-
// GET /queues/:queue/workers
|
|
23
|
+
const jobOperations = await routeQueueJobOperations(request, path, method, context, cors);
|
|
24
|
+
if (jobOperations)
|
|
25
|
+
return jobOperations;
|
|
158
26
|
const queueWorkersMatch = path.match(RE_QUEUE_WORKERS);
|
|
159
27
|
if (queueWorkersMatch && method === 'GET') {
|
|
160
28
|
const queue = decodeURIComponent(queueWorkersMatch[1]);
|
|
161
|
-
const workers =
|
|
29
|
+
const workers = context.queueManager.workerManager.getForQueue(queue);
|
|
162
30
|
return jsonResponse({
|
|
163
31
|
ok: true,
|
|
164
|
-
workers: workers.map((
|
|
165
|
-
id:
|
|
166
|
-
name:
|
|
167
|
-
queues:
|
|
168
|
-
concurrency:
|
|
169
|
-
registeredAt:
|
|
170
|
-
lastSeen:
|
|
171
|
-
activeJobs:
|
|
172
|
-
processedJobs:
|
|
173
|
-
failedJobs:
|
|
32
|
+
workers: workers.map((worker) => ({
|
|
33
|
+
id: worker.id,
|
|
34
|
+
name: worker.name,
|
|
35
|
+
queues: worker.queues,
|
|
36
|
+
concurrency: worker.concurrency,
|
|
37
|
+
registeredAt: worker.registeredAt,
|
|
38
|
+
lastSeen: worker.lastSeen,
|
|
39
|
+
activeJobs: worker.activeJobs,
|
|
40
|
+
processedJobs: worker.processedJobs,
|
|
41
|
+
failedJobs: worker.failedJobs,
|
|
174
42
|
})),
|
|
175
43
|
}, 200, cors);
|
|
176
44
|
}
|
|
177
|
-
// GET /queues/:queue/counts
|
|
178
45
|
const countsMatch = path.match(RE_QUEUE_COUNTS);
|
|
179
46
|
if (countsMatch && method === 'GET') {
|
|
180
47
|
const queue = decodeURIComponent(countsMatch[1]);
|
|
181
|
-
|
|
182
|
-
return jsonResponse(r, 200, cors);
|
|
48
|
+
return jsonResponse(await handleCommand({ cmd: 'GetJobCounts', queue }, context), 200, cors);
|
|
183
49
|
}
|
|
184
|
-
// GET /queues/:queue/count
|
|
185
50
|
const countMatch = path.match(RE_QUEUE_COUNT);
|
|
186
51
|
if (countMatch && method === 'GET') {
|
|
187
52
|
const queue = decodeURIComponent(countMatch[1]);
|
|
188
|
-
|
|
189
|
-
return jsonResponse(r, 200, cors);
|
|
53
|
+
return jsonResponse(await handleCommand({ cmd: 'Count', queue }, context), 200, cors);
|
|
190
54
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
const r = await handleCommand({ cmd: 'GetCountsPerPriority', queue }, ctx);
|
|
196
|
-
return jsonResponse(r, 200, cors);
|
|
55
|
+
const priorityCountsMatch = path.match(RE_QUEUE_PRIORITY_COUNTS);
|
|
56
|
+
if (priorityCountsMatch && method === 'GET') {
|
|
57
|
+
const queue = decodeURIComponent(priorityCountsMatch[1]);
|
|
58
|
+
return jsonResponse(await handleCommand({ cmd: 'GetCountsPerPriority', queue }, context), 200, cors);
|
|
197
59
|
}
|
|
198
|
-
// GET /queues/:queue/paused
|
|
199
60
|
const pausedMatch = path.match(RE_QUEUE_PAUSED);
|
|
200
61
|
if (pausedMatch && method === 'GET') {
|
|
201
62
|
const queue = decodeURIComponent(pausedMatch[1]);
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
const r = await handleCommand({ cmd: 'Resume', queue }, ctx);
|
|
217
|
-
return jsonResponse(r, 200, cors);
|
|
218
|
-
}
|
|
219
|
-
// POST /queues/:queue/drain
|
|
220
|
-
const drainMatch = path.match(RE_QUEUE_DRAIN);
|
|
221
|
-
if (drainMatch && method === 'POST') {
|
|
222
|
-
const queue = decodeURIComponent(drainMatch[1]);
|
|
223
|
-
const r = await handleCommand({ cmd: 'Drain', queue }, ctx);
|
|
224
|
-
return jsonResponse(r, 200, cors);
|
|
225
|
-
}
|
|
226
|
-
// POST /queues/:queue/obliterate
|
|
227
|
-
const obliterateMatch = path.match(RE_QUEUE_OBLITERATE);
|
|
228
|
-
if (obliterateMatch && method === 'POST') {
|
|
229
|
-
const queue = decodeURIComponent(obliterateMatch[1]);
|
|
230
|
-
const r = await handleCommand({ cmd: 'Obliterate', queue }, ctx);
|
|
231
|
-
return jsonResponse(r, 200, cors);
|
|
63
|
+
return jsonResponse(await handleCommand({ cmd: 'IsPaused', queue }, context), 200, cors);
|
|
64
|
+
}
|
|
65
|
+
const controlRoutes = [
|
|
66
|
+
[RE_QUEUE_PAUSE, 'POST', 'Pause'],
|
|
67
|
+
[RE_QUEUE_RESUME, 'POST', 'Resume'],
|
|
68
|
+
[RE_QUEUE_DRAIN, 'POST', 'Drain'],
|
|
69
|
+
[RE_QUEUE_OBLITERATE, 'POST', 'Obliterate'],
|
|
70
|
+
];
|
|
71
|
+
for (const [pattern, expectedMethod, commandName] of controlRoutes) {
|
|
72
|
+
const match = path.match(pattern);
|
|
73
|
+
if (match && method === expectedMethod) {
|
|
74
|
+
const queue = decodeURIComponent(match[1]);
|
|
75
|
+
return jsonResponse(await handleCommand({ cmd: commandName, queue }, context), 200, cors);
|
|
76
|
+
}
|
|
232
77
|
}
|
|
233
|
-
// POST /queues/:queue/clean
|
|
234
78
|
const cleanMatch = path.match(RE_QUEUE_CLEAN);
|
|
235
79
|
if (cleanMatch && method === 'POST') {
|
|
236
80
|
const queue = decodeURIComponent(cleanMatch[1]);
|
|
237
|
-
const body = await parseJsonBody(
|
|
81
|
+
const body = await parseJsonBody(request, cors);
|
|
238
82
|
if (body instanceof Response)
|
|
239
83
|
return body;
|
|
240
|
-
const
|
|
84
|
+
const result = await handleCommand({
|
|
241
85
|
cmd: 'Clean',
|
|
242
86
|
queue,
|
|
243
87
|
grace: typeof body['grace'] === 'number' ? body['grace'] : 0,
|
|
244
88
|
state: body['state'],
|
|
245
89
|
limit: body['limit'],
|
|
246
|
-
},
|
|
247
|
-
return jsonResponse(
|
|
90
|
+
}, context);
|
|
91
|
+
return jsonResponse(result, 200, cors);
|
|
248
92
|
}
|
|
249
|
-
// POST /queues/:queue/promote-jobs
|
|
250
93
|
const promoteJobsMatch = path.match(RE_QUEUE_PROMOTE_JOBS);
|
|
251
94
|
if (promoteJobsMatch && method === 'POST') {
|
|
252
95
|
const queue = decodeURIComponent(promoteJobsMatch[1]);
|
|
253
|
-
const body = await parseJsonBody(
|
|
96
|
+
const body = await parseJsonBody(request, cors);
|
|
254
97
|
if (body instanceof Response)
|
|
255
98
|
return body;
|
|
256
|
-
const
|
|
257
|
-
|
|
258
|
-
queue,
|
|
259
|
-
count: body['count'],
|
|
260
|
-
}, ctx);
|
|
261
|
-
return jsonResponse(r, 200, cors);
|
|
99
|
+
const result = await handleCommand({ cmd: 'PromoteJobs', queue, count: body['count'] }, context);
|
|
100
|
+
return jsonResponse(result, 200, cors);
|
|
262
101
|
}
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
const
|
|
267
|
-
const body = await parseJsonBody(req, cors);
|
|
102
|
+
const retryCompletedMatch = path.match(RE_QUEUE_RETRY_COMPLETED);
|
|
103
|
+
if (retryCompletedMatch && method === 'POST') {
|
|
104
|
+
const queue = decodeURIComponent(retryCompletedMatch[1]);
|
|
105
|
+
const body = await parseJsonBody(request, cors);
|
|
268
106
|
if (body instanceof Response)
|
|
269
107
|
return body;
|
|
270
|
-
const
|
|
271
|
-
|
|
272
|
-
queue,
|
|
273
|
-
id: body['id'],
|
|
274
|
-
}, ctx);
|
|
275
|
-
return jsonResponse(r, 200, cors);
|
|
108
|
+
const result = await handleCommand({ cmd: 'RetryCompleted', queue, id: body['id'] }, context);
|
|
109
|
+
return jsonResponse(result, 200, cors);
|
|
276
110
|
}
|
|
277
111
|
return null;
|
|
278
112
|
}
|
|
@@ -30,6 +30,7 @@ export async function routeResourceRoutes(req, path, method, ctx, cors) {
|
|
|
30
30
|
const r = await handleCommand({
|
|
31
31
|
cmd: 'Cron',
|
|
32
32
|
name: body['name'],
|
|
33
|
+
jobName: typeof body['jobName'] === 'string' ? body['jobName'] : 'default',
|
|
33
34
|
queue: body['queue'],
|
|
34
35
|
data: body['data'],
|
|
35
36
|
schedule: body['schedule'],
|