bullmq 4.0.0-beta.2 → 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 (820) hide show
  1. package/README.md +153 -19
  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/cjs/interfaces/child-message.js +3 -0
  131. package/dist/cjs/interfaces/child-message.js.map +1 -0
  132. package/dist/{interfaces/jobs-options.js → cjs/interfaces/connection.js} +1 -1
  133. package/dist/cjs/interfaces/connection.js.map +1 -0
  134. package/dist/cjs/interfaces/flow-job.js +3 -0
  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/cjs/interfaces/job-json.js +3 -0
  141. package/dist/cjs/interfaces/job-json.js.map +1 -0
  142. package/dist/cjs/interfaces/keep-jobs.js +3 -0
  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/cjs/interfaces/redis-streams.js +3 -0
  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/{interfaces/queue-scheduler-options.js → cjs/interfaces/sandboxed-job-processor.js} +1 -1
  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 +180 -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 -315
  604. package/dist/classes/compat.js +0 -671
  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 -353
  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 -22
  613. package/dist/classes/queue-base.js +0 -66
  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 -183
  620. package/dist/classes/queue-getters.js.map +0 -1
  621. package/dist/classes/queue-scheduler.d.ts +0 -25
  622. package/dist/classes/queue-scheduler.js +0 -97
  623. package/dist/classes/queue-scheduler.js.map +0 -1
  624. package/dist/classes/queue.d.ts +0 -56
  625. package/dist/classes/queue.js +0 -130
  626. package/dist/classes/queue.js.map +0 -1
  627. package/dist/classes/redis-connection.d.ts +0 -22
  628. package/dist/classes/redis-connection.js +0 -108
  629. package/dist/classes/redis-connection.js.map +0 -1
  630. package/dist/classes/repeat.d.ts +0 -26
  631. package/dist/classes/repeat.js +0 -129
  632. package/dist/classes/repeat.js.map +0 -1
  633. package/dist/classes/sandbox.d.ts +0 -2
  634. package/dist/classes/sandbox.js.map +0 -1
  635. package/dist/classes/scripts.d.ts +0 -43
  636. package/dist/classes/scripts.js +0 -307
  637. package/dist/classes/scripts.js.map +0 -1
  638. package/dist/classes/worker.d.ts +0 -40
  639. package/dist/classes/worker.js +0 -246
  640. package/dist/classes/worker.js.map +0 -1
  641. package/dist/commands/addJob-8.lua +0 -106
  642. package/dist/commands/cleanJobsInSet-1.lua +0 -48
  643. package/dist/commands/index.d.ts +0 -2
  644. package/dist/commands/index.js +0 -42
  645. package/dist/commands/index.js.map +0 -1
  646. package/dist/commands/isFinished-2.lua +0 -22
  647. package/dist/commands/isJobInList-1.lua +0 -20
  648. package/dist/commands/moveStalledJobsToWait-8.lua +0 -91
  649. package/dist/commands/moveToActive-8.lua +0 -79
  650. package/dist/commands/moveToDelayed-5.lua +0 -39
  651. package/dist/commands/moveToFinished-7.lua +0 -92
  652. package/dist/commands/pause-4.lua +0 -27
  653. package/dist/commands/promote-4.lua +0 -49
  654. package/dist/commands/releaseLock-1.lua +0 -19
  655. package/dist/commands/removeJob-10.lua +0 -37
  656. package/dist/commands/reprocessJob-4.lua +0 -36
  657. package/dist/commands/retryJob-4.lua +0 -34
  658. package/dist/commands/takeLock-1.lua +0 -17
  659. package/dist/commands/updateDelaySet-7.lua +0 -71
  660. package/dist/commands/updateProgress-2.lua +0 -15
  661. package/dist/enums/index.d.ts +0 -1
  662. package/dist/enums/index.js +0 -5
  663. package/dist/enums/index.js.map +0 -1
  664. package/dist/enums/retry-errors.enum.d.ts +0 -5
  665. package/dist/enums/retry-errors.enum.js +0 -9
  666. package/dist/enums/retry-errors.enum.js.map +0 -1
  667. package/dist/index.js.map +0 -1
  668. package/dist/interfaces/advanced-options.d.ts +0 -9
  669. package/dist/interfaces/advanced-options.js +0 -11
  670. package/dist/interfaces/advanced-options.js.map +0 -1
  671. package/dist/interfaces/backoff-options.d.ts +0 -4
  672. package/dist/interfaces/backoff-options.js.map +0 -1
  673. package/dist/interfaces/index.d.ts +0 -9
  674. package/dist/interfaces/index.js +0 -6
  675. package/dist/interfaces/index.js.map +0 -1
  676. package/dist/interfaces/jobs-options.d.ts +0 -16
  677. package/dist/interfaces/jobs-options.js.map +0 -1
  678. package/dist/interfaces/queue-options.d.ts +0 -24
  679. package/dist/interfaces/queue-options.js.map +0 -1
  680. package/dist/interfaces/queue-scheduler-options.d.ts +0 -5
  681. package/dist/interfaces/queue-scheduler-options.js.map +0 -1
  682. package/dist/interfaces/rate-limiter-options.d.ts +0 -4
  683. package/dist/interfaces/rate-limiter-options.js.map +0 -1
  684. package/dist/interfaces/redis-options.d.ts +0 -5
  685. package/dist/interfaces/redis-options.js.map +0 -1
  686. package/dist/interfaces/repeat-options.d.ts +0 -11
  687. package/dist/interfaces/repeat-options.js.map +0 -1
  688. package/dist/interfaces/worker-options.d.ts +0 -11
  689. package/dist/interfaces/worker-options.js.map +0 -1
  690. package/dist/test/test_bulk.js +0 -55
  691. package/dist/test/test_bulk.js.map +0 -1
  692. package/dist/test/test_child-pool.js +0 -81
  693. package/dist/test/test_child-pool.js.map +0 -1
  694. package/dist/test/test_clean.js +0 -124
  695. package/dist/test/test_clean.js.map +0 -1
  696. package/dist/test/test_compat.d.ts +0 -1
  697. package/dist/test/test_compat.js +0 -533
  698. package/dist/test/test_compat.js.map +0 -1
  699. package/dist/test/test_connection.d.ts +0 -1
  700. package/dist/test/test_connection.js +0 -142
  701. package/dist/test/test_connection.js.map +0 -1
  702. package/dist/test/test_delay.d.ts +0 -1
  703. package/dist/test/test_delay.js +0 -188
  704. package/dist/test/test_delay.js.map +0 -1
  705. package/dist/test/test_events.d.ts +0 -1
  706. package/dist/test/test_events.js +0 -148
  707. package/dist/test/test_events.js.map +0 -1
  708. package/dist/test/test_getters.d.ts +0 -1
  709. package/dist/test/test_getters.js +0 -293
  710. package/dist/test/test_getters.js.map +0 -1
  711. package/dist/test/test_job.d.ts +0 -1
  712. package/dist/test/test_job.js +0 -419
  713. package/dist/test/test_job.js.map +0 -1
  714. package/dist/test/test_pause.d.ts +0 -1
  715. package/dist/test/test_pause.js +0 -254
  716. package/dist/test/test_pause.js.map +0 -1
  717. package/dist/test/test_queue.d.ts +0 -0
  718. package/dist/test/test_queue.js +0 -72
  719. package/dist/test/test_queue.js.map +0 -1
  720. package/dist/test/test_rate_limiter.d.ts +0 -1
  721. package/dist/test/test_rate_limiter.js +0 -98
  722. package/dist/test/test_rate_limiter.js.map +0 -1
  723. package/dist/test/test_repeat.d.ts +0 -1
  724. package/dist/test/test_repeat.js +0 -604
  725. package/dist/test/test_repeat.js.map +0 -1
  726. package/dist/test/test_sandboxed_process.d.ts +0 -1
  727. package/dist/test/test_sandboxed_process.js +0 -319
  728. package/dist/test/test_sandboxed_process.js.map +0 -1
  729. package/dist/test/test_stalled_jobs.d.ts +0 -1
  730. package/dist/test/test_stalled_jobs.js +0 -107
  731. package/dist/test/test_stalled_jobs.js.map +0 -1
  732. package/dist/test/test_worker.d.ts +0 -1
  733. package/dist/test/test_worker.js +0 -1182
  734. package/dist/test/test_worker.js.map +0 -1
  735. package/dist/utils.d.ts +0 -8
  736. package/dist/utils.js +0 -31
  737. package/dist/utils.js.map +0 -1
  738. package/release.txt +0 -21
  739. package/src/classes/backoffs.ts +0 -67
  740. package/src/classes/child-pool.ts +0 -119
  741. package/src/classes/compat.ts +0 -889
  742. package/src/classes/index.ts +0 -13
  743. package/src/classes/job.ts +0 -492
  744. package/src/classes/master.ts +0 -113
  745. package/src/classes/queue-base.ts +0 -80
  746. package/src/classes/queue-events.ts +0 -78
  747. package/src/classes/queue-getters.ts +0 -213
  748. package/src/classes/queue-scheduler.ts +0 -127
  749. package/src/classes/queue.ts +0 -194
  750. package/src/classes/redis-connection.ts +0 -127
  751. package/src/classes/repeat.ts +0 -212
  752. package/src/classes/sandbox.ts +0 -60
  753. package/src/classes/scripts.ts +0 -482
  754. package/src/classes/worker.ts +0 -313
  755. package/src/commands/addJob-8.lua +0 -106
  756. package/src/commands/cleanJobsInSet-1.lua +0 -48
  757. package/src/commands/index.ts +0 -62
  758. package/src/commands/isFinished-2.lua +0 -22
  759. package/src/commands/isJobInList-1.lua +0 -20
  760. package/src/commands/moveStalledJobsToWait-8.lua +0 -91
  761. package/src/commands/moveToActive-8.lua +0 -79
  762. package/src/commands/moveToDelayed-5.lua +0 -39
  763. package/src/commands/moveToFinished-7.lua +0 -92
  764. package/src/commands/pause-4.lua +0 -27
  765. package/src/commands/promote-4.lua +0 -49
  766. package/src/commands/releaseLock-1.lua +0 -19
  767. package/src/commands/removeJob-10.lua +0 -37
  768. package/src/commands/reprocessJob-4.lua +0 -36
  769. package/src/commands/retryJob-4.lua +0 -34
  770. package/src/commands/takeLock-1.lua +0 -17
  771. package/src/commands/updateDelaySet-7.lua +0 -71
  772. package/src/commands/updateProgress-2.lua +0 -15
  773. package/src/enums/index.ts +0 -1
  774. package/src/enums/retry-errors.enum.ts +0 -5
  775. package/src/interfaces/advanced-options.ts +0 -28
  776. package/src/interfaces/backoff-options.ts +0 -4
  777. package/src/interfaces/index.ts +0 -9
  778. package/src/interfaces/jobs-options.ts +0 -53
  779. package/src/interfaces/queue-options.ts +0 -30
  780. package/src/interfaces/queue-scheduler-options.ts +0 -6
  781. package/src/interfaces/rate-limiter-options.ts +0 -7
  782. package/src/interfaces/redis-options.ts +0 -7
  783. package/src/interfaces/repeat-options.ts +0 -19
  784. package/src/interfaces/worker-options.ts +0 -13
  785. package/src/test/fixtures/fixture_processor.js +0 -13
  786. package/src/test/fixtures/fixture_processor_bar.js +0 -13
  787. package/src/test/fixtures/fixture_processor_crash.js +0 -16
  788. package/src/test/fixtures/fixture_processor_exit.js +0 -15
  789. package/src/test/fixtures/fixture_processor_fail.js +0 -13
  790. package/src/test/fixtures/fixture_processor_foo.js +0 -13
  791. package/src/test/fixtures/fixture_processor_progress.js +0 -29
  792. package/src/test/fixtures/fixture_processor_slow.js +0 -13
  793. package/src/test/test_bulk.ts +0 -59
  794. package/src/test/test_child-pool.ts +0 -88
  795. package/src/test/test_clean.ts +0 -148
  796. package/src/test/test_compat.ts +0 -640
  797. package/src/test/test_connection.ts +0 -161
  798. package/src/test/test_delay.ts +0 -221
  799. package/src/test/test_events.ts +0 -198
  800. package/src/test/test_getters.ts +0 -348
  801. package/src/test/test_job.ts +0 -524
  802. package/src/test/test_pause.ts +0 -312
  803. package/src/test/test_queue.ts +0 -70
  804. package/src/test/test_rate_limiter.ts +0 -113
  805. package/src/test/test_repeat.ts +0 -787
  806. package/src/test/test_sandboxed_process.ts +0 -380
  807. package/src/test/test_stalled_jobs.ts +0 -146
  808. package/src/test/test_worker.ts +0 -1503
  809. package/src/utils.ts +0 -28
  810. package/tsconfig.json +0 -25
  811. package/tslint.json +0 -23
  812. /package/dist/{classes/master.d.ts → cjs/classes/main-worker.d.ts} +0 -0
  813. /package/dist/{test/test_bulk.d.ts → cjs/classes/main.d.ts} +0 -0
  814. /package/dist/{interfaces → cjs/interfaces}/backoff-options.js +0 -0
  815. /package/dist/{interfaces → cjs/interfaces}/rate-limiter-options.js +0 -0
  816. /package/dist/{interfaces → cjs/interfaces}/redis-options.js +0 -0
  817. /package/dist/{interfaces → cjs/interfaces}/repeat-options.js +0 -0
  818. /package/dist/{interfaces → cjs/interfaces}/worker-options.js +0 -0
  819. /package/dist/{test/test_child-pool.d.ts → esm/classes/main-worker.d.ts} +0 -0
  820. /package/dist/{test/test_clean.d.ts → esm/classes/main.d.ts} +0 -0
