bullmq 1.57.3 → 1.59.1
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 +2 -2
- 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 +7 -5
- package/dist/cjs/classes/redis-connection.js.map +1 -0
- package/dist/{classes → cjs/classes}/repeat.d.ts +2 -2
- package/dist/{classes → cjs/classes}/repeat.js +3 -6
- 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 +2 -0
- package/dist/{classes → cjs/classes}/scripts.js +18 -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 +33 -18
- package/dist/{classes → cjs/classes}/worker.js +27 -5
- 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/cjs/interfaces/redis-options.d.ts +5 -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 +469 -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 +14 -12
- 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.d.ts +0 -5
- 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,44 @@
|
|
1
|
+
export class Backoffs {
|
2
|
+
static normalize(backoff) {
|
3
|
+
if (Number.isFinite(backoff)) {
|
4
|
+
return {
|
5
|
+
type: 'fixed',
|
6
|
+
delay: backoff,
|
7
|
+
};
|
8
|
+
}
|
9
|
+
else if (backoff) {
|
10
|
+
return backoff;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
static calculate(backoff, attemptsMade, customStrategies, err, job) {
|
14
|
+
if (backoff) {
|
15
|
+
const strategy = lookupStrategy(backoff, customStrategies);
|
16
|
+
return strategy(attemptsMade, err, job);
|
17
|
+
}
|
18
|
+
}
|
19
|
+
}
|
20
|
+
Backoffs.builtinStrategies = {
|
21
|
+
fixed: function (delay) {
|
22
|
+
return function () {
|
23
|
+
return delay;
|
24
|
+
};
|
25
|
+
},
|
26
|
+
exponential: function (delay) {
|
27
|
+
return function (attemptsMade) {
|
28
|
+
return Math.round((Math.pow(2, attemptsMade) - 1) * delay);
|
29
|
+
};
|
30
|
+
},
|
31
|
+
};
|
32
|
+
function lookupStrategy(backoff, customStrategies) {
|
33
|
+
if (backoff.type in (customStrategies || {})) {
|
34
|
+
return customStrategies[backoff.type];
|
35
|
+
}
|
36
|
+
else if (backoff.type in Backoffs.builtinStrategies) {
|
37
|
+
return Backoffs.builtinStrategies[backoff.type](backoff.delay);
|
38
|
+
}
|
39
|
+
else {
|
40
|
+
throw new Error(`Unknown backoff strategy ${backoff.type}.
|
41
|
+
If a custom backoff strategy is used, specify it when the queue is created.`);
|
42
|
+
}
|
43
|
+
}
|
44
|
+
//# sourceMappingURL=backoffs.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"backoffs.js","sourceRoot":"","sources":["../../../src/classes/backoffs.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAO,QAAQ;IAenB,MAAM,CAAC,SAAS,CAAC,OAAgC;QAC/C,IAAI,MAAM,CAAC,QAAQ,CAAS,OAAO,CAAC,EAAE;YACpC,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,KAAK,EAAU,OAAO;aACvB,CAAC;SACH;aAAM,IAAI,OAAO,EAAE;YAClB,OAAuB,OAAO,CAAC;SAChC;IACH,CAAC;IAED,MAAM,CAAC,SAAS,CACd,OAAuB,EACvB,YAAoB,EACpB,gBAA4B,EAC5B,GAAU,EACV,GAAQ;QAER,IAAI,OAAO,EAAE;YACX,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;YAE3D,OAAO,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;SACzC;IACH,CAAC;;AArCM,0BAAiB,GAAsB;IAC5C,KAAK,EAAE,UAAU,KAAa;QAC5B,OAAO;YACL,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC;IAED,WAAW,EAAE,UAAU,KAAa;QAClC,OAAO,UAAU,YAAoB;YACnC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;QAC7D,CAAC,CAAC;IACJ,CAAC;CACF,CAAC;AA4BJ,SAAS,cAAc,CACrB,OAAuB,EACvB,gBAA4B;IAE5B,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC,EAAE;QAC5C,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACvC;SAAM,IAAI,OAAO,CAAC,IAAI,IAAI,QAAQ,CAAC,iBAAiB,EAAE;QACrD,OAAO,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KAChE;SAAM;QACL,MAAM,IAAI,KAAK,CACb,4BAA4B,OAAO,CAAC,IAAI;kFACoC,CAC7E,CAAC;KACH;AACH,CAAC"}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
/// <reference types="node" />
|
2
|
+
import { ChildProcess } from 'child_process';
|
3
|
+
export interface ChildProcessExt extends ChildProcess {
|
4
|
+
processFile?: string;
|
5
|
+
}
|
6
|
+
export declare class ChildPool {
|
7
|
+
private masterFile;
|
8
|
+
retained: {
|
9
|
+
[key: number]: ChildProcessExt;
|
10
|
+
};
|
11
|
+
free: {
|
12
|
+
[key: string]: ChildProcessExt[];
|
13
|
+
};
|
14
|
+
constructor(masterFile?: string);
|
15
|
+
retain(processFile: string): Promise<ChildProcessExt>;
|
16
|
+
release(child: ChildProcessExt): void;
|
17
|
+
remove(child: ChildProcessExt): void;
|
18
|
+
kill(child: ChildProcess, signal?: 'SIGTERM' | 'SIGKILL'): Promise<void>;
|
19
|
+
clean(): Promise<void>;
|
20
|
+
getFree(id: string): ChildProcessExt[];
|
21
|
+
getAllFree(): ChildProcessExt[];
|
22
|
+
}
|
@@ -0,0 +1,125 @@
|
|
1
|
+
import { fork } from 'child_process';
|
2
|
+
import * as path from 'path';
|
3
|
+
import { flatten } from 'lodash';
|
4
|
+
import * as getPort from 'get-port';
|
5
|
+
import { killAsync } from './process-utils';
|
6
|
+
import { ParentCommand, ChildCommand } from '../interfaces';
|
7
|
+
import { parentSend } from '../utils';
|
8
|
+
const CHILD_KILL_TIMEOUT = 30000;
|
9
|
+
const convertExecArgv = async (execArgv) => {
|
10
|
+
const standard = [];
|
11
|
+
const convertedArgs = [];
|
12
|
+
for (let i = 0; i < execArgv.length; i++) {
|
13
|
+
const arg = execArgv[i];
|
14
|
+
if (arg.indexOf('--inspect') === -1) {
|
15
|
+
standard.push(arg);
|
16
|
+
}
|
17
|
+
else {
|
18
|
+
const argName = arg.split('=')[0];
|
19
|
+
const port = await getPort();
|
20
|
+
convertedArgs.push(`${argName}=${port}`);
|
21
|
+
}
|
22
|
+
}
|
23
|
+
return standard.concat(convertedArgs);
|
24
|
+
};
|
25
|
+
/**
|
26
|
+
* @see https://nodejs.org/api/process.html#process_exit_codes
|
27
|
+
*/
|
28
|
+
const exitCodesErrors = {
|
29
|
+
1: 'Uncaught Fatal Exception',
|
30
|
+
2: 'Unused',
|
31
|
+
3: 'Internal JavaScript Parse Error',
|
32
|
+
4: 'Internal JavaScript Evaluation Failure',
|
33
|
+
5: 'Fatal Error',
|
34
|
+
6: 'Non-function Internal Exception Handler',
|
35
|
+
7: 'Internal Exception Handler Run-Time Failure',
|
36
|
+
8: 'Unused',
|
37
|
+
9: 'Invalid Argument',
|
38
|
+
10: 'Internal JavaScript Run-Time Failure',
|
39
|
+
12: 'Invalid Debug Argument',
|
40
|
+
13: 'Unfinished Top-Level Await',
|
41
|
+
};
|
42
|
+
async function initChild(child, processFile) {
|
43
|
+
const onComplete = new Promise((resolve, reject) => {
|
44
|
+
const onMessageHandler = (msg) => {
|
45
|
+
if (msg.cmd === ParentCommand.InitCompleted) {
|
46
|
+
resolve();
|
47
|
+
}
|
48
|
+
else if (msg.cmd === ParentCommand.InitFailed) {
|
49
|
+
const err = new Error();
|
50
|
+
err.stack = msg.err.stack;
|
51
|
+
err.message = msg.err.message;
|
52
|
+
reject(err);
|
53
|
+
}
|
54
|
+
child.off('message', onMessageHandler);
|
55
|
+
child.off('close', onCloseHandler);
|
56
|
+
};
|
57
|
+
const onCloseHandler = (code, signal) => {
|
58
|
+
if (code > 128) {
|
59
|
+
code -= 128;
|
60
|
+
}
|
61
|
+
const msg = exitCodesErrors[code] || `Unknown exit code ${code}`;
|
62
|
+
reject(new Error(`Error initializing child: ${msg} and signal ${signal}`));
|
63
|
+
child.off('message', onMessageHandler);
|
64
|
+
child.off('close', onCloseHandler);
|
65
|
+
};
|
66
|
+
child.on('message', onMessageHandler);
|
67
|
+
// TODO: we need to clean this listener too.
|
68
|
+
child.on('close', onCloseHandler);
|
69
|
+
});
|
70
|
+
await parentSend(child, { cmd: ChildCommand.Init, value: processFile });
|
71
|
+
await onComplete;
|
72
|
+
}
|
73
|
+
export class ChildPool {
|
74
|
+
constructor(masterFile = path.join(process.cwd(), 'dist/cjs/classes/master.js')) {
|
75
|
+
this.masterFile = masterFile;
|
76
|
+
this.retained = {};
|
77
|
+
this.free = {};
|
78
|
+
}
|
79
|
+
async retain(processFile) {
|
80
|
+
const _this = this;
|
81
|
+
let child = _this.getFree(processFile).pop();
|
82
|
+
if (child) {
|
83
|
+
_this.retained[child.pid] = child;
|
84
|
+
return child;
|
85
|
+
}
|
86
|
+
const execArgv = await convertExecArgv(process.execArgv);
|
87
|
+
child = fork(this.masterFile, [], { execArgv, stdio: 'pipe' });
|
88
|
+
child.processFile = processFile;
|
89
|
+
_this.retained[child.pid] = child;
|
90
|
+
child.on('exit', _this.remove.bind(_this, child));
|
91
|
+
child.stdout.pipe(process.stdout);
|
92
|
+
child.stderr.pipe(process.stderr);
|
93
|
+
await initChild(child, child.processFile);
|
94
|
+
return child;
|
95
|
+
}
|
96
|
+
release(child) {
|
97
|
+
delete this.retained[child.pid];
|
98
|
+
this.getFree(child.processFile).push(child);
|
99
|
+
}
|
100
|
+
remove(child) {
|
101
|
+
delete this.retained[child.pid];
|
102
|
+
const free = this.getFree(child.processFile);
|
103
|
+
const childIndex = free.indexOf(child);
|
104
|
+
if (childIndex > -1) {
|
105
|
+
free.splice(childIndex, 1);
|
106
|
+
}
|
107
|
+
}
|
108
|
+
async kill(child, signal = 'SIGKILL') {
|
109
|
+
this.remove(child);
|
110
|
+
await killAsync(child, signal, CHILD_KILL_TIMEOUT);
|
111
|
+
}
|
112
|
+
async clean() {
|
113
|
+
const children = Object.values(this.retained).concat(this.getAllFree());
|
114
|
+
this.retained = {};
|
115
|
+
this.free = {};
|
116
|
+
await Promise.all(children.map(c => this.kill(c, 'SIGTERM')));
|
117
|
+
}
|
118
|
+
getFree(id) {
|
119
|
+
return (this.free[id] = this.free[id] || []);
|
120
|
+
}
|
121
|
+
getAllFree() {
|
122
|
+
return flatten(Object.values(this.free));
|
123
|
+
}
|
124
|
+
}
|
125
|
+
//# sourceMappingURL=child-pool.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"child-pool.js","sourceRoot":"","sources":["../../../src/classes/child-pool.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
import { JobJson } from './job';
|
2
|
+
declare enum ChildStatus {
|
3
|
+
Idle = 0,
|
4
|
+
Started = 1,
|
5
|
+
Terminating = 2,
|
6
|
+
Errored = 3
|
7
|
+
}
|
8
|
+
/**
|
9
|
+
* ChildProcessor
|
10
|
+
*
|
11
|
+
* This class acts as the interface between a child process and it parent process
|
12
|
+
* so that jobs can be processed in different processes than the parent.
|
13
|
+
*
|
14
|
+
*/
|
15
|
+
export declare class ChildProcessor {
|
16
|
+
status: ChildStatus;
|
17
|
+
processor: any;
|
18
|
+
currentJobPromise: Promise<unknown> | undefined;
|
19
|
+
init(processorFile: string): Promise<void>;
|
20
|
+
start(jobJson: JobJson): Promise<void>;
|
21
|
+
stop(): Promise<void>;
|
22
|
+
waitForCurrentJobAndExit(): Promise<void>;
|
23
|
+
}
|
24
|
+
export {};
|
@@ -0,0 +1,165 @@
|
|
1
|
+
import { promisify } from 'util';
|
2
|
+
import { ParentCommand } from '../interfaces';
|
3
|
+
import { childSend } from '../utils';
|
4
|
+
var ChildStatus;
|
5
|
+
(function (ChildStatus) {
|
6
|
+
ChildStatus[ChildStatus["Idle"] = 0] = "Idle";
|
7
|
+
ChildStatus[ChildStatus["Started"] = 1] = "Started";
|
8
|
+
ChildStatus[ChildStatus["Terminating"] = 2] = "Terminating";
|
9
|
+
ChildStatus[ChildStatus["Errored"] = 3] = "Errored";
|
10
|
+
})(ChildStatus || (ChildStatus = {}));
|
11
|
+
/**
|
12
|
+
* ChildProcessor
|
13
|
+
*
|
14
|
+
* This class acts as the interface between a child process and it parent process
|
15
|
+
* so that jobs can be processed in different processes than the parent.
|
16
|
+
*
|
17
|
+
*/
|
18
|
+
export class ChildProcessor {
|
19
|
+
async init(processorFile) {
|
20
|
+
let processor;
|
21
|
+
try {
|
22
|
+
processor = require(processorFile);
|
23
|
+
}
|
24
|
+
catch (err) {
|
25
|
+
this.status = ChildStatus.Errored;
|
26
|
+
return childSend(process, {
|
27
|
+
cmd: ParentCommand.InitFailed,
|
28
|
+
err: err,
|
29
|
+
});
|
30
|
+
}
|
31
|
+
if (processor.default) {
|
32
|
+
// support es2015 module.
|
33
|
+
processor = processor.default;
|
34
|
+
}
|
35
|
+
if (processor.length > 1) {
|
36
|
+
processor = promisify(processor);
|
37
|
+
}
|
38
|
+
else {
|
39
|
+
const origProcessor = processor;
|
40
|
+
processor = function (...args) {
|
41
|
+
try {
|
42
|
+
return Promise.resolve(origProcessor(...args));
|
43
|
+
}
|
44
|
+
catch (err) {
|
45
|
+
return Promise.reject(err);
|
46
|
+
}
|
47
|
+
};
|
48
|
+
}
|
49
|
+
this.processor = processor;
|
50
|
+
this.status = ChildStatus.Idle;
|
51
|
+
await childSend(process, {
|
52
|
+
cmd: ParentCommand.InitCompleted,
|
53
|
+
});
|
54
|
+
}
|
55
|
+
async start(jobJson) {
|
56
|
+
if (this.status !== ChildStatus.Idle) {
|
57
|
+
return childSend(process, {
|
58
|
+
cmd: ParentCommand.Error,
|
59
|
+
err: new Error('cannot start a not idling child process'),
|
60
|
+
});
|
61
|
+
}
|
62
|
+
this.status = ChildStatus.Started;
|
63
|
+
this.currentJobPromise = (async () => {
|
64
|
+
try {
|
65
|
+
const job = wrapJob(jobJson);
|
66
|
+
const result = (await this.processor(job)) || {};
|
67
|
+
await childSend(process, {
|
68
|
+
cmd: ParentCommand.Completed,
|
69
|
+
value: result,
|
70
|
+
});
|
71
|
+
}
|
72
|
+
catch (err) {
|
73
|
+
await childSend(process, {
|
74
|
+
cmd: ParentCommand.Failed,
|
75
|
+
value: !err.message ? new Error(err) : err,
|
76
|
+
});
|
77
|
+
}
|
78
|
+
finally {
|
79
|
+
this.status = ChildStatus.Idle;
|
80
|
+
this.currentJobPromise = undefined;
|
81
|
+
}
|
82
|
+
})();
|
83
|
+
}
|
84
|
+
async stop() { }
|
85
|
+
async waitForCurrentJobAndExit() {
|
86
|
+
this.status = ChildStatus.Terminating;
|
87
|
+
try {
|
88
|
+
await this.currentJobPromise;
|
89
|
+
}
|
90
|
+
finally {
|
91
|
+
process.exit(process.exitCode || 0);
|
92
|
+
}
|
93
|
+
}
|
94
|
+
}
|
95
|
+
// https://stackoverflow.com/questions/18391212/is-it-not-possible-to-stringify-an-error-using-json-stringify
|
96
|
+
if (!('toJSON' in Error.prototype)) {
|
97
|
+
Object.defineProperty(Error.prototype, 'toJSON', {
|
98
|
+
value: function () {
|
99
|
+
const alt = {};
|
100
|
+
const _this = this;
|
101
|
+
Object.getOwnPropertyNames(_this).forEach(function (key) {
|
102
|
+
alt[key] = _this[key];
|
103
|
+
}, this);
|
104
|
+
return alt;
|
105
|
+
},
|
106
|
+
configurable: true,
|
107
|
+
writable: true,
|
108
|
+
});
|
109
|
+
}
|
110
|
+
/**
|
111
|
+
* Enhance the given job argument with some functions
|
112
|
+
* that can be called from the sandboxed job processor.
|
113
|
+
*
|
114
|
+
* Note, the `job` argument is a JSON deserialized message
|
115
|
+
* from the main node process to this forked child process,
|
116
|
+
* the functions on the original job object are not in tact.
|
117
|
+
* The wrapped job adds back some of those original functions.
|
118
|
+
*/
|
119
|
+
function wrapJob(job) {
|
120
|
+
let progressValue = job.progress;
|
121
|
+
const updateProgress = async (progress) => {
|
122
|
+
// Locally store reference to new progress value
|
123
|
+
// so that we can return it from this process synchronously.
|
124
|
+
progressValue = progress;
|
125
|
+
// Send message to update job progress.
|
126
|
+
await childSend(process, {
|
127
|
+
cmd: ParentCommand.Progress,
|
128
|
+
value: progress,
|
129
|
+
});
|
130
|
+
};
|
131
|
+
const progress = (progress) => {
|
132
|
+
console.warn([
|
133
|
+
'BullMQ: DEPRECATION WARNING! progress function in sandboxed processor is deprecated. This will',
|
134
|
+
'be removed in the next major release, you should use updateProgress method instead.',
|
135
|
+
].join(' '));
|
136
|
+
if (progress) {
|
137
|
+
return updateProgress(progress);
|
138
|
+
}
|
139
|
+
else {
|
140
|
+
// Return the last known progress value.
|
141
|
+
return progressValue;
|
142
|
+
}
|
143
|
+
};
|
144
|
+
return Object.assign(Object.assign({}, job), { data: JSON.parse(job.data || '{}'), opts: job.opts, returnValue: JSON.parse(job.returnvalue || '{}'),
|
145
|
+
/*
|
146
|
+
* Emulate the real job `progress` function.
|
147
|
+
* If no argument is given, it behaves as a sync getter.
|
148
|
+
* If an argument is given, it behaves as an async setter.
|
149
|
+
*/
|
150
|
+
progress,
|
151
|
+
/*
|
152
|
+
* Emulate the real job `updateProgress` function, should works as `progress` function.
|
153
|
+
*/
|
154
|
+
updateProgress,
|
155
|
+
/*
|
156
|
+
* Emulate the real job `log` function.
|
157
|
+
*/
|
158
|
+
log: async (row) => {
|
159
|
+
childSend(process, {
|
160
|
+
cmd: ParentCommand.Log,
|
161
|
+
value: row,
|
162
|
+
});
|
163
|
+
} });
|
164
|
+
}
|
165
|
+
//# sourceMappingURL=child-processor.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"child-processor.js","sourceRoot":"","sources":["../../../src/classes/child-processor.ts"],"names":[],"mappings":"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"}
|