bullmq 1.58.0 → 1.59.3
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/bullmq.d.ts +1839 -0
- package/dist/{classes → cjs/classes}/backoffs.d.ts +0 -0
- package/dist/{classes → cjs/classes}/backoffs.js +0 -0
- package/dist/cjs/classes/backoffs.js.map +1 -0
- package/dist/{classes → cjs/classes}/child-pool.d.ts +0 -0
- package/dist/{classes → cjs/classes}/child-pool.js +1 -1
- package/dist/cjs/classes/child-pool.js.map +1 -0
- package/dist/{classes → cjs/classes}/child-processor.d.ts +0 -0
- package/dist/{classes → cjs/classes}/child-processor.js +0 -0
- package/dist/cjs/classes/child-processor.js.map +1 -0
- package/dist/{classes → cjs/classes}/compat.d.ts +0 -0
- package/dist/{classes → cjs/classes}/compat.js +0 -0
- package/dist/cjs/classes/compat.js.map +1 -0
- package/dist/{classes → cjs/classes}/flow-producer.d.ts +0 -0
- package/dist/{classes → cjs/classes}/flow-producer.js +0 -0
- package/dist/cjs/classes/flow-producer.js.map +1 -0
- package/dist/{classes → cjs/classes}/index.d.ts +0 -0
- package/dist/{classes → cjs/classes}/index.js +0 -0
- package/dist/cjs/classes/index.js.map +1 -0
- package/dist/{classes → cjs/classes}/job.d.ts +0 -0
- package/dist/{classes → cjs/classes}/job.js +0 -0
- package/dist/cjs/classes/job.js.map +1 -0
- package/dist/{classes → cjs/classes}/master.d.ts +0 -0
- package/dist/{classes → cjs/classes}/master.js +0 -0
- package/dist/cjs/classes/master.js.map +1 -0
- package/dist/{classes → cjs/classes}/process-utils.d.ts +0 -0
- package/dist/{classes → cjs/classes}/process-utils.js +0 -0
- package/dist/cjs/classes/process-utils.js.map +1 -0
- package/dist/{classes → cjs/classes}/queue-base.d.ts +0 -0
- package/dist/{classes → cjs/classes}/queue-base.js +0 -0
- package/dist/cjs/classes/queue-base.js.map +1 -0
- package/dist/{classes → cjs/classes}/queue-events.d.ts +0 -0
- package/dist/{classes → cjs/classes}/queue-events.js +0 -0
- package/dist/cjs/classes/queue-events.js.map +1 -0
- package/dist/{classes → cjs/classes}/queue-getters.d.ts +0 -0
- package/dist/{classes → cjs/classes}/queue-getters.js +0 -0
- package/dist/cjs/classes/queue-getters.js.map +1 -0
- package/dist/{classes → cjs/classes}/queue-keys.d.ts +0 -0
- package/dist/{classes → cjs/classes}/queue-keys.js +0 -0
- package/dist/cjs/classes/queue-keys.js.map +1 -0
- package/dist/{classes → cjs/classes}/queue-scheduler.d.ts +0 -0
- package/dist/{classes → cjs/classes}/queue-scheduler.js +0 -0
- package/dist/cjs/classes/queue-scheduler.js.map +1 -0
- package/dist/{classes → cjs/classes}/queue.d.ts +0 -0
- package/dist/{classes → cjs/classes}/queue.js +0 -0
- package/dist/cjs/classes/queue.js.map +1 -0
- package/dist/{classes → cjs/classes}/redis-connection.d.ts +0 -0
- package/dist/{classes → cjs/classes}/redis-connection.js +3 -3
- package/dist/cjs/classes/redis-connection.js.map +1 -0
- package/dist/{classes → cjs/classes}/repeat.d.ts +0 -0
- package/dist/{classes → cjs/classes}/repeat.js +0 -0
- package/dist/cjs/classes/repeat.js.map +1 -0
- package/dist/{classes → cjs/classes}/sandbox.d.ts +0 -0
- package/dist/{classes → cjs/classes}/sandbox.js +0 -0
- package/dist/cjs/classes/sandbox.js.map +1 -0
- package/dist/{classes → cjs/classes}/scripts.d.ts +0 -0
- package/dist/{classes → cjs/classes}/scripts.js +0 -0
- package/dist/cjs/classes/scripts.js.map +1 -0
- package/dist/{classes → cjs/classes}/timer-manager.d.ts +0 -0
- package/dist/{classes → cjs/classes}/timer-manager.js +0 -0
- package/dist/cjs/classes/timer-manager.js.map +1 -0
- package/dist/{classes → cjs/classes}/worker.d.ts +0 -0
- package/dist/{classes → cjs/classes}/worker.js +4 -10
- package/dist/cjs/classes/worker.js.map +1 -0
- package/dist/{commands → cjs/commands}/addJob-9.lua +0 -0
- package/dist/{commands → cjs/commands}/changeDelay-4.lua +0 -0
- package/dist/{commands → cjs/commands}/cleanJobsInSet-2.lua +0 -0
- package/dist/{commands → cjs/commands}/drain-4.lua +0 -0
- package/dist/{commands → cjs/commands}/extendLock-2.lua +0 -0
- package/dist/{commands → cjs/commands}/getState-7.lua +0 -0
- package/dist/{commands → cjs/commands}/getStateV2-7.lua +0 -0
- package/dist/{commands → cjs/commands}/includes/destructureJobKey.lua +0 -0
- package/dist/{commands → cjs/commands}/includes/updateParentDepsIfNeeded.lua +0 -0
- package/dist/{commands → cjs/commands}/index.d.ts +0 -0
- package/dist/{commands → cjs/commands}/index.js +0 -0
- package/dist/cjs/commands/index.js.map +1 -0
- package/dist/{commands → cjs/commands}/isFinished-3.lua +0 -0
- package/dist/{commands → cjs/commands}/isJobInList-1.lua +0 -0
- package/dist/{commands → cjs/commands}/moveStalledJobsToWait-8.lua +0 -0
- package/dist/{commands → cjs/commands}/moveToActive-8.lua +0 -0
- package/dist/{commands → cjs/commands}/moveToDelayed-5.lua +0 -0
- package/dist/{commands → cjs/commands}/moveToFinished-8.lua +0 -0
- package/dist/{commands → cjs/commands}/moveToWaitingChildren-4.lua +0 -0
- package/dist/{commands → cjs/commands}/obliterate-2.lua +0 -0
- package/dist/{commands → cjs/commands}/pause-4.lua +0 -0
- package/dist/{commands → cjs/commands}/promote-5.lua +0 -0
- package/dist/{commands → cjs/commands}/releaseLock-1.lua +0 -0
- package/dist/{commands → cjs/commands}/removeJob-1.lua +0 -0
- package/dist/{commands → cjs/commands}/removeRepeatable-2.lua +0 -0
- package/dist/{commands → cjs/commands}/reprocessJob-4.lua +0 -0
- package/dist/{commands → cjs/commands}/retryJob-4.lua +0 -0
- package/dist/{commands → cjs/commands}/script-loader.d.ts +0 -0
- package/dist/{commands → cjs/commands}/script-loader.js +0 -0
- package/dist/cjs/commands/script-loader.js.map +1 -0
- package/dist/{commands → cjs/commands}/takeLock-1.lua +0 -0
- package/dist/{commands → cjs/commands}/updateDelaySet-7.lua +0 -0
- package/dist/{commands → cjs/commands}/updateProgress-2.lua +0 -0
- package/dist/{enums → cjs/enums}/error-codes.enum.d.ts +0 -0
- package/dist/{enums → cjs/enums}/error-codes.enum.js +0 -0
- package/dist/cjs/enums/error-codes.enum.js.map +1 -0
- package/dist/{enums → cjs/enums}/index.d.ts +0 -0
- package/dist/{enums → cjs/enums}/index.js +0 -0
- package/dist/{enums → cjs/enums}/index.js.map +1 -1
- package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
- package/dist/{index.js → cjs/index.js} +0 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/advanced-options.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/advanced-options.js +0 -0
- package/dist/cjs/interfaces/advanced-options.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/backoff-options.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/backoff-options.js +0 -0
- package/dist/cjs/interfaces/backoff-options.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/child-command.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/child-command.js +0 -0
- package/dist/cjs/interfaces/child-command.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/child-message.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/child-message.js +0 -0
- package/dist/cjs/interfaces/child-message.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/connection.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/connection.js +0 -0
- package/dist/cjs/interfaces/connection.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/flow-job.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/flow-job.js +0 -0
- package/dist/{interfaces → cjs/interfaces}/flow-job.js.map +1 -1
- package/dist/{interfaces → cjs/interfaces}/index.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/index.js +0 -0
- package/dist/cjs/interfaces/index.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/jobs-options.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/jobs-options.js +0 -0
- package/dist/cjs/interfaces/jobs-options.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/parent-command.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/parent-command.js +0 -0
- package/dist/cjs/interfaces/parent-command.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/parent-message.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/parent-message.js +0 -0
- package/dist/cjs/interfaces/parent-message.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/parent.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/parent.js +0 -0
- package/dist/{interfaces → cjs/interfaces}/parent.js.map +1 -1
- package/dist/{interfaces → cjs/interfaces}/queue-options.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/queue-options.js +0 -0
- package/dist/cjs/interfaces/queue-options.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/queue-scheduler-options.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/queue-scheduler-options.js +0 -0
- package/dist/cjs/interfaces/queue-scheduler-options.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/rate-limiter-options.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/rate-limiter-options.js +0 -0
- package/dist/cjs/interfaces/rate-limiter-options.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/redis-options.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/redis-options.js +0 -0
- package/dist/cjs/interfaces/redis-options.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/redis-streams.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/redis-streams.js +0 -0
- package/dist/cjs/interfaces/redis-streams.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/repeat-options.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/repeat-options.js +0 -0
- package/dist/cjs/interfaces/repeat-options.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/sandboxed-job-processor.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/sandboxed-job-processor.js +0 -0
- package/dist/cjs/interfaces/sandboxed-job-processor.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/sandboxed-job.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/sandboxed-job.js +0 -0
- package/dist/cjs/interfaces/sandboxed-job.js.map +1 -0
- package/dist/{interfaces → cjs/interfaces}/worker-options.d.ts +0 -0
- package/dist/{interfaces → cjs/interfaces}/worker-options.js +0 -0
- package/dist/cjs/interfaces/worker-options.js.map +1 -0
- package/dist/{utils.d.ts → cjs/utils.d.ts} +0 -0
- package/dist/{utils.js → cjs/utils.js} +0 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/classes/backoffs.d.ts +15 -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 +22 -0
- package/dist/esm/classes/child-pool.js +125 -0
- package/dist/esm/classes/child-pool.js.map +1 -0
- package/dist/esm/classes/child-processor.d.ts +24 -0
- package/dist/esm/classes/child-processor.js +165 -0
- package/dist/esm/classes/child-processor.js.map +1 -0
- package/dist/esm/classes/compat.d.ts +316 -0
- package/dist/esm/classes/compat.js +674 -0
- package/dist/esm/classes/compat.js.map +1 -0
- package/dist/esm/classes/flow-producer.d.ts +148 -0
- package/dist/esm/classes/flow-producer.js +228 -0
- package/dist/esm/classes/flow-producer.js.map +1 -0
- package/dist/esm/classes/index.d.ts +14 -0
- package/dist/esm/classes/index.js +15 -0
- package/dist/esm/classes/index.js.map +1 -0
- package/dist/esm/classes/job.d.ts +338 -0
- package/dist/esm/classes/job.js +623 -0
- package/dist/esm/classes/job.js.map +1 -0
- package/dist/esm/classes/master.d.ts +1 -0
- package/dist/esm/classes/master.js +35 -0
- package/dist/esm/classes/master.js.map +1 -0
- package/dist/esm/classes/process-utils.d.ts +7 -0
- package/dist/esm/classes/process-utils.js +31 -0
- package/dist/esm/classes/process-utils.js.map +1 -0
- package/dist/esm/classes/queue-base.d.ts +22 -0
- package/dist/esm/classes/queue-base.js +62 -0
- package/dist/esm/classes/queue-base.js.map +1 -0
- package/dist/esm/classes/queue-events.d.ts +153 -0
- package/dist/esm/classes/queue-events.js +108 -0
- package/dist/esm/classes/queue-events.js.map +1 -0
- package/dist/esm/classes/queue-getters.d.ts +54 -0
- package/dist/esm/classes/queue-getters.js +207 -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 +40 -0
- package/dist/esm/classes/queue-keys.js.map +1 -0
- package/dist/esm/classes/queue-scheduler.d.ts +35 -0
- package/dist/esm/classes/queue-scheduler.js +156 -0
- package/dist/esm/classes/queue-scheduler.js.map +1 -0
- package/dist/esm/classes/queue.d.ts +143 -0
- package/dist/esm/classes/queue.js +195 -0
- package/dist/esm/classes/queue.js.map +1 -0
- package/dist/esm/classes/redis-connection.d.ts +28 -0
- package/dist/esm/classes/redis-connection.js +164 -0
- package/dist/esm/classes/redis-connection.js.map +1 -0
- package/dist/esm/classes/repeat.d.ts +20 -0
- package/dist/esm/classes/repeat.js +140 -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 +56 -0
- package/dist/esm/classes/sandbox.js.map +1 -0
- package/dist/esm/classes/scripts.d.ts +82 -0
- package/dist/esm/classes/scripts.js +510 -0
- package/dist/esm/classes/scripts.js.map +1 -0
- package/dist/esm/classes/timer-manager.d.ts +17 -0
- package/dist/esm/classes/timer-manager.js +47 -0
- package/dist/esm/classes/timer-manager.js.map +1 -0
- package/dist/esm/classes/worker.d.ts +168 -0
- package/dist/esm/classes/worker.js +463 -0
- package/dist/esm/classes/worker.js.map +1 -0
- package/dist/esm/commands/addJob-9.lua +179 -0
- package/dist/esm/commands/changeDelay-4.lua +41 -0
- package/dist/esm/commands/cleanJobsInSet-2.lua +65 -0
- package/dist/esm/commands/drain-4.lua +36 -0
- package/dist/esm/commands/extendLock-2.lua +23 -0
- package/dist/esm/commands/getState-7.lua +63 -0
- package/dist/esm/commands/getStateV2-7.lua +51 -0
- package/dist/esm/commands/includes/destructureJobKey.lua +12 -0
- package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +19 -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 +20 -0
- package/dist/esm/commands/moveStalledJobsToWait-8.lua +112 -0
- package/dist/esm/commands/moveToActive-8.lua +100 -0
- package/dist/esm/commands/moveToDelayed-5.lua +45 -0
- package/dist/esm/commands/moveToFinished-8.lua +159 -0
- package/dist/esm/commands/moveToWaitingChildren-4.lua +60 -0
- package/dist/esm/commands/obliterate-2.lua +129 -0
- package/dist/esm/commands/pause-4.lua +27 -0
- package/dist/esm/commands/promote-5.lua +54 -0
- package/dist/esm/commands/releaseLock-1.lua +19 -0
- package/dist/esm/commands/removeJob-1.lua +115 -0
- package/dist/esm/commands/removeRepeatable-2.lua +23 -0
- package/dist/esm/commands/reprocessJob-4.lua +32 -0
- package/dist/esm/commands/retryJob-4.lua +34 -0
- package/dist/esm/commands/script-loader.d.ts +120 -0
- package/dist/esm/commands/script-loader.js +395 -0
- package/dist/esm/commands/script-loader.js.map +1 -0
- package/dist/esm/commands/takeLock-1.lua +17 -0
- package/dist/esm/commands/updateDelaySet-7.lua +73 -0
- package/dist/esm/commands/updateProgress-2.lua +15 -0
- package/dist/esm/enums/error-codes.enum.d.ts +7 -0
- package/dist/esm/enums/error-codes.enum.js +9 -0
- package/dist/esm/enums/error-codes.enum.js.map +1 -0
- package/dist/esm/enums/index.d.ts +1 -0
- package/dist/esm/enums/index.js +2 -0
- package/dist/esm/enums/index.js.map +1 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/interfaces/advanced-options.d.ts +6 -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/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 +14 -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 +19 -0
- package/dist/esm/interfaces/index.js +20 -0
- package/dist/esm/interfaces/index.js.map +1 -0
- package/dist/esm/interfaces/jobs-options.d.ts +91 -0
- package/dist/esm/interfaces/jobs-options.js +2 -0
- package/dist/esm/interfaces/jobs-options.js.map +1 -0
- package/dist/esm/interfaces/parent-command.d.ts +9 -0
- package/dist/esm/interfaces/parent-command.js +11 -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 +11 -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 +72 -0
- package/dist/esm/interfaces/queue-options.js +6 -0
- package/dist/esm/interfaces/queue-options.js.map +1 -0
- package/dist/esm/interfaces/queue-scheduler-options.d.ts +23 -0
- package/dist/esm/interfaces/queue-scheduler-options.js +2 -0
- package/dist/esm/interfaces/queue-scheduler-options.js.map +1 -0
- package/dist/esm/interfaces/rate-limiter-options.d.ts +30 -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 +5 -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 +44 -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 +32 -0
- package/dist/esm/interfaces/worker-options.js +2 -0
- package/dist/esm/interfaces/worker-options.js.map +1 -0
- package/dist/esm/tsdoc-metadata.json +11 -0
- package/dist/esm/utils.d.ts +29 -0
- package/dist/esm/utils.js +124 -0
- package/dist/esm/utils.js.map +1 -0
- package/package.json +13 -10
- package/dist/classes/backoffs.js.map +0 -1
- package/dist/classes/child-pool.js.map +0 -1
- package/dist/classes/child-processor.js.map +0 -1
- package/dist/classes/compat.js.map +0 -1
- package/dist/classes/flow-producer.js.map +0 -1
- package/dist/classes/index.js.map +0 -1
- package/dist/classes/job.js.map +0 -1
- package/dist/classes/master.js.map +0 -1
- package/dist/classes/process-utils.js.map +0 -1
- package/dist/classes/queue-base.js.map +0 -1
- package/dist/classes/queue-events.js.map +0 -1
- package/dist/classes/queue-getters.js.map +0 -1
- package/dist/classes/queue-keys.js.map +0 -1
- package/dist/classes/queue-scheduler.js.map +0 -1
- package/dist/classes/queue.js.map +0 -1
- package/dist/classes/redis-connection.js.map +0 -1
- package/dist/classes/repeat.js.map +0 -1
- package/dist/classes/sandbox.js.map +0 -1
- package/dist/classes/scripts.js.map +0 -1
- package/dist/classes/timer-manager.js.map +0 -1
- package/dist/classes/worker.js.map +0 -1
- package/dist/commands/index.js.map +0 -1
- package/dist/commands/script-loader.js.map +0 -1
- package/dist/enums/error-codes.enum.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/interfaces/advanced-options.js.map +0 -1
- package/dist/interfaces/backoff-options.js.map +0 -1
- package/dist/interfaces/child-command.js.map +0 -1
- package/dist/interfaces/child-message.js.map +0 -1
- package/dist/interfaces/connection.js.map +0 -1
- package/dist/interfaces/index.js.map +0 -1
- package/dist/interfaces/jobs-options.js.map +0 -1
- package/dist/interfaces/parent-command.js.map +0 -1
- package/dist/interfaces/parent-message.js.map +0 -1
- package/dist/interfaces/queue-options.js.map +0 -1
- package/dist/interfaces/queue-scheduler-options.js.map +0 -1
- package/dist/interfaces/rate-limiter-options.js.map +0 -1
- package/dist/interfaces/redis-options.js.map +0 -1
- package/dist/interfaces/redis-streams.js.map +0 -1
- package/dist/interfaces/repeat-options.js.map +0 -1
- package/dist/interfaces/sandboxed-job-processor.js.map +0 -1
- package/dist/interfaces/sandboxed-job.js.map +0 -1
- package/dist/interfaces/worker-options.js.map +0 -1
- package/dist/utils.js.map +0 -1
@@ -0,0 +1,82 @@
|
|
1
|
+
/**
|
2
|
+
* Includes all the scripts needed by the queue and jobs.
|
3
|
+
*/
|
4
|
+
import { JobsOptions, RedisClient } from '../interfaces';
|
5
|
+
import { Worker } from './worker';
|
6
|
+
import { QueueScheduler } from './queue-scheduler';
|
7
|
+
import { QueueBase } from './queue-base';
|
8
|
+
import { Job, JobJson, JobJsonRaw, MoveToChildrenOpts } from './job';
|
9
|
+
export declare type MinimalQueue = Pick<QueueBase, 'name' | 'client' | 'toKey' | 'keys' | 'opts' | 'closing' | 'waitUntilReady' | 'removeListener' | 'emit' | 'on' | 'redisVersion'>;
|
10
|
+
export declare type ParentOpts = {
|
11
|
+
waitChildrenKey?: string;
|
12
|
+
parentDependenciesKey?: string;
|
13
|
+
parentKey?: string;
|
14
|
+
};
|
15
|
+
export declare type JobData = [JobJsonRaw | number, string?];
|
16
|
+
export declare class Scripts {
|
17
|
+
static isJobInList(queue: MinimalQueue, listKey: string, jobId: string): Promise<boolean>;
|
18
|
+
static addJob(client: RedisClient, queue: MinimalQueue, job: JobJson, opts: JobsOptions, jobId: string, parentOpts?: ParentOpts): Promise<string>;
|
19
|
+
static pause(queue: MinimalQueue, pause: boolean): Promise<void>;
|
20
|
+
static removeRepeatableArgs(queue: MinimalQueue, repeatJobId: string, repeatJobKey: string): string[];
|
21
|
+
static removeRepeatable(queue: MinimalQueue, repeatJobId: string, repeatJobKey: string): Promise<void>;
|
22
|
+
static remove(queue: MinimalQueue, jobId: string): Promise<number>;
|
23
|
+
static extendLock(queue: MinimalQueue, jobId: string, token: string, duration: number): Promise<number>;
|
24
|
+
static updateProgress(queue: MinimalQueue, job: Job, progress: number | object): Promise<void>;
|
25
|
+
static moveToFinishedArgs(queue: MinimalQueue, job: Job, val: any, propVal: string, shouldRemove: boolean | number, target: string, token: string, fetchNext?: boolean): string[];
|
26
|
+
private static moveToFinished;
|
27
|
+
static finishedErrors(code: number, jobId: string, command: string, state?: string): Error;
|
28
|
+
static drainArgs(queue: MinimalQueue, delayed: boolean): string[];
|
29
|
+
static drain(queue: MinimalQueue, delayed: boolean): Promise<void>;
|
30
|
+
static moveToCompleted(queue: MinimalQueue, job: Job, returnvalue: any, removeOnComplete: boolean | number, token: string, fetchNext: boolean): Promise<JobData | []>;
|
31
|
+
static moveToFailedArgs(queue: MinimalQueue, job: Job, failedReason: string, removeOnFailed: boolean | number, token: string, fetchNext?: boolean): string[];
|
32
|
+
static isFinished(queue: MinimalQueue, jobId: string, returnValue?: boolean): Promise<number | [number, string]>;
|
33
|
+
static getState(queue: MinimalQueue, jobId: string): Promise<string>;
|
34
|
+
static changeDelay(queue: MinimalQueue, jobId: string, delay: number): Promise<void>;
|
35
|
+
static changeDelayArgs(queue: MinimalQueue, jobId: string, timestamp: number): string[];
|
36
|
+
static moveToDelayedArgs(queue: MinimalQueue, jobId: string, timestamp: number): string[];
|
37
|
+
static moveToWaitingChildrenArgs(queue: MinimalQueue, jobId: string, token: string, opts?: MoveToChildrenOpts): string[];
|
38
|
+
static moveToDelayed(queue: MinimalQueue, jobId: string, timestamp: number): Promise<void>;
|
39
|
+
/**
|
40
|
+
* Move parent job to waiting-children state.
|
41
|
+
*
|
42
|
+
* @returns true if job is successfully moved, false if there are pending dependencies.
|
43
|
+
* @throws JobNotExist
|
44
|
+
* This exception is thrown if jobId is missing.
|
45
|
+
* @throws JobLockNotExist
|
46
|
+
* This exception is thrown if job lock is missing.
|
47
|
+
* @throws JobNotInState
|
48
|
+
* This exception is thrown if job is not in active state.
|
49
|
+
*/
|
50
|
+
static moveToWaitingChildren(queue: MinimalQueue, jobId: string, token: string, opts?: MoveToChildrenOpts): Promise<boolean>;
|
51
|
+
/**
|
52
|
+
* Remove jobs in a specific state.
|
53
|
+
*
|
54
|
+
* @returns Id jobs from the deleted records.
|
55
|
+
*/
|
56
|
+
static cleanJobsInSet(queue: MinimalQueue, set: string, timestamp: number, limit?: number): Promise<string[]>;
|
57
|
+
static retryJobArgs(queue: MinimalQueue, job: Job): string[];
|
58
|
+
/**
|
59
|
+
* Attempts to reprocess a job
|
60
|
+
*
|
61
|
+
* @param job -
|
62
|
+
* @param {Object} options
|
63
|
+
* @param {String} options.state The expected job state. If the job is not found
|
64
|
+
* on the provided state, then it's not reprocessed. Supported states: 'failed', 'completed'
|
65
|
+
*
|
66
|
+
* @returns Returns a promise that evaluates to a return code:
|
67
|
+
* 1 means the operation was a success
|
68
|
+
* 0 means the job does not exist
|
69
|
+
* -1 means the job is currently locked and can't be retried.
|
70
|
+
* -2 means the job was not found in the expected set
|
71
|
+
*/
|
72
|
+
static reprocessJob(queue: MinimalQueue, job: Job, state: 'failed' | 'completed'): Promise<void>;
|
73
|
+
static moveToActive<T, R, N extends string>(worker: Worker<T, R, N>, token: string, jobId?: string): Promise<[] | [number | JobJsonRaw, string?]>;
|
74
|
+
static updateDelaySet(queue: MinimalQueue, delayedTimestamp: number): Promise<any>;
|
75
|
+
static promote(queue: MinimalQueue, jobId: string): Promise<any>;
|
76
|
+
static moveStalledJobsToWait(queue: QueueScheduler): Promise<any>;
|
77
|
+
static obliterate(queue: MinimalQueue, opts: {
|
78
|
+
force: boolean;
|
79
|
+
count: number;
|
80
|
+
}): Promise<number>;
|
81
|
+
}
|
82
|
+
export declare function raw2jobData(raw: any[]): [JobJsonRaw | number, string?] | [];
|
@@ -0,0 +1,510 @@
|
|
1
|
+
/**
|
2
|
+
* Includes all the scripts needed by the queue and jobs.
|
3
|
+
*/
|
4
|
+
/*eslint-env node */
|
5
|
+
'use strict';
|
6
|
+
import { Packr } from 'msgpackr';
|
7
|
+
const packer = new Packr({
|
8
|
+
useRecords: false,
|
9
|
+
encodeUndefinedAsNil: true,
|
10
|
+
});
|
11
|
+
const pack = packer.pack;
|
12
|
+
import * as semver from 'semver';
|
13
|
+
import { ErrorCodes } from '../enums';
|
14
|
+
import { array2obj, getParentKey } from '../utils';
|
15
|
+
export class Scripts {
|
16
|
+
static async isJobInList(queue, listKey, jobId) {
|
17
|
+
const client = await queue.client;
|
18
|
+
let result;
|
19
|
+
if (semver.lt(queue.redisVersion, '6.0.6')) {
|
20
|
+
result = await client.isJobInList([listKey, jobId]);
|
21
|
+
}
|
22
|
+
else {
|
23
|
+
result = await client.lpos(listKey, jobId);
|
24
|
+
}
|
25
|
+
return Number.isInteger(result);
|
26
|
+
}
|
27
|
+
static async addJob(client, queue, job, opts, jobId, parentOpts = {
|
28
|
+
parentKey: null,
|
29
|
+
waitChildrenKey: null,
|
30
|
+
parentDependenciesKey: null,
|
31
|
+
}) {
|
32
|
+
const queueKeys = queue.keys;
|
33
|
+
const keys = [
|
34
|
+
queueKeys.wait,
|
35
|
+
queueKeys.paused,
|
36
|
+
queueKeys.meta,
|
37
|
+
queueKeys.id,
|
38
|
+
queueKeys.delayed,
|
39
|
+
queueKeys.priority,
|
40
|
+
queueKeys.completed,
|
41
|
+
queueKeys.events,
|
42
|
+
queueKeys.delay,
|
43
|
+
];
|
44
|
+
const args = [
|
45
|
+
queueKeys[''],
|
46
|
+
typeof jobId !== 'undefined' ? jobId : '',
|
47
|
+
job.name,
|
48
|
+
job.timestamp,
|
49
|
+
parentOpts.parentKey || null,
|
50
|
+
parentOpts.waitChildrenKey || null,
|
51
|
+
parentOpts.parentDependenciesKey || null,
|
52
|
+
];
|
53
|
+
let encodedOpts;
|
54
|
+
if (opts.repeat) {
|
55
|
+
const repeat = Object.assign({}, opts.repeat);
|
56
|
+
if (repeat.startDate) {
|
57
|
+
repeat.startDate = +new Date(repeat.startDate);
|
58
|
+
}
|
59
|
+
if (repeat.endDate) {
|
60
|
+
repeat.endDate = +new Date(repeat.endDate);
|
61
|
+
}
|
62
|
+
encodedOpts = pack(Object.assign(Object.assign({}, opts), { repeat }));
|
63
|
+
}
|
64
|
+
else {
|
65
|
+
encodedOpts = pack(opts);
|
66
|
+
}
|
67
|
+
keys.push(pack(args), job.data, encodedOpts);
|
68
|
+
const result = await client.addJob(keys);
|
69
|
+
if (result < 0) {
|
70
|
+
throw this.finishedErrors(result, parentOpts.parentKey, 'addJob');
|
71
|
+
}
|
72
|
+
return result;
|
73
|
+
}
|
74
|
+
static async pause(queue, pause) {
|
75
|
+
const client = await queue.client;
|
76
|
+
let src = 'wait', dst = 'paused';
|
77
|
+
if (!pause) {
|
78
|
+
src = 'paused';
|
79
|
+
dst = 'wait';
|
80
|
+
}
|
81
|
+
const keys = [src, dst, 'meta'].map((name) => queue.toKey(name));
|
82
|
+
keys.push(queue.keys.events);
|
83
|
+
return client.pause(keys.concat([pause ? 'paused' : 'resumed']));
|
84
|
+
}
|
85
|
+
static removeRepeatableArgs(queue, repeatJobId, repeatJobKey) {
|
86
|
+
const queueKeys = queue.keys;
|
87
|
+
const keys = [
|
88
|
+
queueKeys.repeat,
|
89
|
+
queueKeys.delayed,
|
90
|
+
];
|
91
|
+
const args = [
|
92
|
+
repeatJobId,
|
93
|
+
repeatJobKey,
|
94
|
+
queueKeys[''],
|
95
|
+
];
|
96
|
+
return keys.concat(args);
|
97
|
+
}
|
98
|
+
static async removeRepeatable(queue, repeatJobId, repeatJobKey) {
|
99
|
+
const client = await queue.client;
|
100
|
+
const args = this.removeRepeatableArgs(queue, repeatJobId, repeatJobKey);
|
101
|
+
return client.removeRepeatable(args);
|
102
|
+
}
|
103
|
+
static async remove(queue, jobId) {
|
104
|
+
const client = await queue.client;
|
105
|
+
const keys = [jobId].map(name => queue.toKey(name));
|
106
|
+
return client.removeJob(keys.concat([jobId]));
|
107
|
+
}
|
108
|
+
static async extendLock(queue, jobId, token, duration) {
|
109
|
+
const client = await queue.client;
|
110
|
+
const args = [
|
111
|
+
queue.toKey(jobId) + ':lock',
|
112
|
+
queue.keys.stalled,
|
113
|
+
token,
|
114
|
+
duration,
|
115
|
+
jobId,
|
116
|
+
];
|
117
|
+
return client.extendLock(args);
|
118
|
+
}
|
119
|
+
static async updateProgress(queue, job, progress) {
|
120
|
+
const client = await queue.client;
|
121
|
+
const keys = [queue.toKey(job.id), queue.keys.events];
|
122
|
+
const progressJson = JSON.stringify(progress);
|
123
|
+
await client.updateProgress(keys, [job.id, progressJson]);
|
124
|
+
queue.emit('progress', job, progress);
|
125
|
+
}
|
126
|
+
static moveToFinishedArgs(queue, job, val, propVal, shouldRemove, target, token, fetchNext = true) {
|
127
|
+
var _a, _b, _c, _d;
|
128
|
+
const queueKeys = queue.keys;
|
129
|
+
const opts = queue.opts;
|
130
|
+
const keys = [
|
131
|
+
queueKeys.active,
|
132
|
+
queueKeys[target],
|
133
|
+
queue.toKey(job.id),
|
134
|
+
queueKeys.wait,
|
135
|
+
queueKeys.priority,
|
136
|
+
queueKeys.events,
|
137
|
+
queueKeys.meta,
|
138
|
+
queueKeys.stalled,
|
139
|
+
];
|
140
|
+
let remove;
|
141
|
+
if (typeof shouldRemove === 'boolean') {
|
142
|
+
remove = shouldRemove ? '1' : '0';
|
143
|
+
}
|
144
|
+
else if (typeof shouldRemove === 'number') {
|
145
|
+
remove = `${shouldRemove + 1}`;
|
146
|
+
}
|
147
|
+
const args = [
|
148
|
+
job.id,
|
149
|
+
Date.now(),
|
150
|
+
propVal,
|
151
|
+
typeof val === 'undefined' ? 'null' : val,
|
152
|
+
target,
|
153
|
+
remove,
|
154
|
+
JSON.stringify({ jobId: job.id, val: val }),
|
155
|
+
!fetchNext || queue.closing || opts.limiter ? 0 : 1,
|
156
|
+
queueKeys[''],
|
157
|
+
token,
|
158
|
+
opts.lockDuration,
|
159
|
+
(_b = (_a = job.opts) === null || _a === void 0 ? void 0 : _a.parent) === null || _b === void 0 ? void 0 : _b.id,
|
160
|
+
(_d = (_c = job.opts) === null || _c === void 0 ? void 0 : _c.parent) === null || _d === void 0 ? void 0 : _d.queue,
|
161
|
+
job.parentKey,
|
162
|
+
];
|
163
|
+
return keys.concat(args);
|
164
|
+
}
|
165
|
+
static async moveToFinished(queue, job, val, propVal, shouldRemove, target, token, fetchNext) {
|
166
|
+
const client = await queue.client;
|
167
|
+
const args = this.moveToFinishedArgs(queue, job, val, propVal, shouldRemove, target, token, fetchNext);
|
168
|
+
const result = await client.moveToFinished(args);
|
169
|
+
if (result < 0) {
|
170
|
+
throw this.finishedErrors(result, job.id, 'finished', 'active');
|
171
|
+
}
|
172
|
+
else if (result) {
|
173
|
+
return raw2jobData(result);
|
174
|
+
}
|
175
|
+
}
|
176
|
+
static finishedErrors(code, jobId, command, state) {
|
177
|
+
switch (code) {
|
178
|
+
case ErrorCodes.JobNotExist:
|
179
|
+
return new Error(`Missing key for job ${jobId}. ${command}`);
|
180
|
+
case ErrorCodes.JobLockNotExist:
|
181
|
+
return new Error(`Missing lock for job ${jobId}. ${command}`);
|
182
|
+
case ErrorCodes.JobNotInState:
|
183
|
+
return new Error(`Job ${jobId} is not in the ${state} state. ${command}`);
|
184
|
+
case ErrorCodes.JobPendingDependencies:
|
185
|
+
return new Error(`Job ${jobId} has pending dependencies. ${command}`);
|
186
|
+
case ErrorCodes.ParentJobNotExist:
|
187
|
+
return new Error(`Missing key for parent job ${jobId}. ${command}`);
|
188
|
+
}
|
189
|
+
}
|
190
|
+
static drainArgs(queue, delayed) {
|
191
|
+
const queueKeys = queue.keys;
|
192
|
+
const keys = [
|
193
|
+
queueKeys.wait,
|
194
|
+
queueKeys.paused,
|
195
|
+
delayed ? queueKeys.delayed : '',
|
196
|
+
queueKeys.priority,
|
197
|
+
];
|
198
|
+
const args = [queueKeys['']];
|
199
|
+
return keys.concat(args);
|
200
|
+
}
|
201
|
+
static async drain(queue, delayed) {
|
202
|
+
const client = await queue.client;
|
203
|
+
const args = this.drainArgs(queue, delayed);
|
204
|
+
return client.drain(args);
|
205
|
+
}
|
206
|
+
static moveToCompleted(queue, job, returnvalue, removeOnComplete, token, fetchNext) {
|
207
|
+
return this.moveToFinished(queue, job, returnvalue, 'returnvalue', removeOnComplete, 'completed', token, fetchNext);
|
208
|
+
}
|
209
|
+
static moveToFailedArgs(queue, job, failedReason, removeOnFailed, token, fetchNext = false) {
|
210
|
+
return this.moveToFinishedArgs(queue, job, failedReason, 'failedReason', removeOnFailed, 'failed', token, fetchNext);
|
211
|
+
}
|
212
|
+
static async isFinished(queue, jobId, returnValue = false) {
|
213
|
+
const client = await queue.client;
|
214
|
+
const keys = ['completed', 'failed', jobId].map(function (key) {
|
215
|
+
return queue.toKey(key);
|
216
|
+
});
|
217
|
+
return client.isFinished(keys.concat([jobId, returnValue ? '1' : '']));
|
218
|
+
}
|
219
|
+
static async getState(queue, jobId) {
|
220
|
+
const client = await queue.client;
|
221
|
+
const keys = [
|
222
|
+
'completed',
|
223
|
+
'failed',
|
224
|
+
'delayed',
|
225
|
+
'active',
|
226
|
+
'wait',
|
227
|
+
'paused',
|
228
|
+
'waiting-children',
|
229
|
+
].map(function (key) {
|
230
|
+
return queue.toKey(key);
|
231
|
+
});
|
232
|
+
if (semver.lt(queue.redisVersion, '6.0.6')) {
|
233
|
+
return client.getState(keys.concat([jobId]));
|
234
|
+
}
|
235
|
+
return client.getStateV2(keys.concat([jobId]));
|
236
|
+
}
|
237
|
+
static async changeDelay(queue, jobId, delay) {
|
238
|
+
const client = await queue.client;
|
239
|
+
const delayTimestamp = Date.now() + delay;
|
240
|
+
const args = this.changeDelayArgs(queue, jobId, delayTimestamp);
|
241
|
+
const result = await client.changeDelay(args);
|
242
|
+
if (result < 0) {
|
243
|
+
throw this.finishedErrors(result, jobId, 'changeDelay', 'delayed');
|
244
|
+
}
|
245
|
+
}
|
246
|
+
static changeDelayArgs(queue, jobId, timestamp) {
|
247
|
+
//
|
248
|
+
// Bake in the job id first 12 bits into the timestamp
|
249
|
+
// to guarantee correct execution order of delayed jobs
|
250
|
+
// (up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
|
251
|
+
//
|
252
|
+
// WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
|
253
|
+
//
|
254
|
+
timestamp = Math.max(0, timestamp);
|
255
|
+
if (timestamp > 0) {
|
256
|
+
timestamp = timestamp * 0x1000 + (+jobId & 0xfff);
|
257
|
+
}
|
258
|
+
const keys = ['delayed', jobId].map(function (name) {
|
259
|
+
return queue.toKey(name);
|
260
|
+
});
|
261
|
+
keys.push.apply(keys, [queue.keys.events, queue.keys.delay]);
|
262
|
+
return keys.concat([JSON.stringify(timestamp), jobId]);
|
263
|
+
}
|
264
|
+
// Note: We have an issue here with jobs using custom job ids
|
265
|
+
static moveToDelayedArgs(queue, jobId, timestamp) {
|
266
|
+
//
|
267
|
+
// Bake in the job id first 12 bits into the timestamp
|
268
|
+
// to guarantee correct execution order of delayed jobs
|
269
|
+
// (up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
|
270
|
+
//
|
271
|
+
// WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
|
272
|
+
//
|
273
|
+
timestamp = Math.max(0, timestamp !== null && timestamp !== void 0 ? timestamp : 0);
|
274
|
+
if (timestamp > 0) {
|
275
|
+
timestamp = timestamp * 0x1000 + (+jobId & 0xfff);
|
276
|
+
}
|
277
|
+
const keys = ['active', 'delayed', jobId].map(function (name) {
|
278
|
+
return queue.toKey(name);
|
279
|
+
});
|
280
|
+
keys.push.apply(keys, [queue.keys.events, queue.keys.delay]);
|
281
|
+
return keys.concat([JSON.stringify(timestamp), jobId]);
|
282
|
+
}
|
283
|
+
static moveToWaitingChildrenArgs(queue, jobId, token, opts) {
|
284
|
+
var _a;
|
285
|
+
let timestamp = Math.max(0, (_a = opts.timestamp) !== null && _a !== void 0 ? _a : 0);
|
286
|
+
const childKey = getParentKey(opts.child);
|
287
|
+
if (timestamp > 0) {
|
288
|
+
timestamp = timestamp * 0x1000 + (+jobId & 0xfff);
|
289
|
+
}
|
290
|
+
const keys = [`${jobId}:lock`, 'active', 'waiting-children', jobId].map(function (name) {
|
291
|
+
return queue.toKey(name);
|
292
|
+
});
|
293
|
+
return keys.concat([
|
294
|
+
token,
|
295
|
+
childKey !== null && childKey !== void 0 ? childKey : '',
|
296
|
+
JSON.stringify(timestamp),
|
297
|
+
jobId,
|
298
|
+
]);
|
299
|
+
}
|
300
|
+
static async moveToDelayed(queue, jobId, timestamp) {
|
301
|
+
const client = await queue.client;
|
302
|
+
const args = this.moveToDelayedArgs(queue, jobId, timestamp);
|
303
|
+
const result = await client.moveToDelayed(args);
|
304
|
+
if (result < 0) {
|
305
|
+
throw this.finishedErrors(result, jobId, 'moveToDelayed', 'active');
|
306
|
+
}
|
307
|
+
}
|
308
|
+
/**
|
309
|
+
* Move parent job to waiting-children state.
|
310
|
+
*
|
311
|
+
* @returns true if job is successfully moved, false if there are pending dependencies.
|
312
|
+
* @throws JobNotExist
|
313
|
+
* This exception is thrown if jobId is missing.
|
314
|
+
* @throws JobLockNotExist
|
315
|
+
* This exception is thrown if job lock is missing.
|
316
|
+
* @throws JobNotInState
|
317
|
+
* This exception is thrown if job is not in active state.
|
318
|
+
*/
|
319
|
+
static async moveToWaitingChildren(queue, jobId, token, opts = {}) {
|
320
|
+
const client = await queue.client;
|
321
|
+
const multi = client.multi();
|
322
|
+
const args = this.moveToWaitingChildrenArgs(queue, jobId, token, opts);
|
323
|
+
multi.moveToWaitingChildren(args);
|
324
|
+
const [[err, result]] = (await multi.exec());
|
325
|
+
switch (result) {
|
326
|
+
case 0:
|
327
|
+
return true;
|
328
|
+
case 1:
|
329
|
+
return false;
|
330
|
+
default:
|
331
|
+
throw this.finishedErrors(result, jobId, 'moveToWaitingChildren', 'active');
|
332
|
+
}
|
333
|
+
}
|
334
|
+
/**
|
335
|
+
* Remove jobs in a specific state.
|
336
|
+
*
|
337
|
+
* @returns Id jobs from the deleted records.
|
338
|
+
*/
|
339
|
+
static async cleanJobsInSet(queue, set, timestamp, limit = 0) {
|
340
|
+
const client = await queue.client;
|
341
|
+
return client.cleanJobsInSet([
|
342
|
+
queue.toKey(set),
|
343
|
+
queue.toKey('events'),
|
344
|
+
queue.toKey(''),
|
345
|
+
timestamp,
|
346
|
+
limit,
|
347
|
+
set,
|
348
|
+
]);
|
349
|
+
}
|
350
|
+
static retryJobArgs(queue, job) {
|
351
|
+
const jobId = job.id;
|
352
|
+
const keys = ['active', 'wait', jobId].map(function (name) {
|
353
|
+
return queue.toKey(name);
|
354
|
+
});
|
355
|
+
keys.push(queue.keys.events);
|
356
|
+
const pushCmd = (job.opts.lifo ? 'R' : 'L') + 'PUSH';
|
357
|
+
return keys.concat([pushCmd, jobId]);
|
358
|
+
}
|
359
|
+
/**
|
360
|
+
* Attempts to reprocess a job
|
361
|
+
*
|
362
|
+
* @param job -
|
363
|
+
* @param {Object} options
|
364
|
+
* @param {String} options.state The expected job state. If the job is not found
|
365
|
+
* on the provided state, then it's not reprocessed. Supported states: 'failed', 'completed'
|
366
|
+
*
|
367
|
+
* @returns Returns a promise that evaluates to a return code:
|
368
|
+
* 1 means the operation was a success
|
369
|
+
* 0 means the job does not exist
|
370
|
+
* -1 means the job is currently locked and can't be retried.
|
371
|
+
* -2 means the job was not found in the expected set
|
372
|
+
*/
|
373
|
+
static async reprocessJob(queue, job, state) {
|
374
|
+
const client = await queue.client;
|
375
|
+
const keys = [
|
376
|
+
queue.toKey(job.id),
|
377
|
+
queue.keys.events,
|
378
|
+
queue.toKey(state),
|
379
|
+
queue.toKey('wait'),
|
380
|
+
];
|
381
|
+
const args = [job.id, (job.opts.lifo ? 'R' : 'L') + 'PUSH'];
|
382
|
+
const result = await client.reprocessJob(keys.concat(args));
|
383
|
+
switch (result) {
|
384
|
+
case 1:
|
385
|
+
return;
|
386
|
+
default:
|
387
|
+
throw this.finishedErrors(result, job.id, 'reprocessJob', 'failed');
|
388
|
+
}
|
389
|
+
}
|
390
|
+
static async moveToActive(worker, token, jobId) {
|
391
|
+
const client = await worker.client;
|
392
|
+
const opts = worker.opts;
|
393
|
+
const queueKeys = worker.keys;
|
394
|
+
const keys = [
|
395
|
+
queueKeys.wait,
|
396
|
+
queueKeys.active,
|
397
|
+
queueKeys.priority,
|
398
|
+
queueKeys.events,
|
399
|
+
queueKeys.stalled,
|
400
|
+
queueKeys.limiter,
|
401
|
+
queueKeys.delayed,
|
402
|
+
queueKeys.delay,
|
403
|
+
];
|
404
|
+
const args = [
|
405
|
+
queueKeys[''],
|
406
|
+
token,
|
407
|
+
opts.lockDuration,
|
408
|
+
Date.now(),
|
409
|
+
jobId,
|
410
|
+
];
|
411
|
+
if (opts.limiter) {
|
412
|
+
args.push(opts.limiter.max, opts.limiter.duration);
|
413
|
+
opts.limiter.groupKey && args.push(true);
|
414
|
+
}
|
415
|
+
const result = await client.moveToActive(keys.concat(args));
|
416
|
+
if (typeof result === 'number') {
|
417
|
+
return [result, void 0];
|
418
|
+
}
|
419
|
+
return raw2jobData(result);
|
420
|
+
}
|
421
|
+
//
|
422
|
+
// It checks if the job in the top of the delay set should be moved back to the
|
423
|
+
// top of the wait queue (so that it will be processed as soon as possible)
|
424
|
+
//
|
425
|
+
static async updateDelaySet(queue, delayedTimestamp) {
|
426
|
+
const client = await queue.client;
|
427
|
+
const keys = [
|
428
|
+
queue.keys.delayed,
|
429
|
+
queue.keys.wait,
|
430
|
+
queue.keys.priority,
|
431
|
+
queue.keys.paused,
|
432
|
+
queue.keys.meta,
|
433
|
+
queue.keys.events,
|
434
|
+
queue.keys.delay,
|
435
|
+
];
|
436
|
+
const args = [queue.toKey(''), delayedTimestamp];
|
437
|
+
return client.updateDelaySet(keys.concat(args));
|
438
|
+
}
|
439
|
+
static async promote(queue, jobId) {
|
440
|
+
const client = await queue.client;
|
441
|
+
const keys = [
|
442
|
+
queue.keys.delayed,
|
443
|
+
queue.keys.wait,
|
444
|
+
queue.keys.paused,
|
445
|
+
queue.keys.priority,
|
446
|
+
queue.keys.events,
|
447
|
+
];
|
448
|
+
const args = [queue.toKey(''), jobId];
|
449
|
+
return client.promote(keys.concat(args));
|
450
|
+
}
|
451
|
+
//
|
452
|
+
// Looks for unlocked jobs in the active queue.
|
453
|
+
//
|
454
|
+
// The job was being worked on, but the worker process died and it failed to renew the lock.
|
455
|
+
// We call these jobs 'stalled'. This is the most common case. We resolve these by moving them
|
456
|
+
// back to wait to be re-processed. To prevent jobs from cycling endlessly between active and wait,
|
457
|
+
// (e.g. if the job handler keeps crashing),
|
458
|
+
// we limit the number stalled job recoveries to settings.maxStalledCount.
|
459
|
+
//
|
460
|
+
static async moveStalledJobsToWait(queue) {
|
461
|
+
const client = await queue.client;
|
462
|
+
const opts = queue.opts;
|
463
|
+
const keys = [
|
464
|
+
queue.keys.stalled,
|
465
|
+
queue.keys.wait,
|
466
|
+
queue.keys.active,
|
467
|
+
queue.keys.failed,
|
468
|
+
queue.keys['stalled-check'],
|
469
|
+
queue.keys.meta,
|
470
|
+
queue.keys.paused,
|
471
|
+
queue.keys.events,
|
472
|
+
];
|
473
|
+
const args = [
|
474
|
+
opts.maxStalledCount,
|
475
|
+
queue.toKey(''),
|
476
|
+
Date.now(),
|
477
|
+
opts.stalledInterval,
|
478
|
+
];
|
479
|
+
return client.moveStalledJobsToWait(keys.concat(args));
|
480
|
+
}
|
481
|
+
static async obliterate(queue, opts) {
|
482
|
+
const client = await queue.client;
|
483
|
+
const keys = [queue.keys.meta, queue.toKey('')];
|
484
|
+
const args = [opts.count, opts.force ? 'force' : null];
|
485
|
+
const result = await client.obliterate(keys.concat(args));
|
486
|
+
if (result < 0) {
|
487
|
+
switch (result) {
|
488
|
+
case -1:
|
489
|
+
throw new Error('Cannot obliterate non-paused queue');
|
490
|
+
case -2:
|
491
|
+
throw new Error('Cannot obliterate queue with active jobs');
|
492
|
+
}
|
493
|
+
}
|
494
|
+
return result;
|
495
|
+
}
|
496
|
+
}
|
497
|
+
export function raw2jobData(raw) {
|
498
|
+
if (typeof raw === 'number') {
|
499
|
+
return [raw, void 0];
|
500
|
+
}
|
501
|
+
if (raw) {
|
502
|
+
const jobData = raw[0];
|
503
|
+
if (jobData.length) {
|
504
|
+
const job = array2obj(jobData);
|
505
|
+
return [job, raw[1]];
|
506
|
+
}
|
507
|
+
}
|
508
|
+
return [];
|
509
|
+
}
|
510
|
+
//# sourceMappingURL=scripts.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../../src/classes/scripts.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
/**
|
2
|
+
* Keeps track on timers created with setTimeout to help clearTimeout
|
3
|
+
* for all timers when no more delayed actions needed
|
4
|
+
*/
|
5
|
+
export declare class TimerManager {
|
6
|
+
private readonly timers;
|
7
|
+
/**
|
8
|
+
* Creates a new timer and returns its ID.
|
9
|
+
*
|
10
|
+
* @param name Readable name for the timer
|
11
|
+
* @param delay Delay in milliseconds
|
12
|
+
* @param fn callback function that is executed after the timer expires
|
13
|
+
*/
|
14
|
+
setTimer(name: string, delay: number, fn: Function): string;
|
15
|
+
clearTimer(id: string): void;
|
16
|
+
clearAllTimers(): void;
|
17
|
+
}
|