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,125 @@
1
+ import { fork } from 'child_process';
2
+ import * as path from 'path';
3
+ import { flatten } from 'lodash';
4
+ import * as getPort from 'get-port';
5
+ import { killAsync } from './process-utils';
6
+ import { ParentCommand, ChildCommand } from '../interfaces';
7
+ import { parentSend } from '../utils';
8
+ const CHILD_KILL_TIMEOUT = 30000;
9
+ const convertExecArgv = async (execArgv) => {
10
+ const standard = [];
11
+ const convertedArgs = [];
12
+ for (let i = 0; i < execArgv.length; i++) {
13
+ const arg = execArgv[i];
14
+ if (arg.indexOf('--inspect') === -1) {
15
+ standard.push(arg);
16
+ }
17
+ else {
18
+ const argName = arg.split('=')[0];
19
+ const port = await getPort();
20
+ convertedArgs.push(`${argName}=${port}`);
21
+ }
22
+ }
23
+ return standard.concat(convertedArgs);
24
+ };
25
+ /**
26
+ * @see https://nodejs.org/api/process.html#process_exit_codes
27
+ */
28
+ const exitCodesErrors = {
29
+ 1: 'Uncaught Fatal Exception',
30
+ 2: 'Unused',
31
+ 3: 'Internal JavaScript Parse Error',
32
+ 4: 'Internal JavaScript Evaluation Failure',
33
+ 5: 'Fatal Error',
34
+ 6: 'Non-function Internal Exception Handler',
35
+ 7: 'Internal Exception Handler Run-Time Failure',
36
+ 8: 'Unused',
37
+ 9: 'Invalid Argument',
38
+ 10: 'Internal JavaScript Run-Time Failure',
39
+ 12: 'Invalid Debug Argument',
40
+ 13: 'Unfinished Top-Level Await',
41
+ };
42
+ async function initChild(child, processFile) {
43
+ const onComplete = new Promise((resolve, reject) => {
44
+ const onMessageHandler = (msg) => {
45
+ if (msg.cmd === ParentCommand.InitCompleted) {
46
+ resolve();
47
+ }
48
+ else if (msg.cmd === ParentCommand.InitFailed) {
49
+ const err = new Error();
50
+ err.stack = msg.err.stack;
51
+ err.message = msg.err.message;
52
+ reject(err);
53
+ }
54
+ child.off('message', onMessageHandler);
55
+ child.off('close', onCloseHandler);
56
+ };
57
+ const onCloseHandler = (code, signal) => {
58
+ if (code > 128) {
59
+ code -= 128;
60
+ }
61
+ const msg = exitCodesErrors[code] || `Unknown exit code ${code}`;
62
+ reject(new Error(`Error initializing child: ${msg} and signal ${signal}`));
63
+ child.off('message', onMessageHandler);
64
+ child.off('close', onCloseHandler);
65
+ };
66
+ child.on('message', onMessageHandler);
67
+ // TODO: we need to clean this listener too.
68
+ child.on('close', onCloseHandler);
69
+ });
70
+ await parentSend(child, { cmd: ChildCommand.Init, value: processFile });
71
+ await onComplete;
72
+ }
73
+ export class ChildPool {
74
+ constructor(masterFile = path.join(process.cwd(), 'dist/cjs/classes/master.js')) {
75
+ this.masterFile = masterFile;
76
+ this.retained = {};
77
+ this.free = {};
78
+ }
79
+ async retain(processFile) {
80
+ const _this = this;
81
+ let child = _this.getFree(processFile).pop();
82
+ if (child) {
83
+ _this.retained[child.pid] = child;
84
+ return child;
85
+ }
86
+ const execArgv = await convertExecArgv(process.execArgv);
87
+ child = fork(this.masterFile, [], { execArgv, stdio: 'pipe' });
88
+ child.processFile = processFile;
89
+ _this.retained[child.pid] = child;
90
+ child.on('exit', _this.remove.bind(_this, child));
91
+ child.stdout.pipe(process.stdout);
92
+ child.stderr.pipe(process.stderr);
93
+ await initChild(child, child.processFile);
94
+ return child;
95
+ }
96
+ release(child) {
97
+ delete this.retained[child.pid];
98
+ this.getFree(child.processFile).push(child);
99
+ }
100
+ remove(child) {
101
+ delete this.retained[child.pid];
102
+ const free = this.getFree(child.processFile);
103
+ const childIndex = free.indexOf(child);
104
+ if (childIndex > -1) {
105
+ free.splice(childIndex, 1);
106
+ }
107
+ }
108
+ async kill(child, signal = 'SIGKILL') {
109
+ this.remove(child);
110
+ await killAsync(child, signal, CHILD_KILL_TIMEOUT);
111
+ }
112
+ async clean() {
113
+ const children = Object.values(this.retained).concat(this.getAllFree());
114
+ this.retained = {};
115
+ this.free = {};
116
+ await Promise.all(children.map(c => this.kill(c, 'SIGTERM')));
117
+ }
118
+ getFree(id) {
119
+ return (this.free[id] = this.free[id] || []);
120
+ }
121
+ getAllFree() {
122
+ return flatten(Object.values(this.free));
123
+ }
124
+ }
125
+ //# sourceMappingURL=child-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-pool.js","sourceRoot":"","sources":["../../../src/classes/child-pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { JobJson } from './job';
2
+ declare enum ChildStatus {
3
+ Idle = 0,
4
+ Started = 1,
5
+ Terminating = 2,
6
+ Errored = 3
7
+ }
8
+ /**
9
+ * ChildProcessor
10
+ *
11
+ * This class acts as the interface between a child process and it parent process
12
+ * so that jobs can be processed in different processes than the parent.
13
+ *
14
+ */
15
+ export declare class ChildProcessor {
16
+ status: ChildStatus;
17
+ processor: any;
18
+ currentJobPromise: Promise<unknown> | undefined;
19
+ init(processorFile: string): Promise<void>;
20
+ start(jobJson: JobJson): Promise<void>;
21
+ stop(): Promise<void>;
22
+ waitForCurrentJobAndExit(): Promise<void>;
23
+ }
24
+ export {};
@@ -0,0 +1,165 @@
1
+ import { promisify } from 'util';
2
+ import { ParentCommand } from '../interfaces';
3
+ import { childSend } from '../utils';
4
+ var ChildStatus;
5
+ (function (ChildStatus) {
6
+ ChildStatus[ChildStatus["Idle"] = 0] = "Idle";
7
+ ChildStatus[ChildStatus["Started"] = 1] = "Started";
8
+ ChildStatus[ChildStatus["Terminating"] = 2] = "Terminating";
9
+ ChildStatus[ChildStatus["Errored"] = 3] = "Errored";
10
+ })(ChildStatus || (ChildStatus = {}));
11
+ /**
12
+ * ChildProcessor
13
+ *
14
+ * This class acts as the interface between a child process and it parent process
15
+ * so that jobs can be processed in different processes than the parent.
16
+ *
17
+ */
18
+ export class ChildProcessor {
19
+ async init(processorFile) {
20
+ let processor;
21
+ try {
22
+ processor = require(processorFile);
23
+ }
24
+ catch (err) {
25
+ this.status = ChildStatus.Errored;
26
+ return childSend(process, {
27
+ cmd: ParentCommand.InitFailed,
28
+ err: err,
29
+ });
30
+ }
31
+ if (processor.default) {
32
+ // support es2015 module.
33
+ processor = processor.default;
34
+ }
35
+ if (processor.length > 1) {
36
+ processor = promisify(processor);
37
+ }
38
+ else {
39
+ const origProcessor = processor;
40
+ processor = function (...args) {
41
+ try {
42
+ return Promise.resolve(origProcessor(...args));
43
+ }
44
+ catch (err) {
45
+ return Promise.reject(err);
46
+ }
47
+ };
48
+ }
49
+ this.processor = processor;
50
+ this.status = ChildStatus.Idle;
51
+ await childSend(process, {
52
+ cmd: ParentCommand.InitCompleted,
53
+ });
54
+ }
55
+ async start(jobJson) {
56
+ if (this.status !== ChildStatus.Idle) {
57
+ return childSend(process, {
58
+ cmd: ParentCommand.Error,
59
+ err: new Error('cannot start a not idling child process'),
60
+ });
61
+ }
62
+ this.status = ChildStatus.Started;
63
+ this.currentJobPromise = (async () => {
64
+ try {
65
+ const job = wrapJob(jobJson);
66
+ const result = (await this.processor(job)) || {};
67
+ await childSend(process, {
68
+ cmd: ParentCommand.Completed,
69
+ value: result,
70
+ });
71
+ }
72
+ catch (err) {
73
+ await childSend(process, {
74
+ cmd: ParentCommand.Failed,
75
+ value: !err.message ? new Error(err) : err,
76
+ });
77
+ }
78
+ finally {
79
+ this.status = ChildStatus.Idle;
80
+ this.currentJobPromise = undefined;
81
+ }
82
+ })();
83
+ }
84
+ async stop() { }
85
+ async waitForCurrentJobAndExit() {
86
+ this.status = ChildStatus.Terminating;
87
+ try {
88
+ await this.currentJobPromise;
89
+ }
90
+ finally {
91
+ process.exit(process.exitCode || 0);
92
+ }
93
+ }
94
+ }
95
+ // https://stackoverflow.com/questions/18391212/is-it-not-possible-to-stringify-an-error-using-json-stringify
96
+ if (!('toJSON' in Error.prototype)) {
97
+ Object.defineProperty(Error.prototype, 'toJSON', {
98
+ value: function () {
99
+ const alt = {};
100
+ const _this = this;
101
+ Object.getOwnPropertyNames(_this).forEach(function (key) {
102
+ alt[key] = _this[key];
103
+ }, this);
104
+ return alt;
105
+ },
106
+ configurable: true,
107
+ writable: true,
108
+ });
109
+ }
110
+ /**
111
+ * Enhance the given job argument with some functions
112
+ * that can be called from the sandboxed job processor.
113
+ *
114
+ * Note, the `job` argument is a JSON deserialized message
115
+ * from the main node process to this forked child process,
116
+ * the functions on the original job object are not in tact.
117
+ * The wrapped job adds back some of those original functions.
118
+ */
119
+ function wrapJob(job) {
120
+ let progressValue = job.progress;
121
+ const updateProgress = async (progress) => {
122
+ // Locally store reference to new progress value
123
+ // so that we can return it from this process synchronously.
124
+ progressValue = progress;
125
+ // Send message to update job progress.
126
+ await childSend(process, {
127
+ cmd: ParentCommand.Progress,
128
+ value: progress,
129
+ });
130
+ };
131
+ const progress = (progress) => {
132
+ console.warn([
133
+ 'BullMQ: DEPRECATION WARNING! progress function in sandboxed processor is deprecated. This will',
134
+ 'be removed in the next major release, you should use updateProgress method instead.',
135
+ ].join(' '));
136
+ if (progress) {
137
+ return updateProgress(progress);
138
+ }
139
+ else {
140
+ // Return the last known progress value.
141
+ return progressValue;
142
+ }
143
+ };
144
+ return Object.assign(Object.assign({}, job), { data: JSON.parse(job.data || '{}'), opts: job.opts, returnValue: JSON.parse(job.returnvalue || '{}'),
145
+ /*
146
+ * Emulate the real job `progress` function.
147
+ * If no argument is given, it behaves as a sync getter.
148
+ * If an argument is given, it behaves as an async setter.
149
+ */
150
+ progress,
151
+ /*
152
+ * Emulate the real job `updateProgress` function, should works as `progress` function.
153
+ */
154
+ updateProgress,
155
+ /*
156
+ * Emulate the real job `log` function.
157
+ */
158
+ log: async (row) => {
159
+ childSend(process, {
160
+ cmd: ParentCommand.Log,
161
+ value: row,
162
+ });
163
+ } });
164
+ }
165
+ //# sourceMappingURL=child-processor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"child-processor.js","sourceRoot":"","sources":["../../../src/classes/child-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,316 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ import { Job } from './job';
4
+ import { QueueEvents } from './queue-events';
5
+ import { JobsOptions, QueueOptions, RepeatOptions, QueueEventsOptions, QueueSchedulerOptions, WorkerOptions, Processor } from '../interfaces';
6
+ declare type CommonOptions = QueueSchedulerOptions & QueueOptions & WorkerOptions & QueueEventsOptions;
7
+ export declare class Queue3<T = any> extends EventEmitter {
8
+ /**
9
+ * The name of the queue
10
+ */
11
+ name: string;
12
+ queueEvents: QueueEvents;
13
+ private opts;
14
+ private readonly queue;
15
+ private worker;
16
+ private queueScheduler;
17
+ /**
18
+ * This is the Queue constructor.
19
+ * It creates a new Queue that is persisted in Redis.
20
+ * Every time the same queue is instantiated it tries to process all the old jobs
21
+ * that may exist from a previous unfinished session.
22
+ */
23
+ constructor(name: string, opts?: CommonOptions);
24
+ /**
25
+ * Returns a promise that resolves when Redis is connected and the queue is ready to accept jobs.
26
+ * This replaces the `ready` event emitted on Queue in previous versions.
27
+ */
28
+ isReady(): Promise<this>;
29
+ /**
30
+ * Defines a processing function for the jobs placed into a given Queue.
31
+ *
32
+ * The callback is called every time a job is placed in the queue.
33
+ * It is passed an instance of the job as first argument.
34
+ *
35
+ * If the callback signature contains the second optional done argument,
36
+ * the callback will be passed a done callback to be called after the job has been completed.
37
+ * The done callback can be called with an Error instance, to signal that the job did not complete successfully,
38
+ * or with a result as second argument (e.g.: done(null, result);) when the job is successful.
39
+ * Errors will be passed as a second argument to the "failed" event; results,
40
+ * as a second argument to the "completed" event.
41
+ *
42
+ * If, however, the callback signature does not contain the done argument,
43
+ * a promise must be returned to signal job completion.
44
+ * If the promise is rejected, the error will be passed as a second argument to the "failed" event.
45
+ * If it is resolved, its value will be the "completed" event's second argument.
46
+ */
47
+ process(processor: string | Processor<T>): Promise<void>;
48
+ add(jobName: string, data: any, opts?: JobsOptions): Promise<Job>;
49
+ /**
50
+ * Returns a promise that resolves when the queue is paused.
51
+ *
52
+ * A paused queue will not process new jobs until resumed, but current jobs being processed will continue until
53
+ * they are finalized. The pause can be either global or local. If global, all workers in all queue instances
54
+ * for a given queue will be paused. If local, just this worker will stop processing new jobs after the current
55
+ * lock expires. This can be useful to stop a worker from taking new jobs prior to shutting down.
56
+ *
57
+ * Pausing a queue that is already paused does nothing.
58
+ */
59
+ pause(): Promise<void>;
60
+ pauseWorker(doNotWaitActive?: boolean): Promise<void>;
61
+ /**
62
+ * Returns a promise that resolves when the queue is resumed after being paused.
63
+ *
64
+ * The resume can be either local or global. If global, all workers in all queue instances for a given queue
65
+ * will be resumed. If local, only this worker will be resumed. Note that resuming a queue globally will not
66
+ * resume workers that have been paused locally; for those, resume(true) must be called directly on their
67
+ * instances.
68
+ *
69
+ * Resuming a queue that is not paused does nothing.
70
+ */
71
+ resume(): Promise<void>;
72
+ resumeWorker(): Promise<void>;
73
+ isWorkerPaused(): boolean;
74
+ /**
75
+ * Returns a promise that returns the number of jobs in the queue, waiting or paused.
76
+ * Since there may be other processes adding or processing jobs,
77
+ * this value may be true only for a very small amount of time.
78
+ */
79
+ count(): Promise<number>;
80
+ /**
81
+ * Empties a queue deleting all the input lists and associated jobs.
82
+ */
83
+ empty(): Promise<void>;
84
+ /**
85
+ * Closes the underlying redis client. Use this to perform a graceful shutdown.
86
+ *
87
+ * `close` can be called from anywhere, with one caveat:
88
+ * if called from within a job handler the queue won't close until after the job has been processed
89
+ */
90
+ close(): Promise<any>;
91
+ /**
92
+ * Returns a promise that will return the job instance associated with the jobId parameter.
93
+ * If the specified job cannot be located, the promise callback parameter will be set to null.
94
+ */
95
+ getJob(jobId: string): Promise<Job | null>;
96
+ /**
97
+ * Returns a promise that will return an array with the waiting jobs between start and end.
98
+ */
99
+ getWaiting(start?: number, end?: number): Promise<Array<Job>>;
100
+ /**
101
+ * Returns a promise that will return an array with the active jobs between start and end.
102
+ */
103
+ getActive(start?: number, end?: number): Promise<Array<Job>>;
104
+ /**
105
+ * Returns a promise that will return an array with the delayed jobs between start and end.
106
+ */
107
+ getDelayed(start?: number, end?: number): Promise<Array<Job>>;
108
+ /**
109
+ * Returns a promise that will return an array with the completed jobs between start and end.
110
+ */
111
+ getCompleted(start?: number, end?: number): Promise<Array<Job>>;
112
+ /**
113
+ * Returns a promise that will return an array with the failed jobs between start and end.
114
+ */
115
+ getFailed(start?: number, end?: number): Promise<Array<Job>>;
116
+ /**
117
+ * Returns JobInformation of repeatable jobs (ordered descending). Provide a start and/or an end
118
+ * index to limit the number of results. Start defaults to 0, end to -1 and asc to false.
119
+ */
120
+ getRepeatableJobs(start?: number, end?: number, asc?: boolean): Promise<JobInformation3[]>;
121
+ /**
122
+ * ???
123
+ */
124
+ nextRepeatableJob(name: string, data: any, opts?: JobsOptions, skipCheckExists?: boolean): Promise<Job>;
125
+ /**
126
+ * Removes a given repeatable job. The RepeatOptions and JobId needs to be the same as the ones
127
+ * used for the job when it was added.
128
+ *
129
+ * name: The name of the to be removed job
130
+ */
131
+ removeRepeatable(name: string, opts: RepeatOptions): Promise<void>;
132
+ /**
133
+ * Removes a given repeatable job by key.
134
+ */
135
+ removeRepeatableByKey(repeatJobKey: string): Promise<void>;
136
+ /**
137
+ * Returns a promise that will return an array of job instances of the given types.
138
+ * Optional parameters for range and ordering are provided.
139
+ */
140
+ getJobs(types: string[] | string, start?: number, end?: number, asc?: boolean): Promise<Array<Job>>;
141
+ getNextJob(): Promise<Job>;
142
+ /**
143
+ * Returns a object with the logs according to the start and end arguments. The returned count
144
+ * value is the total amount of logs, useful for implementing pagination.
145
+ */
146
+ getJobLogs(jobId: string, start?: number, end?: number): Promise<{
147
+ logs: string[];
148
+ count: number;
149
+ }>;
150
+ /**
151
+ * Returns a promise that resolves with the job counts for the given queue.
152
+ */
153
+ getJobCounts(...types: string[]): Promise<{
154
+ [index: string]: number;
155
+ }>;
156
+ /**
157
+ * Returns a promise that resolves with the job counts for the given queue of the given types.
158
+ */
159
+ getJobCountByTypes(...types: string[]): Promise<number>;
160
+ /**
161
+ * Returns a promise that resolves with the quantity of completed jobs.
162
+ */
163
+ getCompletedCount(): Promise<number>;
164
+ /**
165
+ * Returns a promise that resolves with the quantity of failed jobs.
166
+ */
167
+ getFailedCount(): Promise<number>;
168
+ /**
169
+ * Returns a promise that resolves with the quantity of delayed jobs.
170
+ */
171
+ getDelayedCount(): Promise<number>;
172
+ /**
173
+ * Returns a promise that resolves with the quantity of waiting jobs.
174
+ */
175
+ getWaitingCount(): Promise<number>;
176
+ /**
177
+ * Returns a promise that resolves with the quantity of paused jobs.
178
+ */
179
+ getPausedCount(): Promise<number>;
180
+ /**
181
+ * Returns a promise that resolves with the quantity of active jobs.
182
+ */
183
+ getActiveCount(): Promise<number>;
184
+ /**
185
+ * Returns a promise that resolves to the quantity of repeatable jobs.
186
+ */
187
+ getRepeatableCount(): Promise<number>;
188
+ /**
189
+ * Tells the queue remove all jobs created outside of a grace period in milliseconds.
190
+ * You can clean the jobs with the following states: completed, wait (typo for waiting), active, delayed, and failed.
191
+ * @param grace - Grace period in milliseconds.
192
+ * @param limit - Maximum amount of jobs to clean per call. If not provided will clean all matching jobs.
193
+ * @param type - Status of the job to clean. Values are completed, wait,
194
+ * active, paused, delayed, and failed. Defaults to completed.
195
+ */
196
+ clean(grace: number, limit: number, type?: 'completed' | 'wait' | 'active' | 'paused' | 'delayed' | 'failed'): Promise<string[]>;
197
+ /**
198
+ * Listens to queue events
199
+ */
200
+ on(event: string, callback: (...args: any[]) => void): this;
201
+ /**
202
+ * An error occurred
203
+ */
204
+ on(event: 'error', callback: ErrorEventCallback3): this;
205
+ /**
206
+ * A Job is waiting to be processed as soon as a worker is idling.
207
+ */
208
+ on(event: 'waiting', callback: WaitingEventCallback3): this;
209
+ /**
210
+ * A job has started. You can use `jobPromise.cancel()` to abort it
211
+ */
212
+ on(event: 'active', callback: ActiveEventCallback3<T>): this;
213
+ /**
214
+ * A job has been marked as stalled.
215
+ * This is useful for debugging job workers that crash or pause the event loop.
216
+ */
217
+ on(event: 'stalled', callback: StalledEventCallback3<T>): this;
218
+ /**
219
+ * A job's progress was updated
220
+ */
221
+ on(event: 'progress', callback: ProgressEventCallback3<T>): this;
222
+ /**
223
+ * A job successfully completed with a `result`
224
+ */
225
+ on(event: 'completed', callback: CompletedEventCallback3<T>): this;
226
+ /**
227
+ * A job failed with `err` as the reason
228
+ */
229
+ on(event: 'failed', callback: FailedEventCallback3<T>): this;
230
+ /**
231
+ * The queue has been paused
232
+ */
233
+ on(event: 'paused', callback: EventCallback3): this;
234
+ /**
235
+ * The queue has been resumed
236
+ */
237
+ on(event: 'resumed', callback: EventCallback3): this;
238
+ /**
239
+ * A job successfully removed.
240
+ */
241
+ on(event: 'removed', callback: RemovedEventCallback3<T>): this;
242
+ /**
243
+ * Old jobs have been cleaned from the queue.
244
+ * `jobs` is an array of jobs that were removed, and `type` is the type of those jobs.
245
+ *
246
+ * @see Queue#clean() for details
247
+ */
248
+ on(event: 'cleaned', callback: CleanedEventCallback3<T>): this;
249
+ /**
250
+ * Emitted every time the queue has processed all the waiting jobs
251
+ * (even if there can be some delayed jobs not yet processed)
252
+ */
253
+ on(event: 'drained', callback: EventCallback3): this;
254
+ once(event: string | symbol, listener: (...args: any[]) => void): this;
255
+ off(event: string | symbol, listener?: (...args: any[]) => void): this;
256
+ removeListener(event: string | symbol, listener: (...args: any[]) => void): this;
257
+ removeAllListeners(event: string | symbol): this;
258
+ /**
259
+ * Set clientName to Redis.client
260
+ */
261
+ setWorkerName(): Promise<any>;
262
+ /**
263
+ * Returns Redis clients array which belongs to current Queue
264
+ */
265
+ getWorkers(): Promise<{
266
+ [key: string]: string;
267
+ }[]>;
268
+ /**
269
+ * Returns Queue name in base64 encoded format
270
+ */
271
+ base64Name(): string;
272
+ /**
273
+ * Returns Queue name with keyPrefix (default: 'bull')
274
+ */
275
+ clientName(): string;
276
+ /**
277
+ * Returns Redis clients array which belongs to current Queue from string with all redis clients
278
+ *
279
+ * @param list - String with all redis clients
280
+ */
281
+ parseClientList(list: string): {
282
+ [key: string]: string;
283
+ }[];
284
+ retryJob(job: Job): Promise<void>;
285
+ private getQueueEvents;
286
+ private ensureWorkerCreated;
287
+ private attachListener;
288
+ detachListener(event: string | symbol, listener?: (...args: any[]) => void): this;
289
+ }
290
+ export declare type JobStatusClean3 = 'completed' | 'wait' | 'active' | 'delayed' | 'paused' | 'failed';
291
+ export interface JobInformation3 {
292
+ key: string;
293
+ name: string;
294
+ id?: string;
295
+ endDate?: number;
296
+ tz?: string;
297
+ cron: string;
298
+ next: number;
299
+ }
300
+ export declare type EventCallback3 = () => void;
301
+ export declare type ErrorEventCallback3 = (error: Error) => void;
302
+ export interface JobPromise3 {
303
+ /**
304
+ * Abort this job
305
+ */
306
+ cancel(): void;
307
+ }
308
+ export declare type ActiveEventCallback3<T = any> = (job: Job, jobPromise?: JobPromise3) => void;
309
+ export declare type StalledEventCallback3<T = any> = (job: Job) => void;
310
+ export declare type ProgressEventCallback3<T = any> = (job: Job, progress: any) => void;
311
+ export declare type CompletedEventCallback3<T = any> = (job: Job, result: any) => void;
312
+ export declare type FailedEventCallback3<T = any> = (job: Job, error: Error) => void;
313
+ export declare type CleanedEventCallback3<T = any> = (jobs: Array<Job>, status: JobStatusClean3) => void;
314
+ export declare type RemovedEventCallback3<T = any> = (job: Job) => void;
315
+ export declare type WaitingEventCallback3 = (jobId: string) => void;
316
+ export {};