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,768 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Job = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const lodash_1 = require("lodash");
6
+ const util_1 = require("util");
7
+ const utils_1 = require("../utils");
8
+ const backoffs_1 = require("./backoffs");
9
+ const scripts_1 = require("./scripts");
10
+ const unrecoverable_error_1 = require("./unrecoverable-error");
11
+ const logger = (0, util_1.debuglog)('bull');
12
+ const optsDecodeMap = {
13
+ fpof: 'failParentOnFailure',
14
+ kl: 'keepLogs',
15
+ };
16
+ const optsEncodeMap = (0, lodash_1.invert)(optsDecodeMap);
17
+ /**
18
+ * Job
19
+ *
20
+ * This class represents a Job in the queue. Normally job are implicitly created when
21
+ * you add a job to the queue with methods such as Queue.addJob( ... )
22
+ *
23
+ * A Job instance is also passed to the Worker's process function.
24
+ *
25
+ * @class Job
26
+ */
27
+ class Job {
28
+ constructor(queue,
29
+ /**
30
+ * The name of the Job
31
+ */
32
+ name,
33
+ /**
34
+ * The payload for this job.
35
+ */
36
+ data,
37
+ /**
38
+ * The options object for this job.
39
+ */
40
+ opts = {}, id) {
41
+ this.queue = queue;
42
+ this.name = name;
43
+ this.data = data;
44
+ this.opts = opts;
45
+ this.id = id;
46
+ /**
47
+ * The progress a job has performed so far.
48
+ * @defaultValue 0
49
+ */
50
+ this.progress = 0;
51
+ /**
52
+ * The value returned by the processor when processing this job.
53
+ * @defaultValue null
54
+ */
55
+ this.returnvalue = null;
56
+ /**
57
+ * Stacktrace for the error (for failed jobs).
58
+ * @defaultValue null
59
+ */
60
+ this.stacktrace = null;
61
+ /**
62
+ * Number of attempts after the job has failed.
63
+ * @defaultValue 0
64
+ */
65
+ this.attemptsMade = 0;
66
+ const _a = this.opts, { repeatJobKey } = _a, restOpts = tslib_1.__rest(_a, ["repeatJobKey"]);
67
+ this.opts = Object.assign({
68
+ attempts: 0,
69
+ delay: 0,
70
+ }, restOpts);
71
+ this.delay = this.opts.delay;
72
+ this.repeatJobKey = repeatJobKey;
73
+ this.timestamp = opts.timestamp ? opts.timestamp : Date.now();
74
+ this.opts.backoff = backoffs_1.Backoffs.normalize(opts.backoff);
75
+ this.parentKey = (0, utils_1.getParentKey)(opts.parent);
76
+ this.parent = opts.parent
77
+ ? { id: opts.parent.id, queueKey: opts.parent.queue }
78
+ : undefined;
79
+ this.toKey = queue.toKey.bind(queue);
80
+ this.scripts = new scripts_1.Scripts(queue);
81
+ }
82
+ /**
83
+ * Creates a new job and adds it to the queue.
84
+ *
85
+ * @param queue - the queue where to add the job.
86
+ * @param name - the name of the job.
87
+ * @param data - the payload of the job.
88
+ * @param opts - the options bag for this job.
89
+ * @returns
90
+ */
91
+ static async create(queue, name, data, opts) {
92
+ const client = await queue.client;
93
+ const job = new this(queue, name, data, opts, opts && opts.jobId);
94
+ job.id = await job.addJob(client, {
95
+ parentKey: job.parentKey,
96
+ parentDependenciesKey: job.parentKey
97
+ ? `${job.parentKey}:dependencies`
98
+ : '',
99
+ });
100
+ return job;
101
+ }
102
+ /**
103
+ * Creates a bulk of jobs and adds them atomically to the given queue.
104
+ *
105
+ * @param queue -the queue were to add the jobs.
106
+ * @param jobs - an array of jobs to be added to the queue.
107
+ * @returns
108
+ */
109
+ static async createBulk(queue, jobs) {
110
+ const client = await queue.client;
111
+ const jobInstances = jobs.map(job => { var _a; return new this(queue, job.name, job.data, job.opts, (_a = job.opts) === null || _a === void 0 ? void 0 : _a.jobId); });
112
+ const multi = client.multi();
113
+ for (const job of jobInstances) {
114
+ job.addJob(multi, {
115
+ parentKey: job.parentKey,
116
+ parentDependenciesKey: job.parentKey
117
+ ? `${job.parentKey}:dependencies`
118
+ : '',
119
+ });
120
+ }
121
+ const results = (await multi.exec());
122
+ for (let index = 0; index < results.length; ++index) {
123
+ const [err, id] = results[index];
124
+ if (err) {
125
+ throw err;
126
+ }
127
+ jobInstances[index].id = id;
128
+ }
129
+ return jobInstances;
130
+ }
131
+ /**
132
+ * Instantiates a Job from a JobJsonRaw object (coming from a deserialized JSON object)
133
+ *
134
+ * @param queue - the queue where the job belongs to.
135
+ * @param json - the plain object containing the job.
136
+ * @param jobId - an optional job id (overrides the id coming from the JSON object)
137
+ * @returns
138
+ */
139
+ static fromJSON(queue, json, jobId) {
140
+ const data = JSON.parse(json.data || '{}');
141
+ const opts = Job.optsFromJSON(json.opts);
142
+ const job = new this(queue, json.name, data, opts, json.id || jobId);
143
+ job.progress = JSON.parse(json.progress || '0');
144
+ job.delay = parseInt(json.delay);
145
+ job.timestamp = parseInt(json.timestamp);
146
+ if (json.finishedOn) {
147
+ job.finishedOn = parseInt(json.finishedOn);
148
+ }
149
+ if (json.processedOn) {
150
+ job.processedOn = parseInt(json.processedOn);
151
+ }
152
+ if (json.rjk) {
153
+ job.repeatJobKey = json.rjk;
154
+ }
155
+ job.failedReason = json.failedReason;
156
+ job.attemptsMade = parseInt(json.attemptsMade || '0');
157
+ job.stacktrace = getTraces(json.stacktrace);
158
+ if (typeof json.returnvalue === 'string') {
159
+ job.returnvalue = getReturnValue(json.returnvalue);
160
+ }
161
+ if (json.parentKey) {
162
+ job.parentKey = json.parentKey;
163
+ }
164
+ if (json.parent) {
165
+ job.parent = JSON.parse(json.parent);
166
+ }
167
+ return job;
168
+ }
169
+ static optsFromJSON(rawOpts) {
170
+ const opts = JSON.parse(rawOpts || '{}');
171
+ const optionEntries = Object.entries(opts);
172
+ const options = {};
173
+ for (const item of optionEntries) {
174
+ const [attributeName, value] = item;
175
+ if (optsDecodeMap[attributeName]) {
176
+ options[optsDecodeMap[attributeName]] =
177
+ value;
178
+ }
179
+ else {
180
+ options[attributeName] = value;
181
+ }
182
+ }
183
+ return options;
184
+ }
185
+ /**
186
+ * Fetches a Job from the queue given the passed job id.
187
+ *
188
+ * @param queue - the queue where the job belongs to.
189
+ * @param jobId - the job id.
190
+ * @returns
191
+ */
192
+ static async fromId(queue, jobId) {
193
+ // jobId can be undefined if moveJob returns undefined
194
+ if (jobId) {
195
+ const client = await queue.client;
196
+ const jobData = await client.hgetall(queue.toKey(jobId));
197
+ return (0, utils_1.isEmpty)(jobData)
198
+ ? undefined
199
+ : this.fromJSON(queue, jobData, jobId);
200
+ }
201
+ }
202
+ toJSON() {
203
+ const _a = this, { queue, scripts } = _a, withoutQueueAndScripts = tslib_1.__rest(_a, ["queue", "scripts"]);
204
+ return withoutQueueAndScripts;
205
+ }
206
+ /**
207
+ * Prepares a job to be serialized for storage in Redis.
208
+ * @returns
209
+ */
210
+ asJSON() {
211
+ return {
212
+ id: this.id,
213
+ name: this.name,
214
+ data: JSON.stringify(typeof this.data === 'undefined' ? {} : this.data),
215
+ opts: this.optsAsJSON(this.opts),
216
+ parent: this.parent ? Object.assign({}, this.parent) : undefined,
217
+ parentKey: this.parentKey,
218
+ progress: this.progress,
219
+ attemptsMade: this.attemptsMade,
220
+ finishedOn: this.finishedOn,
221
+ processedOn: this.processedOn,
222
+ timestamp: this.timestamp,
223
+ failedReason: JSON.stringify(this.failedReason),
224
+ stacktrace: JSON.stringify(this.stacktrace),
225
+ repeatJobKey: this.repeatJobKey,
226
+ returnvalue: JSON.stringify(this.returnvalue),
227
+ };
228
+ }
229
+ optsAsJSON(opts = {}) {
230
+ const optionEntries = Object.entries(opts);
231
+ const options = {};
232
+ for (const item of optionEntries) {
233
+ const [attributeName, value] = item;
234
+ if (optsEncodeMap[attributeName]) {
235
+ options[optsEncodeMap[attributeName]] =
236
+ value;
237
+ }
238
+ else {
239
+ options[attributeName] = value;
240
+ }
241
+ }
242
+ return options;
243
+ }
244
+ /**
245
+ * Prepares a job to be passed to Sandbox.
246
+ * @returns
247
+ */
248
+ asJSONSandbox() {
249
+ return Object.assign(Object.assign({}, this.asJSON()), { queueName: this.queueName, prefix: this.prefix });
250
+ }
251
+ /**
252
+ * Updates a job's data
253
+ *
254
+ * @param data - the data that will replace the current jobs data.
255
+ */
256
+ updateData(data) {
257
+ this.data = data;
258
+ return this.scripts.updateData(this, data);
259
+ }
260
+ /**
261
+ * Updates a job's progress
262
+ *
263
+ * @param progress - number or object to be saved as progress.
264
+ */
265
+ updateProgress(progress) {
266
+ this.progress = progress;
267
+ return this.scripts.updateProgress(this, progress);
268
+ }
269
+ /**
270
+ * Logs one row of log data.
271
+ *
272
+ * @param logRow - string with log data to be logged.
273
+ */
274
+ async log(logRow) {
275
+ const client = await this.queue.client;
276
+ const logsKey = this.toKey(this.id) + ':logs';
277
+ const multi = client.multi();
278
+ multi.rpush(logsKey, logRow);
279
+ if (this.opts.keepLogs) {
280
+ multi.ltrim(logsKey, -this.opts.keepLogs, -1);
281
+ }
282
+ const result = (await multi.exec());
283
+ return this.opts.keepLogs
284
+ ? Math.min(this.opts.keepLogs, result[0][1])
285
+ : result[0][1];
286
+ }
287
+ /**
288
+ * Clears job's logs
289
+ *
290
+ * @param keepLogs - the amount of log entries to preserve
291
+ */
292
+ async clearLogs(keepLogs) {
293
+ const client = await this.queue.client;
294
+ const logsKey = this.toKey(this.id) + ':logs';
295
+ if (keepLogs) {
296
+ await client.ltrim(logsKey, -keepLogs, -1);
297
+ }
298
+ else {
299
+ await client.del(logsKey);
300
+ }
301
+ }
302
+ /**
303
+ * Completely remove the job from the queue.
304
+ * Note, this call will throw an exception if the job
305
+ * is being processed when the call is performed.
306
+ */
307
+ async remove() {
308
+ await this.queue.waitUntilReady();
309
+ const queue = this.queue;
310
+ const job = this;
311
+ const removed = await this.scripts.remove(job.id);
312
+ if (removed) {
313
+ queue.emit('removed', job);
314
+ }
315
+ else {
316
+ throw new Error('Could not remove job ' + job.id);
317
+ }
318
+ }
319
+ /**
320
+ * Extend the lock for this job.
321
+ *
322
+ * @param token - unique token for the lock
323
+ * @param duration - lock duration in milliseconds
324
+ */
325
+ extendLock(token, duration) {
326
+ return this.scripts.extendLock(this.id, token, duration);
327
+ }
328
+ /**
329
+ * Moves a job to the completed queue.
330
+ * Returned job to be used with Queue.prototype.nextJobFromJobData.
331
+ *
332
+ * @param returnValue - The jobs success message.
333
+ * @param token - Worker token used to acquire completed job.
334
+ * @param fetchNext - True when wanting to fetch the next job.
335
+ * @returns Returns the jobData of the next job in the waiting queue.
336
+ */
337
+ async moveToCompleted(returnValue, token, fetchNext = true) {
338
+ await this.queue.waitUntilReady();
339
+ this.returnvalue = returnValue || void 0;
340
+ const stringifiedReturnValue = (0, utils_1.tryCatch)(JSON.stringify, JSON, [
341
+ returnValue,
342
+ ]);
343
+ if (stringifiedReturnValue === utils_1.errorObject) {
344
+ throw utils_1.errorObject.value;
345
+ }
346
+ const args = this.scripts.moveToCompletedArgs(this, stringifiedReturnValue, this.opts.removeOnComplete, token, fetchNext);
347
+ const result = await this.scripts.moveToFinished(this.id, args);
348
+ this.finishedOn = args[14];
349
+ return result;
350
+ }
351
+ /**
352
+ * Moves a job to the failed queue.
353
+ *
354
+ * @param err - the jobs error message.
355
+ * @param token - token to check job is locked by current worker
356
+ * @param fetchNext - true when wanting to fetch the next job
357
+ * @returns void
358
+ */
359
+ async moveToFailed(err, token, fetchNext = false) {
360
+ const client = await this.queue.client;
361
+ const message = err === null || err === void 0 ? void 0 : err.message;
362
+ const queue = this.queue;
363
+ this.failedReason = message;
364
+ let command;
365
+ const multi = client.multi();
366
+ this.saveStacktrace(multi, err);
367
+ //
368
+ // Check if an automatic retry should be performed
369
+ //
370
+ let moveToFailed = false;
371
+ let finishedOn;
372
+ if (this.attemptsMade < this.opts.attempts &&
373
+ !this.discarded &&
374
+ !(err instanceof unrecoverable_error_1.UnrecoverableError || err.name == 'UnrecoverableError')) {
375
+ const opts = queue.opts;
376
+ // Check if backoff is needed
377
+ const delay = await backoffs_1.Backoffs.calculate(this.opts.backoff, this.attemptsMade, err, this, opts.settings && opts.settings.backoffStrategy);
378
+ if (delay === -1) {
379
+ moveToFailed = true;
380
+ }
381
+ else if (delay) {
382
+ const args = this.scripts.moveToDelayedArgs(this.id, Date.now() + delay, token);
383
+ multi.moveToDelayed(args);
384
+ command = 'delayed';
385
+ }
386
+ else {
387
+ // Retry immediately
388
+ multi.retryJob(this.scripts.retryJobArgs(this.id, this.opts.lifo, token));
389
+ command = 'retryJob';
390
+ }
391
+ }
392
+ else {
393
+ // If not, move to failed
394
+ moveToFailed = true;
395
+ }
396
+ if (moveToFailed) {
397
+ const args = this.scripts.moveToFailedArgs(this, message, this.opts.removeOnFail, token, fetchNext);
398
+ multi.moveToFinished(args);
399
+ finishedOn = args[14];
400
+ command = 'failed';
401
+ }
402
+ const results = await multi.exec();
403
+ const anyError = results.find(result => result[0]);
404
+ if (anyError) {
405
+ throw new Error(`Error "moveToFailed" with command ${command}: ${anyError}`);
406
+ }
407
+ const code = results[results.length - 1][1];
408
+ if (code < 0) {
409
+ throw this.scripts.finishedErrors(code, this.id, command, 'active');
410
+ }
411
+ if (finishedOn && typeof finishedOn === 'number') {
412
+ this.finishedOn = finishedOn;
413
+ }
414
+ }
415
+ /**
416
+ * @returns true if the job has completed.
417
+ */
418
+ isCompleted() {
419
+ return this.isInZSet('completed');
420
+ }
421
+ /**
422
+ * @returns true if the job has failed.
423
+ */
424
+ isFailed() {
425
+ return this.isInZSet('failed');
426
+ }
427
+ /**
428
+ * @returns true if the job is delayed.
429
+ */
430
+ isDelayed() {
431
+ return this.isInZSet('delayed');
432
+ }
433
+ /**
434
+ * @returns true if the job is waiting for children.
435
+ */
436
+ isWaitingChildren() {
437
+ return this.isInZSet('waiting-children');
438
+ }
439
+ /**
440
+ * @returns true of the job is active.
441
+ */
442
+ isActive() {
443
+ return this.isInList('active');
444
+ }
445
+ /**
446
+ * @returns true if the job is waiting.
447
+ */
448
+ async isWaiting() {
449
+ return (await this.isInList('wait')) || (await this.isInList('paused'));
450
+ }
451
+ /**
452
+ * @returns the queue name this job belongs to.
453
+ */
454
+ get queueName() {
455
+ return this.queue.name;
456
+ }
457
+ /**
458
+ * @returns the prefix that is used.
459
+ */
460
+ get prefix() {
461
+ return this.queue.opts.prefix;
462
+ }
463
+ /**
464
+ * @returns it includes the prefix, the namespace separator :, and queue name.
465
+ * @see https://www.gnu.org/software/gawk/manual/html_node/Qualified-Names.html
466
+ */
467
+ get queueQualifiedName() {
468
+ return `${this.prefix}:${this.queueName}`;
469
+ }
470
+ /**
471
+ * Get current state.
472
+ *
473
+ * @returns Returns one of these values:
474
+ * 'completed', 'failed', 'delayed', 'active', 'waiting', 'waiting-children', 'unknown'.
475
+ */
476
+ getState() {
477
+ return this.scripts.getState(this.id);
478
+ }
479
+ /**
480
+ * Change delay of a delayed job.
481
+ *
482
+ * @param delay - milliseconds to be added to current time.
483
+ * @returns void
484
+ */
485
+ async changeDelay(delay) {
486
+ await this.scripts.changeDelay(this.id, delay);
487
+ this.delay = delay;
488
+ }
489
+ /**
490
+ * Change job priority.
491
+ *
492
+ * @returns void
493
+ */
494
+ async changePriority(opts) {
495
+ await this.scripts.changePriority(this.id, opts.priority, opts.lifo);
496
+ }
497
+ /**
498
+ * Get this jobs children result values if any.
499
+ *
500
+ * @returns Object mapping children job keys with their values.
501
+ */
502
+ async getChildrenValues() {
503
+ const client = await this.queue.client;
504
+ const result = (await client.hgetall(this.toKey(`${this.id}:processed`)));
505
+ if (result) {
506
+ return (0, utils_1.parseObjectValues)(result);
507
+ }
508
+ }
509
+ /**
510
+ * Get children job keys if this job is a parent and has children.
511
+ *
512
+ * @returns dependencies separated by processed and unprocessed.
513
+ */
514
+ async getDependencies(opts = {}) {
515
+ const client = await this.queue.client;
516
+ const multi = client.multi();
517
+ if (!opts.processed && !opts.unprocessed) {
518
+ multi.hgetall(this.toKey(`${this.id}:processed`));
519
+ multi.smembers(this.toKey(`${this.id}:dependencies`));
520
+ const [[err1, processed], [err2, unprocessed]] = (await multi.exec());
521
+ const transformedProcessed = (0, utils_1.parseObjectValues)(processed);
522
+ return { processed: transformedProcessed, unprocessed };
523
+ }
524
+ else {
525
+ const defaultOpts = {
526
+ cursor: 0,
527
+ count: 20,
528
+ };
529
+ if (opts.processed) {
530
+ const processedOpts = Object.assign(Object.assign({}, defaultOpts), opts.processed);
531
+ multi.hscan(this.toKey(`${this.id}:processed`), processedOpts.cursor, 'COUNT', processedOpts.count);
532
+ }
533
+ if (opts.unprocessed) {
534
+ const unprocessedOpts = Object.assign(Object.assign({}, defaultOpts), opts.unprocessed);
535
+ multi.sscan(this.toKey(`${this.id}:dependencies`), unprocessedOpts.cursor, 'COUNT', unprocessedOpts.count);
536
+ }
537
+ const [result1, result2] = (await multi.exec());
538
+ const [processedCursor, processed = []] = opts.processed
539
+ ? result1[1]
540
+ : [];
541
+ const [unprocessedCursor, unprocessed = []] = opts.unprocessed
542
+ ? opts.processed
543
+ ? result2[1]
544
+ : result1[1]
545
+ : [];
546
+ const transformedProcessed = {};
547
+ for (let index = 0; index < processed.length; ++index) {
548
+ if (index % 2) {
549
+ transformedProcessed[processed[index - 1]] = JSON.parse(processed[index]);
550
+ }
551
+ }
552
+ return Object.assign(Object.assign({}, (processedCursor
553
+ ? {
554
+ processed: transformedProcessed,
555
+ nextProcessedCursor: Number(processedCursor),
556
+ }
557
+ : {})), (unprocessedCursor
558
+ ? { unprocessed, nextUnprocessedCursor: Number(unprocessedCursor) }
559
+ : {}));
560
+ }
561
+ }
562
+ /**
563
+ * Get children job counts if this job is a parent and has children.
564
+ *
565
+ * @returns dependencies count separated by processed and unprocessed.
566
+ */
567
+ async getDependenciesCount(opts = {}) {
568
+ const client = await this.queue.client;
569
+ const multi = client.multi();
570
+ const updatedOpts = !opts.processed && !opts.unprocessed
571
+ ? { processed: true, unprocessed: true }
572
+ : opts;
573
+ if (updatedOpts.processed) {
574
+ multi.hlen(this.toKey(`${this.id}:processed`));
575
+ }
576
+ if (updatedOpts.unprocessed) {
577
+ multi.scard(this.toKey(`${this.id}:dependencies`));
578
+ }
579
+ const [[err1, result1] = [], [err2, result2] = []] = (await multi.exec());
580
+ const processed = updatedOpts.processed ? result1 : undefined;
581
+ const unprocessed = updatedOpts.unprocessed
582
+ ? updatedOpts.processed
583
+ ? result2
584
+ : result1
585
+ : undefined;
586
+ return Object.assign(Object.assign({}, (updatedOpts.processed
587
+ ? {
588
+ processed,
589
+ }
590
+ : {})), (updatedOpts.unprocessed ? { unprocessed } : {}));
591
+ }
592
+ /**
593
+ * Returns a promise the resolves when the job has completed (containing the return value of the job),
594
+ * or rejects when the job has failed (containing the failedReason).
595
+ *
596
+ * @param queueEvents - Instance of QueueEvents.
597
+ * @param ttl - Time in milliseconds to wait for job to finish before timing out.
598
+ */
599
+ async waitUntilFinished(queueEvents, ttl) {
600
+ await this.queue.waitUntilReady();
601
+ const jobId = this.id;
602
+ return new Promise(async (resolve, reject) => {
603
+ let timeout;
604
+ if (ttl) {
605
+ timeout = setTimeout(() => onFailed(
606
+ /* eslint-disable max-len */
607
+ `Job wait ${this.name} timed out before finishing, no finish notification arrived after ${ttl}ms (id=${jobId})`), ttl);
608
+ }
609
+ function onCompleted(args) {
610
+ removeListeners();
611
+ resolve(args.returnvalue);
612
+ }
613
+ function onFailed(args) {
614
+ removeListeners();
615
+ reject(new Error(args.failedReason || args));
616
+ }
617
+ const completedEvent = `completed:${jobId}`;
618
+ const failedEvent = `failed:${jobId}`;
619
+ queueEvents.on(completedEvent, onCompleted);
620
+ queueEvents.on(failedEvent, onFailed);
621
+ this.queue.on('closing', onFailed);
622
+ const removeListeners = () => {
623
+ clearInterval(timeout);
624
+ queueEvents.removeListener(completedEvent, onCompleted);
625
+ queueEvents.removeListener(failedEvent, onFailed);
626
+ this.queue.removeListener('closing', onFailed);
627
+ };
628
+ // Poll once right now to see if the job has already finished. The job may have been completed before we were able
629
+ // to register the event handlers on the QueueEvents, so we check here to make sure we're not waiting for an event
630
+ // that has already happened. We block checking the job until the queue events object is actually listening to
631
+ // Redis so there's no chance that it will miss events.
632
+ await queueEvents.waitUntilReady();
633
+ const [status, result] = (await this.scripts.isFinished(jobId, true));
634
+ const finished = status != 0;
635
+ if (finished) {
636
+ if (status == -1 || status == 2) {
637
+ onFailed({ failedReason: result });
638
+ }
639
+ else {
640
+ onCompleted({ returnvalue: getReturnValue(result) });
641
+ }
642
+ }
643
+ });
644
+ }
645
+ /**
646
+ * Moves the job to the delay set.
647
+ *
648
+ * @param timestamp - timestamp where the job should be moved back to "wait"
649
+ * @param token - token to check job is locked by current worker
650
+ * @returns
651
+ */
652
+ moveToDelayed(timestamp, token) {
653
+ return this.scripts.moveToDelayed(this.id, timestamp, token);
654
+ }
655
+ /**
656
+ * Moves the job to the waiting-children set.
657
+ *
658
+ * @param token - Token to check job is locked by current worker
659
+ * @param opts - The options bag for moving a job to waiting-children.
660
+ * @returns true if the job was moved
661
+ */
662
+ moveToWaitingChildren(token, opts = {}) {
663
+ return this.scripts.moveToWaitingChildren(this.id, token, opts);
664
+ }
665
+ /**
666
+ * Promotes a delayed job so that it starts to be processed as soon as possible.
667
+ */
668
+ async promote() {
669
+ const jobId = this.id;
670
+ const code = await this.scripts.promote(jobId);
671
+ if (code < 0) {
672
+ throw this.scripts.finishedErrors(code, this.id, 'promote', 'delayed');
673
+ }
674
+ }
675
+ /**
676
+ * Attempts to retry the job. Only a job that has failed or completed can be retried.
677
+ *
678
+ * @param state - completed / failed
679
+ * @returns If resolved and return code is 1, then the queue emits a waiting event
680
+ * otherwise the operation was not a success and throw the corresponding error. If the promise
681
+ * rejects, it indicates that the script failed to execute
682
+ */
683
+ retry(state = 'failed') {
684
+ this.failedReason = null;
685
+ this.finishedOn = null;
686
+ this.processedOn = null;
687
+ this.returnvalue = null;
688
+ return this.scripts.reprocessJob(this, state);
689
+ }
690
+ /**
691
+ * Marks a job to not be retried if it fails (even if attempts has been configured)
692
+ */
693
+ discard() {
694
+ this.discarded = true;
695
+ }
696
+ async isInZSet(set) {
697
+ const client = await this.queue.client;
698
+ const score = await client.zscore(this.queue.toKey(set), this.id);
699
+ return score !== null;
700
+ }
701
+ async isInList(list) {
702
+ return this.scripts.isJobInList(this.queue.toKey(list), this.id);
703
+ }
704
+ /**
705
+ * Adds the job to Redis.
706
+ *
707
+ * @param client -
708
+ * @param parentOpts -
709
+ * @returns
710
+ */
711
+ addJob(client, parentOpts) {
712
+ var _a;
713
+ const jobData = this.asJSON();
714
+ const exceedLimit = this.opts.sizeLimit &&
715
+ (0, utils_1.lengthInUtf8Bytes)(jobData.data) > this.opts.sizeLimit;
716
+ if (exceedLimit) {
717
+ throw new Error(`The size of job ${this.name} exceeds the limit ${this.opts.sizeLimit} bytes`);
718
+ }
719
+ if (this.opts.delay && this.opts.repeat && !((_a = this.opts.repeat) === null || _a === void 0 ? void 0 : _a.count)) {
720
+ throw new Error(`Delay and repeat options could not be used together`);
721
+ }
722
+ if (`${parseInt(this.id, 10)}` === this.id) {
723
+ //TODO: throw an error in next breaking change
724
+ console.warn('Custom Ids should not be integers: https://github.com/taskforcesh/bullmq/pull/1569');
725
+ }
726
+ if (this.opts.priority) {
727
+ if (Math.trunc(this.opts.priority) !== this.opts.priority) {
728
+ throw new Error(`Priority should not be float`);
729
+ }
730
+ const priorityLimit = 2 ** 21;
731
+ if (this.opts.priority > 2 ** 21) {
732
+ throw new Error(`Priority should be between 0 and ${priorityLimit}`);
733
+ }
734
+ }
735
+ return this.scripts.addJob(client, jobData, jobData.opts, this.id, parentOpts);
736
+ }
737
+ saveStacktrace(multi, err) {
738
+ this.stacktrace = this.stacktrace || [];
739
+ if (err === null || err === void 0 ? void 0 : err.stack) {
740
+ this.stacktrace.push(err.stack);
741
+ if (this.opts.stackTraceLimit) {
742
+ this.stacktrace = this.stacktrace.slice(0, this.opts.stackTraceLimit);
743
+ }
744
+ }
745
+ const args = this.scripts.saveStacktraceArgs(this.id, JSON.stringify(this.stacktrace), err === null || err === void 0 ? void 0 : err.message);
746
+ multi.saveStacktrace(args);
747
+ }
748
+ }
749
+ exports.Job = Job;
750
+ function getTraces(stacktrace) {
751
+ const traces = (0, utils_1.tryCatch)(JSON.parse, JSON, [stacktrace]);
752
+ if (traces === utils_1.errorObject || !(traces instanceof Array)) {
753
+ return [];
754
+ }
755
+ else {
756
+ return traces;
757
+ }
758
+ }
759
+ function getReturnValue(_value) {
760
+ const value = (0, utils_1.tryCatch)(JSON.parse, JSON, [_value]);
761
+ if (value !== utils_1.errorObject) {
762
+ return value;
763
+ }
764
+ else {
765
+ logger('corrupted returnvalue: ' + _value, value);
766
+ }
767
+ }
768
+ //# sourceMappingURL=job.js.map