bullmq 1.57.4 → 1.59.2

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 (383) hide show
  1. package/dist/bullmq.d.ts +1839 -0
  2. package/dist/{classes → cjs/classes}/backoffs.d.ts +0 -0
  3. package/dist/{classes → cjs/classes}/backoffs.js +0 -0
  4. package/dist/cjs/classes/backoffs.js.map +1 -0
  5. package/dist/{classes → cjs/classes}/child-pool.d.ts +0 -0
  6. package/dist/{classes → cjs/classes}/child-pool.js +1 -1
  7. package/dist/cjs/classes/child-pool.js.map +1 -0
  8. package/dist/{classes → cjs/classes}/child-processor.d.ts +0 -0
  9. package/dist/{classes → cjs/classes}/child-processor.js +0 -0
  10. package/dist/cjs/classes/child-processor.js.map +1 -0
  11. package/dist/{classes → cjs/classes}/compat.d.ts +0 -0
  12. package/dist/{classes → cjs/classes}/compat.js +0 -0
  13. package/dist/cjs/classes/compat.js.map +1 -0
  14. package/dist/{classes → cjs/classes}/flow-producer.d.ts +0 -0
  15. package/dist/{classes → cjs/classes}/flow-producer.js +0 -0
  16. package/dist/cjs/classes/flow-producer.js.map +1 -0
  17. package/dist/{classes → cjs/classes}/index.d.ts +0 -0
  18. package/dist/{classes → cjs/classes}/index.js +0 -0
  19. package/dist/cjs/classes/index.js.map +1 -0
  20. package/dist/{classes → cjs/classes}/job.d.ts +0 -0
  21. package/dist/{classes → cjs/classes}/job.js +0 -0
  22. package/dist/cjs/classes/job.js.map +1 -0
  23. package/dist/{classes → cjs/classes}/master.d.ts +0 -0
  24. package/dist/{classes → cjs/classes}/master.js +0 -0
  25. package/dist/cjs/classes/master.js.map +1 -0
  26. package/dist/{classes → cjs/classes}/process-utils.d.ts +0 -0
  27. package/dist/{classes → cjs/classes}/process-utils.js +0 -0
  28. package/dist/cjs/classes/process-utils.js.map +1 -0
  29. package/dist/{classes → cjs/classes}/queue-base.d.ts +0 -0
  30. package/dist/{classes → cjs/classes}/queue-base.js +0 -0
  31. package/dist/cjs/classes/queue-base.js.map +1 -0
  32. package/dist/{classes → cjs/classes}/queue-events.d.ts +0 -0
  33. package/dist/{classes → cjs/classes}/queue-events.js +0 -0
  34. package/dist/cjs/classes/queue-events.js.map +1 -0
  35. package/dist/{classes → cjs/classes}/queue-getters.d.ts +0 -0
  36. package/dist/{classes → cjs/classes}/queue-getters.js +0 -0
  37. package/dist/cjs/classes/queue-getters.js.map +1 -0
  38. package/dist/{classes → cjs/classes}/queue-keys.d.ts +0 -0
  39. package/dist/{classes → cjs/classes}/queue-keys.js +0 -0
  40. package/dist/cjs/classes/queue-keys.js.map +1 -0
  41. package/dist/{classes → cjs/classes}/queue-scheduler.d.ts +0 -0
  42. package/dist/{classes → cjs/classes}/queue-scheduler.js +0 -0
  43. package/dist/cjs/classes/queue-scheduler.js.map +1 -0
  44. package/dist/{classes → cjs/classes}/queue.d.ts +2 -2
  45. package/dist/{classes → cjs/classes}/queue.js +0 -0
  46. package/dist/cjs/classes/queue.js.map +1 -0
  47. package/dist/{classes → cjs/classes}/redis-connection.d.ts +0 -0
  48. package/dist/{classes → cjs/classes}/redis-connection.js +0 -0
  49. package/dist/cjs/classes/redis-connection.js.map +1 -0
  50. package/dist/{classes → cjs/classes}/repeat.d.ts +2 -2
  51. package/dist/{classes → cjs/classes}/repeat.js +3 -6
  52. package/dist/cjs/classes/repeat.js.map +1 -0
  53. package/dist/{classes → cjs/classes}/sandbox.d.ts +0 -0
  54. package/dist/{classes → cjs/classes}/sandbox.js +0 -0
  55. package/dist/cjs/classes/sandbox.js.map +1 -0
  56. package/dist/{classes → cjs/classes}/scripts.d.ts +2 -0
  57. package/dist/{classes → cjs/classes}/scripts.js +18 -0
  58. package/dist/cjs/classes/scripts.js.map +1 -0
  59. package/dist/{classes → cjs/classes}/timer-manager.d.ts +0 -0
  60. package/dist/{classes → cjs/classes}/timer-manager.js +0 -0
  61. package/dist/cjs/classes/timer-manager.js.map +1 -0
  62. package/dist/{classes → cjs/classes}/worker.d.ts +33 -18
  63. package/dist/{classes → cjs/classes}/worker.js +18 -3
  64. package/dist/cjs/classes/worker.js.map +1 -0
  65. package/dist/{commands → cjs/commands}/addJob-9.lua +0 -0
  66. package/dist/{commands → cjs/commands}/changeDelay-4.lua +0 -0
  67. package/dist/{commands → cjs/commands}/cleanJobsInSet-2.lua +0 -0
  68. package/dist/{commands → cjs/commands}/drain-4.lua +0 -0
  69. package/dist/{commands → cjs/commands}/extendLock-2.lua +0 -0
  70. package/dist/{commands → cjs/commands}/getState-7.lua +0 -0
  71. package/dist/{commands → cjs/commands}/getStateV2-7.lua +0 -0
  72. package/dist/{commands → cjs/commands}/includes/destructureJobKey.lua +0 -0
  73. package/dist/{commands → cjs/commands}/includes/updateParentDepsIfNeeded.lua +0 -0
  74. package/dist/{commands → cjs/commands}/index.d.ts +0 -0
  75. package/dist/{commands → cjs/commands}/index.js +0 -0
  76. package/dist/cjs/commands/index.js.map +1 -0
  77. package/dist/{commands → cjs/commands}/isFinished-3.lua +0 -0
  78. package/dist/{commands → cjs/commands}/isJobInList-1.lua +0 -0
  79. package/dist/{commands → cjs/commands}/moveStalledJobsToWait-8.lua +0 -0
  80. package/dist/{commands → cjs/commands}/moveToActive-8.lua +0 -0
  81. package/dist/{commands → cjs/commands}/moveToDelayed-5.lua +0 -0
  82. package/dist/{commands → cjs/commands}/moveToFinished-8.lua +0 -0
  83. package/dist/{commands → cjs/commands}/moveToWaitingChildren-4.lua +0 -0
  84. package/dist/{commands → cjs/commands}/obliterate-2.lua +0 -0
  85. package/dist/{commands → cjs/commands}/pause-4.lua +0 -0
  86. package/dist/{commands → cjs/commands}/promote-5.lua +0 -0
  87. package/dist/{commands → cjs/commands}/releaseLock-1.lua +0 -0
  88. package/dist/{commands → cjs/commands}/removeJob-1.lua +0 -0
  89. package/dist/{commands → cjs/commands}/removeRepeatable-2.lua +0 -0
  90. package/dist/{commands → cjs/commands}/reprocessJob-4.lua +0 -0
  91. package/dist/{commands → cjs/commands}/retryJob-4.lua +0 -0
  92. package/dist/{commands → cjs/commands}/script-loader.d.ts +0 -0
  93. package/dist/{commands → cjs/commands}/script-loader.js +0 -0
  94. package/dist/cjs/commands/script-loader.js.map +1 -0
  95. package/dist/{commands → cjs/commands}/takeLock-1.lua +0 -0
  96. package/dist/{commands → cjs/commands}/updateDelaySet-7.lua +0 -0
  97. package/dist/{commands → cjs/commands}/updateProgress-2.lua +0 -0
  98. package/dist/{enums → cjs/enums}/error-codes.enum.d.ts +0 -0
  99. package/dist/{enums → cjs/enums}/error-codes.enum.js +0 -0
  100. package/dist/cjs/enums/error-codes.enum.js.map +1 -0
  101. package/dist/{enums → cjs/enums}/index.d.ts +0 -0
  102. package/dist/{enums → cjs/enums}/index.js +0 -0
  103. package/dist/{enums → cjs/enums}/index.js.map +1 -1
  104. package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  105. package/dist/{index.js → cjs/index.js} +0 -0
  106. package/dist/cjs/index.js.map +1 -0
  107. package/dist/{interfaces → cjs/interfaces}/advanced-options.d.ts +0 -0
  108. package/dist/{interfaces → cjs/interfaces}/advanced-options.js +0 -0
  109. package/dist/cjs/interfaces/advanced-options.js.map +1 -0
  110. package/dist/{interfaces → cjs/interfaces}/backoff-options.d.ts +0 -0
  111. package/dist/{interfaces → cjs/interfaces}/backoff-options.js +0 -0
  112. package/dist/cjs/interfaces/backoff-options.js.map +1 -0
  113. package/dist/{interfaces → cjs/interfaces}/child-command.d.ts +0 -0
  114. package/dist/{interfaces → cjs/interfaces}/child-command.js +0 -0
  115. package/dist/cjs/interfaces/child-command.js.map +1 -0
  116. package/dist/{interfaces → cjs/interfaces}/child-message.d.ts +0 -0
  117. package/dist/{interfaces → cjs/interfaces}/child-message.js +0 -0
  118. package/dist/cjs/interfaces/child-message.js.map +1 -0
  119. package/dist/{interfaces → cjs/interfaces}/connection.d.ts +0 -0
  120. package/dist/{interfaces → cjs/interfaces}/connection.js +0 -0
  121. package/dist/cjs/interfaces/connection.js.map +1 -0
  122. package/dist/{interfaces → cjs/interfaces}/flow-job.d.ts +0 -0
  123. package/dist/{interfaces → cjs/interfaces}/flow-job.js +0 -0
  124. package/dist/{interfaces → cjs/interfaces}/flow-job.js.map +1 -1
  125. package/dist/{interfaces → cjs/interfaces}/index.d.ts +0 -0
  126. package/dist/{interfaces → cjs/interfaces}/index.js +0 -0
  127. package/dist/cjs/interfaces/index.js.map +1 -0
  128. package/dist/{interfaces → cjs/interfaces}/jobs-options.d.ts +0 -0
  129. package/dist/{interfaces → cjs/interfaces}/jobs-options.js +0 -0
  130. package/dist/cjs/interfaces/jobs-options.js.map +1 -0
  131. package/dist/{interfaces → cjs/interfaces}/parent-command.d.ts +0 -0
  132. package/dist/{interfaces → cjs/interfaces}/parent-command.js +0 -0
  133. package/dist/cjs/interfaces/parent-command.js.map +1 -0
  134. package/dist/{interfaces → cjs/interfaces}/parent-message.d.ts +0 -0
  135. package/dist/{interfaces → cjs/interfaces}/parent-message.js +0 -0
  136. package/dist/cjs/interfaces/parent-message.js.map +1 -0
  137. package/dist/{interfaces → cjs/interfaces}/parent.d.ts +0 -0
  138. package/dist/{interfaces → cjs/interfaces}/parent.js +0 -0
  139. package/dist/{interfaces → cjs/interfaces}/parent.js.map +1 -1
  140. package/dist/{interfaces → cjs/interfaces}/queue-options.d.ts +0 -0
  141. package/dist/{interfaces → cjs/interfaces}/queue-options.js +0 -0
  142. package/dist/cjs/interfaces/queue-options.js.map +1 -0
  143. package/dist/{interfaces → cjs/interfaces}/queue-scheduler-options.d.ts +0 -0
  144. package/dist/{interfaces → cjs/interfaces}/queue-scheduler-options.js +0 -0
  145. package/dist/cjs/interfaces/queue-scheduler-options.js.map +1 -0
  146. package/dist/{interfaces → cjs/interfaces}/rate-limiter-options.d.ts +0 -0
  147. package/dist/{interfaces → cjs/interfaces}/rate-limiter-options.js +0 -0
  148. package/dist/cjs/interfaces/rate-limiter-options.js.map +1 -0
  149. package/dist/{interfaces → cjs/interfaces}/redis-options.d.ts +0 -0
  150. package/dist/{interfaces → cjs/interfaces}/redis-options.js +0 -0
  151. package/dist/cjs/interfaces/redis-options.js.map +1 -0
  152. package/dist/{interfaces → cjs/interfaces}/redis-streams.d.ts +0 -0
  153. package/dist/{interfaces → cjs/interfaces}/redis-streams.js +0 -0
  154. package/dist/cjs/interfaces/redis-streams.js.map +1 -0
  155. package/dist/{interfaces → cjs/interfaces}/repeat-options.d.ts +0 -0
  156. package/dist/{interfaces → cjs/interfaces}/repeat-options.js +0 -0
  157. package/dist/cjs/interfaces/repeat-options.js.map +1 -0
  158. package/dist/{interfaces → cjs/interfaces}/sandboxed-job-processor.d.ts +0 -0
  159. package/dist/{interfaces → cjs/interfaces}/sandboxed-job-processor.js +0 -0
  160. package/dist/cjs/interfaces/sandboxed-job-processor.js.map +1 -0
  161. package/dist/{interfaces → cjs/interfaces}/sandboxed-job.d.ts +0 -0
  162. package/dist/{interfaces → cjs/interfaces}/sandboxed-job.js +0 -0
  163. package/dist/cjs/interfaces/sandboxed-job.js.map +1 -0
  164. package/dist/{interfaces → cjs/interfaces}/worker-options.d.ts +0 -0
  165. package/dist/{interfaces → cjs/interfaces}/worker-options.js +0 -0
  166. package/dist/cjs/interfaces/worker-options.js.map +1 -0
  167. package/dist/{utils.d.ts → cjs/utils.d.ts} +0 -0
  168. package/dist/{utils.js → cjs/utils.js} +0 -0
  169. package/dist/cjs/utils.js.map +1 -0
  170. package/dist/esm/classes/backoffs.d.ts +15 -0
  171. package/dist/esm/classes/backoffs.js +44 -0
  172. package/dist/esm/classes/backoffs.js.map +1 -0
  173. package/dist/esm/classes/child-pool.d.ts +22 -0
  174. package/dist/esm/classes/child-pool.js +125 -0
  175. package/dist/esm/classes/child-pool.js.map +1 -0
  176. package/dist/esm/classes/child-processor.d.ts +24 -0
  177. package/dist/esm/classes/child-processor.js +165 -0
  178. package/dist/esm/classes/child-processor.js.map +1 -0
  179. package/dist/esm/classes/compat.d.ts +316 -0
  180. package/dist/esm/classes/compat.js +674 -0
  181. package/dist/esm/classes/compat.js.map +1 -0
  182. package/dist/esm/classes/flow-producer.d.ts +148 -0
  183. package/dist/esm/classes/flow-producer.js +228 -0
  184. package/dist/esm/classes/flow-producer.js.map +1 -0
  185. package/dist/esm/classes/index.d.ts +14 -0
  186. package/dist/esm/classes/index.js +15 -0
  187. package/dist/esm/classes/index.js.map +1 -0
  188. package/dist/esm/classes/job.d.ts +338 -0
  189. package/dist/esm/classes/job.js +623 -0
  190. package/dist/esm/classes/job.js.map +1 -0
  191. package/dist/esm/classes/master.d.ts +1 -0
  192. package/dist/esm/classes/master.js +35 -0
  193. package/dist/esm/classes/master.js.map +1 -0
  194. package/dist/esm/classes/process-utils.d.ts +7 -0
  195. package/dist/esm/classes/process-utils.js +31 -0
  196. package/dist/esm/classes/process-utils.js.map +1 -0
  197. package/dist/esm/classes/queue-base.d.ts +22 -0
  198. package/dist/esm/classes/queue-base.js +62 -0
  199. package/dist/esm/classes/queue-base.js.map +1 -0
  200. package/dist/esm/classes/queue-events.d.ts +153 -0
  201. package/dist/esm/classes/queue-events.js +108 -0
  202. package/dist/esm/classes/queue-events.js.map +1 -0
  203. package/dist/esm/classes/queue-getters.d.ts +54 -0
  204. package/dist/esm/classes/queue-getters.js +207 -0
  205. package/dist/esm/classes/queue-getters.js.map +1 -0
  206. package/dist/esm/classes/queue-keys.d.ts +10 -0
  207. package/dist/esm/classes/queue-keys.js +40 -0
  208. package/dist/esm/classes/queue-keys.js.map +1 -0
  209. package/dist/esm/classes/queue-scheduler.d.ts +35 -0
  210. package/dist/esm/classes/queue-scheduler.js +156 -0
  211. package/dist/esm/classes/queue-scheduler.js.map +1 -0
  212. package/dist/esm/classes/queue.d.ts +143 -0
  213. package/dist/esm/classes/queue.js +195 -0
  214. package/dist/esm/classes/queue.js.map +1 -0
  215. package/dist/esm/classes/redis-connection.d.ts +28 -0
  216. package/dist/esm/classes/redis-connection.js +164 -0
  217. package/dist/esm/classes/redis-connection.js.map +1 -0
  218. package/dist/esm/classes/repeat.d.ts +20 -0
  219. package/dist/esm/classes/repeat.js +140 -0
  220. package/dist/esm/classes/repeat.js.map +1 -0
  221. package/dist/esm/classes/sandbox.d.ts +4 -0
  222. package/dist/esm/classes/sandbox.js +56 -0
  223. package/dist/esm/classes/sandbox.js.map +1 -0
  224. package/dist/esm/classes/scripts.d.ts +82 -0
  225. package/dist/esm/classes/scripts.js +510 -0
  226. package/dist/esm/classes/scripts.js.map +1 -0
  227. package/dist/esm/classes/timer-manager.d.ts +17 -0
  228. package/dist/esm/classes/timer-manager.js +47 -0
  229. package/dist/esm/classes/timer-manager.js.map +1 -0
  230. package/dist/esm/classes/worker.d.ts +168 -0
  231. package/dist/esm/classes/worker.js +469 -0
  232. package/dist/esm/classes/worker.js.map +1 -0
  233. package/dist/esm/commands/addJob-9.lua +179 -0
  234. package/dist/esm/commands/changeDelay-4.lua +41 -0
  235. package/dist/esm/commands/cleanJobsInSet-2.lua +65 -0
  236. package/dist/esm/commands/drain-4.lua +36 -0
  237. package/dist/esm/commands/extendLock-2.lua +23 -0
  238. package/dist/esm/commands/getState-7.lua +63 -0
  239. package/dist/esm/commands/getStateV2-7.lua +51 -0
  240. package/dist/esm/commands/includes/destructureJobKey.lua +12 -0
  241. package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +19 -0
  242. package/dist/esm/commands/index.d.ts +4 -0
  243. package/dist/esm/commands/index.js +5 -0
  244. package/dist/esm/commands/index.js.map +1 -0
  245. package/dist/esm/commands/isFinished-3.lua +48 -0
  246. package/dist/esm/commands/isJobInList-1.lua +20 -0
  247. package/dist/esm/commands/moveStalledJobsToWait-8.lua +112 -0
  248. package/dist/esm/commands/moveToActive-8.lua +100 -0
  249. package/dist/esm/commands/moveToDelayed-5.lua +45 -0
  250. package/dist/esm/commands/moveToFinished-8.lua +159 -0
  251. package/dist/esm/commands/moveToWaitingChildren-4.lua +60 -0
  252. package/dist/esm/commands/obliterate-2.lua +129 -0
  253. package/dist/esm/commands/pause-4.lua +27 -0
  254. package/dist/esm/commands/promote-5.lua +54 -0
  255. package/dist/esm/commands/releaseLock-1.lua +19 -0
  256. package/dist/esm/commands/removeJob-1.lua +115 -0
  257. package/dist/esm/commands/removeRepeatable-2.lua +23 -0
  258. package/dist/esm/commands/reprocessJob-4.lua +32 -0
  259. package/dist/esm/commands/retryJob-4.lua +34 -0
  260. package/dist/esm/commands/script-loader.d.ts +120 -0
  261. package/dist/esm/commands/script-loader.js +395 -0
  262. package/dist/esm/commands/script-loader.js.map +1 -0
  263. package/dist/esm/commands/takeLock-1.lua +17 -0
  264. package/dist/esm/commands/updateDelaySet-7.lua +73 -0
  265. package/dist/esm/commands/updateProgress-2.lua +15 -0
  266. package/dist/esm/enums/error-codes.enum.d.ts +7 -0
  267. package/dist/esm/enums/error-codes.enum.js +9 -0
  268. package/dist/esm/enums/error-codes.enum.js.map +1 -0
  269. package/dist/esm/enums/index.d.ts +1 -0
  270. package/dist/esm/enums/index.js +2 -0
  271. package/dist/esm/enums/index.js.map +1 -0
  272. package/dist/esm/index.d.ts +5 -0
  273. package/dist/esm/index.js +6 -0
  274. package/dist/esm/index.js.map +1 -0
  275. package/dist/esm/interfaces/advanced-options.d.ts +6 -0
  276. package/dist/esm/interfaces/advanced-options.js +2 -0
  277. package/dist/esm/interfaces/advanced-options.js.map +1 -0
  278. package/dist/esm/interfaces/backoff-options.d.ts +15 -0
  279. package/dist/esm/interfaces/backoff-options.js +2 -0
  280. package/dist/esm/interfaces/backoff-options.js.map +1 -0
  281. package/dist/esm/interfaces/child-command.d.ts +5 -0
  282. package/dist/esm/interfaces/child-command.js +7 -0
  283. package/dist/esm/interfaces/child-command.js.map +1 -0
  284. package/dist/esm/interfaces/child-message.d.ts +6 -0
  285. package/dist/esm/interfaces/child-message.js +2 -0
  286. package/dist/esm/interfaces/child-message.js.map +1 -0
  287. package/dist/esm/interfaces/connection.d.ts +8 -0
  288. package/dist/esm/interfaces/connection.js +2 -0
  289. package/dist/esm/interfaces/connection.js.map +1 -0
  290. package/dist/esm/interfaces/flow-job.d.ts +14 -0
  291. package/dist/esm/interfaces/flow-job.js +2 -0
  292. package/dist/esm/interfaces/flow-job.js.map +1 -0
  293. package/dist/esm/interfaces/index.d.ts +19 -0
  294. package/dist/esm/interfaces/index.js +20 -0
  295. package/dist/esm/interfaces/index.js.map +1 -0
  296. package/dist/esm/interfaces/jobs-options.d.ts +91 -0
  297. package/dist/esm/interfaces/jobs-options.js +2 -0
  298. package/dist/esm/interfaces/jobs-options.js.map +1 -0
  299. package/dist/esm/interfaces/parent-command.d.ts +9 -0
  300. package/dist/esm/interfaces/parent-command.js +11 -0
  301. package/dist/esm/interfaces/parent-command.js.map +1 -0
  302. package/dist/esm/interfaces/parent-message.d.ts +8 -0
  303. package/dist/esm/interfaces/parent-message.js +2 -0
  304. package/dist/esm/interfaces/parent-message.js.map +1 -0
  305. package/dist/esm/interfaces/parent.d.ts +11 -0
  306. package/dist/esm/interfaces/parent.js +2 -0
  307. package/dist/esm/interfaces/parent.js.map +1 -0
  308. package/dist/esm/interfaces/queue-options.d.ts +72 -0
  309. package/dist/esm/interfaces/queue-options.js +6 -0
  310. package/dist/esm/interfaces/queue-options.js.map +1 -0
  311. package/dist/esm/interfaces/queue-scheduler-options.d.ts +23 -0
  312. package/dist/esm/interfaces/queue-scheduler-options.js +2 -0
  313. package/dist/esm/interfaces/queue-scheduler-options.js.map +1 -0
  314. package/dist/esm/interfaces/rate-limiter-options.d.ts +30 -0
  315. package/dist/esm/interfaces/rate-limiter-options.js +2 -0
  316. package/dist/esm/interfaces/rate-limiter-options.js.map +1 -0
  317. package/dist/esm/interfaces/redis-options.d.ts +5 -0
  318. package/dist/esm/interfaces/redis-options.js +2 -0
  319. package/dist/esm/interfaces/redis-options.js.map +1 -0
  320. package/dist/esm/interfaces/redis-streams.d.ts +4 -0
  321. package/dist/esm/interfaces/redis-streams.js +2 -0
  322. package/dist/esm/interfaces/redis-streams.js.map +1 -0
  323. package/dist/esm/interfaces/repeat-options.d.ts +44 -0
  324. package/dist/esm/interfaces/repeat-options.js +2 -0
  325. package/dist/esm/interfaces/repeat-options.js.map +1 -0
  326. package/dist/esm/interfaces/sandboxed-job-processor.d.ts +5 -0
  327. package/dist/esm/interfaces/sandboxed-job-processor.js +2 -0
  328. package/dist/esm/interfaces/sandboxed-job-processor.js.map +1 -0
  329. package/dist/esm/interfaces/sandboxed-job.d.ts +13 -0
  330. package/dist/esm/interfaces/sandboxed-job.js +2 -0
  331. package/dist/esm/interfaces/sandboxed-job.js.map +1 -0
  332. package/dist/esm/interfaces/worker-options.d.ts +32 -0
  333. package/dist/esm/interfaces/worker-options.js +2 -0
  334. package/dist/esm/interfaces/worker-options.js.map +1 -0
  335. package/dist/esm/tsdoc-metadata.json +11 -0
  336. package/dist/esm/utils.d.ts +29 -0
  337. package/dist/esm/utils.js +124 -0
  338. package/dist/esm/utils.js.map +1 -0
  339. package/package.json +15 -12
  340. package/dist/classes/backoffs.js.map +0 -1
  341. package/dist/classes/child-pool.js.map +0 -1
  342. package/dist/classes/child-processor.js.map +0 -1
  343. package/dist/classes/compat.js.map +0 -1
  344. package/dist/classes/flow-producer.js.map +0 -1
  345. package/dist/classes/index.js.map +0 -1
  346. package/dist/classes/job.js.map +0 -1
  347. package/dist/classes/master.js.map +0 -1
  348. package/dist/classes/process-utils.js.map +0 -1
  349. package/dist/classes/queue-base.js.map +0 -1
  350. package/dist/classes/queue-events.js.map +0 -1
  351. package/dist/classes/queue-getters.js.map +0 -1
  352. package/dist/classes/queue-keys.js.map +0 -1
  353. package/dist/classes/queue-scheduler.js.map +0 -1
  354. package/dist/classes/queue.js.map +0 -1
  355. package/dist/classes/redis-connection.js.map +0 -1
  356. package/dist/classes/repeat.js.map +0 -1
  357. package/dist/classes/sandbox.js.map +0 -1
  358. package/dist/classes/scripts.js.map +0 -1
  359. package/dist/classes/timer-manager.js.map +0 -1
  360. package/dist/classes/worker.js.map +0 -1
  361. package/dist/commands/index.js.map +0 -1
  362. package/dist/commands/script-loader.js.map +0 -1
  363. package/dist/enums/error-codes.enum.js.map +0 -1
  364. package/dist/index.js.map +0 -1
  365. package/dist/interfaces/advanced-options.js.map +0 -1
  366. package/dist/interfaces/backoff-options.js.map +0 -1
  367. package/dist/interfaces/child-command.js.map +0 -1
  368. package/dist/interfaces/child-message.js.map +0 -1
  369. package/dist/interfaces/connection.js.map +0 -1
  370. package/dist/interfaces/index.js.map +0 -1
  371. package/dist/interfaces/jobs-options.js.map +0 -1
  372. package/dist/interfaces/parent-command.js.map +0 -1
  373. package/dist/interfaces/parent-message.js.map +0 -1
  374. package/dist/interfaces/queue-options.js.map +0 -1
  375. package/dist/interfaces/queue-scheduler-options.js.map +0 -1
  376. package/dist/interfaces/rate-limiter-options.js.map +0 -1
  377. package/dist/interfaces/redis-options.js.map +0 -1
  378. package/dist/interfaces/redis-streams.js.map +0 -1
  379. package/dist/interfaces/repeat-options.js.map +0 -1
  380. package/dist/interfaces/sandboxed-job-processor.js.map +0 -1
  381. package/dist/interfaces/sandboxed-job.js.map +0 -1
  382. package/dist/interfaces/worker-options.js.map +0 -1
  383. package/dist/utils.js.map +0 -1
