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,621 @@
1
+ const content = `--[[
2
+ Move job from active to a finished status (completed o failed)
3
+ A job can only be moved to completed if it was active.
4
+ The job must be locked before it can be moved to a finished status,
5
+ and the lock must be released in this script.
6
+ Input:
7
+ KEYS[1] wait key
8
+ KEYS[2] active key
9
+ KEYS[3] prioritized key
10
+ KEYS[4] event stream key
11
+ KEYS[5] stalled key
12
+ -- Rate limiting
13
+ KEYS[6] rate limiter key
14
+ KEYS[7] delayed key
15
+ KEYS[8] paused key
16
+ KEYS[9] meta key
17
+ KEYS[10] pc priority counter
18
+ KEYS[11] completed/failed key
19
+ KEYS[12] jobId key
20
+ KEYS[13] metrics key
21
+ ARGV[1] jobId
22
+ ARGV[2] timestamp
23
+ ARGV[3] msg property returnvalue / failedReason
24
+ ARGV[4] return value / failed reason
25
+ ARGV[5] target (completed/failed)
26
+ ARGV[6] event data (? maybe just send jobid).
27
+ ARGV[7] fetch next?
28
+ ARGV[8] keys prefix
29
+ ARGV[9] opts
30
+ opts - token - lock token
31
+ opts - keepJobs
32
+ opts - lockDuration - lock duration in milliseconds
33
+ opts - attempts max attempts
34
+ opts - attemptsMade
35
+ opts - maxMetricsSize
36
+ opts - fpof - fail parent on fail
37
+ Output:
38
+ 0 OK
39
+ -1 Missing key.
40
+ -2 Missing lock.
41
+ -3 Job not in active set
42
+ -4 Job has pending dependencies
43
+ -6 Lock is not owned by this client
44
+ Events:
45
+ 'completed/failed'
46
+ ]]
47
+ local rcall = redis.call
48
+ --- Includes
49
+ --[[
50
+ Functions to collect metrics based on a current and previous count of jobs.
51
+ Granualarity is fixed at 1 minute.
52
+ ]]
53
+ --[[
54
+ Function to loop in batches.
55
+ Just a bit of warning, some commands as ZREM
56
+ could receive a maximum of 7000 parameters per call.
57
+ ]]
58
+ local function batches(n, batchSize)
59
+ local i = 0
60
+ return function()
61
+ local from = i * batchSize + 1
62
+ i = i + 1
63
+ if (from <= n) then
64
+ local to = math.min(from + batchSize - 1, n)
65
+ return from, to
66
+ end
67
+ end
68
+ end
69
+ local function collectMetrics(metaKey, dataPointsList, maxDataPoints,
70
+ timestamp)
71
+ -- Increment current count
72
+ local count = rcall("HINCRBY", metaKey, "count", 1) - 1
73
+ -- Compute how many data points we need to add to the list, N.
74
+ local prevTS = rcall("HGET", metaKey, "prevTS")
75
+ if not prevTS then
76
+ -- If prevTS is nil, set it to the current timestamp
77
+ rcall("HSET", metaKey, "prevTS", timestamp, "prevCount", 0)
78
+ return
79
+ end
80
+ local N = math.floor((timestamp - prevTS) / 60000)
81
+ if N > 0 then
82
+ local delta = count - rcall("HGET", metaKey, "prevCount")
83
+ -- If N > 1, add N-1 zeros to the list
84
+ if N > 1 then
85
+ local points = {}
86
+ points[1] = delta
87
+ for i = 2, N do
88
+ points[i] = 0
89
+ end
90
+ for from, to in batches(#points, 7000) do
91
+ rcall("LPUSH", dataPointsList, unpack(points, from, to))
92
+ end
93
+ else
94
+ -- LPUSH delta to the list
95
+ rcall("LPUSH", dataPointsList, delta)
96
+ end
97
+ -- LTRIM to keep list to its max size
98
+ rcall("LTRIM", dataPointsList, 0, maxDataPoints - 1)
99
+ -- update prev count with current count
100
+ rcall("HSET", metaKey, "prevCount", count, "prevTS", timestamp)
101
+ end
102
+ end
103
+ --[[
104
+ Function to return the next delayed job timestamp.
105
+ ]]
106
+ local function getNextDelayedTimestamp(delayedKey)
107
+ local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
108
+ if #result then
109
+ local nextTimestamp = tonumber(result[2])
110
+ if (nextTimestamp ~= nil) then
111
+ nextTimestamp = nextTimestamp / 0x1000
112
+ end
113
+ return nextTimestamp
114
+ end
115
+ end
116
+ --[[
117
+ Function to move job from prioritized state to active.
118
+ ]]
119
+ local function moveJobFromPriorityToActive(priorityKey, activeKey, priorityCounterKey)
120
+ local prioritizedJob = rcall("ZPOPMIN", priorityKey)
121
+ if #prioritizedJob > 0 then
122
+ rcall("LPUSH", activeKey, prioritizedJob[1])
123
+ return prioritizedJob[1]
124
+ else
125
+ rcall("DEL", priorityCounterKey)
126
+ end
127
+ end
128
+ --[[
129
+ Function to move job from wait state to active.
130
+ Input:
131
+ keys[1] wait key
132
+ keys[2] active key
133
+ keys[3] prioritized key
134
+ keys[4] stream events key
135
+ keys[5] stalled key
136
+ -- Rate limiting
137
+ keys[6] rate limiter key
138
+ keys[7] delayed key
139
+ keys[8] paused key
140
+ keys[9] meta key
141
+ keys[10] pc priority counter
142
+ opts - token - lock token
143
+ opts - lockDuration
144
+ opts - limiter
145
+ ]]
146
+ -- Includes
147
+ --[[
148
+ Function to add job considering priority.
149
+ ]]
150
+ -- Includes
151
+ --[[
152
+ Function priority marker to wait if needed
153
+ in order to wake up our workers and to respect priority
154
+ order as much as possible
155
+ ]]
156
+ local function addPriorityMarkerIfNeeded(waitKey)
157
+ local waitLen = rcall("LLEN", waitKey)
158
+ if waitLen == 0 then
159
+ rcall("LPUSH", waitKey, "0:0")
160
+ end
161
+ end
162
+ local function addJobWithPriority(waitKey, prioritizedKey, priority, paused, jobId, priorityCounterKey)
163
+ local prioCounter = rcall("INCR", priorityCounterKey)
164
+ local score = priority * 0x100000000 + bit.band(prioCounter, 0xffffffffffff)
165
+ rcall("ZADD", prioritizedKey, score, jobId)
166
+ if not paused then
167
+ addPriorityMarkerIfNeeded(waitKey)
168
+ end
169
+ end
170
+ --[[
171
+ Function to push back job considering priority in front of same prioritized jobs.
172
+ ]]
173
+ local function pushBackJobWithPriority(prioritizedKey, priority, jobId)
174
+ -- in order to put it at front of same prioritized jobs
175
+ -- we consider prioritized counter as 0
176
+ local score = priority * 0x100000000
177
+ rcall("ZADD", prioritizedKey, score, jobId)
178
+ end
179
+ local function prepareJobForProcessing(keys, keyPrefix, targetKey, jobId, processedOn,
180
+ maxJobs, expireTime, paused, opts)
181
+ local jobKey = keyPrefix .. jobId
182
+ -- Check if we need to perform rate limiting.
183
+ if maxJobs then
184
+ local rateLimiterKey = keys[6];
185
+ -- check if we exceeded rate limit, we need to remove the job and return expireTime
186
+ if expireTime > 0 then
187
+ -- remove from active queue and add back to the wait list
188
+ rcall("LREM", keys[2], 1, jobId)
189
+ local priority = tonumber(rcall("HGET", jobKey, "priority")) or 0
190
+ if priority == 0 then
191
+ rcall("RPUSH", targetKey, jobId)
192
+ else
193
+ pushBackJobWithPriority(keys[3], priority, jobId)
194
+ end
195
+ -- Return when we can process more jobs
196
+ return {0, 0, expireTime, 0}
197
+ end
198
+ local jobCounter = tonumber(rcall("INCR", rateLimiterKey))
199
+ if jobCounter == 1 then
200
+ local limiterDuration = opts['limiter'] and opts['limiter']['duration']
201
+ local integerDuration = math.floor(math.abs(limiterDuration))
202
+ rcall("PEXPIRE", rateLimiterKey, integerDuration)
203
+ end
204
+ end
205
+ local lockKey = jobKey .. ':lock'
206
+ -- get a lock
207
+ if opts['token'] ~= "0" then
208
+ rcall("SET", lockKey, opts['token'], "PX", opts['lockDuration'])
209
+ end
210
+ rcall("XADD", keys[4], "*", "event", "active", "jobId", jobId, "prev", "waiting")
211
+ rcall("HSET", jobKey, "processedOn", processedOn)
212
+ rcall("HINCRBY", jobKey, "attemptsMade", 1)
213
+ return {rcall("HGETALL", jobKey), jobId, 0, 0} -- get job data
214
+ end
215
+ --[[
216
+ Function to recursively move from waitingChildren to failed.
217
+ ]]
218
+ local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
219
+ if rcall("ZREM", parentQueueKey .. ":waiting-children", parentId) == 1 then
220
+ rcall("ZADD", parentQueueKey .. ":failed", timestamp, parentId)
221
+ local failedReason = "child " .. jobIdKey .. " failed"
222
+ rcall("HMSET", parentKey, "failedReason", failedReason, "finishedOn", timestamp)
223
+ rcall("XADD", parentQueueKey .. ":events", "*", "event", "failed", "jobId", parentId, "failedReason",
224
+ failedReason, "prev", "waiting-children")
225
+ local rawParentData = rcall("HGET", parentKey, "parent")
226
+ if rawParentData ~= false then
227
+ local parentData = cjson.decode(rawParentData)
228
+ if parentData['fpof'] then
229
+ moveParentFromWaitingChildrenToFailed(
230
+ parentData['queueKey'],
231
+ parentData['queueKey'] .. ':' .. parentData['id'],
232
+ parentData['id'],
233
+ parentKey,
234
+ timestamp
235
+ )
236
+ end
237
+ end
238
+ end
239
+ end
240
+ --[[
241
+ Updates the delay set, by moving delayed jobs that should
242
+ be processed now to "wait".
243
+ Events:
244
+ 'waiting'
245
+ ]]
246
+ -- Includes
247
+ -- Try to get as much as 1000 jobs at once
248
+ local function promoteDelayedJobs(delayedKey, waitKey, targetKey, prioritizedKey,
249
+ eventStreamKey, prefix, timestamp, paused, priorityCounterKey)
250
+ local jobs = rcall("ZRANGEBYSCORE", delayedKey, 0, (timestamp + 1) * 0x1000, "LIMIT", 0, 1000)
251
+ if (#jobs > 0) then
252
+ rcall("ZREM", delayedKey, unpack(jobs))
253
+ for _, jobId in ipairs(jobs) do
254
+ local jobKey = prefix .. jobId
255
+ local priority =
256
+ tonumber(rcall("HGET", jobKey, "priority")) or 0
257
+ if priority == 0 then
258
+ -- LIFO or FIFO
259
+ rcall("LPUSH", targetKey, jobId)
260
+ else
261
+ addJobWithPriority(waitKey, prioritizedKey, priority, paused,
262
+ jobId, priorityCounterKey)
263
+ end
264
+ -- Emit waiting event
265
+ rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
266
+ jobId, "prev", "delayed")
267
+ rcall("HSET", jobKey, "delay", 0)
268
+ end
269
+ end
270
+ end
271
+ --[[
272
+ Functions to remove jobs by max age.
273
+ ]]
274
+ -- Includes
275
+ --[[
276
+ Function to remove job.
277
+ ]]
278
+ -- Includes
279
+ --[[
280
+ Check if this job has a parent. If so we will just remove it from
281
+ the parent child list, but if it is the last child we should move the parent to "wait/paused"
282
+ which requires code from "moveToFinished"
283
+ ]]
284
+ --[[
285
+ Functions to destructure job key.
286
+ Just a bit of warning, these functions may be a bit slow and affect performance significantly.
287
+ ]]
288
+ local getJobIdFromKey = function (jobKey)
289
+ return string.match(jobKey, ".*:(.*)")
290
+ end
291
+ local getJobKeyPrefix = function (jobKey, jobId)
292
+ return string.sub(jobKey, 0, #jobKey - #jobId)
293
+ end
294
+ --[[
295
+ Function to check for the meta.paused key to decide if we are paused or not
296
+ (since an empty list and !EXISTS are not really the same).
297
+ ]]
298
+ local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
299
+ if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
300
+ return waitKey, false
301
+ else
302
+ return pausedKey, true
303
+ end
304
+ end
305
+ local function moveParentToWait(parentPrefix, parentId, emitEvent)
306
+ local parentTarget = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "wait", parentPrefix .. "paused")
307
+ rcall("RPUSH", parentTarget, parentId)
308
+ if emitEvent then
309
+ local parentEventStream = parentPrefix .. "events"
310
+ rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
311
+ end
312
+ end
313
+ local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey)
314
+ if parentKey then
315
+ local parentDependenciesKey = parentKey .. ":dependencies"
316
+ local result = rcall("SREM", parentDependenciesKey, jobKey)
317
+ if result > 0 then
318
+ local pendingDependencies = rcall("SCARD", parentDependenciesKey)
319
+ if pendingDependencies == 0 then
320
+ local parentId = getJobIdFromKey(parentKey)
321
+ local parentPrefix = getJobKeyPrefix(parentKey, parentId)
322
+ local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
323
+ if numRemovedElements == 1 then
324
+ if hard then
325
+ if parentPrefix == baseKey then
326
+ removeParentDependencyKey(parentKey, hard, nil, baseKey)
327
+ rcall("DEL", parentKey, parentKey .. ':logs',
328
+ parentKey .. ':dependencies', parentKey .. ':processed')
329
+ else
330
+ moveParentToWait(parentPrefix, parentId)
331
+ end
332
+ else
333
+ moveParentToWait(parentPrefix, parentId, true)
334
+ end
335
+ end
336
+ end
337
+ end
338
+ else
339
+ local missedParentKey = rcall("HGET", jobKey, "parentKey")
340
+ if( (type(missedParentKey) == "string") and missedParentKey ~= "" and (rcall("EXISTS", missedParentKey) == 1)) then
341
+ local parentDependenciesKey = missedParentKey .. ":dependencies"
342
+ local result = rcall("SREM", parentDependenciesKey, jobKey)
343
+ if result > 0 then
344
+ local pendingDependencies = rcall("SCARD", parentDependenciesKey)
345
+ if pendingDependencies == 0 then
346
+ local parentId = getJobIdFromKey(missedParentKey)
347
+ local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
348
+ local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
349
+ if numRemovedElements == 1 then
350
+ if hard then
351
+ if parentPrefix == baseKey then
352
+ removeParentDependencyKey(missedParentKey, hard, nil, baseKey)
353
+ rcall("DEL", missedParentKey, missedParentKey .. ':logs',
354
+ missedParentKey .. ':dependencies', missedParentKey .. ':processed')
355
+ else
356
+ moveParentToWait(parentPrefix, parentId)
357
+ end
358
+ else
359
+ moveParentToWait(parentPrefix, parentId, true)
360
+ end
361
+ end
362
+ end
363
+ end
364
+ end
365
+ end
366
+ end
367
+ local function removeJob(jobId, hard, baseKey)
368
+ local jobKey = baseKey .. jobId
369
+ removeParentDependencyKey(jobKey, hard, nil, baseKey)
370
+ rcall("DEL", jobKey, jobKey .. ':logs',
371
+ jobKey .. ':dependencies', jobKey .. ':processed')
372
+ end
373
+ local function removeJobsByMaxAge(timestamp, maxAge, targetSet, prefix)
374
+ local start = timestamp - maxAge * 1000
375
+ local jobIds = rcall("ZREVRANGEBYSCORE", targetSet, start, "-inf")
376
+ for i, jobId in ipairs(jobIds) do
377
+ removeJob(jobId, false, prefix)
378
+ end
379
+ rcall("ZREMRANGEBYSCORE", targetSet, "-inf", start)
380
+ end
381
+ --[[
382
+ Functions to remove jobs by max count.
383
+ ]]
384
+ -- Includes
385
+ local function removeJobsByMaxCount(maxCount, targetSet, prefix)
386
+ local start = maxCount
387
+ local jobIds = rcall("ZREVRANGE", targetSet, start, -1)
388
+ for i, jobId in ipairs(jobIds) do
389
+ removeJob(jobId, false, prefix)
390
+ end
391
+ rcall("ZREMRANGEBYRANK", targetSet, 0, -(maxCount + 1))
392
+ end
393
+ --[[
394
+ Function to trim events, default 10000.
395
+ ]]
396
+ local function trimEvents(metaKey, eventStreamKey)
397
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
398
+ if maxEvents ~= false then
399
+ rcall("XTRIM", eventStreamKey, "MAXLEN", "~", maxEvents)
400
+ else
401
+ rcall("XTRIM", eventStreamKey, "MAXLEN", "~", 10000)
402
+ end
403
+ end
404
+ --[[
405
+ Validate and move or add dependencies to parent.
406
+ ]]
407
+ -- Includes
408
+ --[[
409
+ Add delay marker if needed.
410
+ ]]
411
+ -- Includes
412
+ local function addDelayMarkerIfNeeded(targetKey, delayedKey)
413
+ if rcall("LLEN", targetKey) == 0 then
414
+ local nextTimestamp = getNextDelayedTimestamp(delayedKey)
415
+ if nextTimestamp ~= nil then
416
+ rcall("LPUSH", targetKey, "0:" .. nextTimestamp)
417
+ end
418
+ end
419
+ end
420
+ local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
421
+ parentId, jobIdKey, returnvalue, timestamp )
422
+ local processedSet = parentKey .. ":processed"
423
+ rcall("HSET", processedSet, jobIdKey, returnvalue)
424
+ local activeParent = rcall("ZSCORE", parentQueueKey .. ":waiting-children", parentId)
425
+ if rcall("SCARD", parentDependenciesKey) == 0 and activeParent then
426
+ rcall("ZREM", parentQueueKey .. ":waiting-children", parentId)
427
+ local parentWaitKey = parentQueueKey .. ":wait"
428
+ local parentTarget, paused = getTargetQueueList(parentQueueKey .. ":meta", parentWaitKey,
429
+ parentQueueKey .. ":paused")
430
+ local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
431
+ local priority = tonumber(jobAttributes[1]) or 0
432
+ local delay = tonumber(jobAttributes[2]) or 0
433
+ if delay > 0 then
434
+ local delayedTimestamp = tonumber(timestamp) + delay
435
+ local score = delayedTimestamp * 0x1000
436
+ local parentDelayedKey = parentQueueKey .. ":delayed"
437
+ rcall("ZADD", parentDelayedKey, score, parentId)
438
+ addDelayMarkerIfNeeded(parentTarget, parentDelayedKey)
439
+ -- Standard or priority add
440
+ elseif priority == 0 then
441
+ rcall("RPUSH", parentTarget, parentId)
442
+ else
443
+ addJobWithPriority(parentWaitKey, parentQueueKey .. ":prioritized", priority, paused,
444
+ parentId, parentQueueKey .. ":pc")
445
+ end
446
+ rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
447
+ end
448
+ end
449
+ local function getRateLimitTTL(maxJobs, rateLimiterKey)
450
+ if maxJobs then
451
+ local pttl = rcall("PTTL", rateLimiterKey)
452
+ if pttl == 0 then
453
+ rcall("DEL", rateLimiterKey)
454
+ end
455
+ local jobCounter = tonumber(rcall("GET", rateLimiterKey) or 0)
456
+ if jobCounter >= maxJobs then
457
+ if pttl > 0 then
458
+ return pttl
459
+ end
460
+ end
461
+ end
462
+ return 0
463
+ end
464
+ local jobIdKey = KEYS[12]
465
+ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
466
+ local opts = cmsgpack.unpack(ARGV[9])
467
+ local token = opts['token']
468
+ local attempts = opts['attempts']
469
+ local attemptsMade = opts['attemptsMade']
470
+ local maxMetricsSize = opts['maxMetricsSize']
471
+ local maxCount = opts['keepJobs']['count']
472
+ local maxAge = opts['keepJobs']['age']
473
+ if token ~= "0" then
474
+ local lockKey = jobIdKey .. ':lock'
475
+ local lockToken = rcall("GET", lockKey)
476
+ if lockToken == token then
477
+ rcall("DEL", lockKey)
478
+ rcall("SREM", KEYS[5], ARGV[1])
479
+ else
480
+ if lockToken then
481
+ -- Lock exists but token does not match
482
+ return -6
483
+ else
484
+ -- Lock is missing completely
485
+ return -2
486
+ end
487
+ end
488
+ end
489
+ if rcall("SCARD", jobIdKey .. ":dependencies") ~= 0 then -- // Make sure it does not have pending dependencies
490
+ return -4
491
+ end
492
+ local parentReferences = rcall("HMGET", jobIdKey, "parentKey", "parent")
493
+ local parentKey = parentReferences[1] or ""
494
+ local parentId = ""
495
+ local parentQueueKey = ""
496
+ if parentReferences[2] ~= false then
497
+ local jsonDecodedParent = cjson.decode(parentReferences[2])
498
+ parentId = jsonDecodedParent['id']
499
+ parentQueueKey = jsonDecodedParent['queueKey']
500
+ end
501
+ local jobId = ARGV[1]
502
+ local timestamp = ARGV[2]
503
+ -- Remove from active list (if not active we shall return error)
504
+ local numRemovedElements = rcall("LREM", KEYS[2], -1, jobId)
505
+ if (numRemovedElements < 1) then return -3 end
506
+ -- Trim events before emiting them to avoid trimming events emitted in this script
507
+ trimEvents(KEYS[9], KEYS[4])
508
+ -- If job has a parent we need to
509
+ -- 1) remove this job id from parents dependencies
510
+ -- 2) move the job Id to parent "processed" set
511
+ -- 3) push the results into parent "results" list
512
+ -- 4) if parent's dependencies is empty, then move parent to "wait/paused". Note it may be a different queue!.
513
+ if parentId == "" and parentKey ~= "" then
514
+ parentId = getJobIdFromKey(parentKey)
515
+ parentQueueKey = getJobKeyPrefix(parentKey, ":" .. parentId)
516
+ end
517
+ if parentId ~= "" then
518
+ if ARGV[5] == "completed" then
519
+ local dependenciesSet = parentKey .. ":dependencies"
520
+ if rcall("SREM", dependenciesSet, jobIdKey) == 1 then
521
+ updateParentDepsIfNeeded(parentKey, parentQueueKey,
522
+ dependenciesSet, parentId, jobIdKey,
523
+ ARGV[4], timestamp)
524
+ end
525
+ elseif opts['fpof'] then
526
+ moveParentFromWaitingChildrenToFailed(parentQueueKey, parentKey,
527
+ parentId, jobIdKey, timestamp)
528
+ end
529
+ end
530
+ -- Remove job?
531
+ if maxCount ~= 0 then
532
+ local targetSet = KEYS[11]
533
+ -- Add to complete/failed set
534
+ rcall("ZADD", targetSet, timestamp, jobId)
535
+ rcall("HMSET", jobIdKey, ARGV[3], ARGV[4], "finishedOn", timestamp)
536
+ -- "returnvalue" / "failedReason" and "finishedOn"
537
+ -- Remove old jobs?
538
+ local prefix = ARGV[8]
539
+ if maxAge ~= nil then
540
+ removeJobsByMaxAge(timestamp, maxAge, targetSet, prefix)
541
+ end
542
+ if maxCount ~= nil and maxCount > 0 then
543
+ removeJobsByMaxCount(maxCount, targetSet, prefix)
544
+ end
545
+ else
546
+ rcall("DEL", jobIdKey, jobIdKey .. ':logs', jobIdKey .. ':processed')
547
+ if parentKey ~= "" then
548
+ removeParentDependencyKey(jobIdKey, false, parentKey)
549
+ end
550
+ end
551
+ rcall("XADD", KEYS[4], "*", "event", ARGV[5], "jobId", jobId, ARGV[3],
552
+ ARGV[4])
553
+ if ARGV[5] == "failed" then
554
+ if tonumber(attemptsMade) >= tonumber(attempts) then
555
+ rcall("XADD", KEYS[4], "*", "event", "retries-exhausted", "jobId",
556
+ jobId, "attemptsMade", attemptsMade)
557
+ end
558
+ end
559
+ -- Collect metrics
560
+ if maxMetricsSize ~= "" then
561
+ collectMetrics(KEYS[13], KEYS[13] .. ':data', maxMetricsSize, timestamp)
562
+ end
563
+ -- Try to get next job to avoid an extra roundtrip if the queue is not closing,
564
+ -- and not rate limited.
565
+ if (ARGV[7] == "1") then
566
+ local target, paused = getTargetQueueList(KEYS[9], KEYS[1], KEYS[8])
567
+ -- Check if there are delayed jobs that can be promoted
568
+ promoteDelayedJobs(KEYS[7], KEYS[1], target, KEYS[3],
569
+ KEYS[4], ARGV[8], timestamp, paused, KEYS[10])
570
+ local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
571
+ -- Check if we are rate limited first.
572
+ local expireTime = getRateLimitTTL(maxJobs, KEYS[6])
573
+ if expireTime > 0 then return {0, 0, expireTime, 0} end
574
+ -- paused queue
575
+ if paused then return {0, 0, 0, 0} end
576
+ jobId = rcall("RPOPLPUSH", KEYS[1], KEYS[2])
577
+ -- If jobId is special ID 0:delay, then there is no job to process
578
+ if jobId then
579
+ if string.sub(jobId, 1, 2) == "0:" then
580
+ rcall("LREM", KEYS[2], 1, jobId)
581
+ else
582
+ -- this script is not really moving, it is preparing the job for processing
583
+ return prepareJobForProcessing(KEYS, ARGV[8], target, jobId, timestamp, maxJobs,
584
+ expireTime, paused, opts)
585
+ end
586
+ else
587
+ jobId = moveJobFromPriorityToActive(KEYS[3], KEYS[2], KEYS[10])
588
+ if jobId then
589
+ return prepareJobForProcessing(KEYS, ARGV[8], target, jobId, timestamp, maxJobs,
590
+ expireTime, paused, opts)
591
+ end
592
+ end
593
+ -- Return the timestamp for the next delayed job if any.
594
+ local nextTimestamp = getNextDelayedTimestamp(KEYS[7])
595
+ if nextTimestamp ~= nil then
596
+ -- The result is guaranteed to be positive, since the
597
+ -- ZRANGEBYSCORE command would have return a job otherwise.
598
+ return {0, 0, 0, nextTimestamp}
599
+ end
600
+ end
601
+ local waitLen = rcall("LLEN", KEYS[1])
602
+ if waitLen == 0 then
603
+ local activeLen = rcall("LLEN", KEYS[2])
604
+ if activeLen == 0 then
605
+ local prioritizedLen = rcall("ZCARD", KEYS[3])
606
+ if prioritizedLen == 0 then
607
+ rcall("XADD", KEYS[4], "*", "event", "drained")
608
+ end
609
+ end
610
+ end
611
+ return 0
612
+ else
613
+ return -1
614
+ end
615
+ `;
616
+ export const moveToFinished = {
617
+ name: 'moveToFinished',
618
+ content,
619
+ keys: 13,
620
+ };
621
+ //# 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;AACF,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const moveToWaitingChildren: {
2
+ name: string;
3
+ content: string;
4
+ keys: number;
5
+ };
@@ -0,0 +1,56 @@
1
+ const content = `--[[
2
+ Moves job from active to waiting children set.
3
+ Input:
4
+ KEYS[1] lock key
5
+ KEYS[2] active key
6
+ KEYS[3] waitChildrenKey key
7
+ KEYS[4] job key
8
+ ARGV[1] token
9
+ ARGV[2] child key
10
+ ARGV[3] timestamp
11
+ ARGV[4] the id of the job
12
+ Output:
13
+ 0 - OK
14
+ 1 - There are not pending dependencies.
15
+ -1 - Missing job.
16
+ -2 - Missing lock
17
+ -3 - Job not in active set
18
+ ]]
19
+ local rcall = redis.call
20
+ local function moveToWaitingChildren (activeKey, waitingChildrenKey, jobId, timestamp, lockKey, token)
21
+ if token ~= "0" then
22
+ if rcall("GET", lockKey) == token then
23
+ rcall("DEL", lockKey)
24
+ else
25
+ return -2
26
+ end
27
+ end
28
+ local score = tonumber(timestamp)
29
+ local numRemovedElements = rcall("LREM", activeKey, -1, jobId)
30
+ if(numRemovedElements < 1) then
31
+ return -3
32
+ end
33
+ rcall("ZADD", waitingChildrenKey, score, jobId)
34
+ return 0
35
+ end
36
+ if rcall("EXISTS", KEYS[4]) == 1 then
37
+ if ARGV[2] ~= "" then
38
+ if rcall("SISMEMBER", KEYS[4] .. ":dependencies", ARGV[2]) ~= 0 then
39
+ return moveToWaitingChildren(KEYS[2], KEYS[3], ARGV[4], ARGV[3], KEYS[1], ARGV[1])
40
+ end
41
+ return 1
42
+ else
43
+ if rcall("SCARD", KEYS[4] .. ":dependencies") ~= 0 then
44
+ return moveToWaitingChildren(KEYS[2], KEYS[3], ARGV[4], ARGV[3], KEYS[1], ARGV[1])
45
+ end
46
+ return 1
47
+ end
48
+ end
49
+ return -1
50
+ `;
51
+ export const moveToWaitingChildren = {
52
+ name: 'moveToWaitingChildren',
53
+ content,
54
+ keys: 4,
55
+ };
56
+ //# 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;AACF,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,uBAAuB;IAC7B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const obliterate: {
2
+ name: string;
3
+ content: string;
4
+ keys: number;
5
+ };