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.
Files changed (841) hide show
  1. package/README.md +156 -22
  2. package/dist/cjs/classes/async-fifo-queue.js +90 -0
  3. package/dist/cjs/classes/async-fifo-queue.js.map +1 -0
  4. package/dist/{classes → cjs/classes}/backoffs.js +10 -9
  5. package/dist/cjs/classes/backoffs.js.map +1 -0
  6. package/dist/cjs/classes/child-pool.js +64 -0
  7. package/dist/cjs/classes/child-pool.js.map +1 -0
  8. package/dist/cjs/classes/child-processor.js +150 -0
  9. package/dist/cjs/classes/child-processor.js.map +1 -0
  10. package/dist/cjs/classes/child.js +216 -0
  11. package/dist/cjs/classes/child.js.map +1 -0
  12. package/dist/cjs/classes/delayed-error.js +19 -0
  13. package/dist/cjs/classes/delayed-error.js.map +1 -0
  14. package/dist/cjs/classes/flow-producer.js +283 -0
  15. package/dist/cjs/classes/flow-producer.js.map +1 -0
  16. package/dist/{classes → cjs/classes}/index.js +11 -3
  17. package/dist/cjs/classes/index.js.map +1 -0
  18. package/dist/cjs/classes/job.js +768 -0
  19. package/dist/cjs/classes/job.js.map +1 -0
  20. package/dist/cjs/classes/main-base.js +45 -0
  21. package/dist/cjs/classes/main-base.js.map +1 -0
  22. package/dist/cjs/classes/main-worker.js +10 -0
  23. package/dist/cjs/classes/main-worker.js.map +1 -0
  24. package/dist/cjs/classes/main.js +10 -0
  25. package/dist/cjs/classes/main.js.map +1 -0
  26. package/dist/cjs/classes/queue-base.js +135 -0
  27. package/dist/cjs/classes/queue-base.js.map +1 -0
  28. package/dist/cjs/classes/queue-events.js +120 -0
  29. package/dist/cjs/classes/queue-events.js.map +1 -0
  30. package/dist/cjs/classes/queue-getters.js +347 -0
  31. package/dist/cjs/classes/queue-getters.js.map +1 -0
  32. package/dist/cjs/classes/queue-keys.js +45 -0
  33. package/dist/cjs/classes/queue-keys.js.map +1 -0
  34. package/dist/cjs/classes/queue.js +275 -0
  35. package/dist/cjs/classes/queue.js.map +1 -0
  36. package/dist/cjs/classes/redis-connection.js +207 -0
  37. package/dist/cjs/classes/redis-connection.js.map +1 -0
  38. package/dist/cjs/classes/repeat.js +149 -0
  39. package/dist/cjs/classes/repeat.js.map +1 -0
  40. package/dist/{classes → cjs/classes}/sandbox.js +18 -14
  41. package/dist/cjs/classes/sandbox.js.map +1 -0
  42. package/dist/cjs/classes/scripts.js +658 -0
  43. package/dist/cjs/classes/scripts.js.map +1 -0
  44. package/dist/cjs/classes/unrecoverable-error.js +19 -0
  45. package/dist/cjs/classes/unrecoverable-error.js.map +1 -0
  46. package/dist/cjs/classes/waiting-children-error.js +19 -0
  47. package/dist/cjs/classes/waiting-children-error.js.map +1 -0
  48. package/dist/cjs/classes/worker.js +577 -0
  49. package/dist/cjs/classes/worker.js.map +1 -0
  50. package/dist/cjs/commands/addJob-9.lua +170 -0
  51. package/dist/cjs/commands/changeDelay-3.lua +40 -0
  52. package/dist/cjs/commands/changePriority-5.lua +52 -0
  53. package/dist/cjs/commands/cleanJobsInSet-2.lua +48 -0
  54. package/dist/cjs/commands/drain-4.lua +26 -0
  55. package/dist/{commands → cjs/commands}/extendLock-2.lua +1 -0
  56. package/dist/cjs/commands/getCounts-1.lua +35 -0
  57. package/dist/cjs/commands/getRanges-1.lua +69 -0
  58. package/dist/cjs/commands/getState-8.lua +66 -0
  59. package/dist/cjs/commands/getStateV2-8.lua +59 -0
  60. package/dist/cjs/commands/includes/addDelayMarkerIfNeeded.lua +15 -0
  61. package/dist/cjs/commands/includes/addJobWithPriority.lua +15 -0
  62. package/dist/cjs/commands/includes/addPriorityMarkerIfNeeded.lua +12 -0
  63. package/dist/cjs/commands/includes/batches.lua +18 -0
  64. package/dist/cjs/commands/includes/checkItemInList.lua +12 -0
  65. package/dist/cjs/commands/includes/checkStalledJobs.lua +139 -0
  66. package/dist/cjs/commands/includes/cleanList.lua +47 -0
  67. package/dist/cjs/commands/includes/cleanSet.lua +39 -0
  68. package/dist/cjs/commands/includes/collectMetrics.lua +46 -0
  69. package/dist/cjs/commands/includes/destructureJobKey.lua +12 -0
  70. package/dist/cjs/commands/includes/getJobsInZset.lua +12 -0
  71. package/dist/cjs/commands/includes/getNextDelayedTimestamp.lua +13 -0
  72. package/dist/cjs/commands/includes/getRateLimitTTL.lua +17 -0
  73. package/dist/cjs/commands/includes/getTargetQueueList.lua +12 -0
  74. package/dist/cjs/commands/includes/getTimestamp.lua +19 -0
  75. package/dist/cjs/commands/includes/getZSetItems.lua +7 -0
  76. package/dist/cjs/commands/includes/isLocked.lua +31 -0
  77. package/dist/cjs/commands/includes/moveJobFromPriorityToActive.lua +14 -0
  78. package/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +28 -0
  79. package/dist/cjs/commands/includes/prepareJobForProcessing.lua +74 -0
  80. package/dist/cjs/commands/includes/promoteDelayedJobs.lua +39 -0
  81. package/dist/cjs/commands/includes/pushBackJobWithPriority.lua +9 -0
  82. package/dist/cjs/commands/includes/removeJob.lua +13 -0
  83. package/dist/cjs/commands/includes/removeJobFromAnyState.lua +35 -0
  84. package/dist/cjs/commands/includes/removeJobs.lua +25 -0
  85. package/dist/cjs/commands/includes/removeJobsByMaxAge.lua +15 -0
  86. package/dist/cjs/commands/includes/removeJobsByMaxCount.lua +15 -0
  87. package/dist/cjs/commands/includes/removeParentDependencyKey.lua +77 -0
  88. package/dist/cjs/commands/includes/removeZSetJobs.lua +15 -0
  89. package/dist/cjs/commands/includes/trimEvents.lua +12 -0
  90. package/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +40 -0
  91. package/dist/cjs/commands/index.js +10 -0
  92. package/dist/cjs/commands/index.js.map +1 -0
  93. package/dist/cjs/commands/isFinished-3.lua +48 -0
  94. package/dist/cjs/commands/isJobInList-1.lua +16 -0
  95. package/dist/cjs/commands/moveJobFromActiveToWait-9.lua +53 -0
  96. package/dist/cjs/commands/moveStalledJobsToWait-8.lua +24 -0
  97. package/dist/cjs/commands/moveToActive-10.lua +116 -0
  98. package/dist/cjs/commands/moveToDelayed-8.lua +66 -0
  99. package/dist/cjs/commands/moveToFinished-13.lua +250 -0
  100. package/dist/cjs/commands/moveToWaitingChildren-4.lua +62 -0
  101. package/dist/cjs/commands/obliterate-2.lua +102 -0
  102. package/dist/cjs/commands/pause-5.lua +36 -0
  103. package/dist/cjs/commands/promote-7.lua +57 -0
  104. package/dist/cjs/commands/releaseLock-1.lua +19 -0
  105. package/dist/cjs/commands/removeJob-1.lua +71 -0
  106. package/{src → dist/cjs}/commands/removeRepeatable-2.lua +13 -1
  107. package/dist/cjs/commands/reprocessJob-6.lua +43 -0
  108. package/dist/cjs/commands/retryJob-9.lua +69 -0
  109. package/dist/cjs/commands/retryJobs-6.lua +53 -0
  110. package/dist/cjs/commands/saveStacktrace-1.lua +22 -0
  111. package/dist/cjs/commands/script-loader.js +408 -0
  112. package/dist/cjs/commands/script-loader.js.map +1 -0
  113. package/dist/cjs/commands/updateData-1.lua +20 -0
  114. package/dist/cjs/commands/updateProgress-2.lua +26 -0
  115. package/dist/cjs/enums/error-code.enum.js +13 -0
  116. package/dist/cjs/enums/error-code.enum.js.map +1 -0
  117. package/dist/cjs/enums/index.js +6 -0
  118. package/dist/cjs/enums/index.js.map +1 -0
  119. package/dist/cjs/enums/metrics-time.js +15 -0
  120. package/dist/cjs/enums/metrics-time.js.map +1 -0
  121. package/dist/{index.js → cjs/index.js} +2 -0
  122. package/dist/cjs/index.js.map +1 -0
  123. package/dist/cjs/interfaces/advanced-options.js +3 -0
  124. package/dist/cjs/interfaces/advanced-options.js.map +1 -0
  125. package/dist/cjs/interfaces/backoff-options.js.map +1 -0
  126. package/dist/cjs/interfaces/base-job-options.js +3 -0
  127. package/dist/cjs/interfaces/base-job-options.js.map +1 -0
  128. package/dist/cjs/interfaces/child-command.js +10 -0
  129. package/dist/cjs/interfaces/child-command.js.map +1 -0
  130. package/dist/{interfaces/backoff-opts.js → cjs/interfaces/child-message.js} +1 -1
  131. package/dist/cjs/interfaces/child-message.js.map +1 -0
  132. package/dist/{interfaces/redis-opts.js → cjs/interfaces/connection.js} +1 -1
  133. package/dist/cjs/interfaces/connection.js.map +1 -0
  134. package/dist/{interfaces/jobs-opts.js → cjs/interfaces/flow-job.js} +1 -1
  135. package/dist/cjs/interfaces/flow-job.js.map +1 -0
  136. package/dist/cjs/interfaces/index.js +28 -0
  137. package/dist/cjs/interfaces/index.js.map +1 -0
  138. package/dist/cjs/interfaces/ioredis-events.js +3 -0
  139. package/dist/cjs/interfaces/ioredis-events.js.map +1 -0
  140. package/dist/{interfaces/repeat-opts.js → cjs/interfaces/job-json.js} +1 -1
  141. package/dist/cjs/interfaces/job-json.js.map +1 -0
  142. package/dist/{interfaces/worker-opts.js → cjs/interfaces/keep-jobs.js} +1 -1
  143. package/dist/cjs/interfaces/keep-jobs.js.map +1 -0
  144. package/dist/cjs/interfaces/metrics-options.js +3 -0
  145. package/dist/cjs/interfaces/metrics-options.js.map +1 -0
  146. package/dist/cjs/interfaces/metrics.js +3 -0
  147. package/dist/cjs/interfaces/metrics.js.map +1 -0
  148. package/dist/cjs/interfaces/minimal-job.js +3 -0
  149. package/dist/cjs/interfaces/minimal-job.js.map +1 -0
  150. package/dist/cjs/interfaces/parent-command.js +15 -0
  151. package/dist/cjs/interfaces/parent-command.js.map +1 -0
  152. package/dist/cjs/interfaces/parent-message.js +3 -0
  153. package/dist/cjs/interfaces/parent-message.js.map +1 -0
  154. package/dist/cjs/interfaces/parent.js +3 -0
  155. package/dist/cjs/interfaces/parent.js.map +1 -0
  156. package/dist/{interfaces → cjs/interfaces}/queue-options.js +1 -0
  157. package/dist/cjs/interfaces/queue-options.js.map +1 -0
  158. package/dist/cjs/interfaces/rate-limiter-options.js.map +1 -0
  159. package/dist/cjs/interfaces/redis-options.js.map +1 -0
  160. package/dist/{interfaces/jobs-options.js → cjs/interfaces/redis-streams.js} +1 -1
  161. package/dist/cjs/interfaces/redis-streams.js.map +1 -0
  162. package/dist/cjs/interfaces/repeat-options.js.map +1 -0
  163. package/dist/cjs/interfaces/sandboxed-job-processor.js +3 -0
  164. package/dist/cjs/interfaces/sandboxed-job-processor.js.map +1 -0
  165. package/dist/cjs/interfaces/sandboxed-job.js +3 -0
  166. package/dist/cjs/interfaces/sandboxed-job.js.map +1 -0
  167. package/dist/cjs/interfaces/worker-options.js.map +1 -0
  168. package/dist/cjs/scripts/addJob-9.js +252 -0
  169. package/dist/cjs/scripts/addJob-9.js.map +1 -0
  170. package/dist/cjs/scripts/changeDelay-3.js +41 -0
  171. package/dist/cjs/scripts/changeDelay-3.js.map +1 -0
  172. package/dist/cjs/scripts/changePriority-5.js +87 -0
  173. package/dist/cjs/scripts/changePriority-5.js.map +1 -0
  174. package/dist/cjs/scripts/cleanJobsInSet-2.js +259 -0
  175. package/dist/cjs/scripts/cleanJobsInSet-2.js.map +1 -0
  176. package/dist/cjs/scripts/drain-4.js +178 -0
  177. package/dist/cjs/scripts/drain-4.js.map +1 -0
  178. package/dist/cjs/scripts/extendLock-2.js +30 -0
  179. package/dist/cjs/scripts/extendLock-2.js.map +1 -0
  180. package/dist/cjs/scripts/getCounts-1.js +41 -0
  181. package/dist/cjs/scripts/getCounts-1.js.map +1 -0
  182. package/dist/cjs/scripts/getRanges-1.js +72 -0
  183. package/dist/cjs/scripts/getRanges-1.js.map +1 -0
  184. package/dist/cjs/scripts/getState-8.js +74 -0
  185. package/dist/cjs/scripts/getState-8.js.map +1 -0
  186. package/dist/cjs/scripts/getStateV2-8.js +58 -0
  187. package/dist/cjs/scripts/getStateV2-8.js.map +1 -0
  188. package/dist/cjs/scripts/index.js +34 -0
  189. package/dist/cjs/scripts/index.js.map +1 -0
  190. package/dist/cjs/scripts/isFinished-3.js +49 -0
  191. package/dist/cjs/scripts/isFinished-3.js.map +1 -0
  192. package/dist/cjs/scripts/isJobInList-1.js +32 -0
  193. package/dist/cjs/scripts/isJobInList-1.js.map +1 -0
  194. package/dist/cjs/scripts/moveJobFromActiveToWait-9.js +70 -0
  195. package/dist/cjs/scripts/moveJobFromActiveToWait-9.js.map +1 -0
  196. package/dist/cjs/scripts/moveStalledJobsToWait-8.js +289 -0
  197. package/dist/cjs/scripts/moveStalledJobsToWait-8.js.map +1 -0
  198. package/dist/cjs/scripts/moveToActive-10.js +269 -0
  199. package/dist/cjs/scripts/moveToActive-10.js.map +1 -0
  200. package/dist/cjs/scripts/moveToDelayed-8.js +152 -0
  201. package/dist/cjs/scripts/moveToDelayed-8.js.map +1 -0
  202. package/dist/cjs/scripts/moveToFinished-13.js +624 -0
  203. package/dist/cjs/scripts/moveToFinished-13.js.map +1 -0
  204. package/dist/cjs/scripts/moveToWaitingChildren-4.js +59 -0
  205. package/dist/cjs/scripts/moveToWaitingChildren-4.js.map +1 -0
  206. package/dist/cjs/scripts/obliterate-2.js +244 -0
  207. package/dist/cjs/scripts/obliterate-2.js.map +1 -0
  208. package/dist/cjs/scripts/pause-5.js +48 -0
  209. package/dist/cjs/scripts/pause-5.js.map +1 -0
  210. package/dist/cjs/scripts/promote-7.js +87 -0
  211. package/dist/cjs/scripts/promote-7.js.map +1 -0
  212. package/dist/cjs/scripts/releaseLock-1.js +25 -0
  213. package/dist/cjs/scripts/releaseLock-1.js.map +1 -0
  214. package/dist/cjs/scripts/removeJob-1.js +210 -0
  215. package/dist/cjs/scripts/removeJob-1.js.map +1 -0
  216. package/dist/cjs/scripts/removeRepeatable-2.js +38 -0
  217. package/dist/cjs/scripts/removeRepeatable-2.js.map +1 -0
  218. package/dist/cjs/scripts/reprocessJob-6.js +56 -0
  219. package/dist/cjs/scripts/reprocessJob-6.js.map +1 -0
  220. package/dist/cjs/scripts/retryJob-9.js +128 -0
  221. package/dist/cjs/scripts/retryJob-9.js.map +1 -0
  222. package/dist/cjs/scripts/retryJobs-6.js +76 -0
  223. package/dist/cjs/scripts/retryJobs-6.js.map +1 -0
  224. package/dist/cjs/scripts/saveStacktrace-1.js +27 -0
  225. package/dist/cjs/scripts/saveStacktrace-1.js.map +1 -0
  226. package/dist/cjs/scripts/updateData-1.js +26 -0
  227. package/dist/cjs/scripts/updateData-1.js.map +1 -0
  228. package/dist/cjs/scripts/updateProgress-2.js +31 -0
  229. package/dist/cjs/scripts/updateProgress-2.js.map +1 -0
  230. package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -0
  231. package/dist/cjs/types/backoff-strategy.js +3 -0
  232. package/dist/cjs/types/backoff-strategy.js.map +1 -0
  233. package/dist/cjs/types/finished-status.js +3 -0
  234. package/dist/cjs/types/finished-status.js.map +1 -0
  235. package/dist/cjs/types/index.js +11 -0
  236. package/dist/cjs/types/index.js.map +1 -0
  237. package/dist/cjs/types/job-json-sandbox.js +3 -0
  238. package/dist/cjs/types/job-json-sandbox.js.map +1 -0
  239. package/dist/cjs/types/job-options.js +3 -0
  240. package/dist/cjs/types/job-options.js.map +1 -0
  241. package/dist/cjs/types/job-type.js +3 -0
  242. package/dist/cjs/types/job-type.js.map +1 -0
  243. package/dist/cjs/types/minimal-queue.js +3 -0
  244. package/dist/cjs/types/minimal-queue.js.map +1 -0
  245. package/dist/cjs/types/repeat-strategy.js +3 -0
  246. package/dist/cjs/types/repeat-strategy.js.map +1 -0
  247. package/dist/cjs/utils.js +152 -0
  248. package/dist/cjs/utils.js.map +1 -0
  249. package/dist/esm/classes/async-fifo-queue.d.ts +31 -0
  250. package/dist/esm/classes/async-fifo-queue.js +86 -0
  251. package/dist/esm/classes/async-fifo-queue.js.map +1 -0
  252. package/dist/esm/classes/backoffs.d.ts +10 -0
  253. package/dist/esm/classes/backoffs.js +44 -0
  254. package/dist/esm/classes/backoffs.js.map +1 -0
  255. package/dist/esm/classes/child-pool.d.ts +23 -0
  256. package/dist/esm/classes/child-pool.js +60 -0
  257. package/dist/esm/classes/child-pool.js.map +1 -0
  258. package/dist/esm/classes/child-processor.d.ts +26 -0
  259. package/dist/esm/classes/child-processor.js +146 -0
  260. package/dist/esm/classes/child-processor.js.map +1 -0
  261. package/dist/esm/classes/child.d.ts +36 -0
  262. package/dist/esm/classes/child.js +212 -0
  263. package/dist/esm/classes/child.js.map +1 -0
  264. package/dist/esm/classes/delayed-error.d.ts +10 -0
  265. package/dist/esm/classes/delayed-error.js +15 -0
  266. package/dist/esm/classes/delayed-error.js.map +1 -0
  267. package/dist/esm/classes/flow-producer.d.ts +163 -0
  268. package/dist/esm/classes/flow-producer.js +279 -0
  269. package/dist/esm/classes/flow-producer.js.map +1 -0
  270. package/dist/{classes → esm/classes}/index.d.ts +9 -3
  271. package/dist/esm/classes/index.js +22 -0
  272. package/dist/esm/classes/index.js.map +1 -0
  273. package/dist/esm/classes/job.d.ts +355 -0
  274. package/dist/esm/classes/job.js +764 -0
  275. package/dist/esm/classes/job.js.map +1 -0
  276. package/dist/esm/classes/main-base.d.ts +4 -0
  277. package/dist/esm/classes/main-base.js +43 -0
  278. package/dist/esm/classes/main-base.js.map +1 -0
  279. package/dist/esm/classes/main-worker.js +8 -0
  280. package/dist/esm/classes/main-worker.js.map +1 -0
  281. package/dist/esm/classes/main.js +8 -0
  282. package/dist/esm/classes/main.js.map +1 -0
  283. package/dist/esm/classes/queue-base.d.ts +67 -0
  284. package/dist/esm/classes/queue-base.js +131 -0
  285. package/dist/esm/classes/queue-base.js.map +1 -0
  286. package/dist/esm/classes/queue-events.d.ts +179 -0
  287. package/dist/esm/classes/queue-events.js +116 -0
  288. package/dist/esm/classes/queue-events.js.map +1 -0
  289. package/dist/esm/classes/queue-getters.d.ts +164 -0
  290. package/dist/esm/classes/queue-getters.js +344 -0
  291. package/dist/esm/classes/queue-getters.js.map +1 -0
  292. package/dist/esm/classes/queue-keys.d.ts +10 -0
  293. package/dist/esm/classes/queue-keys.js +41 -0
  294. package/dist/esm/classes/queue-keys.js.map +1 -0
  295. package/dist/esm/classes/queue.d.ts +236 -0
  296. package/dist/esm/classes/queue.js +271 -0
  297. package/dist/esm/classes/queue.js.map +1 -0
  298. package/dist/esm/classes/redis-connection.d.ts +37 -0
  299. package/dist/esm/classes/redis-connection.js +203 -0
  300. package/dist/esm/classes/redis-connection.js.map +1 -0
  301. package/dist/esm/classes/repeat.d.ts +25 -0
  302. package/dist/esm/classes/repeat.js +144 -0
  303. package/dist/esm/classes/repeat.js.map +1 -0
  304. package/dist/esm/classes/sandbox.d.ts +4 -0
  305. package/dist/esm/classes/sandbox.js +58 -0
  306. package/dist/esm/classes/sandbox.js.map +1 -0
  307. package/dist/esm/classes/scripts.d.ts +106 -0
  308. package/dist/esm/classes/scripts.js +654 -0
  309. package/dist/esm/classes/scripts.js.map +1 -0
  310. package/dist/esm/classes/unrecoverable-error.d.ts +10 -0
  311. package/dist/esm/classes/unrecoverable-error.js +15 -0
  312. package/dist/esm/classes/unrecoverable-error.js.map +1 -0
  313. package/dist/esm/classes/waiting-children-error.d.ts +10 -0
  314. package/dist/esm/classes/waiting-children-error.js +15 -0
  315. package/dist/esm/classes/waiting-children-error.js.map +1 -0
  316. package/dist/esm/classes/worker.d.ts +215 -0
  317. package/dist/esm/classes/worker.js +573 -0
  318. package/dist/esm/classes/worker.js.map +1 -0
  319. package/dist/esm/commands/addJob-9.lua +170 -0
  320. package/dist/esm/commands/changeDelay-3.lua +40 -0
  321. package/dist/esm/commands/changePriority-5.lua +52 -0
  322. package/dist/esm/commands/cleanJobsInSet-2.lua +48 -0
  323. package/dist/esm/commands/drain-4.lua +26 -0
  324. package/{src → dist/esm}/commands/extendLock-2.lua +1 -0
  325. package/dist/esm/commands/getCounts-1.lua +35 -0
  326. package/dist/esm/commands/getRanges-1.lua +69 -0
  327. package/dist/esm/commands/getState-8.lua +66 -0
  328. package/dist/esm/commands/getStateV2-8.lua +59 -0
  329. package/dist/esm/commands/includes/addDelayMarkerIfNeeded.lua +15 -0
  330. package/dist/esm/commands/includes/addJobWithPriority.lua +15 -0
  331. package/dist/esm/commands/includes/addPriorityMarkerIfNeeded.lua +12 -0
  332. package/dist/esm/commands/includes/batches.lua +18 -0
  333. package/dist/esm/commands/includes/checkItemInList.lua +12 -0
  334. package/dist/esm/commands/includes/checkStalledJobs.lua +139 -0
  335. package/dist/esm/commands/includes/cleanList.lua +47 -0
  336. package/dist/esm/commands/includes/cleanSet.lua +39 -0
  337. package/dist/esm/commands/includes/collectMetrics.lua +46 -0
  338. package/dist/esm/commands/includes/destructureJobKey.lua +12 -0
  339. package/dist/esm/commands/includes/getJobsInZset.lua +12 -0
  340. package/dist/esm/commands/includes/getNextDelayedTimestamp.lua +13 -0
  341. package/dist/esm/commands/includes/getRateLimitTTL.lua +17 -0
  342. package/dist/esm/commands/includes/getTargetQueueList.lua +12 -0
  343. package/dist/esm/commands/includes/getTimestamp.lua +19 -0
  344. package/dist/esm/commands/includes/getZSetItems.lua +7 -0
  345. package/dist/esm/commands/includes/isLocked.lua +31 -0
  346. package/dist/esm/commands/includes/moveJobFromPriorityToActive.lua +14 -0
  347. package/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +28 -0
  348. package/dist/esm/commands/includes/prepareJobForProcessing.lua +74 -0
  349. package/dist/esm/commands/includes/promoteDelayedJobs.lua +39 -0
  350. package/dist/esm/commands/includes/pushBackJobWithPriority.lua +9 -0
  351. package/dist/esm/commands/includes/removeJob.lua +13 -0
  352. package/dist/esm/commands/includes/removeJobFromAnyState.lua +35 -0
  353. package/dist/esm/commands/includes/removeJobs.lua +25 -0
  354. package/dist/esm/commands/includes/removeJobsByMaxAge.lua +15 -0
  355. package/dist/esm/commands/includes/removeJobsByMaxCount.lua +15 -0
  356. package/dist/esm/commands/includes/removeParentDependencyKey.lua +77 -0
  357. package/dist/esm/commands/includes/removeZSetJobs.lua +15 -0
  358. package/dist/esm/commands/includes/trimEvents.lua +12 -0
  359. package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +40 -0
  360. package/dist/esm/commands/index.d.ts +4 -0
  361. package/dist/esm/commands/index.js +5 -0
  362. package/dist/esm/commands/index.js.map +1 -0
  363. package/dist/esm/commands/isFinished-3.lua +48 -0
  364. package/dist/esm/commands/isJobInList-1.lua +16 -0
  365. package/dist/esm/commands/moveJobFromActiveToWait-9.lua +53 -0
  366. package/dist/esm/commands/moveStalledJobsToWait-8.lua +24 -0
  367. package/dist/esm/commands/moveToActive-10.lua +116 -0
  368. package/dist/esm/commands/moveToDelayed-8.lua +66 -0
  369. package/dist/esm/commands/moveToFinished-13.lua +250 -0
  370. package/dist/esm/commands/moveToWaitingChildren-4.lua +62 -0
  371. package/dist/esm/commands/obliterate-2.lua +102 -0
  372. package/dist/esm/commands/pause-5.lua +36 -0
  373. package/dist/esm/commands/promote-7.lua +57 -0
  374. package/dist/esm/commands/releaseLock-1.lua +19 -0
  375. package/dist/esm/commands/removeJob-1.lua +71 -0
  376. package/dist/{commands → esm/commands}/removeRepeatable-2.lua +13 -1
  377. package/dist/esm/commands/reprocessJob-6.lua +43 -0
  378. package/dist/esm/commands/retryJob-9.lua +69 -0
  379. package/dist/esm/commands/retryJobs-6.lua +53 -0
  380. package/dist/esm/commands/saveStacktrace-1.lua +22 -0
  381. package/dist/esm/commands/script-loader.d.ts +119 -0
  382. package/dist/esm/commands/script-loader.js +403 -0
  383. package/dist/esm/commands/script-loader.js.map +1 -0
  384. package/dist/esm/commands/updateData-1.lua +20 -0
  385. package/dist/esm/commands/updateProgress-2.lua +26 -0
  386. package/dist/esm/enums/error-code.enum.d.ts +8 -0
  387. package/dist/esm/enums/error-code.enum.js +10 -0
  388. package/dist/esm/enums/error-code.enum.js.map +1 -0
  389. package/dist/esm/enums/index.d.ts +2 -0
  390. package/dist/esm/enums/index.js +3 -0
  391. package/dist/esm/enums/index.js.map +1 -0
  392. package/dist/esm/enums/metrics-time.d.ts +10 -0
  393. package/dist/esm/enums/metrics-time.js +12 -0
  394. package/dist/esm/enums/metrics-time.js.map +1 -0
  395. package/dist/{index.d.ts → esm/index.d.ts} +2 -0
  396. package/{src/index.ts → dist/esm/index.js} +7 -4
  397. package/dist/esm/index.js.map +1 -0
  398. package/dist/esm/interfaces/advanced-options.d.ts +13 -0
  399. package/dist/esm/interfaces/advanced-options.js +2 -0
  400. package/dist/esm/interfaces/advanced-options.js.map +1 -0
  401. package/dist/esm/interfaces/backoff-options.d.ts +15 -0
  402. package/dist/esm/interfaces/backoff-options.js +2 -0
  403. package/dist/esm/interfaces/backoff-options.js.map +1 -0
  404. package/dist/esm/interfaces/base-job-options.d.ts +97 -0
  405. package/dist/esm/interfaces/base-job-options.js +2 -0
  406. package/dist/esm/interfaces/base-job-options.js.map +1 -0
  407. package/dist/esm/interfaces/child-command.d.ts +5 -0
  408. package/dist/esm/interfaces/child-command.js +7 -0
  409. package/dist/esm/interfaces/child-command.js.map +1 -0
  410. package/dist/esm/interfaces/child-message.d.ts +6 -0
  411. package/dist/esm/interfaces/child-message.js +2 -0
  412. package/dist/esm/interfaces/child-message.js.map +1 -0
  413. package/dist/esm/interfaces/connection.d.ts +8 -0
  414. package/dist/esm/interfaces/connection.js +2 -0
  415. package/dist/esm/interfaces/connection.js.map +1 -0
  416. package/dist/esm/interfaces/flow-job.d.ts +19 -0
  417. package/dist/esm/interfaces/flow-job.js +2 -0
  418. package/dist/esm/interfaces/flow-job.js.map +1 -0
  419. package/dist/esm/interfaces/index.d.ts +24 -0
  420. package/dist/esm/interfaces/index.js +25 -0
  421. package/dist/esm/interfaces/index.js.map +1 -0
  422. package/dist/esm/interfaces/ioredis-events.d.ts +8 -0
  423. package/dist/esm/interfaces/ioredis-events.js +2 -0
  424. package/dist/esm/interfaces/ioredis-events.js.map +1 -0
  425. package/dist/esm/interfaces/job-json.d.ts +37 -0
  426. package/dist/esm/interfaces/job-json.js +2 -0
  427. package/dist/esm/interfaces/job-json.js.map +1 -0
  428. package/dist/esm/interfaces/keep-jobs.d.ts +17 -0
  429. package/dist/esm/interfaces/keep-jobs.js +2 -0
  430. package/dist/esm/interfaces/keep-jobs.js.map +1 -0
  431. package/dist/esm/interfaces/metrics-options.d.ts +12 -0
  432. package/dist/esm/interfaces/metrics-options.js +2 -0
  433. package/dist/esm/interfaces/metrics-options.js.map +1 -0
  434. package/dist/esm/interfaces/metrics.d.ts +9 -0
  435. package/dist/esm/interfaces/metrics.js +2 -0
  436. package/dist/esm/interfaces/metrics.js.map +1 -0
  437. package/dist/esm/interfaces/minimal-job.d.ts +129 -0
  438. package/dist/esm/interfaces/minimal-job.js +2 -0
  439. package/dist/esm/interfaces/minimal-job.js.map +1 -0
  440. package/dist/esm/interfaces/parent-command.d.ts +10 -0
  441. package/dist/esm/interfaces/parent-command.js +12 -0
  442. package/dist/esm/interfaces/parent-command.js.map +1 -0
  443. package/dist/esm/interfaces/parent-message.d.ts +8 -0
  444. package/dist/esm/interfaces/parent-message.js +2 -0
  445. package/dist/esm/interfaces/parent-message.js.map +1 -0
  446. package/dist/esm/interfaces/parent.d.ts +20 -0
  447. package/dist/esm/interfaces/parent.js +2 -0
  448. package/dist/esm/interfaces/parent.js.map +1 -0
  449. package/dist/esm/interfaces/queue-options.d.ts +74 -0
  450. package/dist/esm/interfaces/queue-options.js +6 -0
  451. package/dist/esm/interfaces/queue-options.js.map +1 -0
  452. package/dist/esm/interfaces/rate-limiter-options.d.ts +12 -0
  453. package/dist/esm/interfaces/rate-limiter-options.js +2 -0
  454. package/dist/esm/interfaces/rate-limiter-options.js.map +1 -0
  455. package/dist/esm/interfaces/redis-options.d.ts +7 -0
  456. package/dist/esm/interfaces/redis-options.js +2 -0
  457. package/dist/esm/interfaces/redis-options.js.map +1 -0
  458. package/dist/esm/interfaces/redis-streams.d.ts +4 -0
  459. package/dist/esm/interfaces/redis-streams.js +2 -0
  460. package/dist/esm/interfaces/redis-streams.js.map +1 -0
  461. package/dist/esm/interfaces/repeat-options.d.ts +33 -0
  462. package/dist/esm/interfaces/repeat-options.js +2 -0
  463. package/dist/esm/interfaces/repeat-options.js.map +1 -0
  464. package/dist/esm/interfaces/sandboxed-job-processor.d.ts +5 -0
  465. package/dist/esm/interfaces/sandboxed-job-processor.js +2 -0
  466. package/dist/esm/interfaces/sandboxed-job-processor.js.map +1 -0
  467. package/dist/esm/interfaces/sandboxed-job.d.ts +13 -0
  468. package/dist/esm/interfaces/sandboxed-job.js +2 -0
  469. package/dist/esm/interfaces/sandboxed-job.js.map +1 -0
  470. package/dist/esm/interfaces/worker-options.d.ts +123 -0
  471. package/dist/esm/interfaces/worker-options.js +2 -0
  472. package/dist/esm/interfaces/worker-options.js.map +1 -0
  473. package/dist/esm/scripts/addJob-9.d.ts +5 -0
  474. package/dist/esm/scripts/addJob-9.js +249 -0
  475. package/dist/esm/scripts/addJob-9.js.map +1 -0
  476. package/dist/esm/scripts/changeDelay-3.d.ts +5 -0
  477. package/dist/esm/scripts/changeDelay-3.js +38 -0
  478. package/dist/esm/scripts/changeDelay-3.js.map +1 -0
  479. package/dist/esm/scripts/changePriority-5.d.ts +5 -0
  480. package/dist/esm/scripts/changePriority-5.js +84 -0
  481. package/dist/esm/scripts/changePriority-5.js.map +1 -0
  482. package/dist/esm/scripts/cleanJobsInSet-2.d.ts +5 -0
  483. package/dist/esm/scripts/cleanJobsInSet-2.js +256 -0
  484. package/dist/esm/scripts/cleanJobsInSet-2.js.map +1 -0
  485. package/dist/esm/scripts/drain-4.d.ts +5 -0
  486. package/dist/esm/scripts/drain-4.js +175 -0
  487. package/dist/esm/scripts/drain-4.js.map +1 -0
  488. package/dist/esm/scripts/extendLock-2.d.ts +5 -0
  489. package/dist/esm/scripts/extendLock-2.js +27 -0
  490. package/dist/esm/scripts/extendLock-2.js.map +1 -0
  491. package/dist/esm/scripts/getCounts-1.d.ts +5 -0
  492. package/dist/esm/scripts/getCounts-1.js +38 -0
  493. package/dist/esm/scripts/getCounts-1.js.map +1 -0
  494. package/dist/esm/scripts/getRanges-1.d.ts +5 -0
  495. package/dist/esm/scripts/getRanges-1.js +69 -0
  496. package/dist/esm/scripts/getRanges-1.js.map +1 -0
  497. package/dist/esm/scripts/getState-8.d.ts +5 -0
  498. package/dist/esm/scripts/getState-8.js +71 -0
  499. package/dist/esm/scripts/getState-8.js.map +1 -0
  500. package/dist/esm/scripts/getStateV2-8.d.ts +5 -0
  501. package/dist/esm/scripts/getStateV2-8.js +55 -0
  502. package/dist/esm/scripts/getStateV2-8.js.map +1 -0
  503. package/dist/esm/scripts/index.d.ts +30 -0
  504. package/dist/esm/scripts/index.js +31 -0
  505. package/dist/esm/scripts/index.js.map +1 -0
  506. package/dist/esm/scripts/isFinished-3.d.ts +5 -0
  507. package/dist/esm/scripts/isFinished-3.js +46 -0
  508. package/dist/esm/scripts/isFinished-3.js.map +1 -0
  509. package/dist/esm/scripts/isJobInList-1.d.ts +5 -0
  510. package/dist/esm/scripts/isJobInList-1.js +29 -0
  511. package/dist/esm/scripts/isJobInList-1.js.map +1 -0
  512. package/dist/esm/scripts/moveJobFromActiveToWait-9.d.ts +5 -0
  513. package/dist/esm/scripts/moveJobFromActiveToWait-9.js +67 -0
  514. package/dist/esm/scripts/moveJobFromActiveToWait-9.js.map +1 -0
  515. package/dist/esm/scripts/moveStalledJobsToWait-8.d.ts +5 -0
  516. package/dist/esm/scripts/moveStalledJobsToWait-8.js +286 -0
  517. package/dist/esm/scripts/moveStalledJobsToWait-8.js.map +1 -0
  518. package/dist/esm/scripts/moveToActive-10.d.ts +5 -0
  519. package/dist/esm/scripts/moveToActive-10.js +266 -0
  520. package/dist/esm/scripts/moveToActive-10.js.map +1 -0
  521. package/dist/esm/scripts/moveToDelayed-8.d.ts +5 -0
  522. package/dist/esm/scripts/moveToDelayed-8.js +149 -0
  523. package/dist/esm/scripts/moveToDelayed-8.js.map +1 -0
  524. package/dist/esm/scripts/moveToFinished-13.d.ts +5 -0
  525. package/dist/esm/scripts/moveToFinished-13.js +621 -0
  526. package/dist/esm/scripts/moveToFinished-13.js.map +1 -0
  527. package/dist/esm/scripts/moveToWaitingChildren-4.d.ts +5 -0
  528. package/dist/esm/scripts/moveToWaitingChildren-4.js +56 -0
  529. package/dist/esm/scripts/moveToWaitingChildren-4.js.map +1 -0
  530. package/dist/esm/scripts/obliterate-2.d.ts +5 -0
  531. package/dist/esm/scripts/obliterate-2.js +241 -0
  532. package/dist/esm/scripts/obliterate-2.js.map +1 -0
  533. package/dist/esm/scripts/pause-5.d.ts +5 -0
  534. package/dist/esm/scripts/pause-5.js +45 -0
  535. package/dist/esm/scripts/pause-5.js.map +1 -0
  536. package/dist/esm/scripts/promote-7.d.ts +5 -0
  537. package/dist/esm/scripts/promote-7.js +84 -0
  538. package/dist/esm/scripts/promote-7.js.map +1 -0
  539. package/dist/esm/scripts/releaseLock-1.d.ts +5 -0
  540. package/dist/esm/scripts/releaseLock-1.js +22 -0
  541. package/dist/esm/scripts/releaseLock-1.js.map +1 -0
  542. package/dist/esm/scripts/removeJob-1.d.ts +5 -0
  543. package/dist/esm/scripts/removeJob-1.js +207 -0
  544. package/dist/esm/scripts/removeJob-1.js.map +1 -0
  545. package/dist/esm/scripts/removeRepeatable-2.d.ts +5 -0
  546. package/dist/esm/scripts/removeRepeatable-2.js +35 -0
  547. package/dist/esm/scripts/removeRepeatable-2.js.map +1 -0
  548. package/dist/esm/scripts/reprocessJob-6.d.ts +5 -0
  549. package/dist/esm/scripts/reprocessJob-6.js +53 -0
  550. package/dist/esm/scripts/reprocessJob-6.js.map +1 -0
  551. package/dist/esm/scripts/retryJob-9.d.ts +5 -0
  552. package/dist/esm/scripts/retryJob-9.js +125 -0
  553. package/dist/esm/scripts/retryJob-9.js.map +1 -0
  554. package/dist/esm/scripts/retryJobs-6.d.ts +5 -0
  555. package/dist/esm/scripts/retryJobs-6.js +73 -0
  556. package/dist/esm/scripts/retryJobs-6.js.map +1 -0
  557. package/dist/esm/scripts/saveStacktrace-1.d.ts +5 -0
  558. package/dist/esm/scripts/saveStacktrace-1.js +24 -0
  559. package/dist/esm/scripts/saveStacktrace-1.js.map +1 -0
  560. package/dist/esm/scripts/updateData-1.d.ts +5 -0
  561. package/dist/esm/scripts/updateData-1.js +23 -0
  562. package/dist/esm/scripts/updateData-1.js.map +1 -0
  563. package/dist/esm/scripts/updateProgress-2.d.ts +5 -0
  564. package/dist/esm/scripts/updateProgress-2.js +28 -0
  565. package/dist/esm/scripts/updateProgress-2.js.map +1 -0
  566. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  567. package/dist/esm/types/backoff-strategy.d.ts +2 -0
  568. package/dist/esm/types/backoff-strategy.js +2 -0
  569. package/dist/esm/types/backoff-strategy.js.map +1 -0
  570. package/dist/esm/types/finished-status.d.ts +2 -0
  571. package/dist/esm/types/finished-status.js +2 -0
  572. package/dist/esm/types/finished-status.js.map +1 -0
  573. package/dist/esm/types/index.d.ts +7 -0
  574. package/dist/esm/types/index.js +8 -0
  575. package/dist/esm/types/index.js.map +1 -0
  576. package/dist/esm/types/job-json-sandbox.d.ts +5 -0
  577. package/dist/esm/types/job-json-sandbox.js +2 -0
  578. package/dist/esm/types/job-json-sandbox.js.map +1 -0
  579. package/dist/esm/types/job-options.d.ts +20 -0
  580. package/dist/esm/types/job-options.js +2 -0
  581. package/dist/esm/types/job-options.js.map +1 -0
  582. package/dist/esm/types/job-type.d.ts +3 -0
  583. package/dist/esm/types/job-type.js +2 -0
  584. package/dist/esm/types/job-type.js.map +1 -0
  585. package/dist/esm/types/minimal-queue.d.ts +2 -0
  586. package/dist/esm/types/minimal-queue.js +2 -0
  587. package/dist/esm/types/minimal-queue.js.map +1 -0
  588. package/dist/esm/types/repeat-strategy.d.ts +2 -0
  589. package/dist/esm/types/repeat-strategy.js +2 -0
  590. package/dist/esm/types/repeat-strategy.js.map +1 -0
  591. package/dist/esm/utils.d.ts +42 -0
  592. package/dist/esm/utils.js +134 -0
  593. package/dist/esm/utils.js.map +1 -0
  594. package/package.json +181 -60
  595. package/.travis.yml +0 -32
  596. package/SUMMARY.md +0 -4
  597. package/commitlint.config.js +0 -1
  598. package/dist/classes/backoffs.d.ts +0 -14
  599. package/dist/classes/backoffs.js.map +0 -1
  600. package/dist/classes/child-pool.d.ts +0 -22
  601. package/dist/classes/child-pool.js +0 -98
  602. package/dist/classes/child-pool.js.map +0 -1
  603. package/dist/classes/compat.d.ts +0 -316
  604. package/dist/classes/compat.js +0 -667
  605. package/dist/classes/compat.js.map +0 -1
  606. package/dist/classes/index.js.map +0 -1
  607. package/dist/classes/job.d.ts +0 -93
  608. package/dist/classes/job.js +0 -351
  609. package/dist/classes/job.js.map +0 -1
  610. package/dist/classes/master.js +0 -112
  611. package/dist/classes/master.js.map +0 -1
  612. package/dist/classes/queue-base.d.ts +0 -23
  613. package/dist/classes/queue-base.js +0 -68
  614. package/dist/classes/queue-base.js.map +0 -1
  615. package/dist/classes/queue-events.d.ts +0 -8
  616. package/dist/classes/queue-events.js +0 -59
  617. package/dist/classes/queue-events.js.map +0 -1
  618. package/dist/classes/queue-getters.d.ts +0 -38
  619. package/dist/classes/queue-getters.js +0 -182
  620. package/dist/classes/queue-getters.js.map +0 -1
  621. package/dist/classes/queue-keeper.js +0 -103
  622. package/dist/classes/queue-keeper.js.map +0 -1
  623. package/dist/classes/queue-scheduler.d.ts +0 -25
  624. package/dist/classes/queue-scheduler.js +0 -96
  625. package/dist/classes/queue-scheduler.js.map +0 -1
  626. package/dist/classes/queue.d.ts +0 -46
  627. package/dist/classes/queue.js +0 -122
  628. package/dist/classes/queue.js.map +0 -1
  629. package/dist/classes/redis-connection.d.ts +0 -17
  630. package/dist/classes/redis-connection.js +0 -97
  631. package/dist/classes/redis-connection.js.map +0 -1
  632. package/dist/classes/repeat.d.ts +0 -26
  633. package/dist/classes/repeat.js +0 -128
  634. package/dist/classes/repeat.js.map +0 -1
  635. package/dist/classes/sandbox.d.ts +0 -2
  636. package/dist/classes/sandbox.js.map +0 -1
  637. package/dist/classes/scripts.d.ts +0 -43
  638. package/dist/classes/scripts.js +0 -296
  639. package/dist/classes/scripts.js.map +0 -1
  640. package/dist/classes/worker.d.ts +0 -38
  641. package/dist/classes/worker.js +0 -231
  642. package/dist/classes/worker.js.map +0 -1
  643. package/dist/commands/addJob-8.lua +0 -106
  644. package/dist/commands/cleanJobsInSet-1.lua +0 -48
  645. package/dist/commands/index.d.ts +0 -2
  646. package/dist/commands/index.js +0 -42
  647. package/dist/commands/index.js.map +0 -1
  648. package/dist/commands/isFinished-2.lua +0 -22
  649. package/dist/commands/isJobInList-1.lua +0 -20
  650. package/dist/commands/moveStalledJobsToWait-8.lua +0 -91
  651. package/dist/commands/moveToActive-8.lua +0 -79
  652. package/dist/commands/moveToDelayed-5.lua +0 -39
  653. package/dist/commands/moveToFinished-6.lua +0 -87
  654. package/dist/commands/moveToFinished-7.lua +0 -92
  655. package/dist/commands/pause-4.lua +0 -27
  656. package/dist/commands/promote-4.lua +0 -49
  657. package/dist/commands/releaseLock-1.lua +0 -19
  658. package/dist/commands/removeJob-10.lua +0 -37
  659. package/dist/commands/reprocessJob-4.lua +0 -36
  660. package/dist/commands/retryJob-4.lua +0 -34
  661. package/dist/commands/takeLock-1.lua +0 -17
  662. package/dist/commands/updateDelaySet-7.lua +0 -71
  663. package/dist/commands/updateProgress-2.lua +0 -15
  664. package/dist/enums/index.d.ts +0 -1
  665. package/dist/enums/index.js +0 -5
  666. package/dist/enums/index.js.map +0 -1
  667. package/dist/enums/retry-errors.enum.d.ts +0 -5
  668. package/dist/enums/retry-errors.enum.js +0 -9
  669. package/dist/enums/retry-errors.enum.js.map +0 -1
  670. package/dist/index.js.map +0 -1
  671. package/dist/interfaces/advance-opts.js +0 -12
  672. package/dist/interfaces/advance-opts.js.map +0 -1
  673. package/dist/interfaces/advanced-options.d.ts +0 -9
  674. package/dist/interfaces/advanced-options.js +0 -11
  675. package/dist/interfaces/advanced-options.js.map +0 -1
  676. package/dist/interfaces/advanced-opts.js +0 -11
  677. package/dist/interfaces/advanced-opts.js.map +0 -1
  678. package/dist/interfaces/backoff-options.d.ts +0 -4
  679. package/dist/interfaces/backoff-options.js.map +0 -1
  680. package/dist/interfaces/backoff-opts.js.map +0 -1
  681. package/dist/interfaces/index.d.ts +0 -9
  682. package/dist/interfaces/index.js +0 -6
  683. package/dist/interfaces/index.js.map +0 -1
  684. package/dist/interfaces/jobs-options.d.ts +0 -16
  685. package/dist/interfaces/jobs-options.js.map +0 -1
  686. package/dist/interfaces/jobs-opts.js.map +0 -1
  687. package/dist/interfaces/queue-keeper-opts.js +0 -3
  688. package/dist/interfaces/queue-keeper-opts.js.map +0 -1
  689. package/dist/interfaces/queue-options.d.ts +0 -24
  690. package/dist/interfaces/queue-options.js.map +0 -1
  691. package/dist/interfaces/queue-opts.js +0 -8
  692. package/dist/interfaces/queue-opts.js.map +0 -1
  693. package/dist/interfaces/queue-scheduler-options.d.ts +0 -5
  694. package/dist/interfaces/queue-scheduler-options.js +0 -3
  695. package/dist/interfaces/queue-scheduler-options.js.map +0 -1
  696. package/dist/interfaces/queue-scheduler-opts.js +0 -3
  697. package/dist/interfaces/queue-scheduler-opts.js.map +0 -1
  698. package/dist/interfaces/rate-limiter-options.d.ts +0 -4
  699. package/dist/interfaces/rate-limiter-options.js.map +0 -1
  700. package/dist/interfaces/rate-limiter-opts.js +0 -3
  701. package/dist/interfaces/rate-limiter-opts.js.map +0 -1
  702. package/dist/interfaces/redis-options.d.ts +0 -7
  703. package/dist/interfaces/redis-options.js.map +0 -1
  704. package/dist/interfaces/redis-opts.js.map +0 -1
  705. package/dist/interfaces/repeat-options.d.ts +0 -11
  706. package/dist/interfaces/repeat-options.js.map +0 -1
  707. package/dist/interfaces/repeat-opts.js.map +0 -1
  708. package/dist/interfaces/worker-options.d.ts +0 -11
  709. package/dist/interfaces/worker-options.js.map +0 -1
  710. package/dist/interfaces/worker-opts.js.map +0 -1
  711. package/dist/test/test_bulk.js +0 -55
  712. package/dist/test/test_bulk.js.map +0 -1
  713. package/dist/test/test_child-pool.js +0 -81
  714. package/dist/test/test_child-pool.js.map +0 -1
  715. package/dist/test/test_clean.js +0 -124
  716. package/dist/test/test_clean.js.map +0 -1
  717. package/dist/test/test_compat.d.ts +0 -1
  718. package/dist/test/test_compat.js +0 -533
  719. package/dist/test/test_compat.js.map +0 -1
  720. package/dist/test/test_connection.d.ts +0 -1
  721. package/dist/test/test_connection.js +0 -140
  722. package/dist/test/test_connection.js.map +0 -1
  723. package/dist/test/test_delay.d.ts +0 -1
  724. package/dist/test/test_delay.js +0 -186
  725. package/dist/test/test_delay.js.map +0 -1
  726. package/dist/test/test_events.d.ts +0 -1
  727. package/dist/test/test_events.js +0 -147
  728. package/dist/test/test_events.js.map +0 -1
  729. package/dist/test/test_getters.d.ts +0 -1
  730. package/dist/test/test_getters.js +0 -293
  731. package/dist/test/test_getters.js.map +0 -1
  732. package/dist/test/test_job.d.ts +0 -1
  733. package/dist/test/test_job.js +0 -419
  734. package/dist/test/test_job.js.map +0 -1
  735. package/dist/test/test_pause.d.ts +0 -1
  736. package/dist/test/test_pause.js +0 -255
  737. package/dist/test/test_pause.js.map +0 -1
  738. package/dist/test/test_queue.d.ts +0 -0
  739. package/dist/test/test_queue.js +0 -72
  740. package/dist/test/test_queue.js.map +0 -1
  741. package/dist/test/test_rate_limiter.d.ts +0 -1
  742. package/dist/test/test_rate_limiter.js +0 -98
  743. package/dist/test/test_rate_limiter.js.map +0 -1
  744. package/dist/test/test_repeat.d.ts +0 -1
  745. package/dist/test/test_repeat.js +0 -602
  746. package/dist/test/test_repeat.js.map +0 -1
  747. package/dist/test/test_sandboxed_process.d.ts +0 -1
  748. package/dist/test/test_sandboxed_process.js +0 -319
  749. package/dist/test/test_sandboxed_process.js.map +0 -1
  750. package/dist/test/test_stalled_jobs.d.ts +0 -1
  751. package/dist/test/test_stalled_jobs.js +0 -107
  752. package/dist/test/test_stalled_jobs.js.map +0 -1
  753. package/dist/test/test_worker.d.ts +0 -1
  754. package/dist/test/test_worker.js +0 -1182
  755. package/dist/test/test_worker.js.map +0 -1
  756. package/dist/utils.d.ts +0 -8
  757. package/dist/utils.js +0 -31
  758. package/dist/utils.js.map +0 -1
  759. package/release.txt +0 -21
  760. package/src/classes/backoffs.ts +0 -67
  761. package/src/classes/child-pool.ts +0 -119
  762. package/src/classes/compat.ts +0 -890
  763. package/src/classes/index.ts +0 -13
  764. package/src/classes/job.ts +0 -495
  765. package/src/classes/master.ts +0 -113
  766. package/src/classes/queue-base.ts +0 -87
  767. package/src/classes/queue-events.ts +0 -78
  768. package/src/classes/queue-getters.ts +0 -213
  769. package/src/classes/queue-scheduler.ts +0 -125
  770. package/src/classes/queue.ts +0 -180
  771. package/src/classes/redis-connection.ts +0 -111
  772. package/src/classes/repeat.ts +0 -217
  773. package/src/classes/sandbox.ts +0 -60
  774. package/src/classes/scripts.ts +0 -468
  775. package/src/classes/worker.ts +0 -288
  776. package/src/commands/addJob-8.lua +0 -106
  777. package/src/commands/cleanJobsInSet-1.lua +0 -48
  778. package/src/commands/index.ts +0 -62
  779. package/src/commands/isFinished-2.lua +0 -22
  780. package/src/commands/isJobInList-1.lua +0 -20
  781. package/src/commands/moveStalledJobsToWait-8.lua +0 -91
  782. package/src/commands/moveToActive-8.lua +0 -79
  783. package/src/commands/moveToDelayed-5.lua +0 -39
  784. package/src/commands/moveToFinished-7.lua +0 -92
  785. package/src/commands/pause-4.lua +0 -27
  786. package/src/commands/promote-4.lua +0 -49
  787. package/src/commands/releaseLock-1.lua +0 -19
  788. package/src/commands/removeJob-10.lua +0 -37
  789. package/src/commands/reprocessJob-4.lua +0 -36
  790. package/src/commands/retryJob-4.lua +0 -34
  791. package/src/commands/takeLock-1.lua +0 -17
  792. package/src/commands/updateDelaySet-7.lua +0 -71
  793. package/src/commands/updateProgress-2.lua +0 -15
  794. package/src/enums/index.ts +0 -1
  795. package/src/enums/retry-errors.enum.ts +0 -5
  796. package/src/interfaces/advanced-options.ts +0 -28
  797. package/src/interfaces/backoff-options.ts +0 -4
  798. package/src/interfaces/index.ts +0 -9
  799. package/src/interfaces/jobs-options.ts +0 -53
  800. package/src/interfaces/queue-options.ts +0 -30
  801. package/src/interfaces/queue-scheduler-options.ts +0 -6
  802. package/src/interfaces/rate-limiter-options.ts +0 -7
  803. package/src/interfaces/redis-options.ts +0 -9
  804. package/src/interfaces/repeat-options.ts +0 -19
  805. package/src/interfaces/worker-options.ts +0 -13
  806. package/src/test/fixtures/fixture_processor.js +0 -13
  807. package/src/test/fixtures/fixture_processor_bar.js +0 -13
  808. package/src/test/fixtures/fixture_processor_crash.js +0 -16
  809. package/src/test/fixtures/fixture_processor_exit.js +0 -15
  810. package/src/test/fixtures/fixture_processor_fail.js +0 -13
  811. package/src/test/fixtures/fixture_processor_foo.js +0 -13
  812. package/src/test/fixtures/fixture_processor_progress.js +0 -29
  813. package/src/test/fixtures/fixture_processor_slow.js +0 -13
  814. package/src/test/test_bulk.ts +0 -59
  815. package/src/test/test_child-pool.ts +0 -88
  816. package/src/test/test_clean.ts +0 -148
  817. package/src/test/test_compat.ts +0 -640
  818. package/src/test/test_connection.ts +0 -159
  819. package/src/test/test_delay.ts +0 -220
  820. package/src/test/test_events.ts +0 -198
  821. package/src/test/test_getters.ts +0 -348
  822. package/src/test/test_job.ts +0 -524
  823. package/src/test/test_pause.ts +0 -313
  824. package/src/test/test_queue.ts +0 -70
  825. package/src/test/test_rate_limiter.ts +0 -113
  826. package/src/test/test_repeat.ts +0 -783
  827. package/src/test/test_sandboxed_process.ts +0 -380
  828. package/src/test/test_stalled_jobs.ts +0 -146
  829. package/src/test/test_worker.ts +0 -1503
  830. package/src/utils.ts +0 -28
  831. package/tsconfig.json +0 -25
  832. package/tslint.json +0 -23
  833. /package/dist/{classes/master.d.ts → cjs/classes/main-worker.d.ts} +0 -0
  834. /package/dist/{test/test_bulk.d.ts → cjs/classes/main.d.ts} +0 -0
  835. /package/dist/{interfaces → cjs/interfaces}/backoff-options.js +0 -0
  836. /package/dist/{interfaces → cjs/interfaces}/rate-limiter-options.js +0 -0
  837. /package/dist/{interfaces → cjs/interfaces}/redis-options.js +0 -0
  838. /package/dist/{interfaces → cjs/interfaces}/repeat-options.js +0 -0
  839. /package/dist/{interfaces → cjs/interfaces}/worker-options.js +0 -0
  840. /package/dist/{test/test_child-pool.d.ts → esm/classes/main-worker.d.ts} +0 -0
  841. /package/dist/{test/test_clean.d.ts → esm/classes/main.d.ts} +0 -0