@@ -0,0 +1,207 @@
1
+ /*eslint-env node */
2
+ 'use strict';
3
+ import { QueueBase } from './queue-base';
4
+ import { Job } from './job';
5
+ import { clientCommandMessageReg } from '../utils';
6
+ export class QueueGetters extends QueueBase {
7
+ getJob(jobId) {
8
+ return Job.fromId(this, jobId);
9
+ }
10
+ commandByType(types, count, callback) {
11
+ return types.map((type) => {
12
+ type = type === 'waiting' ? 'wait' : type; // alias
13
+ const key = this.toKey(type);
14
+ switch (type) {
15
+ case 'completed':
16
+ case 'failed':
17
+ case 'delayed':
18
+ case 'repeat':
19
+ case 'waiting-children':
20
+ return callback(key, count ? 'zcard' : 'zrange');
21
+ case 'active':
22
+ case 'wait':
23
+ case 'paused':
24
+ return callback(key, count ? 'llen' : 'lrange');
25
+ }
26
+ });
27
+ }
28
+ /**
29
+ Returns the number of jobs waiting to be processed.
30
+ */
31
+ count() {
32
+ return this.getJobCountByTypes('waiting', 'paused', 'delayed');
33
+ }
34
+ /**
35
+ * Job counts by type
36
+ *
37
+ * Queue#getJobCountByTypes('completed') => completed count
38
+ * Queue#getJobCountByTypes('completed,failed') => completed + failed count
39
+ * Queue#getJobCountByTypes('completed', 'failed') => completed + failed count
40
+ * Queue#getJobCountByTypes('completed', 'waiting', 'failed') => completed + waiting + failed count
41
+ */
42
+ async getJobCountByTypes(...types) {
43
+ const result = await this.getJobCounts(...types);
44
+ return Object.values(result).reduce((sum, count) => sum + count);
45
+ }
46
+ /**
47
+ * Returns the job counts for each type specified or every list/set in the queue by default.
48
+ *
49
+ * @returns An object, key (type) and value (count)
50
+ */
51
+ async getJobCounts(...types) {
52
+ const client = await this.client;
53
+ const multi = client.multi();
54
+ this.commandByType(types, true, function (key, command) {
55
+ multi[command](key);
56
+ });
57
+ const res = await multi.exec();
58
+ const counts = {};
59
+ res.forEach((res, index) => {
60
+ counts[types[index]] = res[1] || 0;
61
+ });
62
+ return counts;
63
+ }
64
+ getCompletedCount() {
65
+ return this.getJobCountByTypes('completed');
66
+ }
67
+ getFailedCount() {
68
+ return this.getJobCountByTypes('failed');
69
+ }
70
+ getDelayedCount() {
71
+ return this.getJobCountByTypes('delayed');
72
+ }
73
+ getActiveCount() {
74
+ return this.getJobCountByTypes('active');
75
+ }
76
+ getWaitingCount() {
77
+ return this.getJobCountByTypes('waiting', 'paused');
78
+ }
79
+ getWaitingChildrenCount() {
80
+ return this.getJobCountByTypes('waiting-children', 'paused');
81
+ }
82
+ getWaiting(start = 0, end = -1) {
83
+ return this.getJobs(['waiting'], start, end, true);
84
+ }
85
+ getWaitingChildren(start = 0, end = -1) {
86
+ return this.getJobs(['waiting-children'], start, end, true);
87
+ }
88
+ getActive(start = 0, end = -1) {
89
+ return this.getJobs(['active'], start, end, true);
90
+ }
91
+ getDelayed(start = 0, end = -1) {
92
+ return this.getJobs(['delayed'], start, end, true);
93
+ }
94
+ getCompleted(start = 0, end = -1) {
95
+ return this.getJobs(['completed'], start, end, false);
96
+ }
97
+ getFailed(start = 0, end = -1) {
98
+ return this.getJobs(['failed'], start, end, false);
99
+ }
100
+ async getRanges(types, start = 0, end = 1, asc = false) {
101
+ const client = await this.client;
102
+ const multi = client.multi();
103
+ const multiCommands = [];
104
+ this.commandByType(types, false, (key, command) => {
105
+ switch (command) {
106
+ case 'lrange':
107
+ multiCommands.push('lrange');
108
+ if (asc) {
109
+ multi.lrange(key, -(end + 1), -(start + 1));
110
+ }
111
+ else {
112
+ multi.lrange(key, start, end);
113
+ }
114
+ break;
115
+ case 'zrange':
116
+ multiCommands.push('zrange');
117
+ if (asc) {
118
+ multi.zrange(key, start, end);
119
+ }
120
+ else {
121
+ multi.zrevrange(key, start, end);
122
+ }
123
+ break;
124
+ }
125
+ });
126
+ const responses = await multi.exec();
127
+ let results = [];
128
+ responses.forEach((response, index) => {
129
+ const result = response[1] || [];
130
+ if (asc && multiCommands[index] === 'lrange') {
131
+ results = results.concat(result.reverse());
132
+ }
133
+ else {
134
+ results = results.concat(result);
135
+ }
136
+ });
137
+ return results;
138
+ }
139
+ async getJobs(types, start = 0, end = -1, asc = false) {
140
+ types = Array.isArray(types) ? types : [types];
141
+ if (types.indexOf('waiting') !== -1) {
142
+ types = types.concat(['paused']);
143
+ }
144
+ const jobIds = await this.getRanges(types, start, end, asc);
145
+ return Promise.all(jobIds.map(jobId => Job.fromId(this, jobId)));
146
+ }
147
+ async getJobLogs(jobId, start = 0, end = -1, asc = true) {
148
+ const client = await this.client;
149
+ const multi = client.multi();
150
+ const logsKey = this.toKey(jobId + ':logs');
151
+ if (asc) {
152
+ multi.lrange(logsKey, start, end);
153
+ }
154
+ else {
155
+ multi.lrange(logsKey, -(end + 1), -(start + 1));
156
+ }
157
+ multi.llen(logsKey);
158
+ return multi.exec().then(result => {
159
+ if (!asc) {
160
+ result[0][1].reverse();
161
+ }
162
+ return {
163
+ logs: result[0][1],
164
+ count: result[1][1],
165
+ };
166
+ });
167
+ }
168
+ /**
169
+ * Get worker list related to the queue.
170
+ *
171
+ * @returns - Returns an array with workers info.
172
+ */
173
+ async getWorkers() {
174
+ const client = await this.client;
175
+ const clients = await client.client('list');
176
+ try {
177
+ const list = this.parseClientList(clients);
178
+ return list;
179
+ }
180
+ catch (err) {
181
+ if (!clientCommandMessageReg.test(err.message)) {
182
+ throw err;
183
+ }
184
+ }
185
+ }
186
+ parseClientList(list) {
187
+ const lines = list.split('\n');
188
+ const clients = [];
189
+ lines.forEach((line) => {
190
+ const client = {};
191
+ const keyValues = line.split(' ');
192
+ keyValues.forEach(function (keyValue) {
193
+ const index = keyValue.indexOf('=');
194
+ const key = keyValue.substring(0, index);
195
+ const value = keyValue.substring(index + 1);
196
+ client[key] = value;
197
+ });
198
+ const name = client['name'];
199
+ if (name && name === this.clientName()) {
200
+ client['name'] = this.name;
201
+ clients.push(client);
202
+ }
203
+ });
204
+ return clients;
205
+ }
206
+ }
207
+ //# sourceMappingURL=queue-getters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-getters.js","sourceRoot":"","sources":["../../../src/classes/queue-getters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare type KeysMap = {
2
+ [index in string]: string;
3
+ };
4
+ export declare class QueueKeys {
5
+ readonly prefix: string;
6
+ constructor(prefix?: string);
7
+ getKeys(name: string): KeysMap;
8
+ toKey(name: string, type: string): string;
9
+ getPrefixedQueueName(name: string): string;
10
+ }
@@ -0,0 +1,40 @@
1
+ export class QueueKeys {
2
+ constructor(prefix = 'bull') {
3
+ this.prefix = prefix;
4
+ }
5
+ getKeys(name) {
6
+ const keys = {};
7
+ [
8
+ '',
9
+ 'active',
10
+ 'wait',
11
+ 'waiting',
12
+ 'paused',
13
+ 'resumed',
14
+ 'id',
15
+ 'delayed',
16
+ 'priority',
17
+ 'stalled-check',
18
+ 'completed',
19
+ 'failed',
20
+ 'stalled',
21
+ 'repeat',
22
+ 'limiter',
23
+ 'drained',
24
+ 'progress',
25
+ 'meta',
26
+ 'events',
27
+ 'delay',
28
+ ].forEach(key => {
29
+ keys[key] = this.toKey(name, key);
30
+ });
31
+ return keys;
32
+ }
33
+ toKey(name, type) {
34
+ return `${this.getPrefixedQueueName(name)}:${type}`;
35
+ }
36
+ getPrefixedQueueName(name) {
37
+ return `${this.prefix}:${name}`;
38
+ }
39
+ }
40
+ //# sourceMappingURL=queue-keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-keys.js","sourceRoot":"","sources":["../../../src/classes/queue-keys.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,SAAS;IACpB,YAA4B,SAAiB,MAAM;QAAvB,WAAM,GAAN,MAAM,CAAiB;IAAG,CAAC;IAEvD,OAAO,CAAC,IAAY;QAClB,MAAM,IAAI,GAAgC,EAAE,CAAC;QAC7C;YACE,EAAE;YACF,QAAQ;YACR,MAAM;YACN,SAAS;YACT,QAAQ;YACR,SAAS;YACT,IAAI;YACJ,SAAS;YACT,UAAU;YACV,eAAe;YACf,WAAW;YACX,QAAQ;YACR,SAAS;YACT,QAAQ;YACR,SAAS;YACT,SAAS;YACT,UAAU;YACV,MAAM;YACN,QAAQ;YACR,OAAO;SACR,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACd,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,IAAY;QAC9B,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IACtD,CAAC;IAED,oBAAoB,CAAC,IAAY;QAC/B,OAAO,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;IAClC,CAAC;CACF"}
@@ -0,0 +1,35 @@
1
+ import { QueueSchedulerOptions } from '../interfaces';
2
+ import { QueueBase } from './queue-base';
3
+ export interface QueueSchedulerDeclaration {
4
+ on(event: 'stalled', listener: (jobId: string, prev: string) => void): this;
5
+ on(event: 'failed', listener: (jobId: string, failedReason: Error, prev: string) => void): this;
6
+ on(event: string, listener: Function): this;
7
+ }
8
+ /**
9
+ * This class is just used for some automatic bookkeeping of the queue,
10
+ * such as updating the delay set as well as moving stalled jobs back
11
+ * to the waiting list.
12
+ *
13
+ * Jobs are checked for stallness once every "visibility window" seconds.
14
+ * Jobs are then marked as candidates for being stalled, in the next check,
15
+ * the candidates are marked as stalled and moved to wait.
16
+ * Workers need to clean the candidate list with the jobs that they are working
17
+ * on, failing to update the list results in the job ending being stalled.
18
+ *
19
+ * This class requires a dedicated redis connection, and at least one is needed
20
+ * to be running at a given time, otherwise delays, stalled jobs, retries, repeatable
21
+ * jobs, etc, will not work correctly or at all.
22
+ *
23
+ */
24
+ export declare class QueueScheduler extends QueueBase implements QueueSchedulerDeclaration {
25
+ private nextTimestamp;
26
+ private isBlocked;
27
+ private running;
28
+ constructor(name: string, { connection, autorun, ...opts }?: QueueSchedulerOptions);
29
+ run(): Promise<void>;
30
+ isRunning(): boolean;
31
+ private readDelayedData;
32
+ private updateDelaySet;
33
+ private moveStalledJobsToWait;
34
+ close(): Promise<void>;
35
+ }
@@ -0,0 +1,156 @@
1
+ import { __rest } from "tslib";
2
+ import { array2obj, isRedisInstance } from '../utils';
3
+ import { QueueBase } from './queue-base';
4
+ import { Scripts } from './scripts';
5
+ /**
6
+ * This class is just used for some automatic bookkeeping of the queue,
7
+ * such as updating the delay set as well as moving stalled jobs back
8
+ * to the waiting list.
9
+ *
10
+ * Jobs are checked for stallness once every "visibility window" seconds.
11
+ * Jobs are then marked as candidates for being stalled, in the next check,
12
+ * the candidates are marked as stalled and moved to wait.
13
+ * Workers need to clean the candidate list with the jobs that they are working
14
+ * on, failing to update the list results in the job ending being stalled.
15
+ *
16
+ * This class requires a dedicated redis connection, and at least one is needed
17
+ * to be running at a given time, otherwise delays, stalled jobs, retries, repeatable
18
+ * jobs, etc, will not work correctly or at all.
19
+ *
20
+ */
21
+ export class QueueScheduler extends QueueBase {
22
+ constructor(name, _a = {}) {
23
+ var { connection, autorun = true } = _a, opts = __rest(_a, ["connection", "autorun"]);
24
+ super(name, Object.assign(Object.assign({ maxStalledCount: 1, stalledInterval: 30000 }, opts), { connection: isRedisInstance(connection)
25
+ ? connection.duplicate()
26
+ : connection, sharedConnection: false }));
27
+ this.nextTimestamp = Number.MAX_VALUE;
28
+ this.isBlocked = false;
29
+ this.running = false;
30
+ if (!this.opts.stalledInterval) {
31
+ throw new Error('Stalled interval cannot be zero or undefined');
32
+ }
33
+ if (autorun) {
34
+ this.run().catch(error => {
35
+ console.error(error);
36
+ });
37
+ }
38
+ }
39
+ async run() {
40
+ if (!this.running) {
41
+ try {
42
+ this.running = true;
43
+ const client = await this.waitUntilReady();
44
+ const key = this.keys.delay;
45
+ const opts = this.opts;
46
+ const [nextTimestamp, streamId = '0-0'] = await this.updateDelaySet(Date.now());
47
+ let streamLastId = streamId;
48
+ if (nextTimestamp) {
49
+ this.nextTimestamp = nextTimestamp;
50
+ }
51
+ while (!this.closing) {
52
+ // Check if at least the min stalled check time has passed.
53
+ await this.moveStalledJobsToWait();
54
+ // Listen to the delay event stream from lastDelayStreamTimestamp
55
+ // Can we use XGROUPS to reduce redundancy?
56
+ const nextDelay = this.nextTimestamp - Date.now();
57
+ const blockTime = Math.round(Math.min(opts.stalledInterval, Math.max(nextDelay, 0)));
58
+ const data = await this.readDelayedData(client, key, streamLastId, blockTime);
59
+ if (data && data[0]) {
60
+ const stream = data[0];
61
+ const events = stream[1];
62
+ for (let i = 0; i < events.length; i++) {
63
+ streamLastId = events[i][0];
64
+ const args = array2obj(events[i][1]);
65
+ const nextTimestamp = parseInt(args.nextTimestamp);
66
+ if (nextTimestamp < this.nextTimestamp) {
67
+ this.nextTimestamp = nextTimestamp;
68
+ }
69
+ }
70
+ //
71
+ // We trim to a length of 100, which should be a very safe value
72
+ // for all kind of scenarios.
73
+ //
74
+ if (!this.closing) {
75
+ await client.xtrim(key, 'MAXLEN', '~', 100);
76
+ }
77
+ }
78
+ const now = Date.now();
79
+ const delay = this.nextTimestamp - now;
80
+ if (delay <= 0) {
81
+ const [nextTimestamp, id] = await this.updateDelaySet(now);
82
+ if (nextTimestamp) {
83
+ this.nextTimestamp = nextTimestamp;
84
+ streamLastId = id;
85
+ }
86
+ else {
87
+ this.nextTimestamp = Number.MAX_VALUE;
88
+ }
89
+ }
90
+ }
91
+ this.running = false;
92
+ }
93
+ catch (error) {
94
+ this.running = false;
95
+ throw error;
96
+ }
97
+ }
98
+ else {
99
+ throw new Error('Queue Scheduler is already running.');
100
+ }
101
+ }
102
+ isRunning() {
103
+ return this.running;
104
+ }
105
+ async readDelayedData(client, key, streamLastId, blockTime) {
106
+ if (!this.closing) {
107
+ let data;
108
+ if (blockTime) {
109
+ try {
110
+ this.isBlocked = true;
111
+ data = await client.xread('BLOCK', blockTime, 'STREAMS', key, streamLastId);
112
+ }
113
+ catch (err) {
114
+ // We can ignore closed connection errors
115
+ if (err.message !== 'Connection is closed.') {
116
+ throw err;
117
+ }
118
+ }
119
+ finally {
120
+ this.isBlocked = false;
121
+ }
122
+ }
123
+ else {
124
+ data = await client.xread('STREAMS', key, streamLastId);
125
+ }
126
+ // Cast to actual return type, see: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/44301
127
+ return data;
128
+ }
129
+ }
130
+ async updateDelaySet(timestamp) {
131
+ if (!this.closing) {
132
+ return Scripts.updateDelaySet(this, timestamp);
133
+ }
134
+ return [0, 0];
135
+ }
136
+ async moveStalledJobsToWait() {
137
+ if (!this.closing) {
138
+ const [failed, stalled] = await Scripts.moveStalledJobsToWait(this);
139
+ failed.forEach((jobId) => this.emit('failed', jobId, new Error('job stalled more than allowable limit'), 'active'));
140
+ stalled.forEach((jobId) => this.emit('stalled', jobId, 'active'));
141
+ }
142
+ }
143
+ close() {
144
+ if (this.closing) {
145
+ return this.closing;
146
+ }
147
+ if (this.isBlocked) {
148
+ this.closing = this.disconnect();
149
+ }
150
+ else {
151
+ this.closing = super.close();
152
+ }
153
+ return this.closing;
154
+ }
155
+ }
156
+ //# sourceMappingURL=queue-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-scheduler.js","sourceRoot":"","sources":["../../../src/classes/queue-scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import { JobsOptions, QueueOptions, RepeatOptions } from '../interfaces';
2
+ import { BulkJobOptions, Job } from './job';
3
+ import { QueueGetters } from './queue-getters';
4
+ import { Repeat } from './repeat';
5
+ import { RedisConnection } from './redis-connection';
6
+ export interface QueueDeclaration<DataType, ResultType, NameType extends string> {
7
+ on(event: 'cleaned', listener: (jobs: string[], type: string) => void): this;
8
+ on(event: 'waiting', listener: (job: Job<DataType, ResultType, NameType>) => void): this;
9
+ on(event: string, listener: Function): this;
10
+ }
11
+ /**
12
+ * Queue
13
+ *
14
+ * This class provides methods to add jobs to a queue and some othe high-level
15
+ * administration such as pausing or deleting queues.
16
+ *
17
+ */
18
+ export declare class Queue<DataType = any, ResultType = any, NameType extends string = string> extends QueueGetters implements QueueDeclaration<DataType, ResultType, NameType> {
19
+ token: string;
20
+ jobsOpts: JobsOptions;
21
+ limiter: {
22
+ groupKey: string;
23
+ };
24
+ private _repeat;
25
+ constructor(name: string, opts?: QueueOptions, Connection?: typeof RedisConnection);
26
+ /**
27
+ * Returns this instance current default job options.
28
+ */
29
+ get defaultJobOptions(): JobsOptions;
30
+ get repeat(): Promise<Repeat>;
31
+ /**
32
+ * Adds a new job to the queue.
33
+ *
34
+ * @param name - Name of the job to be added to the queue,.
35
+ * @param data - Arbitrary data to append to the job.
36
+ * @param opts - Job options that affects how the job is going to be processed.
37
+ */
38
+ add(name: NameType, data: DataType, opts?: JobsOptions): Promise<Job<DataType, ResultType, NameType>>;
39
+ /**
40
+ * Adds an array of jobs to the queue.
41
+ *
42
+ * @param jobs - The array of jobs to add to the queue. Each job is defined by 3
43
+ * properties, 'name', 'data' and 'opts'. They follow the same signature as 'Queue.add'.
44
+ */
45
+ addBulk(jobs: {
46
+ name: NameType;
47
+ data: DataType;
48
+ opts?: BulkJobOptions;
49
+ }[]): Promise<Job<DataType, any, NameType>[]>;
50
+ /**
51
+ * Pauses the processing of this queue globally.
52
+ *
53
+ * We use an atomic RENAME operation on the wait queue. Since
54
+ * we have blocking calls with BRPOPLPUSH on the wait queue, as long as the queue
55
+ * is renamed to 'paused', no new jobs will be processed (the current ones
56
+ * will run until finalized).
57
+ *
58
+ * Adding jobs requires a LUA script to check first if the paused list exist
59
+ * and in that case it will add it there instead of the wait list.
60
+ */
61
+ pause(): Promise<void>;
62
+ /**
63
+ * Resumes the processing of this queue globally.
64
+ *
65
+ * The method reverses the pause operation by resuming the processing of the
66
+ * queue.
67
+ */
68
+ resume(): Promise<void>;
69
+ /**
70
+ * Returns true if the queue is currently paused.
71
+ */
72
+ isPaused(): Promise<boolean>;
73
+ /**
74
+ * Get all repeatable meta jobs.
75
+ *
76
+ * @param start - Offset of first job to return.
77
+ * @param end - Offset of last job to return.
78
+ * @param asc - Determine the order in which jobs are returned based on their
79
+ * next execution time.
80
+ */
81
+ getRepeatableJobs(start?: number, end?: number, asc?: boolean): Promise<{
82
+ key: string;
83
+ name: string;
84
+ id: string;
85
+ endDate: number;
86
+ tz: string;
87
+ cron: string;
88
+ next: number;
89
+ }[]>;
90
+ removeRepeatable(name: NameType, repeatOpts: RepeatOptions, jobId?: string): Promise<void>;
91
+ removeRepeatableByKey(key: string): Promise<void>;
92
+ /**
93
+ * Removes the given job from the queue as well as all its
94
+ * dependencies.
95
+ *
96
+ * @param jobId - The id of the job to remove
97
+ * @returns 1 if it managed to remove the job or 0 if the job or
98
+ * any of its dependencies was locked.
99
+ */
100
+ remove(jobId: string): Promise<number>;
101
+ /**
102
+ * Drains the queue, i.e., removes all jobs that are waiting
103
+ * or delayed, but not active, completed or failed.
104
+ *
105
+ * @param delayed - Pass true if it should also clean the
106
+ * delayed jobs.
107
+ */
108
+ drain(delayed?: boolean): Promise<void>;
109
+ /**
110
+ * Cleans jobs from a queue. Similar to drain but keeps jobs within a certain
111
+ * grace period.
112
+ *
113
+ * @param grace - The grace period
114
+ * @param The - Max number of jobs to clean
115
+ * @param {string} [type=completed] - The type of job to clean
116
+ * Possible values are completed, wait, active, paused, delayed, failed. Defaults to completed.
117
+ * @returns Id jobs from the deleted records
118
+ */
119
+ clean(grace: number, limit: number, type?: 'completed' | 'wait' | 'active' | 'paused' | 'delayed' | 'failed'): Promise<string[]>;
120
+ /**
121
+ * Completely destroys the queue and all of its contents irreversibly.
122
+ * This method will the *pause* the queue and requires that there are no
123
+ * active jobs. It is possible to bypass this requirement, i.e. not
124
+ * having active jobs using the "force" option.
125
+ *
126
+ * Note: This operation requires to iterate on all the jobs stored in the queue
127
+ * and can be slow for very large queues.
128
+ *
129
+ * @param { { force: boolean, count: number }} opts. Use force = true to force obliteration even
130
+ * with active jobs in the queue. Use count with the maximum number of deleted keys per iteration,
131
+ * 1000 is the default.
132
+ */
133
+ obliterate(opts?: {
134
+ force?: boolean;
135
+ count?: number;
136
+ }): Promise<void>;
137
+ /**
138
+ * Trim the event stream to an approximately maxLength.
139
+ *
140
+ * @param maxLength -
141
+ */
142
+ trimEvents(maxLength: number): Promise<number>;
143
+ }