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,69 @@
|
|
1
|
+
--[[
|
2
|
+
Retries a failed job by moving it back to the wait queue.
|
3
|
+
|
4
|
+
Input:
|
5
|
+
KEYS[1] 'active',
|
6
|
+
KEYS[2] 'wait'
|
7
|
+
KEYS[3] 'paused'
|
8
|
+
KEYS[4] job key
|
9
|
+
KEYS[5] 'meta'
|
10
|
+
KEYS[6] events stream
|
11
|
+
KEYS[7] delayed key
|
12
|
+
KEYS[8] prioritized key
|
13
|
+
KEYS[9] 'pc' priority counter
|
14
|
+
|
15
|
+
ARGV[1] key prefix
|
16
|
+
ARGV[2] timestamp
|
17
|
+
ARGV[3] pushCmd
|
18
|
+
ARGV[4] jobId
|
19
|
+
ARGV[5] token
|
20
|
+
|
21
|
+
Events:
|
22
|
+
'waiting'
|
23
|
+
|
24
|
+
Output:
|
25
|
+
0 - OK
|
26
|
+
-1 - Missing key
|
27
|
+
-2 - Missing lock
|
28
|
+
]]
|
29
|
+
local rcall = redis.call
|
30
|
+
|
31
|
+
-- Includes
|
32
|
+
--- @include "includes/addJobWithPriority"
|
33
|
+
--- @include "includes/getTargetQueueList"
|
34
|
+
--- @include "includes/promoteDelayedJobs"
|
35
|
+
|
36
|
+
local target, paused = getTargetQueueList(KEYS[5], KEYS[2], KEYS[3])
|
37
|
+
-- Check if there are delayed jobs that we can move to wait.
|
38
|
+
-- test example: when there are delayed jobs between retries
|
39
|
+
promoteDelayedJobs(KEYS[7], KEYS[2], target, KEYS[8], KEYS[6], ARGV[1], ARGV[2], paused, KEYS[9])
|
40
|
+
|
41
|
+
if rcall("EXISTS", KEYS[4]) == 1 then
|
42
|
+
|
43
|
+
if ARGV[5] ~= "0" then
|
44
|
+
local lockKey = KEYS[4] .. ':lock'
|
45
|
+
if rcall("GET", lockKey) == ARGV[5] then
|
46
|
+
rcall("DEL", lockKey)
|
47
|
+
else
|
48
|
+
return -2
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
rcall("LREM", KEYS[1], 0, ARGV[4])
|
53
|
+
|
54
|
+
local priority = tonumber(rcall("HGET", KEYS[4], "priority")) or 0
|
55
|
+
|
56
|
+
-- Standard or priority add
|
57
|
+
if priority == 0 then
|
58
|
+
rcall(ARGV[3], target, ARGV[4])
|
59
|
+
else
|
60
|
+
addJobWithPriority(KEYS[2], KEYS[8], priority, paused, ARGV[4], KEYS[9])
|
61
|
+
end
|
62
|
+
|
63
|
+
-- Emit waiting event
|
64
|
+
rcall("XADD", KEYS[6], "*", "event", "waiting", "jobId", ARGV[4], "prev", "failed")
|
65
|
+
|
66
|
+
return 0
|
67
|
+
else
|
68
|
+
return -1
|
69
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
--[[
|
2
|
+
Attempts to retry all failed jobs
|
3
|
+
|
4
|
+
Input:
|
5
|
+
KEYS[1] base key
|
6
|
+
KEYS[2] events stream
|
7
|
+
KEYS[3] state key (failed, completed)
|
8
|
+
KEYS[4] 'wait'
|
9
|
+
KEYS[5] 'paused'
|
10
|
+
KEYS[6] 'meta'
|
11
|
+
|
12
|
+
ARGV[1] count
|
13
|
+
ARGV[2] timestamp
|
14
|
+
ARGV[3] prev state
|
15
|
+
|
16
|
+
Output:
|
17
|
+
1 means the operation is not completed
|
18
|
+
0 means the operation is completed
|
19
|
+
]]
|
20
|
+
local maxCount = tonumber(ARGV[1])
|
21
|
+
local timestamp = tonumber(ARGV[2])
|
22
|
+
|
23
|
+
local rcall = redis.call;
|
24
|
+
|
25
|
+
-- Includes
|
26
|
+
--- @include "includes/batches"
|
27
|
+
--- @include "includes/getTargetQueueList"
|
28
|
+
|
29
|
+
local target = getTargetQueueList(KEYS[6], KEYS[4], KEYS[5])
|
30
|
+
|
31
|
+
local jobs = rcall('ZRANGEBYSCORE', KEYS[3], 0, timestamp, 'LIMIT', 0, maxCount)
|
32
|
+
if (#jobs > 0) then
|
33
|
+
for i, key in ipairs(jobs) do
|
34
|
+
local jobKey = KEYS[1] .. key
|
35
|
+
rcall("HDEL", jobKey, "finishedOn", "processedOn", "failedReason", "returnvalue")
|
36
|
+
|
37
|
+
-- Emit waiting event
|
38
|
+
rcall("XADD", KEYS[2], "*", "event", "waiting", "jobId", key, "prev", ARGV[3]);
|
39
|
+
end
|
40
|
+
|
41
|
+
for from, to in batches(#jobs, 7000) do
|
42
|
+
rcall("ZREM", KEYS[3], unpack(jobs, from, to))
|
43
|
+
rcall("LPUSH", target, unpack(jobs, from, to))
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
maxCount = maxCount - #jobs
|
48
|
+
|
49
|
+
if(maxCount <= 0) then
|
50
|
+
return 1
|
51
|
+
end
|
52
|
+
|
53
|
+
return 0
|
@@ -0,0 +1,22 @@
|
|
1
|
+
--[[
|
2
|
+
Save stacktrace and failedReason.
|
3
|
+
|
4
|
+
Input:
|
5
|
+
KEYS[1] job key
|
6
|
+
|
7
|
+
ARGV[1] stacktrace
|
8
|
+
ARGV[2] failedReason
|
9
|
+
|
10
|
+
Output:
|
11
|
+
0 - OK
|
12
|
+
-1 - Missing key
|
13
|
+
]]
|
14
|
+
local rcall = redis.call
|
15
|
+
|
16
|
+
if rcall("EXISTS", KEYS[1]) == 1 then
|
17
|
+
rcall("HMSET", KEYS[1], "stacktrace", ARGV[1], "failedReason", ARGV[2])
|
18
|
+
|
19
|
+
return 0
|
20
|
+
else
|
21
|
+
return -1
|
22
|
+
end
|
@@ -0,0 +1,119 @@
|
|
1
|
+
import { RedisClient } from '../interfaces';
|
2
|
+
export interface Command {
|
3
|
+
name: string;
|
4
|
+
options: {
|
5
|
+
numberOfKeys: number;
|
6
|
+
lua: string;
|
7
|
+
};
|
8
|
+
}
|
9
|
+
/**
|
10
|
+
* Script metadata
|
11
|
+
*/
|
12
|
+
export interface ScriptMetadata {
|
13
|
+
/**
|
14
|
+
* Name of the script
|
15
|
+
*/
|
16
|
+
name: string;
|
17
|
+
numberOfKeys?: number;
|
18
|
+
/**
|
19
|
+
* The path to the script. For includes, this is the normalized path,
|
20
|
+
* whereas it may not be normalized for the top-level parent
|
21
|
+
*/
|
22
|
+
path: string;
|
23
|
+
/**
|
24
|
+
* The raw script content
|
25
|
+
*/
|
26
|
+
content: string;
|
27
|
+
/**
|
28
|
+
* A hash of the normalized path for easy replacement in the parent
|
29
|
+
*/
|
30
|
+
token: string;
|
31
|
+
/**
|
32
|
+
* Metadata on the scripts that this script includes
|
33
|
+
*/
|
34
|
+
includes: ScriptMetadata[];
|
35
|
+
}
|
36
|
+
export declare class ScriptLoaderError extends Error {
|
37
|
+
/**
|
38
|
+
* The include stack
|
39
|
+
*/
|
40
|
+
readonly includes: string[];
|
41
|
+
readonly line: number;
|
42
|
+
readonly position: number;
|
43
|
+
constructor(message: string, path: string, stack?: string[], line?: number, position?: number);
|
44
|
+
}
|
45
|
+
/**
|
46
|
+
* Lua script loader with include support
|
47
|
+
*/
|
48
|
+
export declare class ScriptLoader {
|
49
|
+
/**
|
50
|
+
* Map an alias to a path
|
51
|
+
*/
|
52
|
+
private pathMapper;
|
53
|
+
private clientScripts;
|
54
|
+
/**
|
55
|
+
* Cache commands by dir
|
56
|
+
*/
|
57
|
+
private commandCache;
|
58
|
+
private rootPath;
|
59
|
+
constructor();
|
60
|
+
/**
|
61
|
+
* Add a script path mapping. Allows includes of the form "<includes>/utils.lua" where `includes` is a user
|
62
|
+
* defined path
|
63
|
+
* @param name - the name of the mapping. Note: do not include angle brackets
|
64
|
+
* @param mappedPath - if a relative path is passed, it's relative to the *caller* of this function.
|
65
|
+
* Mapped paths are also accepted, e.g. "~/server/scripts/lua" or "<base>/includes"
|
66
|
+
*/
|
67
|
+
addPathMapping(name: string, mappedPath: string): void;
|
68
|
+
/**
|
69
|
+
* Resolve the script path considering path mappings
|
70
|
+
* @param scriptName - the name of the script
|
71
|
+
* @param stack - the include stack, for nicer errors
|
72
|
+
*/
|
73
|
+
resolvePath(scriptName: string, stack?: string[]): string;
|
74
|
+
/**
|
75
|
+
* Recursively collect all scripts included in a file
|
76
|
+
* @param file - the parent file
|
77
|
+
* @param cache - a cache for file metadata to increase efficiency. Since a file can be included
|
78
|
+
* multiple times, we make sure to load it only once.
|
79
|
+
* @param stack - internal stack to prevent circular references
|
80
|
+
*/
|
81
|
+
private resolveDependencies;
|
82
|
+
/**
|
83
|
+
* Parse a (top-level) lua script
|
84
|
+
* @param filename - the full path to the script
|
85
|
+
* @param content - the content of the script
|
86
|
+
* @param cache - cache
|
87
|
+
*/
|
88
|
+
parseScript(filename: string, content: string, cache?: Map<string, ScriptMetadata>): Promise<ScriptMetadata>;
|
89
|
+
/**
|
90
|
+
* Construct the final version of a file by interpolating its includes in dependency order.
|
91
|
+
* @param file - the file whose content we want to construct
|
92
|
+
* @param processed - a cache to keep track of which includes have already been processed
|
93
|
+
*/
|
94
|
+
interpolate(file: ScriptMetadata, processed?: Set<string>): string;
|
95
|
+
loadCommand(filename: string, cache?: Map<string, ScriptMetadata>): Promise<Command>;
|
96
|
+
/**
|
97
|
+
* Load redis lua scripts.
|
98
|
+
* The name of the script must have the following format:
|
99
|
+
*
|
100
|
+
* cmdName-numKeys.lua
|
101
|
+
*
|
102
|
+
* cmdName must be in camel case format.
|
103
|
+
*
|
104
|
+
* For example:
|
105
|
+
* moveToFinish-3.lua
|
106
|
+
*
|
107
|
+
*/
|
108
|
+
loadScripts(dir?: string, cache?: Map<string, ScriptMetadata>): Promise<Command[]>;
|
109
|
+
/**
|
110
|
+
* Attach all lua scripts in a given directory to a client instance
|
111
|
+
* @param client - redis client to attach script to
|
112
|
+
* @param pathname - the path to the directory containing the scripts
|
113
|
+
*/
|
114
|
+
load(client: RedisClient, pathname: string, cache?: Map<string, ScriptMetadata>): Promise<void>;
|
115
|
+
/**
|
116
|
+
* Clears the command cache
|
117
|
+
*/
|
118
|
+
clearCache(): void;
|
119
|
+
}
|
@@ -0,0 +1,403 @@
|
|
1
|
+
import { createHash } from 'crypto';
|
2
|
+
import { glob, hasMagic } from 'glob';
|
3
|
+
import * as path from 'path';
|
4
|
+
import * as fs from 'fs';
|
5
|
+
import { promisify } from 'util';
|
6
|
+
const readFile = promisify(fs.readFile);
|
7
|
+
const readdir = promisify(fs.readdir);
|
8
|
+
const GlobOptions = { dot: true, silent: false };
|
9
|
+
const IncludeRegex = /^[-]{2,3}[ \t]*@include[ \t]+(["'])(.+?)\1[; \t\n]*$/m;
|
10
|
+
const EmptyLineRegex = /^\s*[\r\n]/gm;
|
11
|
+
export class ScriptLoaderError extends Error {
|
12
|
+
constructor(message, path, stack = [], line, position = 0) {
|
13
|
+
super(message);
|
14
|
+
// Ensure the name of this error is the same as the class name
|
15
|
+
this.name = this.constructor.name;
|
16
|
+
Error.captureStackTrace(this, this.constructor);
|
17
|
+
this.includes = stack;
|
18
|
+
this.line = line !== null && line !== void 0 ? line : 0;
|
19
|
+
this.position = position;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
const isPossiblyMappedPath = (path) => path && ['~', '<'].includes(path[0]);
|
23
|
+
const hasFilenamePattern = (path) => hasMagic(path, GlobOptions);
|
24
|
+
/**
|
25
|
+
* Lua script loader with include support
|
26
|
+
*/
|
27
|
+
export class ScriptLoader {
|
28
|
+
constructor() {
|
29
|
+
/**
|
30
|
+
* Map an alias to a path
|
31
|
+
*/
|
32
|
+
this.pathMapper = new Map();
|
33
|
+
this.clientScripts = new WeakMap();
|
34
|
+
/**
|
35
|
+
* Cache commands by dir
|
36
|
+
*/
|
37
|
+
this.commandCache = new Map();
|
38
|
+
this.rootPath = getPkgJsonDir();
|
39
|
+
this.pathMapper.set('~', this.rootPath);
|
40
|
+
this.pathMapper.set('rootDir', this.rootPath);
|
41
|
+
this.pathMapper.set('base', __dirname);
|
42
|
+
}
|
43
|
+
/**
|
44
|
+
* Add a script path mapping. Allows includes of the form "<includes>/utils.lua" where `includes` is a user
|
45
|
+
* defined path
|
46
|
+
* @param name - the name of the mapping. Note: do not include angle brackets
|
47
|
+
* @param mappedPath - if a relative path is passed, it's relative to the *caller* of this function.
|
48
|
+
* Mapped paths are also accepted, e.g. "~/server/scripts/lua" or "<base>/includes"
|
49
|
+
*/
|
50
|
+
addPathMapping(name, mappedPath) {
|
51
|
+
let resolved;
|
52
|
+
if (isPossiblyMappedPath(mappedPath)) {
|
53
|
+
resolved = this.resolvePath(mappedPath);
|
54
|
+
}
|
55
|
+
else {
|
56
|
+
const caller = getCallerFile();
|
57
|
+
const callerPath = path.dirname(caller);
|
58
|
+
resolved = path.normalize(path.resolve(callerPath, mappedPath));
|
59
|
+
}
|
60
|
+
const last = resolved.length - 1;
|
61
|
+
if (resolved[last] === path.sep) {
|
62
|
+
resolved = resolved.substr(0, last);
|
63
|
+
}
|
64
|
+
this.pathMapper.set(name, resolved);
|
65
|
+
}
|
66
|
+
/**
|
67
|
+
* Resolve the script path considering path mappings
|
68
|
+
* @param scriptName - the name of the script
|
69
|
+
* @param stack - the include stack, for nicer errors
|
70
|
+
*/
|
71
|
+
resolvePath(scriptName, stack = []) {
|
72
|
+
const first = scriptName[0];
|
73
|
+
if (first === '~') {
|
74
|
+
scriptName = path.join(this.rootPath, scriptName.substr(2));
|
75
|
+
}
|
76
|
+
else if (first === '<') {
|
77
|
+
const p = scriptName.indexOf('>');
|
78
|
+
if (p > 0) {
|
79
|
+
const name = scriptName.substring(1, p);
|
80
|
+
const mappedPath = this.pathMapper.get(name);
|
81
|
+
if (!mappedPath) {
|
82
|
+
throw new ScriptLoaderError(`No path mapping found for "${name}"`, scriptName, stack);
|
83
|
+
}
|
84
|
+
scriptName = path.join(mappedPath, scriptName.substring(p + 1));
|
85
|
+
}
|
86
|
+
}
|
87
|
+
return path.normalize(scriptName);
|
88
|
+
}
|
89
|
+
/**
|
90
|
+
* Recursively collect all scripts included in a file
|
91
|
+
* @param file - the parent file
|
92
|
+
* @param cache - a cache for file metadata to increase efficiency. Since a file can be included
|
93
|
+
* multiple times, we make sure to load it only once.
|
94
|
+
* @param stack - internal stack to prevent circular references
|
95
|
+
*/
|
96
|
+
async resolveDependencies(file, cache, isInclude = false, stack = []) {
|
97
|
+
cache = cache !== null && cache !== void 0 ? cache : new Map();
|
98
|
+
if (stack.includes(file.path)) {
|
99
|
+
throw new ScriptLoaderError(`circular reference: "${file.path}"`, file.path, stack);
|
100
|
+
}
|
101
|
+
stack.push(file.path);
|
102
|
+
function findPos(content, match) {
|
103
|
+
const pos = content.indexOf(match);
|
104
|
+
const arr = content.slice(0, pos).split('\n');
|
105
|
+
return {
|
106
|
+
line: arr.length,
|
107
|
+
column: arr[arr.length - 1].length + match.indexOf('@include') + 1,
|
108
|
+
};
|
109
|
+
}
|
110
|
+
function raiseError(msg, match) {
|
111
|
+
const pos = findPos(file.content, match);
|
112
|
+
throw new ScriptLoaderError(msg, file.path, stack, pos.line, pos.column);
|
113
|
+
}
|
114
|
+
let res;
|
115
|
+
let content = file.content;
|
116
|
+
while ((res = IncludeRegex.exec(content)) !== null) {
|
117
|
+
const [match, , reference] = res;
|
118
|
+
const includeFilename = isPossiblyMappedPath(reference)
|
119
|
+
? // mapped paths imply absolute reference
|
120
|
+
this.resolvePath(ensureExt(reference), stack)
|
121
|
+
: // include path is relative to the file being processed
|
122
|
+
path.resolve(path.dirname(file.path), ensureExt(reference));
|
123
|
+
let includePaths;
|
124
|
+
if (hasFilenamePattern(includeFilename)) {
|
125
|
+
const filesMatched = await getFilenamesByPattern(includeFilename);
|
126
|
+
includePaths = filesMatched.map((x) => path.resolve(x));
|
127
|
+
}
|
128
|
+
else {
|
129
|
+
includePaths = [includeFilename];
|
130
|
+
}
|
131
|
+
includePaths = includePaths.filter((file) => path.extname(file) === '.lua');
|
132
|
+
if (includePaths.length === 0) {
|
133
|
+
raiseError(`include not found: "${reference}"`, match);
|
134
|
+
}
|
135
|
+
const tokens = [];
|
136
|
+
for (let i = 0; i < includePaths.length; i++) {
|
137
|
+
const includePath = includePaths[i];
|
138
|
+
const hasInclude = file.includes.find((x) => x.path === includePath);
|
139
|
+
if (hasInclude) {
|
140
|
+
/**
|
141
|
+
* We have something like
|
142
|
+
* --- \@include "a"
|
143
|
+
* ...
|
144
|
+
* --- \@include "a"
|
145
|
+
*/
|
146
|
+
raiseError(`file "${reference}" already included in "${file.path}"`, match);
|
147
|
+
}
|
148
|
+
let includeMetadata = cache.get(includePath);
|
149
|
+
let token;
|
150
|
+
if (!includeMetadata) {
|
151
|
+
const { name, numberOfKeys } = splitFilename(includePath);
|
152
|
+
let childContent = '';
|
153
|
+
try {
|
154
|
+
const buf = await readFile(includePath, { flag: 'r' });
|
155
|
+
childContent = buf.toString();
|
156
|
+
}
|
157
|
+
catch (err) {
|
158
|
+
if (err.code === 'ENOENT') {
|
159
|
+
raiseError(`include not found: "${reference}"`, match);
|
160
|
+
}
|
161
|
+
else {
|
162
|
+
throw err;
|
163
|
+
}
|
164
|
+
}
|
165
|
+
// this represents a normalized version of the path to make replacement easy
|
166
|
+
token = getPathHash(includePath);
|
167
|
+
includeMetadata = {
|
168
|
+
name,
|
169
|
+
numberOfKeys,
|
170
|
+
path: includePath,
|
171
|
+
content: childContent,
|
172
|
+
token,
|
173
|
+
includes: [],
|
174
|
+
};
|
175
|
+
cache.set(includePath, includeMetadata);
|
176
|
+
}
|
177
|
+
else {
|
178
|
+
token = includeMetadata.token;
|
179
|
+
}
|
180
|
+
tokens.push(token);
|
181
|
+
file.includes.push(includeMetadata);
|
182
|
+
await this.resolveDependencies(includeMetadata, cache, true, stack);
|
183
|
+
}
|
184
|
+
// Replace @includes with normalized path hashes
|
185
|
+
const substitution = tokens.join('\n');
|
186
|
+
content = content.replace(match, substitution);
|
187
|
+
}
|
188
|
+
file.content = content;
|
189
|
+
if (isInclude) {
|
190
|
+
cache.set(file.path, file);
|
191
|
+
}
|
192
|
+
else {
|
193
|
+
cache.set(file.name, file);
|
194
|
+
}
|
195
|
+
stack.pop();
|
196
|
+
}
|
197
|
+
/**
|
198
|
+
* Parse a (top-level) lua script
|
199
|
+
* @param filename - the full path to the script
|
200
|
+
* @param content - the content of the script
|
201
|
+
* @param cache - cache
|
202
|
+
*/
|
203
|
+
async parseScript(filename, content, cache) {
|
204
|
+
const { name, numberOfKeys } = splitFilename(filename);
|
205
|
+
const meta = cache === null || cache === void 0 ? void 0 : cache.get(name);
|
206
|
+
if ((meta === null || meta === void 0 ? void 0 : meta.content) === content) {
|
207
|
+
return meta;
|
208
|
+
}
|
209
|
+
const fileInfo = {
|
210
|
+
path: filename,
|
211
|
+
token: getPathHash(filename),
|
212
|
+
content,
|
213
|
+
name,
|
214
|
+
numberOfKeys,
|
215
|
+
includes: [],
|
216
|
+
};
|
217
|
+
await this.resolveDependencies(fileInfo, cache);
|
218
|
+
return fileInfo;
|
219
|
+
}
|
220
|
+
/**
|
221
|
+
* Construct the final version of a file by interpolating its includes in dependency order.
|
222
|
+
* @param file - the file whose content we want to construct
|
223
|
+
* @param processed - a cache to keep track of which includes have already been processed
|
224
|
+
*/
|
225
|
+
interpolate(file, processed) {
|
226
|
+
processed = processed || new Set();
|
227
|
+
let content = file.content;
|
228
|
+
file.includes.forEach((child) => {
|
229
|
+
const emitted = processed.has(child.path);
|
230
|
+
const fragment = this.interpolate(child, processed);
|
231
|
+
const replacement = emitted ? '' : fragment;
|
232
|
+
if (!replacement) {
|
233
|
+
content = replaceAll(content, child.token, '');
|
234
|
+
}
|
235
|
+
else {
|
236
|
+
// replace the first instance with the dependency
|
237
|
+
content = content.replace(child.token, replacement);
|
238
|
+
// remove the rest
|
239
|
+
content = replaceAll(content, child.token, '');
|
240
|
+
}
|
241
|
+
processed.add(child.path);
|
242
|
+
});
|
243
|
+
return content;
|
244
|
+
}
|
245
|
+
async loadCommand(filename, cache) {
|
246
|
+
filename = path.resolve(filename);
|
247
|
+
const { name: scriptName } = splitFilename(filename);
|
248
|
+
let script = cache === null || cache === void 0 ? void 0 : cache.get(scriptName);
|
249
|
+
if (!script) {
|
250
|
+
const content = (await readFile(filename)).toString();
|
251
|
+
script = await this.parseScript(filename, content, cache);
|
252
|
+
}
|
253
|
+
const lua = removeEmptyLines(this.interpolate(script));
|
254
|
+
const { name, numberOfKeys } = script;
|
255
|
+
return {
|
256
|
+
name,
|
257
|
+
options: { numberOfKeys: numberOfKeys, lua },
|
258
|
+
};
|
259
|
+
}
|
260
|
+
/**
|
261
|
+
* Load redis lua scripts.
|
262
|
+
* The name of the script must have the following format:
|
263
|
+
*
|
264
|
+
* cmdName-numKeys.lua
|
265
|
+
*
|
266
|
+
* cmdName must be in camel case format.
|
267
|
+
*
|
268
|
+
* For example:
|
269
|
+
* moveToFinish-3.lua
|
270
|
+
*
|
271
|
+
*/
|
272
|
+
async loadScripts(dir, cache) {
|
273
|
+
dir = path.normalize(dir || __dirname);
|
274
|
+
let commands = this.commandCache.get(dir);
|
275
|
+
if (commands) {
|
276
|
+
return commands;
|
277
|
+
}
|
278
|
+
const files = await readdir(dir);
|
279
|
+
const luaFiles = files.filter((file) => path.extname(file) === '.lua');
|
280
|
+
if (luaFiles.length === 0) {
|
281
|
+
/**
|
282
|
+
* To prevent unclarified runtime error "updateDelayset is not a function
|
283
|
+
* @see https://github.com/OptimalBits/bull/issues/920
|
284
|
+
*/
|
285
|
+
throw new ScriptLoaderError('No .lua files found!', dir, []);
|
286
|
+
}
|
287
|
+
commands = [];
|
288
|
+
cache = cache !== null && cache !== void 0 ? cache : new Map();
|
289
|
+
for (let i = 0; i < luaFiles.length; i++) {
|
290
|
+
const file = path.join(dir, luaFiles[i]);
|
291
|
+
const command = await this.loadCommand(file, cache);
|
292
|
+
commands.push(command);
|
293
|
+
}
|
294
|
+
this.commandCache.set(dir, commands);
|
295
|
+
return commands;
|
296
|
+
}
|
297
|
+
/**
|
298
|
+
* Attach all lua scripts in a given directory to a client instance
|
299
|
+
* @param client - redis client to attach script to
|
300
|
+
* @param pathname - the path to the directory containing the scripts
|
301
|
+
*/
|
302
|
+
async load(client, pathname, cache) {
|
303
|
+
let paths = this.clientScripts.get(client);
|
304
|
+
if (!paths) {
|
305
|
+
paths = new Set();
|
306
|
+
this.clientScripts.set(client, paths);
|
307
|
+
}
|
308
|
+
if (!paths.has(pathname)) {
|
309
|
+
paths.add(pathname);
|
310
|
+
const scripts = await this.loadScripts(pathname, cache !== null && cache !== void 0 ? cache : new Map());
|
311
|
+
scripts.forEach((command) => {
|
312
|
+
// Only define the command if not already defined
|
313
|
+
if (!client[command.name]) {
|
314
|
+
client.defineCommand(command.name, command.options);
|
315
|
+
}
|
316
|
+
});
|
317
|
+
}
|
318
|
+
}
|
319
|
+
/**
|
320
|
+
* Clears the command cache
|
321
|
+
*/
|
322
|
+
clearCache() {
|
323
|
+
this.commandCache.clear();
|
324
|
+
}
|
325
|
+
}
|
326
|
+
function ensureExt(filename, ext = 'lua') {
|
327
|
+
const foundExt = path.extname(filename);
|
328
|
+
if (foundExt && foundExt !== '.') {
|
329
|
+
return filename;
|
330
|
+
}
|
331
|
+
if (ext && ext[0] !== '.') {
|
332
|
+
ext = `.${ext}`;
|
333
|
+
}
|
334
|
+
return `${filename}${ext}`;
|
335
|
+
}
|
336
|
+
function splitFilename(filePath) {
|
337
|
+
const longName = path.basename(filePath, '.lua');
|
338
|
+
const [name, num] = longName.split('-');
|
339
|
+
const numberOfKeys = num ? parseInt(num, 10) : undefined;
|
340
|
+
return { name, numberOfKeys };
|
341
|
+
}
|
342
|
+
async function getFilenamesByPattern(pattern) {
|
343
|
+
return new Promise((resolve, reject) => {
|
344
|
+
glob(pattern, GlobOptions, (err, files) => {
|
345
|
+
return err ? reject(err) : resolve(files);
|
346
|
+
});
|
347
|
+
});
|
348
|
+
}
|
349
|
+
// Determine the project root
|
350
|
+
// https://stackoverflow.com/a/18721515
|
351
|
+
function getPkgJsonDir() {
|
352
|
+
for (const modPath of module.paths || []) {
|
353
|
+
try {
|
354
|
+
const prospectivePkgJsonDir = path.dirname(modPath);
|
355
|
+
fs.accessSync(modPath, fs.constants.F_OK);
|
356
|
+
return prospectivePkgJsonDir;
|
357
|
+
// eslint-disable-next-line no-empty
|
358
|
+
}
|
359
|
+
catch (e) { }
|
360
|
+
}
|
361
|
+
return '';
|
362
|
+
}
|
363
|
+
// https://stackoverflow.com/a/66842927
|
364
|
+
// some dark magic here :-)
|
365
|
+
// this version is preferred to the simpler version because of
|
366
|
+
// https://github.com/facebook/jest/issues/5303 -
|
367
|
+
// tldr: dont assume you're the only one with the doing something like this
|
368
|
+
function getCallerFile() {
|
369
|
+
var _a, _b, _c;
|
370
|
+
const originalFunc = Error.prepareStackTrace;
|
371
|
+
let callerFile = '';
|
372
|
+
try {
|
373
|
+
Error.prepareStackTrace = (_, stack) => stack;
|
374
|
+
const sites = new Error().stack;
|
375
|
+
const currentFile = (_a = sites.shift()) === null || _a === void 0 ? void 0 : _a.getFileName();
|
376
|
+
while (sites.length) {
|
377
|
+
callerFile = (_c = (_b = sites.shift()) === null || _b === void 0 ? void 0 : _b.getFileName()) !== null && _c !== void 0 ? _c : '';
|
378
|
+
if (currentFile !== callerFile) {
|
379
|
+
break;
|
380
|
+
}
|
381
|
+
}
|
382
|
+
// eslint-disable-next-line no-empty
|
383
|
+
}
|
384
|
+
catch (e) {
|
385
|
+
}
|
386
|
+
finally {
|
387
|
+
Error.prepareStackTrace = originalFunc;
|
388
|
+
}
|
389
|
+
return callerFile;
|
390
|
+
}
|
391
|
+
function sha1(data) {
|
392
|
+
return createHash('sha1').update(data).digest('hex');
|
393
|
+
}
|
394
|
+
function getPathHash(normalizedPath) {
|
395
|
+
return `@@${sha1(normalizedPath)}`;
|
396
|
+
}
|
397
|
+
function replaceAll(str, find, replace) {
|
398
|
+
return str.replace(new RegExp(find, 'g'), replace);
|
399
|
+
}
|
400
|
+
function removeEmptyLines(str) {
|
401
|
+
return str.replace(EmptyLineRegex, '');
|
402
|
+
}
|
403
|
+
//# sourceMappingURL=script-loader.js.map
|