@@ -0,0 +1,624 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.moveToFinished = void 0;
4
+ const content = `--[[
5
+ Move job from active to a finished status (completed o failed)
6
+ A job can only be moved to completed if it was active.
7
+ The job must be locked before it can be moved to a finished status,
8
+ and the lock must be released in this script.
9
+ Input:
10
+ KEYS[1] wait key
11
+ KEYS[2] active key
12
+ KEYS[3] prioritized key
13
+ KEYS[4] event stream key
14
+ KEYS[5] stalled key
15
+ -- Rate limiting
16
+ KEYS[6] rate limiter key
17
+ KEYS[7] delayed key
18
+ KEYS[8] paused key
19
+ KEYS[9] meta key
20
+ KEYS[10] pc priority counter
21
+ KEYS[11] completed/failed key
22
+ KEYS[12] jobId key
23
+ KEYS[13] metrics key
24
+ ARGV[1] jobId
25
+ ARGV[2] timestamp
26
+ ARGV[3] msg property returnvalue / failedReason
27
+ ARGV[4] return value / failed reason
28
+ ARGV[5] target (completed/failed)
29
+ ARGV[6] event data (? maybe just send jobid).
30
+ ARGV[7] fetch next?
31
+ ARGV[8] keys prefix
32
+ ARGV[9] opts
33
+ opts - token - lock token
34
+ opts - keepJobs
35
+ opts - lockDuration - lock duration in milliseconds
36
+ opts - attempts max attempts
37
+ opts - attemptsMade
38
+ opts - maxMetricsSize
39
+ opts - fpof - fail parent on fail
40
+ Output:
41
+ 0 OK
42
+ -1 Missing key.
43
+ -2 Missing lock.
44
+ -3 Job not in active set
45
+ -4 Job has pending dependencies
46
+ -6 Lock is not owned by this client
47
+ Events:
48
+ 'completed/failed'
49
+ ]]
50
+ local rcall = redis.call
51
+ --- Includes
52
+ --[[
53
+ Functions to collect metrics based on a current and previous count of jobs.
54
+ Granualarity is fixed at 1 minute.
55
+ ]]
56
+ --[[
57
+ Function to loop in batches.
58
+ Just a bit of warning, some commands as ZREM
59
+ could receive a maximum of 7000 parameters per call.
60
+ ]]
61
+ local function batches(n, batchSize)
62
+ local i = 0
63
+ return function()
64
+ local from = i * batchSize + 1
65
+ i = i + 1
66
+ if (from <= n) then
67
+ local to = math.min(from + batchSize - 1, n)
68
+ return from, to
69
+ end
70
+ end
71
+ end
72
+ local function collectMetrics(metaKey, dataPointsList, maxDataPoints,
73
+ timestamp)
74
+ -- Increment current count
75
+ local count = rcall("HINCRBY", metaKey, "count", 1) - 1
76
+ -- Compute how many data points we need to add to the list, N.
77
+ local prevTS = rcall("HGET", metaKey, "prevTS")
78
+ if not prevTS then
79
+ -- If prevTS is nil, set it to the current timestamp
80
+ rcall("HSET", metaKey, "prevTS", timestamp, "prevCount", 0)
81
+ return
82
+ end
83
+ local N = math.floor((timestamp - prevTS) / 60000)
84
+ if N > 0 then
85
+ local delta = count - rcall("HGET", metaKey, "prevCount")
86
+ -- If N > 1, add N-1 zeros to the list
87
+ if N > 1 then
88
+ local points = {}
89
+ points[1] = delta
90
+ for i = 2, N do
91
+ points[i] = 0
92
+ end
93
+ for from, to in batches(#points, 7000) do
94
+ rcall("LPUSH", dataPointsList, unpack(points, from, to))
95
+ end
96
+ else
97
+ -- LPUSH delta to the list
98
+ rcall("LPUSH", dataPointsList, delta)
99
+ end
100
+ -- LTRIM to keep list to its max size
101
+ rcall("LTRIM", dataPointsList, 0, maxDataPoints - 1)
102
+ -- update prev count with current count
103
+ rcall("HSET", metaKey, "prevCount", count, "prevTS", timestamp)
104
+ end
105
+ end
106
+ --[[
107
+ Function to return the next delayed job timestamp.
108
+ ]]
109
+ local function getNextDelayedTimestamp(delayedKey)
110
+ local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
111
+ if #result then
112
+ local nextTimestamp = tonumber(result[2])
113
+ if (nextTimestamp ~= nil) then
114
+ nextTimestamp = nextTimestamp / 0x1000
115
+ end
116
+ return nextTimestamp
117
+ end
118
+ end
119
+ --[[
120
+ Function to move job from prioritized state to active.
121
+ ]]
122
+ local function moveJobFromPriorityToActive(priorityKey, activeKey, priorityCounterKey)
123
+ local prioritizedJob = rcall("ZPOPMIN", priorityKey)
124
+ if #prioritizedJob > 0 then
125
+ rcall("LPUSH", activeKey, prioritizedJob[1])
126
+ return prioritizedJob[1]
127
+ else
128
+ rcall("DEL", priorityCounterKey)
129
+ end
130
+ end
131
+ --[[
132
+ Function to move job from wait state to active.
133
+ Input:
134
+ keys[1] wait key
135
+ keys[2] active key
136
+ keys[3] prioritized key
137
+ keys[4] stream events key
138
+ keys[5] stalled key
139
+ -- Rate limiting
140
+ keys[6] rate limiter key
141
+ keys[7] delayed key
142
+ keys[8] paused key
143
+ keys[9] meta key
144
+ keys[10] pc priority counter
145
+ opts - token - lock token
146
+ opts - lockDuration
147
+ opts - limiter
148
+ ]]
149
+ -- Includes
150
+ --[[
151
+ Function to add job considering priority.
152
+ ]]
153
+ -- Includes
154
+ --[[
155
+ Function priority marker to wait if needed
156
+ in order to wake up our workers and to respect priority
157
+ order as much as possible
158
+ ]]
159
+ local function addPriorityMarkerIfNeeded(waitKey)
160
+ local waitLen = rcall("LLEN", waitKey)
161
+ if waitLen == 0 then
162
+ rcall("LPUSH", waitKey, "0:0")
163
+ end
164
+ end
165
+ local function addJobWithPriority(waitKey, prioritizedKey, priority, paused, jobId, priorityCounterKey)
166
+ local prioCounter = rcall("INCR", priorityCounterKey)
167
+ local score = priority * 0x100000000 + bit.band(prioCounter, 0xffffffffffff)
168
+ rcall("ZADD", prioritizedKey, score, jobId)
169
+ if not paused then
170
+ addPriorityMarkerIfNeeded(waitKey)
171
+ end
172
+ end
173
+ --[[
174
+ Function to push back job considering priority in front of same prioritized jobs.
175
+ ]]
176
+ local function pushBackJobWithPriority(prioritizedKey, priority, jobId)
177
+ -- in order to put it at front of same prioritized jobs
178
+ -- we consider prioritized counter as 0
179
+ local score = priority * 0x100000000
180
+ rcall("ZADD", prioritizedKey, score, jobId)
181
+ end
182
+ local function prepareJobForProcessing(keys, keyPrefix, targetKey, jobId, processedOn,
183
+ maxJobs, expireTime, paused, opts)
184
+ local jobKey = keyPrefix .. jobId
185
+ -- Check if we need to perform rate limiting.
186
+ if maxJobs then
187
+ local rateLimiterKey = keys[6];
188
+ -- check if we exceeded rate limit, we need to remove the job and return expireTime
189
+ if expireTime > 0 then
190
+ -- remove from active queue and add back to the wait list
191
+ rcall("LREM", keys[2], 1, jobId)
192
+ local priority = tonumber(rcall("HGET", jobKey, "priority")) or 0
193
+ if priority == 0 then
194
+ rcall("RPUSH", targetKey, jobId)
195
+ else
196
+ pushBackJobWithPriority(keys[3], priority, jobId)
197
+ end
198
+ -- Return when we can process more jobs
199
+ return {0, 0, expireTime, 0}
200
+ end
201
+ local jobCounter = tonumber(rcall("INCR", rateLimiterKey))
202
+ if jobCounter == 1 then
203
+ local limiterDuration = opts['limiter'] and opts['limiter']['duration']
204
+ local integerDuration = math.floor(math.abs(limiterDuration))
205
+ rcall("PEXPIRE", rateLimiterKey, integerDuration)
206
+ end
207
+ end
208
+ local lockKey = jobKey .. ':lock'
209
+ -- get a lock
210
+ if opts['token'] ~= "0" then
211
+ rcall("SET", lockKey, opts['token'], "PX", opts['lockDuration'])
212
+ end
213
+ rcall("XADD", keys[4], "*", "event", "active", "jobId", jobId, "prev", "waiting")
214
+ rcall("HSET", jobKey, "processedOn", processedOn)
215
+ rcall("HINCRBY", jobKey, "attemptsMade", 1)
216
+ return {rcall("HGETALL", jobKey), jobId, 0, 0} -- get job data
217
+ end
218
+ --[[
219
+ Function to recursively move from waitingChildren to failed.
220
+ ]]
221
+ local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
222
+ if rcall("ZREM", parentQueueKey .. ":waiting-children", parentId) == 1 then
223
+ rcall("ZADD", parentQueueKey .. ":failed", timestamp, parentId)
224
+ local failedReason = "child " .. jobIdKey .. " failed"
225
+ rcall("HMSET", parentKey, "failedReason", failedReason, "finishedOn", timestamp)
226
+ rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
227
+ failedReason, "prev", "waiting-children")
228
+ local rawParentData = rcall("HGET", parentKey, "parent")
229
+ if rawParentData ~= false then
230
+ local parentData = cjson.decode(rawParentData)
231
+ if parentData['fpof'] then
232
+ moveParentFromWaitingChildrenToFailed(
233
+ parentData['queueKey'],
234
+ parentData['queueKey'] .. ':' .. parentData['id'],
235
+ parentData['id'],
236
+ parentKey,
237
+ timestamp
238
+ )
239
+ end
240
+ end
241
+ end
242
+ end
243
+ --[[
244
+ Updates the delay set, by moving delayed jobs that should
245
+ be processed now to "wait".
246
+ Events:
247
+ 'waiting'
248
+ ]]
249
+ -- Includes
250
+ -- Try to get as much as 1000 jobs at once
251
+ local function promoteDelayedJobs(delayedKey, waitKey, targetKey, prioritizedKey,
252
+ eventStreamKey, prefix, timestamp, paused, priorityCounterKey)
253
+ local jobs = rcall("ZRANGEBYSCORE", delayedKey, 0, (timestamp + 1) * 0x1000, "LIMIT", 0, 1000)
254
+ if (#jobs > 0) then
255
+ rcall("ZREM", delayedKey, unpack(jobs))
256
+ for _, jobId in ipairs(jobs) do
257
+ local jobKey = prefix .. jobId
258
+ local priority =
259
+ tonumber(rcall("HGET", jobKey, "priority")) or 0
260
+ if priority == 0 then
261
+ -- LIFO or FIFO
262
+ rcall("LPUSH", targetKey, jobId)
263
+ else
264
+ addJobWithPriority(waitKey, prioritizedKey, priority, paused,
265
+ jobId, priorityCounterKey)
266
+ end
267
+ -- Emit waiting event
268
+ rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
269
+ jobId, "prev", "delayed")
270
+ rcall("HSET", jobKey, "delay", 0)
271
+ end
272
+ end
273
+ end
274
+ --[[
275
+ Functions to remove jobs by max age.
276
+ ]]
277
+ -- Includes
278
+ --[[
279
+ Function to remove job.
280
+ ]]
281
+ -- Includes
282
+ --[[
283
+ Check if this job has a parent. If so we will just remove it from
284
+ the parent child list, but if it is the last child we should move the parent to "wait/paused"
285
+ which requires code from "moveToFinished"
286
+ ]]
287
+ --[[
288
+ Functions to destructure job key.
289
+ Just a bit of warning, these functions may be a bit slow and affect performance significantly.
290
+ ]]
291
+ local getJobIdFromKey = function (jobKey)
292
+ return string.match(jobKey, ".*:(.*)")
293
+ end
294
+ local getJobKeyPrefix = function (jobKey, jobId)
295
+ return string.sub(jobKey, 0, #jobKey - #jobId)
296
+ end
297
+ --[[
298
+ Function to check for the meta.paused key to decide if we are paused or not
299
+ (since an empty list and !EXISTS are not really the same).
300
+ ]]
301
+ local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
302
+ if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
303
+ return waitKey, false
304
+ else
305
+ return pausedKey, true
306
+ end
307
+ end
308
+ local function moveParentToWait(parentPrefix, parentId, emitEvent)
309
+ local parentTarget = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "wait", parentPrefix .. "paused")
310
+ rcall("RPUSH", parentTarget, parentId)
311
+ if emitEvent then
312
+ local parentEventStream = parentPrefix .. "events"
313
+ rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
314
+ end
315
+ end
316
+ local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey)
317
+ if parentKey then
318
+ local parentDependenciesKey = parentKey .. ":dependencies"
319
+ local result = rcall("SREM", parentDependenciesKey, jobKey)
320
+ if result > 0 then
321
+ local pendingDependencies = rcall("SCARD", parentDependenciesKey)
322
+ if pendingDependencies == 0 then
323
+ local parentId = getJobIdFromKey(parentKey)
324
+ local parentPrefix = getJobKeyPrefix(parentKey, parentId)
325
+ local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
326
+ if numRemovedElements == 1 then
327
+ if hard then
328
+ if parentPrefix == baseKey then
329
+ removeParentDependencyKey(parentKey, hard, nil, baseKey)
330
+ rcall("DEL", parentKey, parentKey .. ':logs',
331
+ parentKey .. ':dependencies', parentKey .. ':processed')
332
+ else
333
+ moveParentToWait(parentPrefix, parentId)
334
+ end
335
+ else
336
+ moveParentToWait(parentPrefix, parentId, true)
337
+ end
338
+ end
339
+ end
340
+ end
341
+ else
342
+ local missedParentKey = rcall("HGET", jobKey, "parentKey")
343
+ if( (type(missedParentKey) == "string") and missedParentKey ~= "" and (rcall("EXISTS", missedParentKey) == 1)) then
344
+ local parentDependenciesKey = missedParentKey .. ":dependencies"
345
+ local result = rcall("SREM", parentDependenciesKey, jobKey)
346
+ if result > 0 then
347
+ local pendingDependencies = rcall("SCARD", parentDependenciesKey)
348
+ if pendingDependencies == 0 then
349
+ local parentId = getJobIdFromKey(missedParentKey)
350
+ local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
351
+ local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
352
+ if numRemovedElements == 1 then
353
+ if hard then
354
+ if parentPrefix == baseKey then
355
+ removeParentDependencyKey(missedParentKey, hard, nil, baseKey)
356
+ rcall("DEL", missedParentKey, missedParentKey .. ':logs',
357
+ missedParentKey .. ':dependencies', missedParentKey .. ':processed')
358
+ else
359
+ moveParentToWait(parentPrefix, parentId)
360
+ end
361
+ else
362
+ moveParentToWait(parentPrefix, parentId, true)
363
+ end
364
+ end
365
+ end
366
+ end
367
+ end
368
+ end
369
+ end
370
+ local function removeJob(jobId, hard, baseKey)
371
+ local jobKey = baseKey .. jobId
372
+ removeParentDependencyKey(jobKey, hard, nil, baseKey)
373
+ rcall("DEL", jobKey, jobKey .. ':logs',
374
+ jobKey .. ':dependencies', jobKey .. ':processed')
375
+ end
376
+ local function removeJobsByMaxAge(timestamp, maxAge, targetSet, prefix)
377
+ local start = timestamp - maxAge * 1000
378
+ local jobIds = rcall("ZREVRANGEBYSCORE", targetSet, start, "-inf")
379
+ for i, jobId in ipairs(jobIds) do
380
+ removeJob(jobId, false, prefix)
381
+ end
382
+ rcall("ZREMRANGEBYSCORE", targetSet, "-inf", start)
383
+ end
384
+ --[[
385
+ Functions to remove jobs by max count.
386
+ ]]
387
+ -- Includes
388
+ local function removeJobsByMaxCount(maxCount, targetSet, prefix)
389
+ local start = maxCount
390
+ local jobIds = rcall("ZREVRANGE", targetSet, start, -1)
391
+ for i, jobId in ipairs(jobIds) do
392
+ removeJob(jobId, false, prefix)
393
+ end
394
+ rcall("ZREMRANGEBYRANK", targetSet, 0, -(maxCount + 1))
395
+ end
396
+ --[[
397
+ Function to trim events, default 10000.
398
+ ]]
399
+ local function trimEvents(metaKey, eventStreamKey)
400
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
401
+ if maxEvents ~= false then
402
+ rcall("XTRIM", eventStreamKey, "MAXLEN", "~", maxEvents)
403
+ else
404
+ rcall("XTRIM", eventStreamKey, "MAXLEN", "~", 10000)
405
+ end
406
+ end
407
+ --[[
408
+ Validate and move or add dependencies to parent.
409
+ ]]
410
+ -- Includes
411
+ --[[
412
+ Add delay marker if needed.
413
+ ]]
414
+ -- Includes
415
+ local function addDelayMarkerIfNeeded(targetKey, delayedKey)
416
+ if rcall("LLEN", targetKey) == 0 then
417
+ local nextTimestamp = getNextDelayedTimestamp(delayedKey)
418
+ if nextTimestamp ~= nil then
419
+ rcall("LPUSH", targetKey, "0:" .. nextTimestamp)
420
+ end
421
+ end
422
+ end
423
+ local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
424
+ parentId, jobIdKey, returnvalue, timestamp )
425
+ local processedSet = parentKey .. ":processed"
426
+ rcall("HSET", processedSet, jobIdKey, returnvalue)
427
+ local activeParent = rcall("ZSCORE", parentQueueKey .. ":waiting-children", parentId)
428
+ if rcall("SCARD", parentDependenciesKey) == 0 and activeParent then
429
+ rcall("ZREM", parentQueueKey .. ":waiting-children", parentId)
430
+ local parentWaitKey = parentQueueKey .. ":wait"
431
+ local parentTarget, paused = getTargetQueueList(parentQueueKey .. ":meta", parentWaitKey,
432
+ parentQueueKey .. ":paused")
433
+ local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
434
+ local priority = tonumber(jobAttributes[1]) or 0
435
+ local delay = tonumber(jobAttributes[2]) or 0
436
+ if delay > 0 then
437
+ local delayedTimestamp = tonumber(timestamp) + delay
438
+ local score = delayedTimestamp * 0x1000
439
+ local parentDelayedKey = parentQueueKey .. ":delayed"
440
+ rcall("ZADD", parentDelayedKey, score, parentId)
441
+ addDelayMarkerIfNeeded(parentTarget, parentDelayedKey)
442
+ -- Standard or priority add
443
+ elseif priority == 0 then
444
+ rcall("RPUSH", parentTarget, parentId)
445
+ else
446
+ addJobWithPriority(parentWaitKey, parentQueueKey .. ":prioritized", priority, paused,
447
+ parentId, parentQueueKey .. ":pc")
448
+ end
449
+ rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
450
+ end
451
+ end
452
+ local function getRateLimitTTL(maxJobs, rateLimiterKey)
453
+ if maxJobs then
454
+ local pttl = rcall("PTTL", rateLimiterKey)
455
+ if pttl == 0 then
456
+ rcall("DEL", rateLimiterKey)
457
+ end
458
+ local jobCounter = tonumber(rcall("GET", rateLimiterKey) or 0)
459
+ if jobCounter >= maxJobs then
460
+ if pttl > 0 then
461
+ return pttl
462
+ end
463
+ end
464
+ end
465
+ return 0
466
+ end
467
+ local jobIdKey = KEYS[12]
468
+ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
469
+ local opts = cmsgpack.unpack(ARGV[9])
470
+ local token = opts['token']
471
+ local attempts = opts['attempts']
472
+ local attemptsMade = opts['attemptsMade']
473
+ local maxMetricsSize = opts['maxMetricsSize']
474
+ local maxCount = opts['keepJobs']['count']
475
+ local maxAge = opts['keepJobs']['age']
476
+ if token ~= "0" then
477
+ local lockKey = jobIdKey .. ':lock'
478
+ local lockToken = rcall("GET", lockKey)
479
+ if lockToken == token then
480
+ rcall("DEL", lockKey)
481
+ rcall("SREM", KEYS[5], ARGV[1])
482
+ else
483
+ if lockToken then
484
+ -- Lock exists but token does not match
485
+ return -6
486
+ else
487
+ -- Lock is missing completely
488
+ return -2
489
+ end
490
+ end
491
+ end
492
+ if rcall("SCARD", jobIdKey .. ":dependencies") ~= 0 then -- // Make sure it does not have pending dependencies
493
+ return -4
494
+ end
495
+ local parentReferences = rcall("HMGET", jobIdKey, "parentKey", "parent")
496
+ local parentKey = parentReferences[1] or ""
497
+ local parentId = ""
498
+ local parentQueueKey = ""
499
+ if parentReferences[2] ~= false then
500
+ local jsonDecodedParent = cjson.decode(parentReferences[2])
501
+ parentId = jsonDecodedParent['id']
502
+ parentQueueKey = jsonDecodedParent['queueKey']
503
+ end
504
+ local jobId = ARGV[1]
505
+ local timestamp = ARGV[2]
506
+ -- Remove from active list (if not active we shall return error)
507
+ local numRemovedElements = rcall("LREM", KEYS[2], -1, jobId)
508
+ if (numRemovedElements < 1) then return -3 end
509
+ -- Trim events before emiting them to avoid trimming events emitted in this script
510
+ trimEvents(KEYS[9], KEYS[4])
511
+ -- If job has a parent we need to
512
+ -- 1) remove this job id from parents dependencies
513
+ -- 2) move the job Id to parent "processed" set
514
+ -- 3) push the results into parent "results" list
515
+ -- 4) if parent's dependencies is empty, then move parent to "wait/paused". Note it may be a different queue!.
516
+ if parentId == "" and parentKey ~= "" then
517
+ parentId = getJobIdFromKey(parentKey)
518
+ parentQueueKey = getJobKeyPrefix(parentKey, ":" .. parentId)
519
+ end
520
+ if parentId ~= "" then
521
+ if ARGV[5] == "completed" then
522
+ local dependenciesSet = parentKey .. ":dependencies"
523
+ if rcall("SREM", dependenciesSet, jobIdKey) == 1 then
524
+ updateParentDepsIfNeeded(parentKey, parentQueueKey,
525
+ dependenciesSet, parentId, jobIdKey,
526
+ ARGV[4], timestamp)
527
+ end
528
+ elseif opts['fpof'] then
529
+ moveParentFromWaitingChildrenToFailed(parentQueueKey, parentKey,
530
+ parentId, jobIdKey, timestamp)
531
+ end
532
+ end
533
+ -- Remove job?
534
+ if maxCount ~= 0 then
535
+ local targetSet = KEYS[11]
536
+ -- Add to complete/failed set
537
+ rcall("ZADD", targetSet, timestamp, jobId)
538
+ rcall("HMSET", jobIdKey, ARGV[3], ARGV[4], "finishedOn", timestamp)
539
+ -- "returnvalue" / "failedReason" and "finishedOn"
540
+ -- Remove old jobs?
541
+ local prefix = ARGV[8]
542
+ if maxAge ~= nil then
543
+ removeJobsByMaxAge(timestamp, maxAge, targetSet, prefix)
544
+ end
545
+ if maxCount ~= nil and maxCount > 0 then
546
+ removeJobsByMaxCount(maxCount, targetSet, prefix)
547
+ end
548
+ else
549
+ rcall("DEL", jobIdKey, jobIdKey .. ':logs', jobIdKey .. ':processed')
550
+ if parentKey ~= "" then
551
+ removeParentDependencyKey(jobIdKey, false, parentKey)
552
+ end
553
+ end
554
+ rcall("XADD", KEYS[4], "*", "event", ARGV[5], "jobId", jobId, ARGV[3],
555
+ ARGV[4])
556
+ if ARGV[5] == "failed" then
557
+ if tonumber(attemptsMade) >= tonumber(attempts) then
558
+ rcall("XADD", KEYS[4], "*", "event", "retries-exhausted", "jobId",
559
+ jobId, "attemptsMade", attemptsMade)
560
+ end
561
+ end
562
+ -- Collect metrics
563
+ if maxMetricsSize ~= "" then
564
+ collectMetrics(KEYS[13], KEYS[13] .. ':data', maxMetricsSize, timestamp)
565
+ end
566
+ -- Try to get next job to avoid an extra roundtrip if the queue is not closing,
567
+ -- and not rate limited.
568
+ if (ARGV[7] == "1") then
569
+ local target, paused = getTargetQueueList(KEYS[9], KEYS[1], KEYS[8])
570
+ -- Check if there are delayed jobs that can be promoted
571
+ promoteDelayedJobs(KEYS[7], KEYS[1], target, KEYS[3],
572
+ KEYS[4], ARGV[8], timestamp, paused, KEYS[10])
573
+ local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
574
+ -- Check if we are rate limited first.
575
+ local expireTime = getRateLimitTTL(maxJobs, KEYS[6])
576
+ if expireTime > 0 then return {0, 0, expireTime, 0} end
577
+ -- paused queue
578
+ if paused then return {0, 0, 0, 0} end
579
+ jobId = rcall("RPOPLPUSH", KEYS[1], KEYS[2])
580
+ -- If jobId is special ID 0:delay, then there is no job to process
581
+ if jobId then
582
+ if string.sub(jobId, 1, 2) == "0:" then
583
+ rcall("LREM", KEYS[2], 1, jobId)
584
+ else
585
+ -- this script is not really moving, it is preparing the job for processing
586
+ return prepareJobForProcessing(KEYS, ARGV[8], target, jobId, timestamp, maxJobs,
587
+ expireTime, paused, opts)
588
+ end
589
+ else
590
+ jobId = moveJobFromPriorityToActive(KEYS[3], KEYS[2], KEYS[10])
591
+ if jobId then
592
+ return prepareJobForProcessing(KEYS, ARGV[8], target, jobId, timestamp, maxJobs,
593
+ expireTime, paused, opts)
594
+ end
595
+ end
596
+ -- Return the timestamp for the next delayed job if any.
597
+ local nextTimestamp = getNextDelayedTimestamp(KEYS[7])
598
+ if nextTimestamp ~= nil then
599
+ -- The result is guaranteed to be positive, since the
600
+ -- ZRANGEBYSCORE command would have return a job otherwise.
601
+ return {0, 0, 0, nextTimestamp}
602
+ end
603
+ end
604
+ local waitLen = rcall("LLEN", KEYS[1])
605
+ if waitLen == 0 then
606
+ local activeLen = rcall("LLEN", KEYS[2])
607
+ if activeLen == 0 then
608
+ local prioritizedLen = rcall("ZCARD", KEYS[3])
609
+ if prioritizedLen == 0 then
610
+ rcall("XADD", KEYS[4], "*", "event", "drained")
611
+ end
612
+ end
613
+ end
614
+ return 0
615
+ else
616
+ return -1
617
+ end
618
+ `;
619
+ exports.moveToFinished = {
620
+ name: 'moveToFinished',
621
+ content,
622
+ keys: 13,
623
+ };
624
+ //# sourceMappingURL=moveToFinished-13.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moveToFinished-13.js","sourceRoot":"","sources":["../../../src/scripts/moveToFinished-13.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsmBf,CAAC;AACW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.moveToWaitingChildren = void 0;
4
+ const content = `--[[
5
+ Moves job from active to waiting children set.
6
+ Input:
7
+ KEYS[1] lock key
8
+ KEYS[2] active key
9
+ KEYS[3] waitChildrenKey key
10
+ KEYS[4] job key
11
+ ARGV[1] token
12
+ ARGV[2] child key
13
+ ARGV[3] timestamp
14
+ ARGV[4] the id of the job
15
+ Output:
16
+ 0 - OK
17
+ 1 - There are not pending dependencies.
18
+ -1 - Missing job.
19
+ -2 - Missing lock
20
+ -3 - Job not in active set
21
+ ]]
22
+ local rcall = redis.call
23
+ local function moveToWaitingChildren (activeKey, waitingChildrenKey, jobId, timestamp, lockKey, token)
24
+ if token ~= "0" then
25
+ if rcall("GET", lockKey) == token then
26
+ rcall("DEL", lockKey)
27
+ else
28
+ return -2
29
+ end
30
+ end
31
+ local score = tonumber(timestamp)
32
+ local numRemovedElements = rcall("LREM", activeKey, -1, jobId)
33
+ if(numRemovedElements < 1) then
34
+ return -3
35
+ end
36
+ rcall("ZADD", waitingChildrenKey, score, jobId)
37
+ return 0
38
+ end
39
+ if rcall("EXISTS", KEYS[4]) == 1 then
40
+ if ARGV[2] ~= "" then
41
+ if rcall("SISMEMBER", KEYS[4] .. ":dependencies", ARGV[2]) ~= 0 then
42
+ return moveToWaitingChildren(KEYS[2], KEYS[3], ARGV[4], ARGV[3], KEYS[1], ARGV[1])
43
+ end
44
+ return 1
45
+ else
46
+ if rcall("SCARD", KEYS[4] .. ":dependencies") ~= 0 then
47
+ return moveToWaitingChildren(KEYS[2], KEYS[3], ARGV[4], ARGV[3], KEYS[1], ARGV[1])
48
+ end
49
+ return 1
50
+ end
51
+ end
52
+ return -1
53
+ `;
54
+ exports.moveToWaitingChildren = {
55
+ name: 'moveToWaitingChildren',
56
+ content,
57
+ keys: 4,
58
+ };
59
+ //# sourceMappingURL=moveToWaitingChildren-4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moveToWaitingChildren-4.js","sourceRoot":"","sources":["../../../src/scripts/moveToWaitingChildren-4.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDf,CAAC;AACW,QAAA,qBAAqB,GAAG;IACnC,IAAI,EAAE,uBAAuB;IAC7B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}