bullmq 4.0.0-beta.1 → 4.0.0
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/README.md +156 -22
- package/dist/cjs/classes/async-fifo-queue.js +90 -0
- package/dist/cjs/classes/async-fifo-queue.js.map +1 -0
- package/dist/{classes → cjs/classes}/backoffs.js +10 -9
- package/dist/cjs/classes/backoffs.js.map +1 -0
- package/dist/cjs/classes/child-pool.js +64 -0
- package/dist/cjs/classes/child-pool.js.map +1 -0
- package/dist/cjs/classes/child-processor.js +150 -0
- package/dist/cjs/classes/child-processor.js.map +1 -0
- package/dist/cjs/classes/child.js +216 -0
- package/dist/cjs/classes/child.js.map +1 -0
- package/dist/cjs/classes/delayed-error.js +19 -0
- package/dist/cjs/classes/delayed-error.js.map +1 -0
- package/dist/cjs/classes/flow-producer.js +283 -0
- package/dist/cjs/classes/flow-producer.js.map +1 -0
- package/dist/{classes → cjs/classes}/index.js +11 -3
- package/dist/cjs/classes/index.js.map +1 -0
- package/dist/cjs/classes/job.js +768 -0
- package/dist/cjs/classes/job.js.map +1 -0
- package/dist/cjs/classes/main-base.js +45 -0
- package/dist/cjs/classes/main-base.js.map +1 -0
- package/dist/cjs/classes/main-worker.js +10 -0
- package/dist/cjs/classes/main-worker.js.map +1 -0
- package/dist/cjs/classes/main.js +10 -0
- package/dist/cjs/classes/main.js.map +1 -0
- package/dist/cjs/classes/queue-base.js +135 -0
- package/dist/cjs/classes/queue-base.js.map +1 -0
- package/dist/cjs/classes/queue-events.js +120 -0
- package/dist/cjs/classes/queue-events.js.map +1 -0
- package/dist/cjs/classes/queue-getters.js +347 -0
- package/dist/cjs/classes/queue-getters.js.map +1 -0
- package/dist/cjs/classes/queue-keys.js +45 -0
- package/dist/cjs/classes/queue-keys.js.map +1 -0
- package/dist/cjs/classes/queue.js +275 -0
- package/dist/cjs/classes/queue.js.map +1 -0
- package/dist/cjs/classes/redis-connection.js +207 -0
- package/dist/cjs/classes/redis-connection.js.map +1 -0
- package/dist/cjs/classes/repeat.js +149 -0
- package/dist/cjs/classes/repeat.js.map +1 -0
- package/dist/{classes → cjs/classes}/sandbox.js +18 -14
- package/dist/cjs/classes/sandbox.js.map +1 -0
- package/dist/cjs/classes/scripts.js +658 -0
- package/dist/cjs/classes/scripts.js.map +1 -0
- package/dist/cjs/classes/unrecoverable-error.js +19 -0
- package/dist/cjs/classes/unrecoverable-error.js.map +1 -0
- package/dist/cjs/classes/waiting-children-error.js +19 -0
- package/dist/cjs/classes/waiting-children-error.js.map +1 -0
- package/dist/cjs/classes/worker.js +577 -0
- package/dist/cjs/classes/worker.js.map +1 -0
- package/dist/cjs/commands/addJob-9.lua +170 -0
- package/dist/cjs/commands/changeDelay-3.lua +40 -0
- package/dist/cjs/commands/changePriority-5.lua +52 -0
- package/dist/cjs/commands/cleanJobsInSet-2.lua +48 -0
- package/dist/cjs/commands/drain-4.lua +26 -0
- package/dist/{commands → cjs/commands}/extendLock-2.lua +1 -0
- package/dist/cjs/commands/getCounts-1.lua +35 -0
- package/dist/cjs/commands/getRanges-1.lua +69 -0
- package/dist/cjs/commands/getState-8.lua +66 -0
- package/dist/cjs/commands/getStateV2-8.lua +59 -0
- package/dist/cjs/commands/includes/addDelayMarkerIfNeeded.lua +15 -0
- package/dist/cjs/commands/includes/addJobWithPriority.lua +15 -0
- package/dist/cjs/commands/includes/addPriorityMarkerIfNeeded.lua +12 -0
- package/dist/cjs/commands/includes/batches.lua +18 -0
- package/dist/cjs/commands/includes/checkItemInList.lua +12 -0
- package/dist/cjs/commands/includes/checkStalledJobs.lua +139 -0
- package/dist/cjs/commands/includes/cleanList.lua +47 -0
- package/dist/cjs/commands/includes/cleanSet.lua +39 -0
- package/dist/cjs/commands/includes/collectMetrics.lua +46 -0
- package/dist/cjs/commands/includes/destructureJobKey.lua +12 -0
- package/dist/cjs/commands/includes/getJobsInZset.lua +12 -0
- package/dist/cjs/commands/includes/getNextDelayedTimestamp.lua +13 -0
- package/dist/cjs/commands/includes/getRateLimitTTL.lua +17 -0
- package/dist/cjs/commands/includes/getTargetQueueList.lua +12 -0
- package/dist/cjs/commands/includes/getTimestamp.lua +19 -0
- package/dist/cjs/commands/includes/getZSetItems.lua +7 -0
- package/dist/cjs/commands/includes/isLocked.lua +31 -0
- package/dist/cjs/commands/includes/moveJobFromPriorityToActive.lua +14 -0
- package/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +28 -0
- package/dist/cjs/commands/includes/prepareJobForProcessing.lua +74 -0
- package/dist/cjs/commands/includes/promoteDelayedJobs.lua +39 -0
- package/dist/cjs/commands/includes/pushBackJobWithPriority.lua +9 -0
- package/dist/cjs/commands/includes/removeJob.lua +13 -0
- package/dist/cjs/commands/includes/removeJobFromAnyState.lua +35 -0
- package/dist/cjs/commands/includes/removeJobs.lua +25 -0
- package/dist/cjs/commands/includes/removeJobsByMaxAge.lua +15 -0
- package/dist/cjs/commands/includes/removeJobsByMaxCount.lua +15 -0
- package/dist/cjs/commands/includes/removeParentDependencyKey.lua +77 -0
- package/dist/cjs/commands/includes/removeZSetJobs.lua +15 -0
- package/dist/cjs/commands/includes/trimEvents.lua +12 -0
- package/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +40 -0
- package/dist/cjs/commands/index.js +10 -0
- package/dist/cjs/commands/index.js.map +1 -0
- package/dist/cjs/commands/isFinished-3.lua +48 -0
- package/dist/cjs/commands/isJobInList-1.lua +16 -0
- package/dist/cjs/commands/moveJobFromActiveToWait-9.lua +53 -0
- package/dist/cjs/commands/moveStalledJobsToWait-8.lua +24 -0
- package/dist/cjs/commands/moveToActive-10.lua +116 -0
- package/dist/cjs/commands/moveToDelayed-8.lua +66 -0
- package/dist/cjs/commands/moveToFinished-13.lua +250 -0
- package/dist/cjs/commands/moveToWaitingChildren-4.lua +62 -0
- package/dist/cjs/commands/obliterate-2.lua +102 -0
- package/dist/cjs/commands/pause-5.lua +36 -0
- package/dist/cjs/commands/promote-7.lua +57 -0
- package/dist/cjs/commands/releaseLock-1.lua +19 -0
- package/dist/cjs/commands/removeJob-1.lua +71 -0
- package/{src → dist/cjs}/commands/removeRepeatable-2.lua +13 -1
- package/dist/cjs/commands/reprocessJob-6.lua +43 -0
- package/dist/cjs/commands/retryJob-9.lua +69 -0
- package/dist/cjs/commands/retryJobs-6.lua +53 -0
- package/dist/cjs/commands/saveStacktrace-1.lua +22 -0
- package/dist/cjs/commands/script-loader.js +408 -0
- package/dist/cjs/commands/script-loader.js.map +1 -0
- package/dist/cjs/commands/updateData-1.lua +20 -0
- package/dist/cjs/commands/updateProgress-2.lua +26 -0
- package/dist/cjs/enums/error-code.enum.js +13 -0
- package/dist/cjs/enums/error-code.enum.js.map +1 -0
- package/dist/cjs/enums/index.js +6 -0
- package/dist/cjs/enums/index.js.map +1 -0
- package/dist/cjs/enums/metrics-time.js +15 -0
- package/dist/cjs/enums/metrics-time.js.map +1 -0
- package/dist/{index.js → cjs/index.js} +2 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces/advanced-options.js +3 -0
- package/dist/cjs/interfaces/advanced-options.js.map +1 -0
- package/dist/cjs/interfaces/backoff-options.js.map +1 -0
- package/dist/cjs/interfaces/base-job-options.js +3 -0
- package/dist/cjs/interfaces/base-job-options.js.map +1 -0
- package/dist/cjs/interfaces/child-command.js +10 -0
- package/dist/cjs/interfaces/child-command.js.map +1 -0
- package/dist/{interfaces/backoff-opts.js → cjs/interfaces/child-message.js} +1 -1
- package/dist/cjs/interfaces/child-message.js.map +1 -0
- package/dist/{interfaces/redis-opts.js → cjs/interfaces/connection.js} +1 -1
- package/dist/cjs/interfaces/connection.js.map +1 -0
- package/dist/{interfaces/jobs-opts.js → cjs/interfaces/flow-job.js} +1 -1
- package/dist/cjs/interfaces/flow-job.js.map +1 -0
- package/dist/cjs/interfaces/index.js +28 -0
- package/dist/cjs/interfaces/index.js.map +1 -0
- package/dist/cjs/interfaces/ioredis-events.js +3 -0
- package/dist/cjs/interfaces/ioredis-events.js.map +1 -0
- package/dist/{interfaces/repeat-opts.js → cjs/interfaces/job-json.js} +1 -1
- package/dist/cjs/interfaces/job-json.js.map +1 -0
- package/dist/{interfaces/worker-opts.js → cjs/interfaces/keep-jobs.js} +1 -1
- package/dist/cjs/interfaces/keep-jobs.js.map +1 -0
- package/dist/cjs/interfaces/metrics-options.js +3 -0
- package/dist/cjs/interfaces/metrics-options.js.map +1 -0
- package/dist/cjs/interfaces/metrics.js +3 -0
- package/dist/cjs/interfaces/metrics.js.map +1 -0
- package/dist/cjs/interfaces/minimal-job.js +3 -0
- package/dist/cjs/interfaces/minimal-job.js.map +1 -0
- package/dist/cjs/interfaces/parent-command.js +15 -0
- package/dist/cjs/interfaces/parent-command.js.map +1 -0
- package/dist/cjs/interfaces/parent-message.js +3 -0
- package/dist/cjs/interfaces/parent-message.js.map +1 -0
- package/dist/cjs/interfaces/parent.js +3 -0
- package/dist/cjs/interfaces/parent.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/queue-options.js +1 -0
- package/dist/cjs/interfaces/queue-options.js.map +1 -0
- package/dist/cjs/interfaces/rate-limiter-options.js.map +1 -0
- package/dist/cjs/interfaces/redis-options.js.map +1 -0
- package/dist/{interfaces/jobs-options.js → cjs/interfaces/redis-streams.js} +1 -1
- package/dist/cjs/interfaces/redis-streams.js.map +1 -0
- package/dist/cjs/interfaces/repeat-options.js.map +1 -0
- package/dist/cjs/interfaces/sandboxed-job-processor.js +3 -0
- package/dist/cjs/interfaces/sandboxed-job-processor.js.map +1 -0
- package/dist/cjs/interfaces/sandboxed-job.js +3 -0
- package/dist/cjs/interfaces/sandboxed-job.js.map +1 -0
- package/dist/cjs/interfaces/worker-options.js.map +1 -0
- package/dist/cjs/scripts/addJob-9.js +252 -0
- package/dist/cjs/scripts/addJob-9.js.map +1 -0
- package/dist/cjs/scripts/changeDelay-3.js +41 -0
- package/dist/cjs/scripts/changeDelay-3.js.map +1 -0
- package/dist/cjs/scripts/changePriority-5.js +87 -0
- package/dist/cjs/scripts/changePriority-5.js.map +1 -0
- package/dist/cjs/scripts/cleanJobsInSet-2.js +259 -0
- package/dist/cjs/scripts/cleanJobsInSet-2.js.map +1 -0
- package/dist/cjs/scripts/drain-4.js +178 -0
- package/dist/cjs/scripts/drain-4.js.map +1 -0
- package/dist/cjs/scripts/extendLock-2.js +30 -0
- package/dist/cjs/scripts/extendLock-2.js.map +1 -0
- package/dist/cjs/scripts/getCounts-1.js +41 -0
- package/dist/cjs/scripts/getCounts-1.js.map +1 -0
- package/dist/cjs/scripts/getRanges-1.js +72 -0
- package/dist/cjs/scripts/getRanges-1.js.map +1 -0
- package/dist/cjs/scripts/getState-8.js +74 -0
- package/dist/cjs/scripts/getState-8.js.map +1 -0
- package/dist/cjs/scripts/getStateV2-8.js +58 -0
- package/dist/cjs/scripts/getStateV2-8.js.map +1 -0
- package/dist/cjs/scripts/index.js +34 -0
- package/dist/cjs/scripts/index.js.map +1 -0
- package/dist/cjs/scripts/isFinished-3.js +49 -0
- package/dist/cjs/scripts/isFinished-3.js.map +1 -0
- package/dist/cjs/scripts/isJobInList-1.js +32 -0
- package/dist/cjs/scripts/isJobInList-1.js.map +1 -0
- package/dist/cjs/scripts/moveJobFromActiveToWait-9.js +70 -0
- package/dist/cjs/scripts/moveJobFromActiveToWait-9.js.map +1 -0
- package/dist/cjs/scripts/moveStalledJobsToWait-8.js +289 -0
- package/dist/cjs/scripts/moveStalledJobsToWait-8.js.map +1 -0
- package/dist/cjs/scripts/moveToActive-10.js +269 -0
- package/dist/cjs/scripts/moveToActive-10.js.map +1 -0
- package/dist/cjs/scripts/moveToDelayed-8.js +152 -0
- package/dist/cjs/scripts/moveToDelayed-8.js.map +1 -0
- package/dist/cjs/scripts/moveToFinished-13.js +624 -0
- package/dist/cjs/scripts/moveToFinished-13.js.map +1 -0
- package/dist/cjs/scripts/moveToWaitingChildren-4.js +59 -0
- package/dist/cjs/scripts/moveToWaitingChildren-4.js.map +1 -0
- package/dist/cjs/scripts/obliterate-2.js +244 -0
- package/dist/cjs/scripts/obliterate-2.js.map +1 -0
- package/dist/cjs/scripts/pause-5.js +48 -0
- package/dist/cjs/scripts/pause-5.js.map +1 -0
- package/dist/cjs/scripts/promote-7.js +87 -0
- package/dist/cjs/scripts/promote-7.js.map +1 -0
- package/dist/cjs/scripts/releaseLock-1.js +25 -0
- package/dist/cjs/scripts/releaseLock-1.js.map +1 -0
- package/dist/cjs/scripts/removeJob-1.js +210 -0
- package/dist/cjs/scripts/removeJob-1.js.map +1 -0
- package/dist/cjs/scripts/removeRepeatable-2.js +38 -0
- package/dist/cjs/scripts/removeRepeatable-2.js.map +1 -0
- package/dist/cjs/scripts/reprocessJob-6.js +56 -0
- package/dist/cjs/scripts/reprocessJob-6.js.map +1 -0
- package/dist/cjs/scripts/retryJob-9.js +128 -0
- package/dist/cjs/scripts/retryJob-9.js.map +1 -0
- package/dist/cjs/scripts/retryJobs-6.js +76 -0
- package/dist/cjs/scripts/retryJobs-6.js.map +1 -0
- package/dist/cjs/scripts/saveStacktrace-1.js +27 -0
- package/dist/cjs/scripts/saveStacktrace-1.js.map +1 -0
- package/dist/cjs/scripts/updateData-1.js +26 -0
- package/dist/cjs/scripts/updateData-1.js.map +1 -0
- package/dist/cjs/scripts/updateProgress-2.js +31 -0
- package/dist/cjs/scripts/updateProgress-2.js.map +1 -0
- package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -0
- package/dist/cjs/types/backoff-strategy.js +3 -0
- package/dist/cjs/types/backoff-strategy.js.map +1 -0
- package/dist/cjs/types/finished-status.js +3 -0
- package/dist/cjs/types/finished-status.js.map +1 -0
- package/dist/cjs/types/index.js +11 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/job-json-sandbox.js +3 -0
- package/dist/cjs/types/job-json-sandbox.js.map +1 -0
- package/dist/cjs/types/job-options.js +3 -0
- package/dist/cjs/types/job-options.js.map +1 -0
- package/dist/cjs/types/job-type.js +3 -0
- package/dist/cjs/types/job-type.js.map +1 -0
- package/dist/cjs/types/minimal-queue.js +3 -0
- package/dist/cjs/types/minimal-queue.js.map +1 -0
- package/dist/cjs/types/repeat-strategy.js +3 -0
- package/dist/cjs/types/repeat-strategy.js.map +1 -0
- package/dist/cjs/utils.js +152 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/classes/async-fifo-queue.d.ts +31 -0
- package/dist/esm/classes/async-fifo-queue.js +86 -0
- package/dist/esm/classes/async-fifo-queue.js.map +1 -0
- package/dist/esm/classes/backoffs.d.ts +10 -0
- package/dist/esm/classes/backoffs.js +44 -0
- package/dist/esm/classes/backoffs.js.map +1 -0
- package/dist/esm/classes/child-pool.d.ts +23 -0
- package/dist/esm/classes/child-pool.js +60 -0
- package/dist/esm/classes/child-pool.js.map +1 -0
- package/dist/esm/classes/child-processor.d.ts +26 -0
- package/dist/esm/classes/child-processor.js +146 -0
- package/dist/esm/classes/child-processor.js.map +1 -0
- package/dist/esm/classes/child.d.ts +36 -0
- package/dist/esm/classes/child.js +212 -0
- package/dist/esm/classes/child.js.map +1 -0
- package/dist/esm/classes/delayed-error.d.ts +10 -0
- package/dist/esm/classes/delayed-error.js +15 -0
- package/dist/esm/classes/delayed-error.js.map +1 -0
- package/dist/esm/classes/flow-producer.d.ts +163 -0
- package/dist/esm/classes/flow-producer.js +279 -0
- package/dist/esm/classes/flow-producer.js.map +1 -0
- package/dist/{classes → esm/classes}/index.d.ts +9 -3
- package/dist/esm/classes/index.js +22 -0
- package/dist/esm/classes/index.js.map +1 -0
- package/dist/esm/classes/job.d.ts +355 -0
- package/dist/esm/classes/job.js +764 -0
- package/dist/esm/classes/job.js.map +1 -0
- package/dist/esm/classes/main-base.d.ts +4 -0
- package/dist/esm/classes/main-base.js +43 -0
- package/dist/esm/classes/main-base.js.map +1 -0
- package/dist/esm/classes/main-worker.js +8 -0
- package/dist/esm/classes/main-worker.js.map +1 -0
- package/dist/esm/classes/main.js +8 -0
- package/dist/esm/classes/main.js.map +1 -0
- package/dist/esm/classes/queue-base.d.ts +67 -0
- package/dist/esm/classes/queue-base.js +131 -0
- package/dist/esm/classes/queue-base.js.map +1 -0
- package/dist/esm/classes/queue-events.d.ts +179 -0
- package/dist/esm/classes/queue-events.js +116 -0
- package/dist/esm/classes/queue-events.js.map +1 -0
- package/dist/esm/classes/queue-getters.d.ts +164 -0
- package/dist/esm/classes/queue-getters.js +344 -0
- package/dist/esm/classes/queue-getters.js.map +1 -0
- package/dist/esm/classes/queue-keys.d.ts +10 -0
- package/dist/esm/classes/queue-keys.js +41 -0
- package/dist/esm/classes/queue-keys.js.map +1 -0
- package/dist/esm/classes/queue.d.ts +236 -0
- package/dist/esm/classes/queue.js +271 -0
- package/dist/esm/classes/queue.js.map +1 -0
- package/dist/esm/classes/redis-connection.d.ts +37 -0
- package/dist/esm/classes/redis-connection.js +203 -0
- package/dist/esm/classes/redis-connection.js.map +1 -0
- package/dist/esm/classes/repeat.d.ts +25 -0
- package/dist/esm/classes/repeat.js +144 -0
- package/dist/esm/classes/repeat.js.map +1 -0
- package/dist/esm/classes/sandbox.d.ts +4 -0
- package/dist/esm/classes/sandbox.js +58 -0
- package/dist/esm/classes/sandbox.js.map +1 -0
- package/dist/esm/classes/scripts.d.ts +106 -0
- package/dist/esm/classes/scripts.js +654 -0
- package/dist/esm/classes/scripts.js.map +1 -0
- package/dist/esm/classes/unrecoverable-error.d.ts +10 -0
- package/dist/esm/classes/unrecoverable-error.js +15 -0
- package/dist/esm/classes/unrecoverable-error.js.map +1 -0
- package/dist/esm/classes/waiting-children-error.d.ts +10 -0
- package/dist/esm/classes/waiting-children-error.js +15 -0
- package/dist/esm/classes/waiting-children-error.js.map +1 -0
- package/dist/esm/classes/worker.d.ts +215 -0
- package/dist/esm/classes/worker.js +573 -0
- package/dist/esm/classes/worker.js.map +1 -0
- package/dist/esm/commands/addJob-9.lua +170 -0
- package/dist/esm/commands/changeDelay-3.lua +40 -0
- package/dist/esm/commands/changePriority-5.lua +52 -0
- package/dist/esm/commands/cleanJobsInSet-2.lua +48 -0
- package/dist/esm/commands/drain-4.lua +26 -0
- package/{src → dist/esm}/commands/extendLock-2.lua +1 -0
- package/dist/esm/commands/getCounts-1.lua +35 -0
- package/dist/esm/commands/getRanges-1.lua +69 -0
- package/dist/esm/commands/getState-8.lua +66 -0
- package/dist/esm/commands/getStateV2-8.lua +59 -0
- package/dist/esm/commands/includes/addDelayMarkerIfNeeded.lua +15 -0
- package/dist/esm/commands/includes/addJobWithPriority.lua +15 -0
- package/dist/esm/commands/includes/addPriorityMarkerIfNeeded.lua +12 -0
- package/dist/esm/commands/includes/batches.lua +18 -0
- package/dist/esm/commands/includes/checkItemInList.lua +12 -0
- package/dist/esm/commands/includes/checkStalledJobs.lua +139 -0
- package/dist/esm/commands/includes/cleanList.lua +47 -0
- package/dist/esm/commands/includes/cleanSet.lua +39 -0
- package/dist/esm/commands/includes/collectMetrics.lua +46 -0
- package/dist/esm/commands/includes/destructureJobKey.lua +12 -0
- package/dist/esm/commands/includes/getJobsInZset.lua +12 -0
- package/dist/esm/commands/includes/getNextDelayedTimestamp.lua +13 -0
- package/dist/esm/commands/includes/getRateLimitTTL.lua +17 -0
- package/dist/esm/commands/includes/getTargetQueueList.lua +12 -0
- package/dist/esm/commands/includes/getTimestamp.lua +19 -0
- package/dist/esm/commands/includes/getZSetItems.lua +7 -0
- package/dist/esm/commands/includes/isLocked.lua +31 -0
- package/dist/esm/commands/includes/moveJobFromPriorityToActive.lua +14 -0
- package/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +28 -0
- package/dist/esm/commands/includes/prepareJobForProcessing.lua +74 -0
- package/dist/esm/commands/includes/promoteDelayedJobs.lua +39 -0
- package/dist/esm/commands/includes/pushBackJobWithPriority.lua +9 -0
- package/dist/esm/commands/includes/removeJob.lua +13 -0
- package/dist/esm/commands/includes/removeJobFromAnyState.lua +35 -0
- package/dist/esm/commands/includes/removeJobs.lua +25 -0
- package/dist/esm/commands/includes/removeJobsByMaxAge.lua +15 -0
- package/dist/esm/commands/includes/removeJobsByMaxCount.lua +15 -0
- package/dist/esm/commands/includes/removeParentDependencyKey.lua +77 -0
- package/dist/esm/commands/includes/removeZSetJobs.lua +15 -0
- package/dist/esm/commands/includes/trimEvents.lua +12 -0
- package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +40 -0
- package/dist/esm/commands/index.d.ts +4 -0
- package/dist/esm/commands/index.js +5 -0
- package/dist/esm/commands/index.js.map +1 -0
- package/dist/esm/commands/isFinished-3.lua +48 -0
- package/dist/esm/commands/isJobInList-1.lua +16 -0
- package/dist/esm/commands/moveJobFromActiveToWait-9.lua +53 -0
- package/dist/esm/commands/moveStalledJobsToWait-8.lua +24 -0
- package/dist/esm/commands/moveToActive-10.lua +116 -0
- package/dist/esm/commands/moveToDelayed-8.lua +66 -0
- package/dist/esm/commands/moveToFinished-13.lua +250 -0
- package/dist/esm/commands/moveToWaitingChildren-4.lua +62 -0
- package/dist/esm/commands/obliterate-2.lua +102 -0
- package/dist/esm/commands/pause-5.lua +36 -0
- package/dist/esm/commands/promote-7.lua +57 -0
- package/dist/esm/commands/releaseLock-1.lua +19 -0
- package/dist/esm/commands/removeJob-1.lua +71 -0
- package/dist/{commands → esm/commands}/removeRepeatable-2.lua +13 -1
- package/dist/esm/commands/reprocessJob-6.lua +43 -0
- package/dist/esm/commands/retryJob-9.lua +69 -0
- package/dist/esm/commands/retryJobs-6.lua +53 -0
- package/dist/esm/commands/saveStacktrace-1.lua +22 -0
- package/dist/esm/commands/script-loader.d.ts +119 -0
- package/dist/esm/commands/script-loader.js +403 -0
- package/dist/esm/commands/script-loader.js.map +1 -0
- package/dist/esm/commands/updateData-1.lua +20 -0
- package/dist/esm/commands/updateProgress-2.lua +26 -0
- package/dist/esm/enums/error-code.enum.d.ts +8 -0
- package/dist/esm/enums/error-code.enum.js +10 -0
- package/dist/esm/enums/error-code.enum.js.map +1 -0
- package/dist/esm/enums/index.d.ts +2 -0
- package/dist/esm/enums/index.js +3 -0
- package/dist/esm/enums/index.js.map +1 -0
- package/dist/esm/enums/metrics-time.d.ts +10 -0
- package/dist/esm/enums/metrics-time.js +12 -0
- package/dist/esm/enums/metrics-time.js.map +1 -0
- package/dist/{index.d.ts → esm/index.d.ts} +2 -0
- package/{src/index.ts → dist/esm/index.js} +7 -4
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces/advanced-options.d.ts +13 -0
- package/dist/esm/interfaces/advanced-options.js +2 -0
- package/dist/esm/interfaces/advanced-options.js.map +1 -0
- package/dist/esm/interfaces/backoff-options.d.ts +15 -0
- package/dist/esm/interfaces/backoff-options.js +2 -0
- package/dist/esm/interfaces/backoff-options.js.map +1 -0
- package/dist/esm/interfaces/base-job-options.d.ts +97 -0
- package/dist/esm/interfaces/base-job-options.js +2 -0
- package/dist/esm/interfaces/base-job-options.js.map +1 -0
- package/dist/esm/interfaces/child-command.d.ts +5 -0
- package/dist/esm/interfaces/child-command.js +7 -0
- package/dist/esm/interfaces/child-command.js.map +1 -0
- package/dist/esm/interfaces/child-message.d.ts +6 -0
- package/dist/esm/interfaces/child-message.js +2 -0
- package/dist/esm/interfaces/child-message.js.map +1 -0
- package/dist/esm/interfaces/connection.d.ts +8 -0
- package/dist/esm/interfaces/connection.js +2 -0
- package/dist/esm/interfaces/connection.js.map +1 -0
- package/dist/esm/interfaces/flow-job.d.ts +19 -0
- package/dist/esm/interfaces/flow-job.js +2 -0
- package/dist/esm/interfaces/flow-job.js.map +1 -0
- package/dist/esm/interfaces/index.d.ts +24 -0
- package/dist/esm/interfaces/index.js +25 -0
- package/dist/esm/interfaces/index.js.map +1 -0
- package/dist/esm/interfaces/ioredis-events.d.ts +8 -0
- package/dist/esm/interfaces/ioredis-events.js +2 -0
- package/dist/esm/interfaces/ioredis-events.js.map +1 -0
- package/dist/esm/interfaces/job-json.d.ts +37 -0
- package/dist/esm/interfaces/job-json.js +2 -0
- package/dist/esm/interfaces/job-json.js.map +1 -0
- package/dist/esm/interfaces/keep-jobs.d.ts +17 -0
- package/dist/esm/interfaces/keep-jobs.js +2 -0
- package/dist/esm/interfaces/keep-jobs.js.map +1 -0
- package/dist/esm/interfaces/metrics-options.d.ts +12 -0
- package/dist/esm/interfaces/metrics-options.js +2 -0
- package/dist/esm/interfaces/metrics-options.js.map +1 -0
- package/dist/esm/interfaces/metrics.d.ts +9 -0
- package/dist/esm/interfaces/metrics.js +2 -0
- package/dist/esm/interfaces/metrics.js.map +1 -0
- package/dist/esm/interfaces/minimal-job.d.ts +129 -0
- package/dist/esm/interfaces/minimal-job.js +2 -0
- package/dist/esm/interfaces/minimal-job.js.map +1 -0
- package/dist/esm/interfaces/parent-command.d.ts +10 -0
- package/dist/esm/interfaces/parent-command.js +12 -0
- package/dist/esm/interfaces/parent-command.js.map +1 -0
- package/dist/esm/interfaces/parent-message.d.ts +8 -0
- package/dist/esm/interfaces/parent-message.js +2 -0
- package/dist/esm/interfaces/parent-message.js.map +1 -0
- package/dist/esm/interfaces/parent.d.ts +20 -0
- package/dist/esm/interfaces/parent.js +2 -0
- package/dist/esm/interfaces/parent.js.map +1 -0
- package/dist/esm/interfaces/queue-options.d.ts +74 -0
- package/dist/esm/interfaces/queue-options.js +6 -0
- package/dist/esm/interfaces/queue-options.js.map +1 -0
- package/dist/esm/interfaces/rate-limiter-options.d.ts +12 -0
- package/dist/esm/interfaces/rate-limiter-options.js +2 -0
- package/dist/esm/interfaces/rate-limiter-options.js.map +1 -0
- package/dist/esm/interfaces/redis-options.d.ts +7 -0
- package/dist/esm/interfaces/redis-options.js +2 -0
- package/dist/esm/interfaces/redis-options.js.map +1 -0
- package/dist/esm/interfaces/redis-streams.d.ts +4 -0
- package/dist/esm/interfaces/redis-streams.js +2 -0
- package/dist/esm/interfaces/redis-streams.js.map +1 -0
- package/dist/esm/interfaces/repeat-options.d.ts +33 -0
- package/dist/esm/interfaces/repeat-options.js +2 -0
- package/dist/esm/interfaces/repeat-options.js.map +1 -0
- package/dist/esm/interfaces/sandboxed-job-processor.d.ts +5 -0
- package/dist/esm/interfaces/sandboxed-job-processor.js +2 -0
- package/dist/esm/interfaces/sandboxed-job-processor.js.map +1 -0
- package/dist/esm/interfaces/sandboxed-job.d.ts +13 -0
- package/dist/esm/interfaces/sandboxed-job.js +2 -0
- package/dist/esm/interfaces/sandboxed-job.js.map +1 -0
- package/dist/esm/interfaces/worker-options.d.ts +123 -0
- package/dist/esm/interfaces/worker-options.js +2 -0
- package/dist/esm/interfaces/worker-options.js.map +1 -0
- package/dist/esm/scripts/addJob-9.d.ts +5 -0
- package/dist/esm/scripts/addJob-9.js +249 -0
- package/dist/esm/scripts/addJob-9.js.map +1 -0
- package/dist/esm/scripts/changeDelay-3.d.ts +5 -0
- package/dist/esm/scripts/changeDelay-3.js +38 -0
- package/dist/esm/scripts/changeDelay-3.js.map +1 -0
- package/dist/esm/scripts/changePriority-5.d.ts +5 -0
- package/dist/esm/scripts/changePriority-5.js +84 -0
- package/dist/esm/scripts/changePriority-5.js.map +1 -0
- package/dist/esm/scripts/cleanJobsInSet-2.d.ts +5 -0
- package/dist/esm/scripts/cleanJobsInSet-2.js +256 -0
- package/dist/esm/scripts/cleanJobsInSet-2.js.map +1 -0
- package/dist/esm/scripts/drain-4.d.ts +5 -0
- package/dist/esm/scripts/drain-4.js +175 -0
- package/dist/esm/scripts/drain-4.js.map +1 -0
- package/dist/esm/scripts/extendLock-2.d.ts +5 -0
- package/dist/esm/scripts/extendLock-2.js +27 -0
- package/dist/esm/scripts/extendLock-2.js.map +1 -0
- package/dist/esm/scripts/getCounts-1.d.ts +5 -0
- package/dist/esm/scripts/getCounts-1.js +38 -0
- package/dist/esm/scripts/getCounts-1.js.map +1 -0
- package/dist/esm/scripts/getRanges-1.d.ts +5 -0
- package/dist/esm/scripts/getRanges-1.js +69 -0
- package/dist/esm/scripts/getRanges-1.js.map +1 -0
- package/dist/esm/scripts/getState-8.d.ts +5 -0
- package/dist/esm/scripts/getState-8.js +71 -0
- package/dist/esm/scripts/getState-8.js.map +1 -0
- package/dist/esm/scripts/getStateV2-8.d.ts +5 -0
- package/dist/esm/scripts/getStateV2-8.js +55 -0
- package/dist/esm/scripts/getStateV2-8.js.map +1 -0
- package/dist/esm/scripts/index.d.ts +30 -0
- package/dist/esm/scripts/index.js +31 -0
- package/dist/esm/scripts/index.js.map +1 -0
- package/dist/esm/scripts/isFinished-3.d.ts +5 -0
- package/dist/esm/scripts/isFinished-3.js +46 -0
- package/dist/esm/scripts/isFinished-3.js.map +1 -0
- package/dist/esm/scripts/isJobInList-1.d.ts +5 -0
- package/dist/esm/scripts/isJobInList-1.js +29 -0
- package/dist/esm/scripts/isJobInList-1.js.map +1 -0
- package/dist/esm/scripts/moveJobFromActiveToWait-9.d.ts +5 -0
- package/dist/esm/scripts/moveJobFromActiveToWait-9.js +67 -0
- package/dist/esm/scripts/moveJobFromActiveToWait-9.js.map +1 -0
- package/dist/esm/scripts/moveStalledJobsToWait-8.d.ts +5 -0
- package/dist/esm/scripts/moveStalledJobsToWait-8.js +286 -0
- package/dist/esm/scripts/moveStalledJobsToWait-8.js.map +1 -0
- package/dist/esm/scripts/moveToActive-10.d.ts +5 -0
- package/dist/esm/scripts/moveToActive-10.js +266 -0
- package/dist/esm/scripts/moveToActive-10.js.map +1 -0
- package/dist/esm/scripts/moveToDelayed-8.d.ts +5 -0
- package/dist/esm/scripts/moveToDelayed-8.js +149 -0
- package/dist/esm/scripts/moveToDelayed-8.js.map +1 -0
- package/dist/esm/scripts/moveToFinished-13.d.ts +5 -0
- package/dist/esm/scripts/moveToFinished-13.js +621 -0
- package/dist/esm/scripts/moveToFinished-13.js.map +1 -0
- package/dist/esm/scripts/moveToWaitingChildren-4.d.ts +5 -0
- package/dist/esm/scripts/moveToWaitingChildren-4.js +56 -0
- package/dist/esm/scripts/moveToWaitingChildren-4.js.map +1 -0
- package/dist/esm/scripts/obliterate-2.d.ts +5 -0
- package/dist/esm/scripts/obliterate-2.js +241 -0
- package/dist/esm/scripts/obliterate-2.js.map +1 -0
- package/dist/esm/scripts/pause-5.d.ts +5 -0
- package/dist/esm/scripts/pause-5.js +45 -0
- package/dist/esm/scripts/pause-5.js.map +1 -0
- package/dist/esm/scripts/promote-7.d.ts +5 -0
- package/dist/esm/scripts/promote-7.js +84 -0
- package/dist/esm/scripts/promote-7.js.map +1 -0
- package/dist/esm/scripts/releaseLock-1.d.ts +5 -0
- package/dist/esm/scripts/releaseLock-1.js +22 -0
- package/dist/esm/scripts/releaseLock-1.js.map +1 -0
- package/dist/esm/scripts/removeJob-1.d.ts +5 -0
- package/dist/esm/scripts/removeJob-1.js +207 -0
- package/dist/esm/scripts/removeJob-1.js.map +1 -0
- package/dist/esm/scripts/removeRepeatable-2.d.ts +5 -0
- package/dist/esm/scripts/removeRepeatable-2.js +35 -0
- package/dist/esm/scripts/removeRepeatable-2.js.map +1 -0
- package/dist/esm/scripts/reprocessJob-6.d.ts +5 -0
- package/dist/esm/scripts/reprocessJob-6.js +53 -0
- package/dist/esm/scripts/reprocessJob-6.js.map +1 -0
- package/dist/esm/scripts/retryJob-9.d.ts +5 -0
- package/dist/esm/scripts/retryJob-9.js +125 -0
- package/dist/esm/scripts/retryJob-9.js.map +1 -0
- package/dist/esm/scripts/retryJobs-6.d.ts +5 -0
- package/dist/esm/scripts/retryJobs-6.js +73 -0
- package/dist/esm/scripts/retryJobs-6.js.map +1 -0
- package/dist/esm/scripts/saveStacktrace-1.d.ts +5 -0
- package/dist/esm/scripts/saveStacktrace-1.js +24 -0
- package/dist/esm/scripts/saveStacktrace-1.js.map +1 -0
- package/dist/esm/scripts/updateData-1.d.ts +5 -0
- package/dist/esm/scripts/updateData-1.js +23 -0
- package/dist/esm/scripts/updateData-1.js.map +1 -0
- package/dist/esm/scripts/updateProgress-2.d.ts +5 -0
- package/dist/esm/scripts/updateProgress-2.js +28 -0
- package/dist/esm/scripts/updateProgress-2.js.map +1 -0
- package/dist/esm/tsconfig.tsbuildinfo +1 -0
- package/dist/esm/types/backoff-strategy.d.ts +2 -0
- package/dist/esm/types/backoff-strategy.js +2 -0
- package/dist/esm/types/backoff-strategy.js.map +1 -0
- package/dist/esm/types/finished-status.d.ts +2 -0
- package/dist/esm/types/finished-status.js +2 -0
- package/dist/esm/types/finished-status.js.map +1 -0
- package/dist/esm/types/index.d.ts +7 -0
- package/dist/esm/types/index.js +8 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/job-json-sandbox.d.ts +5 -0
- package/dist/esm/types/job-json-sandbox.js +2 -0
- package/dist/esm/types/job-json-sandbox.js.map +1 -0
- package/dist/esm/types/job-options.d.ts +20 -0
- package/dist/esm/types/job-options.js +2 -0
- package/dist/esm/types/job-options.js.map +1 -0
- package/dist/esm/types/job-type.d.ts +3 -0
- package/dist/esm/types/job-type.js +2 -0
- package/dist/esm/types/job-type.js.map +1 -0
- package/dist/esm/types/minimal-queue.d.ts +2 -0
- package/dist/esm/types/minimal-queue.js +2 -0
- package/dist/esm/types/minimal-queue.js.map +1 -0
- package/dist/esm/types/repeat-strategy.d.ts +2 -0
- package/dist/esm/types/repeat-strategy.js +2 -0
- package/dist/esm/types/repeat-strategy.js.map +1 -0
- package/dist/esm/utils.d.ts +42 -0
- package/dist/esm/utils.js +134 -0
- package/dist/esm/utils.js.map +1 -0
- package/package.json +181 -60
- package/.travis.yml +0 -32
- package/SUMMARY.md +0 -4
- package/commitlint.config.js +0 -1
- package/dist/classes/backoffs.d.ts +0 -14
- package/dist/classes/backoffs.js.map +0 -1
- package/dist/classes/child-pool.d.ts +0 -22
- package/dist/classes/child-pool.js +0 -98
- package/dist/classes/child-pool.js.map +0 -1
- package/dist/classes/compat.d.ts +0 -316
- package/dist/classes/compat.js +0 -667
- package/dist/classes/compat.js.map +0 -1
- package/dist/classes/index.js.map +0 -1
- package/dist/classes/job.d.ts +0 -93
- package/dist/classes/job.js +0 -351
- package/dist/classes/job.js.map +0 -1
- package/dist/classes/master.js +0 -112
- package/dist/classes/master.js.map +0 -1
- package/dist/classes/queue-base.d.ts +0 -23
- package/dist/classes/queue-base.js +0 -68
- package/dist/classes/queue-base.js.map +0 -1
- package/dist/classes/queue-events.d.ts +0 -8
- package/dist/classes/queue-events.js +0 -59
- package/dist/classes/queue-events.js.map +0 -1
- package/dist/classes/queue-getters.d.ts +0 -38
- package/dist/classes/queue-getters.js +0 -182
- package/dist/classes/queue-getters.js.map +0 -1
- package/dist/classes/queue-keeper.js +0 -103
- package/dist/classes/queue-keeper.js.map +0 -1
- package/dist/classes/queue-scheduler.d.ts +0 -25
- package/dist/classes/queue-scheduler.js +0 -96
- package/dist/classes/queue-scheduler.js.map +0 -1
- package/dist/classes/queue.d.ts +0 -46
- package/dist/classes/queue.js +0 -122
- package/dist/classes/queue.js.map +0 -1
- package/dist/classes/redis-connection.d.ts +0 -17
- package/dist/classes/redis-connection.js +0 -97
- package/dist/classes/redis-connection.js.map +0 -1
- package/dist/classes/repeat.d.ts +0 -26
- package/dist/classes/repeat.js +0 -128
- package/dist/classes/repeat.js.map +0 -1
- package/dist/classes/sandbox.d.ts +0 -2
- package/dist/classes/sandbox.js.map +0 -1
- package/dist/classes/scripts.d.ts +0 -43
- package/dist/classes/scripts.js +0 -296
- package/dist/classes/scripts.js.map +0 -1
- package/dist/classes/worker.d.ts +0 -38
- package/dist/classes/worker.js +0 -231
- package/dist/classes/worker.js.map +0 -1
- package/dist/commands/addJob-8.lua +0 -106
- package/dist/commands/cleanJobsInSet-1.lua +0 -48
- package/dist/commands/index.d.ts +0 -2
- package/dist/commands/index.js +0 -42
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/isFinished-2.lua +0 -22
- package/dist/commands/isJobInList-1.lua +0 -20
- package/dist/commands/moveStalledJobsToWait-8.lua +0 -91
- package/dist/commands/moveToActive-8.lua +0 -79
- package/dist/commands/moveToDelayed-5.lua +0 -39
- package/dist/commands/moveToFinished-6.lua +0 -87
- package/dist/commands/moveToFinished-7.lua +0 -92
- package/dist/commands/pause-4.lua +0 -27
- package/dist/commands/promote-4.lua +0 -49
- package/dist/commands/releaseLock-1.lua +0 -19
- package/dist/commands/removeJob-10.lua +0 -37
- package/dist/commands/reprocessJob-4.lua +0 -36
- package/dist/commands/retryJob-4.lua +0 -34
- package/dist/commands/takeLock-1.lua +0 -17
- package/dist/commands/updateDelaySet-7.lua +0 -71
- package/dist/commands/updateProgress-2.lua +0 -15
- package/dist/enums/index.d.ts +0 -1
- package/dist/enums/index.js +0 -5
- package/dist/enums/index.js.map +0 -1
- package/dist/enums/retry-errors.enum.d.ts +0 -5
- package/dist/enums/retry-errors.enum.js +0 -9
- package/dist/enums/retry-errors.enum.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/interfaces/advance-opts.js +0 -12
- package/dist/interfaces/advance-opts.js.map +0 -1
- package/dist/interfaces/advanced-options.d.ts +0 -9
- package/dist/interfaces/advanced-options.js +0 -11
- package/dist/interfaces/advanced-options.js.map +0 -1
- package/dist/interfaces/advanced-opts.js +0 -11
- package/dist/interfaces/advanced-opts.js.map +0 -1
- package/dist/interfaces/backoff-options.d.ts +0 -4
- package/dist/interfaces/backoff-options.js.map +0 -1
- package/dist/interfaces/backoff-opts.js.map +0 -1
- package/dist/interfaces/index.d.ts +0 -9
- package/dist/interfaces/index.js +0 -6
- package/dist/interfaces/index.js.map +0 -1
- package/dist/interfaces/jobs-options.d.ts +0 -16
- package/dist/interfaces/jobs-options.js.map +0 -1
- package/dist/interfaces/jobs-opts.js.map +0 -1
- package/dist/interfaces/queue-keeper-opts.js +0 -3
- package/dist/interfaces/queue-keeper-opts.js.map +0 -1
- package/dist/interfaces/queue-options.d.ts +0 -24
- package/dist/interfaces/queue-options.js.map +0 -1
- package/dist/interfaces/queue-opts.js +0 -8
- package/dist/interfaces/queue-opts.js.map +0 -1
- package/dist/interfaces/queue-scheduler-options.d.ts +0 -5
- package/dist/interfaces/queue-scheduler-options.js +0 -3
- package/dist/interfaces/queue-scheduler-options.js.map +0 -1
- package/dist/interfaces/queue-scheduler-opts.js +0 -3
- package/dist/interfaces/queue-scheduler-opts.js.map +0 -1
- package/dist/interfaces/rate-limiter-options.d.ts +0 -4
- package/dist/interfaces/rate-limiter-options.js.map +0 -1
- package/dist/interfaces/rate-limiter-opts.js +0 -3
- package/dist/interfaces/rate-limiter-opts.js.map +0 -1
- package/dist/interfaces/redis-options.d.ts +0 -7
- package/dist/interfaces/redis-options.js.map +0 -1
- package/dist/interfaces/redis-opts.js.map +0 -1
- package/dist/interfaces/repeat-options.d.ts +0 -11
- package/dist/interfaces/repeat-options.js.map +0 -1
- package/dist/interfaces/repeat-opts.js.map +0 -1
- package/dist/interfaces/worker-options.d.ts +0 -11
- package/dist/interfaces/worker-options.js.map +0 -1
- package/dist/interfaces/worker-opts.js.map +0 -1
- package/dist/test/test_bulk.js +0 -55
- package/dist/test/test_bulk.js.map +0 -1
- package/dist/test/test_child-pool.js +0 -81
- package/dist/test/test_child-pool.js.map +0 -1
- package/dist/test/test_clean.js +0 -124
- package/dist/test/test_clean.js.map +0 -1
- package/dist/test/test_compat.d.ts +0 -1
- package/dist/test/test_compat.js +0 -533
- package/dist/test/test_compat.js.map +0 -1
- package/dist/test/test_connection.d.ts +0 -1
- package/dist/test/test_connection.js +0 -140
- package/dist/test/test_connection.js.map +0 -1
- package/dist/test/test_delay.d.ts +0 -1
- package/dist/test/test_delay.js +0 -186
- package/dist/test/test_delay.js.map +0 -1
- package/dist/test/test_events.d.ts +0 -1
- package/dist/test/test_events.js +0 -147
- package/dist/test/test_events.js.map +0 -1
- package/dist/test/test_getters.d.ts +0 -1
- package/dist/test/test_getters.js +0 -293
- package/dist/test/test_getters.js.map +0 -1
- package/dist/test/test_job.d.ts +0 -1
- package/dist/test/test_job.js +0 -419
- package/dist/test/test_job.js.map +0 -1
- package/dist/test/test_pause.d.ts +0 -1
- package/dist/test/test_pause.js +0 -255
- package/dist/test/test_pause.js.map +0 -1
- package/dist/test/test_queue.d.ts +0 -0
- package/dist/test/test_queue.js +0 -72
- package/dist/test/test_queue.js.map +0 -1
- package/dist/test/test_rate_limiter.d.ts +0 -1
- package/dist/test/test_rate_limiter.js +0 -98
- package/dist/test/test_rate_limiter.js.map +0 -1
- package/dist/test/test_repeat.d.ts +0 -1
- package/dist/test/test_repeat.js +0 -602
- package/dist/test/test_repeat.js.map +0 -1
- package/dist/test/test_sandboxed_process.d.ts +0 -1
- package/dist/test/test_sandboxed_process.js +0 -319
- package/dist/test/test_sandboxed_process.js.map +0 -1
- package/dist/test/test_stalled_jobs.d.ts +0 -1
- package/dist/test/test_stalled_jobs.js +0 -107
- package/dist/test/test_stalled_jobs.js.map +0 -1
- package/dist/test/test_worker.d.ts +0 -1
- package/dist/test/test_worker.js +0 -1182
- package/dist/test/test_worker.js.map +0 -1
- package/dist/utils.d.ts +0 -8
- package/dist/utils.js +0 -31
- package/dist/utils.js.map +0 -1
- package/release.txt +0 -21
- package/src/classes/backoffs.ts +0 -67
- package/src/classes/child-pool.ts +0 -119
- package/src/classes/compat.ts +0 -890
- package/src/classes/index.ts +0 -13
- package/src/classes/job.ts +0 -495
- package/src/classes/master.ts +0 -113
- package/src/classes/queue-base.ts +0 -87
- package/src/classes/queue-events.ts +0 -78
- package/src/classes/queue-getters.ts +0 -213
- package/src/classes/queue-scheduler.ts +0 -125
- package/src/classes/queue.ts +0 -180
- package/src/classes/redis-connection.ts +0 -111
- package/src/classes/repeat.ts +0 -217
- package/src/classes/sandbox.ts +0 -60
- package/src/classes/scripts.ts +0 -468
- package/src/classes/worker.ts +0 -288
- package/src/commands/addJob-8.lua +0 -106
- package/src/commands/cleanJobsInSet-1.lua +0 -48
- package/src/commands/index.ts +0 -62
- package/src/commands/isFinished-2.lua +0 -22
- package/src/commands/isJobInList-1.lua +0 -20
- package/src/commands/moveStalledJobsToWait-8.lua +0 -91
- package/src/commands/moveToActive-8.lua +0 -79
- package/src/commands/moveToDelayed-5.lua +0 -39
- package/src/commands/moveToFinished-7.lua +0 -92
- package/src/commands/pause-4.lua +0 -27
- package/src/commands/promote-4.lua +0 -49
- package/src/commands/releaseLock-1.lua +0 -19
- package/src/commands/removeJob-10.lua +0 -37
- package/src/commands/reprocessJob-4.lua +0 -36
- package/src/commands/retryJob-4.lua +0 -34
- package/src/commands/takeLock-1.lua +0 -17
- package/src/commands/updateDelaySet-7.lua +0 -71
- package/src/commands/updateProgress-2.lua +0 -15
- package/src/enums/index.ts +0 -1
- package/src/enums/retry-errors.enum.ts +0 -5
- package/src/interfaces/advanced-options.ts +0 -28
- package/src/interfaces/backoff-options.ts +0 -4
- package/src/interfaces/index.ts +0 -9
- package/src/interfaces/jobs-options.ts +0 -53
- package/src/interfaces/queue-options.ts +0 -30
- package/src/interfaces/queue-scheduler-options.ts +0 -6
- package/src/interfaces/rate-limiter-options.ts +0 -7
- package/src/interfaces/redis-options.ts +0 -9
- package/src/interfaces/repeat-options.ts +0 -19
- package/src/interfaces/worker-options.ts +0 -13
- package/src/test/fixtures/fixture_processor.js +0 -13
- package/src/test/fixtures/fixture_processor_bar.js +0 -13
- package/src/test/fixtures/fixture_processor_crash.js +0 -16
- package/src/test/fixtures/fixture_processor_exit.js +0 -15
- package/src/test/fixtures/fixture_processor_fail.js +0 -13
- package/src/test/fixtures/fixture_processor_foo.js +0 -13
- package/src/test/fixtures/fixture_processor_progress.js +0 -29
- package/src/test/fixtures/fixture_processor_slow.js +0 -13
- package/src/test/test_bulk.ts +0 -59
- package/src/test/test_child-pool.ts +0 -88
- package/src/test/test_clean.ts +0 -148
- package/src/test/test_compat.ts +0 -640
- package/src/test/test_connection.ts +0 -159
- package/src/test/test_delay.ts +0 -220
- package/src/test/test_events.ts +0 -198
- package/src/test/test_getters.ts +0 -348
- package/src/test/test_job.ts +0 -524
- package/src/test/test_pause.ts +0 -313
- package/src/test/test_queue.ts +0 -70
- package/src/test/test_rate_limiter.ts +0 -113
- package/src/test/test_repeat.ts +0 -783
- package/src/test/test_sandboxed_process.ts +0 -380
- package/src/test/test_stalled_jobs.ts +0 -146
- package/src/test/test_worker.ts +0 -1503
- package/src/utils.ts +0 -28
- package/tsconfig.json +0 -25
- package/tslint.json +0 -23
- /package/dist/{classes/master.d.ts → cjs/classes/main-worker.d.ts} +0 -0
- /package/dist/{test/test_bulk.d.ts → cjs/classes/main.d.ts} +0 -0
- /package/dist/{interfaces → cjs/interfaces}/backoff-options.js +0 -0
- /package/dist/{interfaces → cjs/interfaces}/rate-limiter-options.js +0 -0
- /package/dist/{interfaces → cjs/interfaces}/redis-options.js +0 -0
- /package/dist/{interfaces → cjs/interfaces}/repeat-options.js +0 -0
- /package/dist/{interfaces → cjs/interfaces}/worker-options.js +0 -0
- /package/dist/{test/test_child-pool.d.ts → esm/classes/main-worker.d.ts} +0 -0
- /package/dist/{test/test_clean.d.ts → esm/classes/main.d.ts} +0 -0
@@ -0,0 +1,658 @@
|
|
1
|
+
/**
|
2
|
+
* Includes all the scripts needed by the queue and jobs.
|
3
|
+
*/
|
4
|
+
/*eslint-env node */
|
5
|
+
'use strict';
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
7
|
+
exports.raw2NextJobData = exports.Scripts = void 0;
|
8
|
+
const msgpackr_1 = require("msgpackr");
|
9
|
+
const packer = new msgpackr_1.Packr({
|
10
|
+
useRecords: false,
|
11
|
+
encodeUndefinedAsNil: true,
|
12
|
+
});
|
13
|
+
const pack = packer.pack;
|
14
|
+
const enums_1 = require("../enums");
|
15
|
+
const utils_1 = require("../utils");
|
16
|
+
class Scripts {
|
17
|
+
constructor(queue) {
|
18
|
+
this.queue = queue;
|
19
|
+
const queueKeys = this.queue.keys;
|
20
|
+
this.moveToFinishedKeys = [
|
21
|
+
queueKeys.wait,
|
22
|
+
queueKeys.active,
|
23
|
+
queueKeys.prioritized,
|
24
|
+
queueKeys.events,
|
25
|
+
queueKeys.stalled,
|
26
|
+
queueKeys.limiter,
|
27
|
+
queueKeys.delayed,
|
28
|
+
queueKeys.paused,
|
29
|
+
queueKeys.meta,
|
30
|
+
queueKeys.pc,
|
31
|
+
undefined,
|
32
|
+
undefined,
|
33
|
+
undefined,
|
34
|
+
];
|
35
|
+
}
|
36
|
+
async isJobInList(listKey, jobId) {
|
37
|
+
const client = await this.queue.client;
|
38
|
+
let result;
|
39
|
+
if ((0, utils_1.isRedisVersionLowerThan)(this.queue.redisVersion, '6.0.6')) {
|
40
|
+
result = await client.isJobInList([listKey, jobId]);
|
41
|
+
}
|
42
|
+
else {
|
43
|
+
result = await client.lpos(listKey, jobId);
|
44
|
+
}
|
45
|
+
return Number.isInteger(result);
|
46
|
+
}
|
47
|
+
async addJob(client, job, opts, jobId, parentOpts = {}) {
|
48
|
+
const queueKeys = this.queue.keys;
|
49
|
+
const keys = [
|
50
|
+
queueKeys.wait,
|
51
|
+
queueKeys.paused,
|
52
|
+
queueKeys.meta,
|
53
|
+
queueKeys.id,
|
54
|
+
queueKeys.delayed,
|
55
|
+
queueKeys.prioritized,
|
56
|
+
queueKeys.completed,
|
57
|
+
queueKeys.events,
|
58
|
+
queueKeys.pc,
|
59
|
+
];
|
60
|
+
const fpof = opts.fpof ? { fpof: true } : {};
|
61
|
+
const parent = job.parent ? Object.assign(Object.assign({}, job.parent), fpof) : null;
|
62
|
+
const args = [
|
63
|
+
queueKeys[''],
|
64
|
+
typeof jobId !== 'undefined' ? jobId : '',
|
65
|
+
job.name,
|
66
|
+
job.timestamp,
|
67
|
+
job.parentKey || null,
|
68
|
+
parentOpts.waitChildrenKey || null,
|
69
|
+
parentOpts.parentDependenciesKey || null,
|
70
|
+
parent,
|
71
|
+
job.repeatJobKey,
|
72
|
+
];
|
73
|
+
let encodedOpts;
|
74
|
+
if (opts.repeat) {
|
75
|
+
const repeat = Object.assign({}, opts.repeat);
|
76
|
+
if (repeat.startDate) {
|
77
|
+
repeat.startDate = +new Date(repeat.startDate);
|
78
|
+
}
|
79
|
+
if (repeat.endDate) {
|
80
|
+
repeat.endDate = +new Date(repeat.endDate);
|
81
|
+
}
|
82
|
+
encodedOpts = pack(Object.assign(Object.assign({}, opts), { repeat }));
|
83
|
+
}
|
84
|
+
else {
|
85
|
+
encodedOpts = pack(opts);
|
86
|
+
}
|
87
|
+
keys.push(pack(args), job.data, encodedOpts);
|
88
|
+
const result = await client.addJob(keys);
|
89
|
+
if (result < 0) {
|
90
|
+
throw this.finishedErrors(result, parentOpts.parentKey, 'addJob');
|
91
|
+
}
|
92
|
+
return result;
|
93
|
+
}
|
94
|
+
async pause(pause) {
|
95
|
+
const client = await this.queue.client;
|
96
|
+
let src = 'wait', dst = 'paused';
|
97
|
+
if (!pause) {
|
98
|
+
src = 'paused';
|
99
|
+
dst = 'wait';
|
100
|
+
}
|
101
|
+
const keys = [src, dst, 'meta', 'prioritized'].map((name) => this.queue.toKey(name));
|
102
|
+
keys.push(this.queue.keys.events);
|
103
|
+
return client.pause(keys.concat([pause ? 'paused' : 'resumed']));
|
104
|
+
}
|
105
|
+
removeRepeatableArgs(repeatJobId, repeatJobKey) {
|
106
|
+
const queueKeys = this.queue.keys;
|
107
|
+
const keys = [queueKeys.repeat, queueKeys.delayed];
|
108
|
+
const args = [repeatJobId, repeatJobKey, queueKeys['']];
|
109
|
+
return keys.concat(args);
|
110
|
+
}
|
111
|
+
async removeRepeatable(repeatJobId, repeatJobKey) {
|
112
|
+
const client = await this.queue.client;
|
113
|
+
const args = this.removeRepeatableArgs(repeatJobId, repeatJobKey);
|
114
|
+
return client.removeRepeatable(args);
|
115
|
+
}
|
116
|
+
async remove(jobId) {
|
117
|
+
const client = await this.queue.client;
|
118
|
+
const keys = [''].map(name => this.queue.toKey(name));
|
119
|
+
return client.removeJob(keys.concat([jobId]));
|
120
|
+
}
|
121
|
+
async extendLock(jobId, token, duration, client) {
|
122
|
+
client = client || (await this.queue.client);
|
123
|
+
const args = [
|
124
|
+
this.queue.toKey(jobId) + ':lock',
|
125
|
+
this.queue.keys.stalled,
|
126
|
+
token,
|
127
|
+
duration,
|
128
|
+
jobId,
|
129
|
+
];
|
130
|
+
return client.extendLock(args);
|
131
|
+
}
|
132
|
+
async updateData(job, data) {
|
133
|
+
const client = await this.queue.client;
|
134
|
+
const keys = [this.queue.toKey(job.id)];
|
135
|
+
const dataJson = JSON.stringify(data);
|
136
|
+
const result = await client.updateData(keys.concat([dataJson]));
|
137
|
+
if (result < 0) {
|
138
|
+
throw this.finishedErrors(result, job.id, 'updateData');
|
139
|
+
}
|
140
|
+
}
|
141
|
+
async updateProgress(job, progress) {
|
142
|
+
const client = await this.queue.client;
|
143
|
+
const keys = [this.queue.toKey(job.id), this.queue.keys.events];
|
144
|
+
const progressJson = JSON.stringify(progress);
|
145
|
+
const result = await client.updateProgress(keys.concat([job.id, progressJson]));
|
146
|
+
if (result < 0) {
|
147
|
+
throw this.finishedErrors(result, job.id, 'updateProgress');
|
148
|
+
}
|
149
|
+
this.queue.emit('progress', job, progress);
|
150
|
+
}
|
151
|
+
moveToFinishedArgs(job, val, propVal, shouldRemove, target, token, timestamp, fetchNext = true) {
|
152
|
+
var _a, _b, _c, _d;
|
153
|
+
const queueKeys = this.queue.keys;
|
154
|
+
const opts = this.queue.opts;
|
155
|
+
const workerKeepJobs = target === 'completed' ? opts.removeOnComplete : opts.removeOnFail;
|
156
|
+
const metricsKey = this.queue.toKey(`metrics:${target}`);
|
157
|
+
const keys = this.moveToFinishedKeys;
|
158
|
+
keys[10] = queueKeys[target];
|
159
|
+
keys[11] = this.queue.toKey((_a = job.id) !== null && _a !== void 0 ? _a : '');
|
160
|
+
keys[12] = metricsKey;
|
161
|
+
const keepJobs = this.getKeepJobs(shouldRemove, workerKeepJobs);
|
162
|
+
const args = [
|
163
|
+
job.id,
|
164
|
+
timestamp,
|
165
|
+
propVal,
|
166
|
+
typeof val === 'undefined' ? 'null' : val,
|
167
|
+
target,
|
168
|
+
JSON.stringify({ jobId: job.id, val: val }),
|
169
|
+
!fetchNext || this.queue.closing ? 0 : 1,
|
170
|
+
queueKeys[''],
|
171
|
+
pack({
|
172
|
+
token,
|
173
|
+
keepJobs,
|
174
|
+
limiter: opts.limiter,
|
175
|
+
lockDuration: opts.lockDuration,
|
176
|
+
attempts: job.opts.attempts,
|
177
|
+
attemptsMade: job.attemptsMade,
|
178
|
+
maxMetricsSize: ((_b = opts.metrics) === null || _b === void 0 ? void 0 : _b.maxDataPoints)
|
179
|
+
? (_c = opts.metrics) === null || _c === void 0 ? void 0 : _c.maxDataPoints
|
180
|
+
: '',
|
181
|
+
fpof: !!((_d = job.opts) === null || _d === void 0 ? void 0 : _d.failParentOnFailure),
|
182
|
+
}),
|
183
|
+
];
|
184
|
+
return keys.concat(args);
|
185
|
+
}
|
186
|
+
getKeepJobs(shouldRemove, workerKeepJobs) {
|
187
|
+
if (typeof shouldRemove === 'undefined') {
|
188
|
+
return workerKeepJobs || { count: shouldRemove ? 0 : -1 };
|
189
|
+
}
|
190
|
+
return typeof shouldRemove === 'object'
|
191
|
+
? shouldRemove
|
192
|
+
: typeof shouldRemove === 'number'
|
193
|
+
? { count: shouldRemove }
|
194
|
+
: { count: shouldRemove ? 0 : -1 };
|
195
|
+
}
|
196
|
+
async moveToFinished(jobId, args) {
|
197
|
+
const client = await this.queue.client;
|
198
|
+
const result = await client.moveToFinished(args);
|
199
|
+
if (result < 0) {
|
200
|
+
throw this.finishedErrors(result, jobId, 'moveToFinished', 'active');
|
201
|
+
}
|
202
|
+
else {
|
203
|
+
if (typeof result !== 'undefined') {
|
204
|
+
return raw2NextJobData(result);
|
205
|
+
}
|
206
|
+
}
|
207
|
+
}
|
208
|
+
finishedErrors(code, jobId, command, state) {
|
209
|
+
switch (code) {
|
210
|
+
case enums_1.ErrorCode.JobNotExist:
|
211
|
+
return new Error(`Missing key for job ${jobId}. ${command}`);
|
212
|
+
case enums_1.ErrorCode.JobLockNotExist:
|
213
|
+
return new Error(`Missing lock for job ${jobId}. ${command}`);
|
214
|
+
case enums_1.ErrorCode.JobNotInState:
|
215
|
+
return new Error(`Job ${jobId} is not in the ${state} state. ${command}`);
|
216
|
+
case enums_1.ErrorCode.JobPendingDependencies:
|
217
|
+
return new Error(`Job ${jobId} has pending dependencies. ${command}`);
|
218
|
+
case enums_1.ErrorCode.ParentJobNotExist:
|
219
|
+
return new Error(`Missing key for parent job ${jobId}. ${command}`);
|
220
|
+
case enums_1.ErrorCode.JobLockMismatch:
|
221
|
+
return new Error(`Lock mismatch for job ${jobId}. Cmd ${command} from ${state}`);
|
222
|
+
default:
|
223
|
+
return new Error(`Unknown code ${code} error for ${jobId}. ${command}`);
|
224
|
+
}
|
225
|
+
}
|
226
|
+
drainArgs(delayed) {
|
227
|
+
const queueKeys = this.queue.keys;
|
228
|
+
const keys = [
|
229
|
+
queueKeys.wait,
|
230
|
+
queueKeys.paused,
|
231
|
+
delayed ? queueKeys.delayed : '',
|
232
|
+
queueKeys.prioritized,
|
233
|
+
];
|
234
|
+
const args = [queueKeys['']];
|
235
|
+
return keys.concat(args);
|
236
|
+
}
|
237
|
+
async drain(delayed) {
|
238
|
+
const client = await this.queue.client;
|
239
|
+
const args = this.drainArgs(delayed);
|
240
|
+
return client.drain(args);
|
241
|
+
}
|
242
|
+
getRangesArgs(types, start, end, asc) {
|
243
|
+
const queueKeys = this.queue.keys;
|
244
|
+
const transformedTypes = types.map(type => {
|
245
|
+
return type === 'waiting' ? 'wait' : type;
|
246
|
+
});
|
247
|
+
const keys = [queueKeys['']];
|
248
|
+
const args = [start, end, asc ? '1' : '0', ...transformedTypes];
|
249
|
+
return keys.concat(args);
|
250
|
+
}
|
251
|
+
async getRanges(types, start = 0, end = 1, asc = false) {
|
252
|
+
const client = await this.queue.client;
|
253
|
+
const args = this.getRangesArgs(types, start, end, asc);
|
254
|
+
return client.getRanges(args);
|
255
|
+
}
|
256
|
+
getCountsArgs(types) {
|
257
|
+
const queueKeys = this.queue.keys;
|
258
|
+
const transformedTypes = types.map(type => {
|
259
|
+
return type === 'waiting' ? 'wait' : type;
|
260
|
+
});
|
261
|
+
const keys = [queueKeys['']];
|
262
|
+
const args = [...transformedTypes];
|
263
|
+
return keys.concat(args);
|
264
|
+
}
|
265
|
+
async getCounts(types) {
|
266
|
+
const client = await this.queue.client;
|
267
|
+
const args = this.getCountsArgs(types);
|
268
|
+
return client.getCounts(args);
|
269
|
+
}
|
270
|
+
moveToCompletedArgs(job, returnvalue, removeOnComplete, token, fetchNext = false) {
|
271
|
+
const timestamp = Date.now();
|
272
|
+
return this.moveToFinishedArgs(job, returnvalue, 'returnvalue', removeOnComplete, 'completed', token, timestamp, fetchNext);
|
273
|
+
}
|
274
|
+
moveToFailedArgs(job, failedReason, removeOnFailed, token, fetchNext = false) {
|
275
|
+
const timestamp = Date.now();
|
276
|
+
return this.moveToFinishedArgs(job, failedReason, 'failedReason', removeOnFailed, 'failed', token, timestamp, fetchNext);
|
277
|
+
}
|
278
|
+
async isFinished(jobId, returnValue = false) {
|
279
|
+
const client = await this.queue.client;
|
280
|
+
const keys = ['completed', 'failed', jobId].map((key) => {
|
281
|
+
return this.queue.toKey(key);
|
282
|
+
});
|
283
|
+
return client.isFinished(keys.concat([jobId, returnValue ? '1' : '']));
|
284
|
+
}
|
285
|
+
async getState(jobId) {
|
286
|
+
const client = await this.queue.client;
|
287
|
+
const keys = [
|
288
|
+
'completed',
|
289
|
+
'failed',
|
290
|
+
'delayed',
|
291
|
+
'active',
|
292
|
+
'wait',
|
293
|
+
'paused',
|
294
|
+
'waiting-children',
|
295
|
+
'prioritized',
|
296
|
+
].map((key) => {
|
297
|
+
return this.queue.toKey(key);
|
298
|
+
});
|
299
|
+
if ((0, utils_1.isRedisVersionLowerThan)(this.queue.redisVersion, '6.0.6')) {
|
300
|
+
return client.getState(keys.concat([jobId, this.queue.toKey(jobId)]));
|
301
|
+
}
|
302
|
+
return client.getStateV2(keys.concat([jobId, this.queue.toKey(jobId)]));
|
303
|
+
}
|
304
|
+
async changeDelay(jobId, delay) {
|
305
|
+
const client = await this.queue.client;
|
306
|
+
const args = this.changeDelayArgs(jobId, delay);
|
307
|
+
const result = await client.changeDelay(args);
|
308
|
+
if (result < 0) {
|
309
|
+
throw this.finishedErrors(result, jobId, 'changeDelay', 'delayed');
|
310
|
+
}
|
311
|
+
}
|
312
|
+
changeDelayArgs(jobId, delay) {
|
313
|
+
//
|
314
|
+
// Bake in the job id first 12 bits into the timestamp
|
315
|
+
// to guarantee correct execution order of delayed jobs
|
316
|
+
// (up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
|
317
|
+
//
|
318
|
+
// WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
|
319
|
+
//
|
320
|
+
let timestamp = Date.now() + delay;
|
321
|
+
if (timestamp > 0) {
|
322
|
+
timestamp = timestamp * 0x1000 + (+jobId & 0xfff);
|
323
|
+
}
|
324
|
+
const keys = ['delayed', jobId].map(name => {
|
325
|
+
return this.queue.toKey(name);
|
326
|
+
});
|
327
|
+
keys.push.apply(keys, [this.queue.keys.events]);
|
328
|
+
return keys.concat([delay, JSON.stringify(timestamp), jobId]);
|
329
|
+
}
|
330
|
+
async changePriority(jobId, priority = 0, lifo = false) {
|
331
|
+
const client = await this.queue.client;
|
332
|
+
const args = this.changePriorityArgs(jobId, priority, lifo);
|
333
|
+
const result = await client.changePriority(args);
|
334
|
+
if (result < 0) {
|
335
|
+
throw this.finishedErrors(result, jobId, 'changePriority');
|
336
|
+
}
|
337
|
+
}
|
338
|
+
changePriorityArgs(jobId, priority = 0, lifo = false) {
|
339
|
+
const keys = [
|
340
|
+
this.queue.keys.wait,
|
341
|
+
this.queue.keys.paused,
|
342
|
+
this.queue.keys.meta,
|
343
|
+
this.queue.keys.prioritized,
|
344
|
+
this.queue.keys.pc,
|
345
|
+
];
|
346
|
+
return keys.concat([
|
347
|
+
priority,
|
348
|
+
this.queue.toKey(jobId),
|
349
|
+
jobId,
|
350
|
+
lifo ? 1 : 0,
|
351
|
+
]);
|
352
|
+
}
|
353
|
+
// Note: We have an issue here with jobs using custom job ids
|
354
|
+
moveToDelayedArgs(jobId, timestamp, token) {
|
355
|
+
//
|
356
|
+
// Bake in the job id first 12 bits into the timestamp
|
357
|
+
// to guarantee correct execution order of delayed jobs
|
358
|
+
// (up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
|
359
|
+
//
|
360
|
+
// WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
|
361
|
+
//
|
362
|
+
timestamp = Math.max(0, timestamp !== null && timestamp !== void 0 ? timestamp : 0);
|
363
|
+
if (timestamp > 0) {
|
364
|
+
timestamp = timestamp * 0x1000 + (+jobId & 0xfff);
|
365
|
+
}
|
366
|
+
const keys = [
|
367
|
+
'wait',
|
368
|
+
'active',
|
369
|
+
'prioritized',
|
370
|
+
'delayed',
|
371
|
+
jobId,
|
372
|
+
].map(name => {
|
373
|
+
return this.queue.toKey(name);
|
374
|
+
});
|
375
|
+
keys.push.apply(keys, [
|
376
|
+
this.queue.keys.events,
|
377
|
+
this.queue.keys.paused,
|
378
|
+
this.queue.keys.meta,
|
379
|
+
]);
|
380
|
+
return keys.concat([
|
381
|
+
this.queue.keys[''],
|
382
|
+
Date.now(),
|
383
|
+
JSON.stringify(timestamp),
|
384
|
+
jobId,
|
385
|
+
token,
|
386
|
+
]);
|
387
|
+
}
|
388
|
+
saveStacktraceArgs(jobId, stacktrace, failedReason) {
|
389
|
+
const keys = [this.queue.toKey(jobId)];
|
390
|
+
return keys.concat([stacktrace, failedReason]);
|
391
|
+
}
|
392
|
+
moveToWaitingChildrenArgs(jobId, token, opts) {
|
393
|
+
const timestamp = Date.now();
|
394
|
+
const childKey = (0, utils_1.getParentKey)(opts.child);
|
395
|
+
const keys = [`${jobId}:lock`, 'active', 'waiting-children', jobId].map(name => {
|
396
|
+
return this.queue.toKey(name);
|
397
|
+
});
|
398
|
+
return keys.concat([
|
399
|
+
token,
|
400
|
+
childKey !== null && childKey !== void 0 ? childKey : '',
|
401
|
+
JSON.stringify(timestamp),
|
402
|
+
jobId,
|
403
|
+
]);
|
404
|
+
}
|
405
|
+
async moveToDelayed(jobId, timestamp, token = '0') {
|
406
|
+
const client = await this.queue.client;
|
407
|
+
const args = this.moveToDelayedArgs(jobId, timestamp, token);
|
408
|
+
const result = await client.moveToDelayed(args);
|
409
|
+
if (result < 0) {
|
410
|
+
throw this.finishedErrors(result, jobId, 'moveToDelayed', 'active');
|
411
|
+
}
|
412
|
+
}
|
413
|
+
/**
|
414
|
+
* Move parent job to waiting-children state.
|
415
|
+
*
|
416
|
+
* @returns true if job is successfully moved, false if there are pending dependencies.
|
417
|
+
* @throws JobNotExist
|
418
|
+
* This exception is thrown if jobId is missing.
|
419
|
+
* @throws JobLockNotExist
|
420
|
+
* This exception is thrown if job lock is missing.
|
421
|
+
* @throws JobNotInState
|
422
|
+
* This exception is thrown if job is not in active state.
|
423
|
+
*/
|
424
|
+
async moveToWaitingChildren(jobId, token, opts = {}) {
|
425
|
+
const client = await this.queue.client;
|
426
|
+
const args = this.moveToWaitingChildrenArgs(jobId, token, opts);
|
427
|
+
const result = await client.moveToWaitingChildren(args);
|
428
|
+
switch (result) {
|
429
|
+
case 0:
|
430
|
+
return true;
|
431
|
+
case 1:
|
432
|
+
return false;
|
433
|
+
default:
|
434
|
+
throw this.finishedErrors(result, jobId, 'moveToWaitingChildren', 'active');
|
435
|
+
}
|
436
|
+
}
|
437
|
+
/**
|
438
|
+
* Remove jobs in a specific state.
|
439
|
+
*
|
440
|
+
* @returns Id jobs from the deleted records.
|
441
|
+
*/
|
442
|
+
async cleanJobsInSet(set, timestamp, limit = 0) {
|
443
|
+
const client = await this.queue.client;
|
444
|
+
return client.cleanJobsInSet([
|
445
|
+
this.queue.toKey(set),
|
446
|
+
this.queue.toKey('events'),
|
447
|
+
this.queue.toKey(''),
|
448
|
+
timestamp,
|
449
|
+
limit,
|
450
|
+
set,
|
451
|
+
]);
|
452
|
+
}
|
453
|
+
retryJobArgs(jobId, lifo, token) {
|
454
|
+
const keys = [
|
455
|
+
'active',
|
456
|
+
'wait',
|
457
|
+
'paused',
|
458
|
+
jobId,
|
459
|
+
'meta',
|
460
|
+
].map(name => {
|
461
|
+
return this.queue.toKey(name);
|
462
|
+
});
|
463
|
+
keys.push(this.queue.keys.events, this.queue.keys.delayed, this.queue.keys.prioritized, this.queue.keys.pc);
|
464
|
+
const pushCmd = (lifo ? 'R' : 'L') + 'PUSH';
|
465
|
+
return keys.concat([
|
466
|
+
this.queue.toKey(''),
|
467
|
+
Date.now(),
|
468
|
+
pushCmd,
|
469
|
+
jobId,
|
470
|
+
token,
|
471
|
+
]);
|
472
|
+
}
|
473
|
+
retryJobsArgs(state, count, timestamp) {
|
474
|
+
const keys = [
|
475
|
+
this.queue.toKey(''),
|
476
|
+
this.queue.keys.events,
|
477
|
+
this.queue.toKey(state),
|
478
|
+
this.queue.toKey('wait'),
|
479
|
+
this.queue.toKey('paused'),
|
480
|
+
this.queue.toKey('meta'),
|
481
|
+
];
|
482
|
+
const args = [count, timestamp, state];
|
483
|
+
return keys.concat(args);
|
484
|
+
}
|
485
|
+
async retryJobs(state = 'failed', count = 1000, timestamp = new Date().getTime()) {
|
486
|
+
const client = await this.queue.client;
|
487
|
+
const args = this.retryJobsArgs(state, count, timestamp);
|
488
|
+
return client.retryJobs(args);
|
489
|
+
}
|
490
|
+
/**
|
491
|
+
* Attempts to reprocess a job
|
492
|
+
*
|
493
|
+
* @param job -
|
494
|
+
* @param state - The expected job state. If the job is not found
|
495
|
+
* on the provided state, then it's not reprocessed. Supported states: 'failed', 'completed'
|
496
|
+
*
|
497
|
+
* @returns Returns a promise that evaluates to a return code:
|
498
|
+
* 1 means the operation was a success
|
499
|
+
* 0 means the job does not exist
|
500
|
+
* -1 means the job is currently locked and can't be retried.
|
501
|
+
* -2 means the job was not found in the expected set
|
502
|
+
*/
|
503
|
+
async reprocessJob(job, state) {
|
504
|
+
const client = await this.queue.client;
|
505
|
+
const keys = [
|
506
|
+
this.queue.toKey(job.id),
|
507
|
+
this.queue.keys.events,
|
508
|
+
this.queue.toKey(state),
|
509
|
+
this.queue.keys.wait,
|
510
|
+
this.queue.keys.meta,
|
511
|
+
this.queue.keys.paused,
|
512
|
+
];
|
513
|
+
const args = [
|
514
|
+
job.id,
|
515
|
+
(job.opts.lifo ? 'R' : 'L') + 'PUSH',
|
516
|
+
state === 'failed' ? 'failedReason' : 'returnvalue',
|
517
|
+
state,
|
518
|
+
];
|
519
|
+
const result = await client.reprocessJob(keys.concat(args));
|
520
|
+
switch (result) {
|
521
|
+
case 1:
|
522
|
+
return;
|
523
|
+
default:
|
524
|
+
throw this.finishedErrors(result, job.id, 'reprocessJob', state);
|
525
|
+
}
|
526
|
+
}
|
527
|
+
async moveToActive(token, jobId) {
|
528
|
+
const client = await this.queue.client;
|
529
|
+
const opts = this.queue.opts;
|
530
|
+
const queueKeys = this.queue.keys;
|
531
|
+
const keys = [
|
532
|
+
queueKeys.wait,
|
533
|
+
queueKeys.active,
|
534
|
+
queueKeys.prioritized,
|
535
|
+
queueKeys.events,
|
536
|
+
queueKeys.stalled,
|
537
|
+
queueKeys.limiter,
|
538
|
+
queueKeys.delayed,
|
539
|
+
queueKeys.paused,
|
540
|
+
queueKeys.meta,
|
541
|
+
queueKeys.pc,
|
542
|
+
];
|
543
|
+
const args = [
|
544
|
+
queueKeys[''],
|
545
|
+
Date.now(),
|
546
|
+
jobId || '',
|
547
|
+
pack({
|
548
|
+
token,
|
549
|
+
lockDuration: opts.lockDuration,
|
550
|
+
limiter: opts.limiter,
|
551
|
+
}),
|
552
|
+
];
|
553
|
+
const result = await client.moveToActive(keys.concat(args));
|
554
|
+
return raw2NextJobData(result);
|
555
|
+
}
|
556
|
+
async promote(jobId) {
|
557
|
+
const client = await this.queue.client;
|
558
|
+
const keys = [
|
559
|
+
this.queue.keys.delayed,
|
560
|
+
this.queue.keys.wait,
|
561
|
+
this.queue.keys.paused,
|
562
|
+
this.queue.keys.meta,
|
563
|
+
this.queue.keys.prioritized,
|
564
|
+
this.queue.keys.pc,
|
565
|
+
this.queue.keys.events,
|
566
|
+
];
|
567
|
+
const args = [this.queue.toKey(''), jobId];
|
568
|
+
return client.promote(keys.concat(args));
|
569
|
+
}
|
570
|
+
/**
|
571
|
+
* Looks for unlocked jobs in the active queue.
|
572
|
+
*
|
573
|
+
* The job was being worked on, but the worker process died and it failed to renew the lock.
|
574
|
+
* We call these jobs 'stalled'. This is the most common case. We resolve these by moving them
|
575
|
+
* back to wait to be re-processed. To prevent jobs from cycling endlessly between active and wait,
|
576
|
+
* (e.g. if the job handler keeps crashing),
|
577
|
+
* we limit the number stalled job recoveries to settings.maxStalledCount.
|
578
|
+
*/
|
579
|
+
async moveStalledJobsToWait() {
|
580
|
+
const client = await this.queue.client;
|
581
|
+
const opts = this.queue.opts;
|
582
|
+
const keys = [
|
583
|
+
this.queue.keys.stalled,
|
584
|
+
this.queue.keys.wait,
|
585
|
+
this.queue.keys.active,
|
586
|
+
this.queue.keys.failed,
|
587
|
+
this.queue.keys['stalled-check'],
|
588
|
+
this.queue.keys.meta,
|
589
|
+
this.queue.keys.paused,
|
590
|
+
this.queue.keys.events,
|
591
|
+
];
|
592
|
+
const args = [
|
593
|
+
opts.maxStalledCount,
|
594
|
+
this.queue.toKey(''),
|
595
|
+
Date.now(),
|
596
|
+
opts.stalledInterval,
|
597
|
+
];
|
598
|
+
return client.moveStalledJobsToWait(keys.concat(args));
|
599
|
+
}
|
600
|
+
/**
|
601
|
+
* Moves a job back from Active to Wait.
|
602
|
+
* This script is used when a job has been manually rate limited and needs
|
603
|
+
* to be moved back to wait from active status.
|
604
|
+
*
|
605
|
+
* @param client - Redis client
|
606
|
+
* @param jobId - Job id
|
607
|
+
* @returns
|
608
|
+
*/
|
609
|
+
async moveJobFromActiveToWait(jobId, token) {
|
610
|
+
const client = await this.queue.client;
|
611
|
+
const lockKey = `${this.queue.toKey(jobId)}:lock`;
|
612
|
+
const keys = [
|
613
|
+
this.queue.keys.active,
|
614
|
+
this.queue.keys.wait,
|
615
|
+
this.queue.keys.stalled,
|
616
|
+
lockKey,
|
617
|
+
this.queue.keys.paused,
|
618
|
+
this.queue.keys.meta,
|
619
|
+
this.queue.keys.limiter,
|
620
|
+
this.queue.keys.prioritized,
|
621
|
+
this.queue.keys.events,
|
622
|
+
];
|
623
|
+
const args = [jobId, token, this.queue.toKey(jobId)];
|
624
|
+
const pttl = await client.moveJobFromActiveToWait(keys.concat(args));
|
625
|
+
return pttl < 0 ? 0 : pttl;
|
626
|
+
}
|
627
|
+
async obliterate(opts) {
|
628
|
+
const client = await this.queue.client;
|
629
|
+
const keys = [
|
630
|
+
this.queue.keys.meta,
|
631
|
+
this.queue.toKey(''),
|
632
|
+
];
|
633
|
+
const args = [opts.count, opts.force ? 'force' : null];
|
634
|
+
const result = await client.obliterate(keys.concat(args));
|
635
|
+
if (result < 0) {
|
636
|
+
switch (result) {
|
637
|
+
case -1:
|
638
|
+
throw new Error('Cannot obliterate non-paused queue');
|
639
|
+
case -2:
|
640
|
+
throw new Error('Cannot obliterate queue with active jobs');
|
641
|
+
}
|
642
|
+
}
|
643
|
+
return result;
|
644
|
+
}
|
645
|
+
}
|
646
|
+
exports.Scripts = Scripts;
|
647
|
+
function raw2NextJobData(raw) {
|
648
|
+
if (raw) {
|
649
|
+
const result = [null, raw[1], raw[2], raw[3]];
|
650
|
+
if (raw[0]) {
|
651
|
+
result[0] = (0, utils_1.array2obj)(raw[0]);
|
652
|
+
}
|
653
|
+
return result;
|
654
|
+
}
|
655
|
+
return [];
|
656
|
+
}
|
657
|
+
exports.raw2NextJobData = raw2NextJobData;
|
658
|
+
//# sourceMappingURL=scripts.js.map
|