@@ -1,787 +0,0 @@
1
- import { Job, Queue } from '@src/classes';
2
- import { QueueEvents } from '@src/classes/queue-events';
3
- import { QueueScheduler } from '@src/classes/queue-scheduler';
4
- import { Repeat } from '@src/classes/repeat';
5
- import { Worker } from '@src/classes/worker';
6
- import { expect } from 'chai';
7
- import IORedis from 'ioredis';
8
- import { beforeEach, describe, it } from 'mocha';
9
- import { v4 } from 'node-uuid';
10
-
11
- const sinon = require('sinon');
12
- const moment = require('moment');
13
- const _ = require('lodash');
14
-
15
- const ONE_SECOND = 1000;
16
- const ONE_MINUTE = 60 * ONE_SECOND;
17
- const ONE_HOUR = 60 * ONE_MINUTE;
18
- const ONE_DAY = 24 * ONE_HOUR;
19
- const MAX_INT = 2147483647;
20
-
21
- const NoopProc = async (job: Job) => {};
22
-
23
- describe('repeat', function() {
24
- this.timeout(10000);
25
- let repeat: Repeat;
26
- let queue: Queue;
27
- let queueEvents: QueueEvents;
28
- let queueName: string;
29
- let client: IORedis.Redis;
30
-
31
- beforeEach(function() {
32
- this.clock = sinon.useFakeTimers();
33
- client = new IORedis();
34
- return client.flushdb();
35
- });
36
-
37
- beforeEach(async function() {
38
- queueName = 'test-' + v4();
39
- queue = new Queue(queueName);
40
- repeat = new Repeat(queueName);
41
- queueEvents = new QueueEvents(queueName);
42
- return queueEvents.waitUntilReady();
43
- });
44
-
45
- afterEach(async function() {
46
- this.clock.restore();
47
- await queue.close();
48
- await repeat.close();
49
- await queueEvents.close();
50
- return client.quit();
51
- });
52
-
53
- it('should create multiple jobs if they have the same cron pattern', async function() {
54
- const cron = '*/10 * * * * *';
55
-
56
- await Promise.all([
57
- queue.add('test1', {}, { repeat: { cron: cron } }),
58
- queue.add('test2', {}, { repeat: { cron: cron } }),
59
- ]);
60
-
61
- const count = await queue.count();
62
- expect(count).to.be.eql(2);
63
- });
64
-
65
- it('should get repeatable jobs with different cron pattern', async function() {
66
- const crons = [
67
- '10 * * * * *',
68
- '2 10 * * * *',
69
- '1 * * 5 * *',
70
- '2 * * 4 * *',
71
- ];
72
-
73
- await Promise.all([
74
- queue.add('first', {}, { repeat: { cron: crons[0], endDate: 12345 } }),
75
- queue.add('second', {}, { repeat: { cron: crons[1], endDate: 610000 } }),
76
- queue.add(
77
- 'third',
78
- {},
79
- { repeat: { cron: crons[2], tz: 'Africa/Abidjan' } },
80
- ),
81
- queue.add(
82
- 'fourth',
83
- {},
84
- { repeat: { cron: crons[3], tz: 'Africa/Accra' } },
85
- ),
86
- queue.add(
87
- 'fifth',
88
- {},
89
- { repeat: { every: 5000, tz: 'Europa/Copenhaguen' } },
90
- ),
91
- ]);
92
- const count = await repeat.getRepeatableCount();
93
- expect(count).to.be.eql(5);
94
-
95
- let jobs = await repeat.getRepeatableJobs(0, -1, true);
96
- jobs = await jobs.sort(function(a, b) {
97
- return crons.indexOf(a.cron) - crons.indexOf(b.cron);
98
- });
99
- expect(jobs)
100
- .to.be.and.an('array')
101
- .and.have.length(5)
102
- .and.to.deep.include({
103
- key: 'first::12345::10 * * * * *',
104
- name: 'first',
105
- id: null,
106
- endDate: 12345,
107
- tz: null,
108
- cron: '10 * * * * *',
109
- next: 10000,
110
- })
111
- .and.to.deep.include({
112
- key: 'second::610000::2 10 * * * *',
113
- name: 'second',
114
- id: null,
115
- endDate: 610000,
116
- tz: null,
117
- cron: '2 10 * * * *',
118
- next: 602000,
119
- })
120
- .and.to.deep.include({
121
- key: 'fourth:::Africa/Accra:2 * * 4 * *',
122
- name: 'fourth',
123
- id: null,
124
- endDate: null,
125
- tz: 'Africa/Accra',
126
- cron: '2 * * 4 * *',
127
- next: 259202000,
128
- })
129
- .and.to.deep.include({
130
- key: 'third:::Africa/Abidjan:1 * * 5 * *',
131
- name: 'third',
132
- id: null,
133
- endDate: null,
134
- tz: 'Africa/Abidjan',
135
- cron: '1 * * 5 * *',
136
- next: 345601000,
137
- });
138
- });
139
-
140
- it('should repeat every 2 seconds', async function() {
141
- this.timeout(20000);
142
- const queueScheduler = new QueueScheduler(queueName);
143
- await queueScheduler.waitUntilReady();
144
-
145
- const worker = new Worker(queueName, async job => {});
146
-
147
- const date = new Date('2017-02-07 9:24:00');
148
- this.clock.tick(date.getTime());
149
-
150
- const nextTick = 2 * ONE_SECOND + 100;
151
-
152
- await queue.add(
153
- 'test',
154
- { foo: 'bar' },
155
- { repeat: { cron: '*/2 * * * * *' } },
156
- );
157
-
158
- this.clock.tick(nextTick);
159
-
160
- let prev: any;
161
- var counter = 0;
162
-
163
- const completting = new Promise(resolve => {
164
- worker.on('completed', async job => {
165
- this.clock.tick(nextTick);
166
- if (prev) {
167
- expect(prev.timestamp).to.be.lt(job.timestamp);
168
- expect(job.timestamp - prev.timestamp).to.be.gte(2000);
169
- }
170
- prev = job;
171
- counter++;
172
- if (counter == 5) {
173
- resolve();
174
- }
175
- });
176
- });
177
-
178
- await completting;
179
- await worker.close();
180
- await queueScheduler.close();
181
- });
182
-
183
- it('should repeat every 2 seconds with startDate in future', async function() {
184
- this.timeout(200000);
185
- const queueScheduler = new QueueScheduler(queueName);
186
- await queueScheduler.waitUntilReady();
187
-
188
- const date = new Date('2017-02-07 9:24:00');
189
- this.clock.tick(date.getTime());
190
- const nextTick = 2 * ONE_SECOND + 500;
191
- const delay = 5 * ONE_SECOND + 500;
192
-
193
- const worker = new Worker(queueName, async job => {});
194
-
195
- await queue.add(
196
- 'test',
197
- { foo: 'bar' },
198
- {
199
- repeat: {
200
- cron: '*/2 * * * * *',
201
- startDate: new Date('2017-02-07 9:24:05'),
202
- },
203
- },
204
- );
205
-
206
- this.clock.tick(nextTick + delay);
207
-
208
- let prev: Job;
209
- let counter = 0;
210
-
211
- const completting = new Promise((resolve, reject) => {
212
- worker.on('completed', async job => {
213
- this.clock.tick(nextTick);
214
- if (prev) {
215
- expect(prev.timestamp).to.be.lt(job.timestamp);
216
- expect(job.timestamp - prev.timestamp).to.be.gte(2000);
217
- }
218
- prev = job;
219
- counter++;
220
- if (counter == 5) {
221
- resolve();
222
- }
223
- });
224
- });
225
-
226
- await completting;
227
-
228
- await queueScheduler.close();
229
- await worker.close();
230
- });
231
-
232
- it('should repeat every 2 seconds with startDate in past', async function() {
233
- this.timeout(200000);
234
- const queueScheduler = new QueueScheduler(queueName);
235
- await queueScheduler.waitUntilReady();
236
-
237
- const date = new Date('2017-02-07 9:24:00');
238
- this.clock.tick(date.getTime());
239
- const nextTick = 2 * ONE_SECOND + 500;
240
- const delay = 5 * ONE_SECOND + 500;
241
-
242
- const worker = new Worker(queueName, async job => {});
243
-
244
- await queue.add(
245
- 'repeat',
246
- { foo: 'bar' },
247
- {
248
- repeat: {
249
- cron: '*/2 * * * * *',
250
- startDate: new Date('2017-02-07 9:22:00'),
251
- },
252
- },
253
- );
254
-
255
- this.clock.tick(nextTick + delay);
256
-
257
- let prev: Job;
258
- let counter = 0;
259
-
260
- const completting = new Promise((resolve, reject) => {
261
- worker.on('completed', async job => {
262
- this.clock.tick(nextTick);
263
- if (prev) {
264
- expect(prev.timestamp).to.be.lt(job.timestamp);
265
- expect(job.timestamp - prev.timestamp).to.be.gte(2000);
266
- }
267
- prev = job;
268
- counter++;
269
- if (counter == 5) {
270
- resolve();
271
- }
272
- });
273
- });
274
-
275
- await completting;
276
- await queueScheduler.close();
277
- await worker.close();
278
- });
279
-
280
- // Skipped until we find a way of simulating time to avoid waiting 5 days
281
- it.skip('should repeat once a day for 5 days', async function() {
282
- const queueScheduler = new QueueScheduler(queueName);
283
- await queueScheduler.waitUntilReady();
284
-
285
- const date = new Date('2017-05-05 13:12:00');
286
- this.clock.tick(date.getTime());
287
- const nextTick = ONE_DAY;
288
-
289
- const worker = new Worker(queueName, async job => {});
290
-
291
- await queue.add(
292
- 'repeat',
293
- { foo: 'bar' },
294
- {
295
- repeat: {
296
- cron: '0 1 * * *',
297
- endDate: new Date('2017-05-10 13:12:00'),
298
- },
299
- },
300
- );
301
- this.clock.tick(nextTick);
302
-
303
- let prev: Job;
304
- let counter = 0;
305
- const completting = new Promise((resolve, reject) => {
306
- queue.on('completed', async job => {
307
- this.clock.tick(nextTick);
308
- if (prev) {
309
- expect(prev.timestamp).to.be.lt(job.timestamp);
310
- expect(job.timestamp - prev.timestamp).to.be.gte(ONE_DAY);
311
- }
312
- prev = job;
313
-
314
- counter++;
315
- if (counter == 5) {
316
- const waitingJobs = await queue.getWaiting();
317
- expect(waitingJobs.length).to.be.eql(0);
318
- const delayedJobs = await queue.getDelayed();
319
- expect(delayedJobs.length).to.be.eql(0);
320
- resolve();
321
- }
322
- });
323
- });
324
-
325
- await completting;
326
- await queueScheduler.close();
327
- await worker.close();
328
- });
329
-
330
- // Skipped until we find a way of simulating time to avoid waiting a month
331
- it.skip('should repeat 7:th day every month at 9:25', async function(done) {
332
- const queueScheduler = new QueueScheduler(queueName);
333
- await queueScheduler.waitUntilReady();
334
-
335
- const date = new Date('2017-02-02 7:21:42');
336
- this.clock.tick(date.getTime());
337
-
338
- const worker = new Worker(queueName, async job => {});
339
-
340
- const nextTick = () => {
341
- const now = moment();
342
- const nextMonth = moment().add(1, 'months');
343
- this.clock.tick(nextMonth - now);
344
- };
345
-
346
- await queue.add(
347
- 'repeat',
348
- { foo: 'bar' },
349
- { repeat: { cron: '* 25 9 7 * *' } },
350
- );
351
- nextTick();
352
-
353
- let counter = 20;
354
- let prev: Job;
355
- worker.on('completed', async job => {
356
- if (prev) {
357
- expect(prev.timestamp).to.be.lt(job.timestamp);
358
- const diff = moment(job.timestamp).diff(
359
- moment(prev.timestamp),
360
- 'months',
361
- true,
362
- );
363
- expect(diff).to.be.gte(1);
364
- }
365
- prev = job;
366
-
367
- counter--;
368
- if (counter == 0) {
369
- done();
370
- }
371
- nextTick();
372
- });
373
- });
374
-
375
- it('should create two jobs with the same ids', async function() {
376
- const options = {
377
- repeat: {
378
- cron: '0 1 * * *',
379
- },
380
- };
381
-
382
- const p1 = queue.add('test', { foo: 'bar' }, options);
383
- const p2 = queue.add('test', { foo: 'bar' }, options);
384
-
385
- const jobs = await Promise.all([p1, p2]);
386
- expect(jobs.length).to.be.eql(2);
387
- expect(jobs[0].id).to.be.eql(jobs[1].id);
388
- });
389
-
390
- it('should allow removing a named repeatable job', async function() {
391
- const queueScheduler = new QueueScheduler(queueName);
392
- await queueScheduler.waitUntilReady();
393
-
394
- const numJobs = 3;
395
- const date = new Date('2017-02-07 9:24:00');
396
- let prev: Job;
397
- let counter = 0;
398
-
399
- this.clock.tick(date.getTime());
400
-
401
- const nextTick = ONE_SECOND + 1;
402
- const repeat = { cron: '*/1 * * * * *' };
403
- let processor;
404
-
405
- const processing = new Promise((resolve, reject) => {
406
- processor = async (job: Job) => {
407
- counter++;
408
- if (counter == numJobs) {
409
- await queue.removeRepeatable('remove', repeat);
410
- this.clock.tick(nextTick);
411
- const delayed = await queue.getDelayed();
412
- expect(delayed).to.be.empty;
413
- resolve();
414
- } else if (counter > numJobs) {
415
- reject(Error('should not repeat more than 7 times'));
416
- }
417
- };
418
- });
419
-
420
- const worker = new Worker(queueName, processor);
421
-
422
- await queue.add('remove', { foo: 'bar' }, { repeat });
423
- this.clock.tick(nextTick);
424
-
425
- worker.on('completed', job => {
426
- this.clock.tick(nextTick);
427
- if (prev) {
428
- expect(prev.timestamp).to.be.lt(job.timestamp);
429
- expect(job.timestamp - prev.timestamp).to.be.gte(ONE_SECOND);
430
- }
431
- prev = job;
432
- });
433
-
434
- await processing;
435
- await queueScheduler.close();
436
- await worker.close();
437
- });
438
-
439
- it('should be able to remove repeatable jobs by key', async () => {
440
- const repeat = { cron: '*/2 * * * * *' };
441
-
442
- await queue.add('remove', { foo: 'bar' }, { repeat });
443
- const repeatableJobs = await queue.getRepeatableJobs();
444
- expect(repeatableJobs).to.have.length(1);
445
- await queue.removeRepeatableByKey(repeatableJobs[0].key);
446
- const repeatableJobsAfterRemove = await queue.getRepeatableJobs();
447
- expect(repeatableJobsAfterRemove).to.have.length(0);
448
- });
449
-
450
- it('should allow removing a customId repeatable job', async function() {
451
- const queueScheduler = new QueueScheduler(queueName);
452
- await queueScheduler.waitUntilReady();
453
-
454
- const date = new Date('2017-02-07 9:24:00');
455
- let prev: Job;
456
- let counter = 0;
457
- let processor;
458
- const jobId = 'xxxx';
459
-
460
- this.clock.tick(date.getTime());
461
-
462
- const nextTick = 2 * ONE_SECOND + 10;
463
- const repeat = { cron: '*/2 * * * * *' };
464
-
465
- await queue.add('test', { foo: 'bar' }, { repeat, jobId });
466
-
467
- this.clock.tick(nextTick);
468
-
469
- const processing = new Promise((resolve, reject) => {
470
- processor = async (job: Job) => {
471
- counter++;
472
- if (counter == 4) {
473
- try {
474
- await queue.removeRepeatable('test', repeat, jobId);
475
- this.clock.tick(nextTick);
476
- const delayed = await queue.getDelayed();
477
- expect(delayed).to.be.empty;
478
- resolve();
479
- } catch (err) {
480
- reject(err);
481
- }
482
- } else if (counter > 4) {
483
- reject(Error('should not repeat more than 4 times'));
484
- }
485
- };
486
- });
487
-
488
- const worker = new Worker(queueName, processor);
489
- await worker.waitUntilReady();
490
-
491
- worker.on('completed', job => {
492
- this.clock.tick(nextTick);
493
- if (prev) {
494
- expect(prev.timestamp).to.be.lt(job.timestamp);
495
- expect(job.timestamp - prev.timestamp).to.be.gte(2000);
496
- }
497
- prev = job;
498
- });
499
-
500
- await processing;
501
- await queueScheduler.close();
502
- });
503
-
504
- it('should not re-add a repeatable job after it has been removed', async function() {
505
- const queueScheduler = new QueueScheduler(queueName);
506
- await queueScheduler.waitUntilReady();
507
-
508
- const repeat = await queue.repeat;
509
-
510
- let worker: Worker;
511
- const jobId = 'xxxx';
512
- const date = new Date('2017-02-07 9:24:00');
513
- const nextTick = 2 * ONE_SECOND + 100;
514
- const nextRepeatableJob = repeat.addNextRepeatableJob;
515
- this.clock.tick(date.getTime());
516
-
517
- const repeatOpts = { cron: '*/2 * * * * *' };
518
-
519
- const afterRemoved = new Promise(async resolve => {
520
- worker = new Worker(queueName, async job => {
521
- const repeatWorker = await worker.repeat;
522
- repeatWorker.addNextRepeatableJob = async (...args) => {
523
- // In order to simulate race condition
524
- // Make removeRepeatables happen any time after a moveToX is called
525
- await queue.removeRepeatable(
526
- 'test',
527
- _.defaults({ jobId }, repeatOpts),
528
- );
529
-
530
- // nextRepeatableJob will now re-add the removed repeatable
531
- const result = await nextRepeatableJob.apply(repeat, args);
532
- resolve();
533
- return result;
534
- };
535
- });
536
-
537
- worker.on('completed', () => {
538
- this.clock.tick(nextTick);
539
- });
540
- });
541
-
542
- await queue.add('test', { foo: 'bar' }, { repeat: repeatOpts, jobId });
543
-
544
- this.clock.tick(nextTick);
545
-
546
- await afterRemoved;
547
-
548
- const jobs = await queue.getRepeatableJobs();
549
- // Repeatable job was recreated
550
- expect(jobs.length).to.eql(0);
551
-
552
- await queueScheduler.close();
553
- await worker.close();
554
- });
555
-
556
- it('should allow adding a repeatable job after removing it', async function() {
557
- const queueScheduler = new QueueScheduler(queueName);
558
- await queueScheduler.waitUntilReady();
559
-
560
- const repeat = {
561
- cron: '*/5 * * * *',
562
- };
563
-
564
- const worker = new Worker(queueName, NoopProc);
565
- await worker.waitUntilReady();
566
-
567
- await queue.add(
568
- 'myTestJob',
569
- {
570
- data: '2',
571
- },
572
- {
573
- repeat: repeat,
574
- },
575
- );
576
- let delayed = await queue.getDelayed();
577
- expect(delayed.length).to.be.eql(1);
578
-
579
- await queue.removeRepeatable('myTestJob', repeat);
580
-
581
- delayed = await queue.getDelayed();
582
- expect(delayed.length).to.be.eql(0);
583
-
584
- await queue.add('myTestJob', { data: '2' }, { repeat: repeat });
585
-
586
- delayed = await queue.getDelayed();
587
- expect(delayed.length).to.be.eql(1);
588
-
589
- await worker.close();
590
- await queueScheduler.close();
591
- });
592
-
593
- it('should not repeat more than 5 times', async function() {
594
- const queueScheduler = new QueueScheduler(queueName);
595
- await queueScheduler.waitUntilReady();
596
-
597
- const date = new Date('2017-02-07 9:24:00');
598
- this.clock.tick(date.getTime());
599
- const nextTick = ONE_SECOND + 500;
600
-
601
- const worker = new Worker(queueName, NoopProc);
602
-
603
- await queue.add(
604
- 'repeat',
605
- { foo: 'bar' },
606
- { repeat: { limit: 5, cron: '*/1 * * * * *' } },
607
- );
608
- this.clock.tick(nextTick);
609
-
610
- var counter = 0;
611
-
612
- const completting = new Promise((resolve, reject) => {
613
- worker.on('completed', () => {
614
- this.clock.tick(nextTick);
615
- counter++;
616
- if (counter == 5) {
617
- resolve();
618
- } else if (counter > 5) {
619
- reject(Error('should not repeat more than 5 times'));
620
- }
621
- });
622
- });
623
-
624
- await completting;
625
- await worker.close();
626
- await queueScheduler.close();
627
- });
628
-
629
- it('should processes delayed jobs by priority', async function() {
630
- const queueScheduler = new QueueScheduler(queueName);
631
- await queueScheduler.waitUntilReady();
632
-
633
- let currentPriority = 1;
634
- const nextTick = 1000;
635
-
636
- let processor;
637
-
638
- const processing = new Promise((resolve, reject) => {
639
- processor = async (job: Job) => {
640
- try {
641
- expect(job.id).to.be.ok;
642
- expect(job.data.p).to.be.eql(currentPriority++);
643
- } catch (err) {
644
- reject(err);
645
- }
646
-
647
- if (currentPriority > 3) {
648
- resolve();
649
- }
650
- };
651
- });
652
-
653
- await Promise.all([
654
- queue.add('test', { p: 1 }, { priority: 1, delay: nextTick * 3 }),
655
- queue.add('test', { p: 2 }, { priority: 2, delay: nextTick * 2 }),
656
- queue.add('test', { p: 3 }, { priority: 3, delay: nextTick }),
657
- ]);
658
-
659
- this.clock.tick(nextTick * 3 + 100);
660
-
661
- const worker = new Worker(queueName, processor);
662
- await worker.waitUntilReady();
663
-
664
- await processing;
665
-
666
- await worker.close();
667
- await queueScheduler.close();
668
- });
669
-
670
- it('should use ".every" as a valid interval', async function() {
671
- const queueScheduler = new QueueScheduler(queueName);
672
- await queueScheduler.waitUntilReady();
673
-
674
- const interval = ONE_SECOND * 2;
675
- const date = new Date('2017-02-07 9:24:00');
676
-
677
- // Quantize time
678
- const time = Math.floor(date.getTime() / interval) * interval;
679
- this.clock.tick(time);
680
-
681
- const nextTick = ONE_SECOND * 2 + 500;
682
-
683
- await queue.add('repeat m', { type: 'm' }, { repeat: { every: interval } });
684
- await queue.add('repeat s', { type: 's' }, { repeat: { every: interval } });
685
- this.clock.tick(nextTick);
686
-
687
- const worker = new Worker(queueName, async job => {});
688
- await worker.waitUntilReady();
689
-
690
- let prevType: string;
691
- let counter = 0;
692
-
693
- const completting = new Promise(resolve => {
694
- worker.on('completed', job => {
695
- this.clock.tick(nextTick);
696
- if (prevType) {
697
- expect(prevType).to.not.be.eql(job.data.type);
698
- }
699
- prevType = job.data.type;
700
- counter++;
701
- if (counter == 20) {
702
- resolve();
703
- }
704
- });
705
- });
706
-
707
- await completting;
708
- await worker.close();
709
- await queueScheduler.close();
710
- });
711
-
712
- it('should throw an error when using .cron and .every simutaneously', async function() {
713
- try {
714
- await queue.add(
715
- 'repeat',
716
- { type: 'm' },
717
- { repeat: { every: 5000, cron: '* /1 * * * * *' } },
718
- );
719
- throw new Error('The error was not thrown');
720
- } catch (err) {
721
- expect(err.message).to.be.eql(
722
- 'Both .cron and .every options are defined for this repeatable job',
723
- );
724
- }
725
- });
726
-
727
- it('should emit a waiting event when adding a repeatable job to the waiting list', async function() {
728
- const queueScheduler = new QueueScheduler(queueName);
729
- await queueScheduler.waitUntilReady();
730
-
731
- const date = new Date('2017-02-07 9:24:00');
732
- this.clock.tick(date.getTime());
733
- const nextTick = 1 * ONE_SECOND + 500;
734
-
735
- const worker = new Worker(queueName, async job => {});
736
-
737
- const waiting = new Promise((resolve, reject) => {
738
- queueEvents.on('waiting', function({ event, jobId, prev }) {
739
- try {
740
- expect(jobId).to.be.equal(
741
- 'repeat:test:16db7a9b166154f5c636abf3c8fe3364:' +
742
- (date.getTime() + 1 * ONE_SECOND),
743
- );
744
- resolve();
745
- } catch (err) {
746
- reject(err);
747
- }
748
- });
749
- });
750
-
751
- await queue.add(
752
- 'test',
753
- { foo: 'bar' },
754
- { repeat: { cron: '*/1 * * * * *' } },
755
- );
756
- this.clock.tick(nextTick);
757
-
758
- await waiting;
759
- await worker.close();
760
- await queueScheduler.close();
761
- });
762
-
763
- it('should have the right count value', async function() {
764
- const queueScheduler = new QueueScheduler(queueName);
765
- await queueScheduler.waitUntilReady();
766
-
767
- await queue.add('test', { foo: 'bar' }, { repeat: { every: 1000 } });
768
- this.clock.tick(ONE_SECOND + 100);
769
-
770
- let processor;
771
- const processing = new Promise((resolve, reject) => {
772
- processor = async (job: Job) => {
773
- if (job.opts.repeat.count === 1) {
774
- resolve();
775
- } else {
776
- reject(new Error('repeatable job got the wrong repeat count'));
777
- }
778
- };
779
- });
780
-
781
- const worker = new Worker(queueName, processor);
782
-
783
- await processing;
784
- await worker.close();
785
- await queueScheduler.close();
786
- });
787
- });