bunqueue 2.8.54 → 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 -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/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/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/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 +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/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 +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
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
function record(value) {
|
|
2
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
3
|
+
? value
|
|
4
|
+
: null;
|
|
5
|
+
}
|
|
6
|
+
function validatedIndices(value, size) {
|
|
7
|
+
if (!Array.isArray(value))
|
|
8
|
+
throw new Error('Invalid ACKB ignoredIndices response');
|
|
9
|
+
const seen = new Set();
|
|
10
|
+
for (const index of value) {
|
|
11
|
+
if (!Number.isInteger(index) || index < 0 || index >= size || seen.has(index)) {
|
|
12
|
+
throw new Error('Invalid ACKB ignoredIndices response');
|
|
13
|
+
}
|
|
14
|
+
seen.add(index);
|
|
15
|
+
}
|
|
16
|
+
return [...seen];
|
|
17
|
+
}
|
|
18
|
+
function validatedIds(value) {
|
|
19
|
+
if (!Array.isArray(value) || value.some((id) => typeof id !== 'string')) {
|
|
20
|
+
throw new Error('Invalid ACKB ignoredIds response');
|
|
21
|
+
}
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
/** Parse structured ACKB evidence, retaining duplicate job-ID positions. */
|
|
25
|
+
export function ignoredAckIndices(data, batch) {
|
|
26
|
+
if (data === undefined)
|
|
27
|
+
return new Set();
|
|
28
|
+
const payload = record(data);
|
|
29
|
+
if (!payload)
|
|
30
|
+
throw new Error('Invalid ACKB response data');
|
|
31
|
+
const hasIndices = Object.hasOwn(payload, 'ignoredIndices');
|
|
32
|
+
const hasIds = Object.hasOwn(payload, 'ignoredIds');
|
|
33
|
+
if (hasIds && !hasIndices)
|
|
34
|
+
throw new Error('Invalid ACKB ignoredIndices response');
|
|
35
|
+
if (!hasIndices && !hasIds)
|
|
36
|
+
return new Set();
|
|
37
|
+
const ids = hasIds ? validatedIds(payload.ignoredIds) : null;
|
|
38
|
+
const indices = validatedIndices(payload.ignoredIndices, batch.length);
|
|
39
|
+
if (ids) {
|
|
40
|
+
if (ids.length !== indices.length)
|
|
41
|
+
throw new Error('Mismatched ACKB ignored evidence');
|
|
42
|
+
for (let offset = 0; offset < indices.length; offset++) {
|
|
43
|
+
if (batch[indices[offset]]?.id !== ids[offset]) {
|
|
44
|
+
throw new Error('Mismatched ACKB ignored evidence');
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return new Set(indices);
|
|
49
|
+
}
|
|
50
|
+
/** Parse a single ACK response; normal historical responses carry no data. */
|
|
51
|
+
export function outcomeWasApplied(data) {
|
|
52
|
+
if (data === undefined)
|
|
53
|
+
return true;
|
|
54
|
+
const payload = record(data);
|
|
55
|
+
if (payload?.applied === false && payload.reason === 'already-finalized')
|
|
56
|
+
return false;
|
|
57
|
+
throw new Error('Invalid ACK response data');
|
|
58
|
+
}
|
|
@@ -9,6 +9,9 @@ export class GroupConcurrencyLimiter {
|
|
|
9
9
|
maxPerGroup;
|
|
10
10
|
activeByGroup = new Map();
|
|
11
11
|
constructor(groupKey, max) {
|
|
12
|
+
if (!Number.isInteger(max) || max <= 0) {
|
|
13
|
+
throw new RangeError('Worker group limiter max must be a positive integer');
|
|
14
|
+
}
|
|
12
15
|
this.groupKey = groupKey;
|
|
13
16
|
this.maxPerGroup = max;
|
|
14
17
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Job as InternalJob } from '../../../domain/types/job';
|
|
2
|
+
import type { AckBatcher } from '../ackBatcher';
|
|
3
|
+
import type { TcpConnection } from '../types';
|
|
4
|
+
export declare function computeStackLines(error: Error): {
|
|
5
|
+
stackLines: string[];
|
|
6
|
+
wireStack: string[] | undefined;
|
|
7
|
+
};
|
|
8
|
+
interface MoveToFailedHandlerOptions {
|
|
9
|
+
embedded: boolean;
|
|
10
|
+
tcp: TcpConnection | null;
|
|
11
|
+
internalJob: InternalJob;
|
|
12
|
+
token: string | null | undefined;
|
|
13
|
+
removeOnFail: boolean | undefined;
|
|
14
|
+
onCalled: (error: Error) => void;
|
|
15
|
+
onIgnored: () => void;
|
|
16
|
+
}
|
|
17
|
+
export declare function createMoveToFailedHandler(options: MoveToFailedHandlerOptions): (id: string, error: Error, _lockToken?: string) => Promise<void>;
|
|
18
|
+
interface MoveToCompletedHandlerOptions {
|
|
19
|
+
embedded: boolean;
|
|
20
|
+
ackBatcher: AckBatcher;
|
|
21
|
+
internalJob: InternalJob;
|
|
22
|
+
token: string | null | undefined;
|
|
23
|
+
removeOnComplete: boolean | undefined;
|
|
24
|
+
onCalled: (value: unknown) => void;
|
|
25
|
+
onIgnored: () => void;
|
|
26
|
+
}
|
|
27
|
+
export declare function createMoveToCompletedHandler(options: MoveToCompletedHandlerOptions): (id: string, returnValue: unknown, _lockToken?: string) => Promise<unknown>;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { UnrecoverableError } from '../../errors';
|
|
2
|
+
import { getSharedManager } from '../../manager';
|
|
3
|
+
import { outcomeWasApplied } from '../ackOutcome';
|
|
4
|
+
export function computeStackLines(error) {
|
|
5
|
+
const stackLines = error.stack
|
|
6
|
+
? error.stack
|
|
7
|
+
.split('\n')
|
|
8
|
+
.map((line) => line.trim())
|
|
9
|
+
.filter(Boolean)
|
|
10
|
+
: [];
|
|
11
|
+
const wireStack = stackLines.length > 0 ? stackLines.slice(0, 50) : undefined;
|
|
12
|
+
return { stackLines, wireStack };
|
|
13
|
+
}
|
|
14
|
+
export function createMoveToFailedHandler(options) {
|
|
15
|
+
const { embedded, tcp, internalJob, token, removeOnFail, onCalled, onIgnored } = options;
|
|
16
|
+
return async (_id, error, _lockToken) => {
|
|
17
|
+
const { wireStack } = computeStackLines(error);
|
|
18
|
+
const unrecoverable = error instanceof UnrecoverableError;
|
|
19
|
+
let applied = true;
|
|
20
|
+
if (embedded) {
|
|
21
|
+
const manager = getSharedManager();
|
|
22
|
+
const outcome = await manager.fail(internalJob.id, error.message, token ?? undefined, unrecoverable, wireStack, removeOnFail);
|
|
23
|
+
applied = outcome?.applied !== false;
|
|
24
|
+
}
|
|
25
|
+
else if (tcp) {
|
|
26
|
+
const response = await tcp.send({
|
|
27
|
+
cmd: 'FAIL',
|
|
28
|
+
id: internalJob.id,
|
|
29
|
+
error: error.message,
|
|
30
|
+
...(wireStack ? { stack: wireStack } : {}),
|
|
31
|
+
...(token ? { token } : {}),
|
|
32
|
+
...(unrecoverable ? { unrecoverable: true } : {}),
|
|
33
|
+
...(removeOnFail ? { removeOnFail: true } : {}),
|
|
34
|
+
});
|
|
35
|
+
if (response.ok !== true) {
|
|
36
|
+
throw new Error(typeof response.error === 'string' ? response.error : 'FAIL failed');
|
|
37
|
+
}
|
|
38
|
+
applied = outcomeWasApplied(response.data);
|
|
39
|
+
}
|
|
40
|
+
if (!applied) {
|
|
41
|
+
onIgnored();
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
onCalled(error);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function createMoveToCompletedHandler(options) {
|
|
48
|
+
const { embedded, ackBatcher, internalJob, token, removeOnComplete, onCalled, onIgnored } = options;
|
|
49
|
+
return async (_id, returnValue, _lockToken) => {
|
|
50
|
+
let applied = true;
|
|
51
|
+
if (embedded) {
|
|
52
|
+
const manager = getSharedManager();
|
|
53
|
+
const outcome = await manager.ack(internalJob.id, returnValue, token ?? undefined, {
|
|
54
|
+
removeOnComplete,
|
|
55
|
+
});
|
|
56
|
+
applied = outcome?.applied !== false;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
applied = await ackBatcher.queue(String(internalJob.id), returnValue, token ?? undefined, removeOnComplete);
|
|
60
|
+
}
|
|
61
|
+
if (!applied) {
|
|
62
|
+
onIgnored();
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
onCalled(returnValue);
|
|
66
|
+
return null;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Job as InternalJob } from '../../../domain/types/job';
|
|
2
|
+
import type { JobDependencies, JobDependenciesCount } from '../../types';
|
|
3
|
+
import type { PendingTransitionSettlement, TcpConnection } from '../types';
|
|
4
|
+
export declare function createWaitUntilFinishedHandler(embedded: boolean, tcp: TcpConnection | null): (id: string, _queueEvents: unknown, ttl?: number) => Promise<unknown>;
|
|
5
|
+
export declare function createDiscardHandler(embedded: boolean, tcp: TcpConnection | null, options?: {
|
|
6
|
+
token?: string;
|
|
7
|
+
onPending?: (pending: Promise<PendingTransitionSettlement>) => void;
|
|
8
|
+
}): (id: string) => void;
|
|
9
|
+
export declare function createGetDependenciesHandler(embedded: boolean, tcp: TcpConnection | null, internalJob: InternalJob): (_id: string) => Promise<JobDependencies>;
|
|
10
|
+
export declare function createGetDependenciesCountHandler(embedded: boolean, tcp: TcpConnection | null, internalJob: InternalJob): (_id: string) => Promise<JobDependenciesCount>;
|
|
11
|
+
export declare function createRemoveDeduplicationKeyHandler(embedded: boolean, tcp: TcpConnection | null): (id: string) => Promise<boolean>;
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { jobId } from '../../../domain/types/job';
|
|
2
|
+
import { removeJobDeduplicationKey } from '../../jobDeduplication';
|
|
3
|
+
import { getSharedManager } from '../../manager';
|
|
4
|
+
export function createWaitUntilFinishedHandler(embedded, tcp) {
|
|
5
|
+
return async (id, _queueEvents, ttl) => {
|
|
6
|
+
const timeout = ttl ?? 30000;
|
|
7
|
+
if (embedded) {
|
|
8
|
+
const manager = getSharedManager();
|
|
9
|
+
const job = await manager.getJob(jobId(id));
|
|
10
|
+
if (!job)
|
|
11
|
+
throw new Error(`Job ${id} not found`);
|
|
12
|
+
if (job.completedAt)
|
|
13
|
+
return manager.getResult(jobId(id));
|
|
14
|
+
const completed = await manager.waitForJobCompletion(jobId(id), timeout);
|
|
15
|
+
if (!completed)
|
|
16
|
+
throw new Error(`waitUntilFinished timed out after ${timeout}ms`);
|
|
17
|
+
return manager.getResult(jobId(id));
|
|
18
|
+
}
|
|
19
|
+
if (!tcp)
|
|
20
|
+
throw new Error('waitUntilFinished: no connection');
|
|
21
|
+
const response = await tcp.send({ cmd: 'WaitJob', id, timeout });
|
|
22
|
+
const result = response;
|
|
23
|
+
if (!result.completed)
|
|
24
|
+
throw new Error(`waitUntilFinished timed out after ${timeout}ms`);
|
|
25
|
+
return result.result;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function createDiscardHandler(embedded, tcp, options = {}) {
|
|
29
|
+
let pending = null;
|
|
30
|
+
return (id) => {
|
|
31
|
+
if (pending)
|
|
32
|
+
return;
|
|
33
|
+
const operation = (async () => {
|
|
34
|
+
try {
|
|
35
|
+
if (embedded) {
|
|
36
|
+
const applied = await getSharedManager().discard(jobId(id), options.token);
|
|
37
|
+
return { status: applied ? 'applied' : 'ignored' };
|
|
38
|
+
}
|
|
39
|
+
if (!tcp)
|
|
40
|
+
return { status: 'failed', error: new Error('Discard: no connection') };
|
|
41
|
+
const response = await tcp.send({
|
|
42
|
+
cmd: 'Discard',
|
|
43
|
+
id,
|
|
44
|
+
...(options.token === undefined ? {} : { token: options.token }),
|
|
45
|
+
});
|
|
46
|
+
if (response.ok === true)
|
|
47
|
+
return { status: 'applied' };
|
|
48
|
+
const message = typeof response.error === 'string' ? response.error : 'Discard failed';
|
|
49
|
+
if (/not found|not active|not in processing/i.test(message))
|
|
50
|
+
return { status: 'ignored' };
|
|
51
|
+
return { status: 'failed', error: new Error(message) };
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
return {
|
|
55
|
+
status: 'failed',
|
|
56
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
})();
|
|
60
|
+
pending = operation;
|
|
61
|
+
options.onPending?.(operation);
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export function createGetDependenciesHandler(embedded, tcp, internalJob) {
|
|
65
|
+
return async () => {
|
|
66
|
+
const childIds = internalJob.childrenIds;
|
|
67
|
+
const processed = {};
|
|
68
|
+
const unprocessed = [];
|
|
69
|
+
for (const childId of childIds) {
|
|
70
|
+
let state = 'unknown';
|
|
71
|
+
let result;
|
|
72
|
+
if (embedded) {
|
|
73
|
+
const manager = getSharedManager();
|
|
74
|
+
state = await manager.getJobState(childId);
|
|
75
|
+
if (state === 'completed')
|
|
76
|
+
result = manager.getResult(childId);
|
|
77
|
+
}
|
|
78
|
+
else if (tcp) {
|
|
79
|
+
const stateResponse = await tcp.send({ cmd: 'GetState', id: String(childId) });
|
|
80
|
+
state = stateResponse.state ?? 'unknown';
|
|
81
|
+
if (state === 'completed') {
|
|
82
|
+
const resultResponse = await tcp.send({ cmd: 'GetResult', id: String(childId) });
|
|
83
|
+
result = resultResponse.result;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const key = `${internalJob.queue}:${String(childId)}`;
|
|
87
|
+
if (state === 'completed' || state === 'failed')
|
|
88
|
+
processed[key] = result ?? null;
|
|
89
|
+
else
|
|
90
|
+
unprocessed.push(key);
|
|
91
|
+
}
|
|
92
|
+
return { processed, unprocessed };
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
export function createGetDependenciesCountHandler(embedded, tcp, internalJob) {
|
|
96
|
+
const getDependencies = createGetDependenciesHandler(embedded, tcp, internalJob);
|
|
97
|
+
return async (id) => {
|
|
98
|
+
const dependencies = await getDependencies(id);
|
|
99
|
+
return {
|
|
100
|
+
processed: Object.keys(dependencies.processed).length,
|
|
101
|
+
unprocessed: dependencies.unprocessed.length,
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
export function createRemoveDeduplicationKeyHandler(embedded, tcp) {
|
|
106
|
+
return (id) => removeJobDeduplicationKey(id, embedded, tcp);
|
|
107
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type Job as InternalJob } from '../../../domain/types/job';
|
|
2
|
+
import type { ChangePriorityOpts } from '../../types';
|
|
3
|
+
import type { TcpConnection } from '../types';
|
|
4
|
+
export declare function createRemoveHandler(embedded: boolean, tcp: TcpConnection | null): (id: string) => Promise<void>;
|
|
5
|
+
export declare function createRetryHandler(embedded: boolean, tcp: TcpConnection | null, options: {
|
|
6
|
+
internalJob: InternalJob;
|
|
7
|
+
token?: string;
|
|
8
|
+
onTransitionApplied?: () => void;
|
|
9
|
+
}): (id: string) => Promise<void>;
|
|
10
|
+
export declare function createUpdateDataHandler(embedded: boolean, tcp: TcpConnection | null): (id: string, data: unknown) => Promise<void>;
|
|
11
|
+
export declare function createPromoteHandler(embedded: boolean, tcp: TcpConnection | null): (id: string) => Promise<void>;
|
|
12
|
+
export declare function createChangeDelayHandler(embedded: boolean, tcp: TcpConnection | null, token?: string, onTransitionApplied?: () => void): (id: string, delay: number) => Promise<void>;
|
|
13
|
+
export declare function createChangePriorityHandler(embedded: boolean, tcp: TcpConnection | null): (id: string, options: ChangePriorityOpts) => Promise<void>;
|
|
14
|
+
export declare function createExtendLockHandler(embedded: boolean, tcp: TcpConnection | null): (id: string, token: string, duration: number) => Promise<number>;
|
|
15
|
+
export declare function createClearLogsHandler(embedded: boolean, tcp: TcpConnection | null): (id: string, keepLogs?: number) => Promise<void>;
|
|
16
|
+
export declare function createMoveToWaitHandler(embedded: boolean, tcp: TcpConnection | null, onTransitionApplied?: () => void): (id: string, token?: string) => Promise<boolean>;
|
|
17
|
+
export declare function createMoveToDelayedHandler(embedded: boolean, tcp: TcpConnection | null, onTransitionApplied?: () => void): (id: string, timestamp: number, token?: string) => Promise<void>;
|
|
18
|
+
export declare function createMoveToWaitingChildrenHandler(embedded: boolean, tcp: TcpConnection | null, onTransitionApplied?: () => void): (id: string, token?: string, _opts?: {
|
|
19
|
+
child?: {
|
|
20
|
+
id: string;
|
|
21
|
+
queue: string;
|
|
22
|
+
};
|
|
23
|
+
}) => Promise<boolean>;
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { jobId } from '../../../domain/types/job';
|
|
2
|
+
import { getSharedManager } from '../../manager';
|
|
3
|
+
import { assertFlowTcpOk } from '../../flowJobTypes';
|
|
4
|
+
function tokenError(response) {
|
|
5
|
+
if (response.ok === false && /token/i.test(String(response.error))) {
|
|
6
|
+
return new Error(typeof response.error === 'string' ? response.error : 'Invalid lock token');
|
|
7
|
+
}
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
export function createRemoveHandler(embedded, tcp) {
|
|
11
|
+
return async (id) => {
|
|
12
|
+
if (embedded) {
|
|
13
|
+
await getSharedManager().cancel(jobId(id));
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (!tcp)
|
|
17
|
+
return;
|
|
18
|
+
await tcp.send({ cmd: 'Cancel', id });
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export function createRetryHandler(embedded, tcp, options) {
|
|
22
|
+
const { internalJob, token, onTransitionApplied } = options;
|
|
23
|
+
return async (id) => {
|
|
24
|
+
if (embedded) {
|
|
25
|
+
const manager = getSharedManager();
|
|
26
|
+
const state = await manager.getJobState(jobId(id));
|
|
27
|
+
if (state === 'failed') {
|
|
28
|
+
const count = manager.retryDlq(internalJob.queue, jobId(id));
|
|
29
|
+
if (count === 0)
|
|
30
|
+
throw new Error(`Job ${id} is failed but not present in DLQ`);
|
|
31
|
+
onTransitionApplied?.();
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (state === 'active') {
|
|
35
|
+
const ok = await manager.moveActiveToWait(jobId(id), token);
|
|
36
|
+
if (!ok)
|
|
37
|
+
throw new Error(`Failed to retry active job ${id}`);
|
|
38
|
+
onTransitionApplied?.();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (state === 'waiting' || state === 'prioritized' || state === 'delayed')
|
|
42
|
+
return;
|
|
43
|
+
throw new Error(`Cannot retry job ${id} from state '${state}'`);
|
|
44
|
+
}
|
|
45
|
+
if (!tcp)
|
|
46
|
+
return;
|
|
47
|
+
const response = await tcp.send({
|
|
48
|
+
cmd: 'MoveToWait',
|
|
49
|
+
id,
|
|
50
|
+
...(token === undefined ? {} : { token }),
|
|
51
|
+
});
|
|
52
|
+
if (response.ok !== true) {
|
|
53
|
+
const error = typeof response.error === 'string' ? response.error : 'retry failed';
|
|
54
|
+
throw new Error(error);
|
|
55
|
+
}
|
|
56
|
+
onTransitionApplied?.();
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export function createUpdateDataHandler(embedded, tcp) {
|
|
60
|
+
return async (id, data) => {
|
|
61
|
+
if (embedded) {
|
|
62
|
+
await getSharedManager().updateJobData(jobId(id), data);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (!tcp)
|
|
66
|
+
return;
|
|
67
|
+
assertFlowTcpOk(await tcp.send({ cmd: 'Update', id, data }), 'Update');
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export function createPromoteHandler(embedded, tcp) {
|
|
71
|
+
return async (id) => {
|
|
72
|
+
if (embedded) {
|
|
73
|
+
await getSharedManager().promote(jobId(id));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (!tcp)
|
|
77
|
+
return;
|
|
78
|
+
await tcp.send({ cmd: 'Promote', id });
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
export function createChangeDelayHandler(embedded, tcp, token, onTransitionApplied) {
|
|
82
|
+
return async (id, delay) => {
|
|
83
|
+
if (embedded) {
|
|
84
|
+
const changed = await getSharedManager().changeDelay(jobId(id), delay, token);
|
|
85
|
+
if (!changed)
|
|
86
|
+
throw new Error(`Failed to change delay for job ${id}`);
|
|
87
|
+
onTransitionApplied?.();
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
if (!tcp)
|
|
91
|
+
return;
|
|
92
|
+
assertFlowTcpOk(await tcp.send({
|
|
93
|
+
cmd: 'ChangeDelay',
|
|
94
|
+
id,
|
|
95
|
+
delay,
|
|
96
|
+
...(token === undefined ? {} : { token }),
|
|
97
|
+
}), 'ChangeDelay');
|
|
98
|
+
onTransitionApplied?.();
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
export function createChangePriorityHandler(embedded, tcp) {
|
|
102
|
+
return async (id, options) => {
|
|
103
|
+
if (embedded) {
|
|
104
|
+
await getSharedManager().changePriority(jobId(id), options.priority, options.lifo);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (!tcp)
|
|
108
|
+
return;
|
|
109
|
+
await tcp.send({
|
|
110
|
+
cmd: 'ChangePriority',
|
|
111
|
+
id,
|
|
112
|
+
priority: options.priority,
|
|
113
|
+
lifo: options.lifo,
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
export function createExtendLockHandler(embedded, tcp) {
|
|
118
|
+
return async (id, token, duration) => {
|
|
119
|
+
if (embedded) {
|
|
120
|
+
const ok = await getSharedManager().extendLock(jobId(id), token, duration);
|
|
121
|
+
return ok ? duration : 0;
|
|
122
|
+
}
|
|
123
|
+
if (!tcp)
|
|
124
|
+
return 0;
|
|
125
|
+
const response = await tcp.send({ cmd: 'ExtendLock', id, token, duration });
|
|
126
|
+
return response.ok === true ? duration : 0;
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
export function createClearLogsHandler(embedded, tcp) {
|
|
130
|
+
return async (id, keepLogs) => {
|
|
131
|
+
if (embedded) {
|
|
132
|
+
getSharedManager().clearLogs(jobId(id), keepLogs);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (!tcp)
|
|
136
|
+
return;
|
|
137
|
+
await tcp.send({ cmd: 'ClearLogs', id, keepLogs });
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
export function createMoveToWaitHandler(embedded, tcp, onTransitionApplied) {
|
|
141
|
+
return async (id, token) => {
|
|
142
|
+
if (embedded) {
|
|
143
|
+
const moved = await getSharedManager().moveActiveToWait(jobId(id), token);
|
|
144
|
+
if (moved)
|
|
145
|
+
onTransitionApplied?.();
|
|
146
|
+
return moved;
|
|
147
|
+
}
|
|
148
|
+
if (!tcp)
|
|
149
|
+
return false;
|
|
150
|
+
const response = await tcp.send({
|
|
151
|
+
cmd: 'MoveToWait',
|
|
152
|
+
id,
|
|
153
|
+
...(token === undefined ? {} : { token }),
|
|
154
|
+
});
|
|
155
|
+
const error = tokenError(response);
|
|
156
|
+
if (error)
|
|
157
|
+
throw error;
|
|
158
|
+
const moved = response.ok === true;
|
|
159
|
+
if (moved)
|
|
160
|
+
onTransitionApplied?.();
|
|
161
|
+
return moved;
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
export function createMoveToDelayedHandler(embedded, tcp, onTransitionApplied) {
|
|
165
|
+
return async (id, timestamp, token) => {
|
|
166
|
+
const delay = Math.max(0, timestamp - Date.now());
|
|
167
|
+
if (embedded) {
|
|
168
|
+
const moved = await getSharedManager().moveToDelayed(jobId(id), delay, token);
|
|
169
|
+
if (!moved)
|
|
170
|
+
throw new Error(`Failed to move job ${id} to delayed`);
|
|
171
|
+
onTransitionApplied?.();
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
if (!tcp)
|
|
175
|
+
return;
|
|
176
|
+
const response = await tcp.send({
|
|
177
|
+
cmd: 'MoveToDelayed',
|
|
178
|
+
id,
|
|
179
|
+
delay,
|
|
180
|
+
...(token === undefined ? {} : { token }),
|
|
181
|
+
});
|
|
182
|
+
if (response.ok !== true) {
|
|
183
|
+
throw new Error(typeof response.error === 'string' ? response.error : 'Failed to move job to delayed');
|
|
184
|
+
}
|
|
185
|
+
onTransitionApplied?.();
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
export function createMoveToWaitingChildrenHandler(embedded, tcp, onTransitionApplied) {
|
|
189
|
+
return async (id, token) => {
|
|
190
|
+
if (embedded) {
|
|
191
|
+
const moved = await getSharedManager().moveToWaitingChildren(jobId(id), token);
|
|
192
|
+
if (moved)
|
|
193
|
+
onTransitionApplied?.();
|
|
194
|
+
return moved;
|
|
195
|
+
}
|
|
196
|
+
if (!tcp)
|
|
197
|
+
return false;
|
|
198
|
+
const response = await tcp.send({
|
|
199
|
+
cmd: 'MoveToWaitingChildren',
|
|
200
|
+
id,
|
|
201
|
+
...(token === undefined ? {} : { token }),
|
|
202
|
+
});
|
|
203
|
+
const error = tokenError(response);
|
|
204
|
+
if (error)
|
|
205
|
+
throw error;
|
|
206
|
+
const moved = response.ok === true;
|
|
207
|
+
if (moved)
|
|
208
|
+
onTransitionApplied?.();
|
|
209
|
+
return moved;
|
|
210
|
+
};
|
|
211
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { EventEmitter } from 'events';
|
|
2
|
+
import type { FlowJobData, Job, JobStateType } from '../../types';
|
|
3
|
+
import type { TcpConnection } from '../types';
|
|
4
|
+
export declare function createProgressHandler<T extends FlowJobData>(embedded: boolean, tcp: TcpConnection | null, emitter: EventEmitter, jobHolder: {
|
|
5
|
+
current: Job<T> | null;
|
|
6
|
+
}): (id: string, progress: number, message?: string) => Promise<void>;
|
|
7
|
+
export declare function createLogHandler<T extends FlowJobData>(embedded: boolean, tcp: TcpConnection | null, emitter: EventEmitter, jobHolder: {
|
|
8
|
+
current: Job<T> | null;
|
|
9
|
+
}): (id: string, message: string) => Promise<void>;
|
|
10
|
+
export declare function createGetStateHandler(embedded: boolean, tcp: TcpConnection | null): (id: string) => Promise<JobStateType>;
|
|
11
|
+
export declare function createGetChildrenValuesHandler(embedded: boolean, tcp: TcpConnection | null): (id: string) => Promise<Record<string, unknown>>;
|
|
12
|
+
export declare function createGetFailedChildrenValuesHandler(embedded: boolean, tcp: TcpConnection | null): (id: string) => Promise<Record<string, string>>;
|
|
13
|
+
export declare function createGetIgnoredChildrenFailuresHandler(embedded: boolean, tcp: TcpConnection | null): (id: string) => Promise<Record<string, string>>;
|
|
14
|
+
export declare function createRemoveChildDependencyHandler(embedded: boolean, tcp: TcpConnection | null): (id: string) => Promise<boolean>;
|
|
15
|
+
export declare function createRemoveUnprocessedChildrenHandler(embedded: boolean, tcp: TcpConnection | null): (id: string) => Promise<void>;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { jobId } from '../../../domain/types/job';
|
|
2
|
+
import { getSharedManager } from '../../manager';
|
|
3
|
+
export function createProgressHandler(embedded, tcp, emitter, jobHolder) {
|
|
4
|
+
return async (id, progress, message) => {
|
|
5
|
+
if (embedded) {
|
|
6
|
+
const manager = getSharedManager();
|
|
7
|
+
await manager.updateProgress(jobId(id), progress, message);
|
|
8
|
+
}
|
|
9
|
+
else if (tcp) {
|
|
10
|
+
await tcp.send({ cmd: 'Progress', id, progress, message });
|
|
11
|
+
}
|
|
12
|
+
emitter.emit('progress', jobHolder.current, progress);
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export function createLogHandler(embedded, tcp, emitter, jobHolder) {
|
|
16
|
+
return async (id, message) => {
|
|
17
|
+
if (embedded) {
|
|
18
|
+
const manager = getSharedManager();
|
|
19
|
+
manager.addLog(jobId(id), message);
|
|
20
|
+
}
|
|
21
|
+
else if (tcp) {
|
|
22
|
+
await tcp.send({ cmd: 'AddLog', id, message });
|
|
23
|
+
}
|
|
24
|
+
emitter.emit('log', jobHolder.current, message);
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export function createGetStateHandler(embedded, tcp) {
|
|
28
|
+
return async (id) => {
|
|
29
|
+
if (embedded) {
|
|
30
|
+
const manager = getSharedManager();
|
|
31
|
+
return (await manager.getJobState(jobId(id)));
|
|
32
|
+
}
|
|
33
|
+
else if (tcp) {
|
|
34
|
+
const response = await tcp.send({ cmd: 'GetState', id });
|
|
35
|
+
return (response.state ?? 'unknown');
|
|
36
|
+
}
|
|
37
|
+
return 'unknown';
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export function createGetChildrenValuesHandler(embedded, tcp) {
|
|
41
|
+
return async (id) => {
|
|
42
|
+
if (embedded) {
|
|
43
|
+
const manager = getSharedManager();
|
|
44
|
+
return manager.getChildrenValues(jobId(id));
|
|
45
|
+
}
|
|
46
|
+
else if (tcp) {
|
|
47
|
+
const response = await tcp.send({ cmd: 'GetChildrenValues', id });
|
|
48
|
+
const data = response.data;
|
|
49
|
+
return data?.values ?? {};
|
|
50
|
+
}
|
|
51
|
+
return {};
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function createGetFailedChildrenValuesHandler(embedded, tcp) {
|
|
55
|
+
return async (id) => {
|
|
56
|
+
if (embedded) {
|
|
57
|
+
const manager = getSharedManager();
|
|
58
|
+
return manager.getFailedChildrenValues(jobId(id));
|
|
59
|
+
}
|
|
60
|
+
if (!tcp)
|
|
61
|
+
return {};
|
|
62
|
+
const response = await tcp.send({ cmd: 'GetFailedChildrenValues', id });
|
|
63
|
+
return response.values ?? {};
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export function createGetIgnoredChildrenFailuresHandler(embedded, tcp) {
|
|
67
|
+
return async (id) => {
|
|
68
|
+
if (embedded) {
|
|
69
|
+
const manager = getSharedManager();
|
|
70
|
+
return manager.getIgnoredChildrenFailures(jobId(id));
|
|
71
|
+
}
|
|
72
|
+
if (!tcp)
|
|
73
|
+
return {};
|
|
74
|
+
const response = await tcp.send({ cmd: 'GetIgnoredChildrenFailures', id });
|
|
75
|
+
return response.values ?? {};
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
export function createRemoveChildDependencyHandler(embedded, tcp) {
|
|
79
|
+
return async (id) => {
|
|
80
|
+
if (embedded) {
|
|
81
|
+
const manager = getSharedManager();
|
|
82
|
+
return manager.removeChildDependency(jobId(id));
|
|
83
|
+
}
|
|
84
|
+
if (!tcp)
|
|
85
|
+
return false;
|
|
86
|
+
const response = await tcp.send({ cmd: 'RemoveChildDependency', id });
|
|
87
|
+
return response.ok === true;
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
export function createRemoveUnprocessedChildrenHandler(embedded, tcp) {
|
|
91
|
+
return async (id) => {
|
|
92
|
+
if (embedded) {
|
|
93
|
+
const manager = getSharedManager();
|
|
94
|
+
return manager.removeUnprocessedChildren(jobId(id));
|
|
95
|
+
}
|
|
96
|
+
if (!tcp)
|
|
97
|
+
return;
|
|
98
|
+
await tcp.send({ cmd: 'RemoveUnprocessedChildren', id });
|
|
99
|
+
};
|
|
100
|
+
}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Worker Module
|
|
3
3
|
* Re-exports all worker components
|
|
4
4
|
*/
|
|
5
|
-
export type { PendingAck, ExtendedWorkerOptions, TcpConnection } from './types';
|
|
6
|
-
export { FORCE_EMBEDDED, WORKER_CONSTANTS } from './
|
|
5
|
+
export type { PendingAck, ExtendedWorkerOptions, ManualJob, TcpConnection } from './types';
|
|
6
|
+
export { FORCE_EMBEDDED, WORKER_CONSTANTS } from './constants';
|
|
7
7
|
export { AckBatcher, type AckBatcherConfig } from './ackBatcher';
|
|
8
8
|
export { parseJobFromResponse } from './jobParser';
|
|
9
9
|
export { processJob, type ProcessorConfig } from './processor';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Worker Module
|
|
3
3
|
* Re-exports all worker components
|
|
4
4
|
*/
|
|
5
|
-
export { FORCE_EMBEDDED, WORKER_CONSTANTS } from './
|
|
5
|
+
export { FORCE_EMBEDDED, WORKER_CONSTANTS } from './constants';
|
|
6
6
|
export { AckBatcher } from './ackBatcher';
|
|
7
7
|
export { parseJobFromResponse } from './jobParser';
|
|
8
8
|
export { processJob } from './processor';
|