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,195 @@
1
+ import { get } from 'lodash';
2
+ import { v4 } from 'uuid';
3
+ import { isRedisInstance, jobIdForGroup } from '../utils';
4
+ import { Job } from './job';
5
+ import { QueueGetters } from './queue-getters';
6
+ import { Repeat } from './repeat';
7
+ import { Scripts } from './scripts';
8
+ /**
9
+ * Queue
10
+ *
11
+ * This class provides methods to add jobs to a queue and some othe high-level
12
+ * administration such as pausing or deleting queues.
13
+ *
14
+ */
15
+ export class Queue extends QueueGetters {
16
+ constructor(name, opts, Connection) {
17
+ super(name, Object.assign({ sharedConnection: isRedisInstance(opts === null || opts === void 0 ? void 0 : opts.connection) }, opts), Connection);
18
+ this.token = v4();
19
+ this.limiter = null;
20
+ this.jobsOpts = get(opts, 'defaultJobOptions');
21
+ this.limiter = get(opts, 'limiter');
22
+ this.waitUntilReady()
23
+ .then(client => {
24
+ if (!this.closing) {
25
+ client.hset(this.keys.meta, 'opts.maxLenEvents', get(opts, 'streams.events.maxLen', 10000));
26
+ }
27
+ })
28
+ .catch(err => {
29
+ // We ignore this error to avoid warnings. The error can still
30
+ // be received by listening to event 'error'
31
+ });
32
+ }
33
+ /**
34
+ * Returns this instance current default job options.
35
+ */
36
+ get defaultJobOptions() {
37
+ return this.jobsOpts;
38
+ }
39
+ get repeat() {
40
+ return new Promise(async (resolve) => {
41
+ if (!this._repeat) {
42
+ this._repeat = new Repeat(this.name, Object.assign(Object.assign({}, this.opts), { connection: await this.client }));
43
+ this._repeat.on('error', e => this.emit.bind(this, e));
44
+ }
45
+ resolve(this._repeat);
46
+ });
47
+ }
48
+ /**
49
+ * Adds a new job to the queue.
50
+ *
51
+ * @param name - Name of the job to be added to the queue,.
52
+ * @param data - Arbitrary data to append to the job.
53
+ * @param opts - Job options that affects how the job is going to be processed.
54
+ */
55
+ async add(name, data, opts) {
56
+ if (opts && opts.repeat) {
57
+ return (await this.repeat).addNextRepeatableJob(name, data, Object.assign(Object.assign({}, this.jobsOpts), opts), true);
58
+ }
59
+ else {
60
+ const jobId = jobIdForGroup(opts, data, { limiter: this.limiter });
61
+ const job = await Job.create(this, name, data, Object.assign(Object.assign(Object.assign({}, this.jobsOpts), opts), { jobId }));
62
+ this.emit('waiting', job);
63
+ return job;
64
+ }
65
+ }
66
+ /**
67
+ * Adds an array of jobs to the queue.
68
+ *
69
+ * @param jobs - The array of jobs to add to the queue. Each job is defined by 3
70
+ * properties, 'name', 'data' and 'opts'. They follow the same signature as 'Queue.add'.
71
+ */
72
+ async addBulk(jobs) {
73
+ return Job.createBulk(this, jobs.map(job => ({
74
+ name: job.name,
75
+ data: job.data,
76
+ opts: Object.assign(Object.assign(Object.assign({}, this.jobsOpts), job.opts), { jobId: jobIdForGroup(job.opts, job.data, { limiter: this.limiter }) }),
77
+ })));
78
+ }
79
+ /**
80
+ * Pauses the processing of this queue globally.
81
+ *
82
+ * We use an atomic RENAME operation on the wait queue. Since
83
+ * we have blocking calls with BRPOPLPUSH on the wait queue, as long as the queue
84
+ * is renamed to 'paused', no new jobs will be processed (the current ones
85
+ * will run until finalized).
86
+ *
87
+ * Adding jobs requires a LUA script to check first if the paused list exist
88
+ * and in that case it will add it there instead of the wait list.
89
+ */
90
+ async pause() {
91
+ await Scripts.pause(this, true);
92
+ this.emit('paused');
93
+ }
94
+ /**
95
+ * Resumes the processing of this queue globally.
96
+ *
97
+ * The method reverses the pause operation by resuming the processing of the
98
+ * queue.
99
+ */
100
+ async resume() {
101
+ await Scripts.pause(this, false);
102
+ this.emit('resumed');
103
+ }
104
+ /**
105
+ * Returns true if the queue is currently paused.
106
+ */
107
+ async isPaused() {
108
+ const client = await this.client;
109
+ const pausedKeyExists = await client.hexists(this.keys.meta, 'paused');
110
+ return pausedKeyExists === 1;
111
+ }
112
+ /**
113
+ * Get all repeatable meta jobs.
114
+ *
115
+ * @param start - Offset of first job to return.
116
+ * @param end - Offset of last job to return.
117
+ * @param asc - Determine the order in which jobs are returned based on their
118
+ * next execution time.
119
+ */
120
+ async getRepeatableJobs(start, end, asc) {
121
+ return (await this.repeat).getRepeatableJobs(start, end, asc);
122
+ }
123
+ async removeRepeatable(name, repeatOpts, jobId) {
124
+ return (await this.repeat).removeRepeatable(name, repeatOpts, jobId);
125
+ }
126
+ async removeRepeatableByKey(key) {
127
+ return (await this.repeat).removeRepeatableByKey(key);
128
+ }
129
+ /**
130
+ * Removes the given job from the queue as well as all its
131
+ * dependencies.
132
+ *
133
+ * @param jobId - The id of the job to remove
134
+ * @returns 1 if it managed to remove the job or 0 if the job or
135
+ * any of its dependencies was locked.
136
+ */
137
+ async remove(jobId) {
138
+ return Scripts.remove(this, jobId);
139
+ }
140
+ /**
141
+ * Drains the queue, i.e., removes all jobs that are waiting
142
+ * or delayed, but not active, completed or failed.
143
+ *
144
+ * @param delayed - Pass true if it should also clean the
145
+ * delayed jobs.
146
+ */
147
+ drain(delayed = false) {
148
+ return Scripts.drain(this, delayed);
149
+ }
150
+ /**
151
+ * Cleans jobs from a queue. Similar to drain but keeps jobs within a certain
152
+ * grace period.
153
+ *
154
+ * @param grace - The grace period
155
+ * @param The - Max number of jobs to clean
156
+ * @param {string} [type=completed] - The type of job to clean
157
+ * Possible values are completed, wait, active, paused, delayed, failed. Defaults to completed.
158
+ * @returns Id jobs from the deleted records
159
+ */
160
+ async clean(grace, limit, type = 'completed') {
161
+ const jobs = await Scripts.cleanJobsInSet(this, type, Date.now() - grace, limit);
162
+ this.emit('cleaned', jobs, type);
163
+ return jobs;
164
+ }
165
+ /**
166
+ * Completely destroys the queue and all of its contents irreversibly.
167
+ * This method will the *pause* the queue and requires that there are no
168
+ * active jobs. It is possible to bypass this requirement, i.e. not
169
+ * having active jobs using the "force" option.
170
+ *
171
+ * Note: This operation requires to iterate on all the jobs stored in the queue
172
+ * and can be slow for very large queues.
173
+ *
174
+ * @param { { force: boolean, count: number }} opts. Use force = true to force obliteration even
175
+ * with active jobs in the queue. Use count with the maximum number of deleted keys per iteration,
176
+ * 1000 is the default.
177
+ */
178
+ async obliterate(opts) {
179
+ await this.pause();
180
+ let cursor = 0;
181
+ do {
182
+ cursor = await Scripts.obliterate(this, Object.assign({ force: false, count: 1000 }, opts));
183
+ } while (cursor);
184
+ }
185
+ /**
186
+ * Trim the event stream to an approximately maxLength.
187
+ *
188
+ * @param maxLength -
189
+ */
190
+ async trimEvents(maxLength) {
191
+ const client = await this.client;
192
+ return client.xtrim(this.keys.events, 'MAXLEN', '~', maxLength);
193
+ }
194
+ }
195
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/classes/queue.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /// <reference types="node" />
2
+ import { EventEmitter } from 'events';
3
+ import { ConnectionOptions, RedisClient } from '../interfaces';
4
+ export declare class RedisConnection extends EventEmitter {
5
+ private readonly opts?;
6
+ private readonly shared;
7
+ static minimumVersion: string;
8
+ protected _client: RedisClient;
9
+ private initializing;
10
+ private closing;
11
+ private version;
12
+ private handleClientError;
13
+ constructor(opts?: ConnectionOptions, shared?: boolean);
14
+ private checkOptions;
15
+ /**
16
+ * Waits for a redis client to be ready.
17
+ * @param redis - client
18
+ */
19
+ static waitUntilReady(client: RedisClient): Promise<void>;
20
+ get client(): Promise<RedisClient>;
21
+ protected loadCommands(): Promise<void>;
22
+ private init;
23
+ disconnect(): Promise<void>;
24
+ reconnect(): Promise<void>;
25
+ close(): Promise<void>;
26
+ private getRedisVersion;
27
+ get redisVersion(): string;
28
+ }
@@ -0,0 +1,164 @@
1
+ import { EventEmitter } from 'events';
2
+ import * as IORedis from 'ioredis';
3
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
4
+ // @ts-ignore
5
+ import { CONNECTION_CLOSED_ERROR_MSG } from 'ioredis/built/utils';
6
+ import * as semver from 'semver';
7
+ import { scriptLoader } from '../commands';
8
+ import { isRedisInstance, isNotConnectionError } from '../utils';
9
+ import * as path from 'path';
10
+ const overrideMessage = [
11
+ 'BullMQ: WARNING! Your redis options maxRetriesPerRequest must be null and enableReadyCheck false',
12
+ 'and will be overrided by BullMQ.',
13
+ ].join(' ');
14
+ const deprecationMessage = [
15
+ 'BullMQ: DEPRECATION WARNING! Your redis options maxRetriesPerRequest must be null and enableReadyCheck false.',
16
+ 'On the next versions having this settings will throw an exception',
17
+ ].join(' ');
18
+ export class RedisConnection extends EventEmitter {
19
+ constructor(opts, shared = false) {
20
+ var _a;
21
+ super();
22
+ this.opts = opts;
23
+ this.shared = shared;
24
+ if (!isRedisInstance(opts)) {
25
+ this.checkOptions(overrideMessage, opts);
26
+ this.opts = Object.assign(Object.assign({ port: 6379, host: '127.0.0.1', retryStrategy: function (times) {
27
+ return Math.min(Math.exp(times), 20000);
28
+ } }, opts), { maxRetriesPerRequest: null, enableReadyCheck: false });
29
+ }
30
+ else {
31
+ this._client = opts;
32
+ let options = this._client.options;
33
+ if ((_a = options) === null || _a === void 0 ? void 0 : _a.redisOptions) {
34
+ options = options.redisOptions;
35
+ }
36
+ this.checkOptions(deprecationMessage, options);
37
+ }
38
+ this.handleClientError = (err) => {
39
+ this.emit('error', err);
40
+ };
41
+ this.initializing = this.init();
42
+ this.initializing.catch(err => this.emit('error', err));
43
+ }
44
+ checkOptions(msg, options) {
45
+ if (options &&
46
+ (options.maxRetriesPerRequest || options.enableReadyCheck)) {
47
+ console.error(msg);
48
+ }
49
+ }
50
+ /**
51
+ * Waits for a redis client to be ready.
52
+ * @param redis - client
53
+ */
54
+ static async waitUntilReady(client) {
55
+ if (client.status === 'ready') {
56
+ return;
57
+ }
58
+ if (client.status === 'wait') {
59
+ return client.connect();
60
+ }
61
+ if (client.status === 'end') {
62
+ throw new Error(CONNECTION_CLOSED_ERROR_MSG);
63
+ }
64
+ return new Promise((resolve, reject) => {
65
+ let lastError;
66
+ const errorHandler = (err) => {
67
+ lastError = err;
68
+ };
69
+ const handleReady = () => {
70
+ client.removeListener('end', endHandler);
71
+ client.removeListener('error', errorHandler);
72
+ resolve();
73
+ };
74
+ const endHandler = () => {
75
+ client.removeListener('ready', handleReady);
76
+ client.removeListener('error', errorHandler);
77
+ reject(lastError || new Error(CONNECTION_CLOSED_ERROR_MSG));
78
+ };
79
+ client.once('ready', handleReady);
80
+ client.on('end', endHandler);
81
+ client.once('error', errorHandler);
82
+ });
83
+ }
84
+ get client() {
85
+ return this.initializing;
86
+ }
87
+ loadCommands() {
88
+ return scriptLoader.load(this._client, path.join(__dirname, '../commands'));
89
+ }
90
+ async init() {
91
+ const opts = this.opts;
92
+ if (!this._client) {
93
+ this._client = new IORedis(opts);
94
+ }
95
+ this._client.on('error', this.handleClientError);
96
+ await RedisConnection.waitUntilReady(this._client);
97
+ await this.loadCommands();
98
+ if (opts && opts.skipVersionCheck !== true && !this.closing) {
99
+ this.version = await this.getRedisVersion();
100
+ if (semver.lt(this.version, RedisConnection.minimumVersion)) {
101
+ throw new Error(`Redis version needs to be greater than ${RedisConnection.minimumVersion} Current: ${this.version}`);
102
+ }
103
+ }
104
+ return this._client;
105
+ }
106
+ async disconnect() {
107
+ const client = await this.client;
108
+ if (client.status !== 'end') {
109
+ let _resolve, _reject;
110
+ const disconnecting = new Promise((resolve, reject) => {
111
+ client.once('end', resolve);
112
+ client.once('error', reject);
113
+ _resolve = resolve;
114
+ _reject = reject;
115
+ });
116
+ client.disconnect();
117
+ try {
118
+ await disconnecting;
119
+ }
120
+ finally {
121
+ client.removeListener('end', _resolve);
122
+ client.removeListener('error', _reject);
123
+ }
124
+ }
125
+ }
126
+ async reconnect() {
127
+ const client = await this.client;
128
+ return client.connect();
129
+ }
130
+ async close() {
131
+ if (!this.closing) {
132
+ this.closing = true;
133
+ try {
134
+ await this.initializing;
135
+ if (!this.shared) {
136
+ await this._client.quit();
137
+ }
138
+ }
139
+ catch (error) {
140
+ if (isNotConnectionError(error)) {
141
+ throw error;
142
+ }
143
+ }
144
+ finally {
145
+ this._client.off('error', this.handleClientError);
146
+ }
147
+ }
148
+ }
149
+ async getRedisVersion() {
150
+ const doc = await this._client.info();
151
+ const prefix = 'redis_version:';
152
+ const lines = doc.split('\r\n');
153
+ for (let i = 0; i < lines.length; i++) {
154
+ if (lines[i].indexOf(prefix) === 0) {
155
+ return lines[i].substr(prefix.length);
156
+ }
157
+ }
158
+ }
159
+ get redisVersion() {
160
+ return this.version;
161
+ }
162
+ }
163
+ RedisConnection.minimumVersion = '5.0.0';
164
+ //# sourceMappingURL=redis-connection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redis-connection.js","sourceRoot":"","sources":["../../../src/classes/redis-connection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { JobsOptions, RepeatOptions } from '../interfaces';
2
+ import { QueueBase } from './queue-base';
3
+ import { Job } from './job';
4
+ export declare class Repeat extends QueueBase {
5
+ addNextRepeatableJob<T = any, R = any, N extends string = string>(name: N, data: T, opts: JobsOptions, skipCheckExists?: boolean): Promise<Job<T, R, N>>;
6
+ private createNextJob;
7
+ removeRepeatable(name: string, repeat: RepeatOptions, jobId?: string): Promise<void>;
8
+ removeRepeatableByKey(repeatJobKey: string): Promise<void>;
9
+ private keyToData;
10
+ getRepeatableJobs(start?: number, end?: number, asc?: boolean): Promise<{
11
+ key: string;
12
+ name: string;
13
+ id: string;
14
+ endDate: number;
15
+ tz: string;
16
+ cron: string;
17
+ next: number;
18
+ }[]>;
19
+ getRepeatableCount(): Promise<number>;
20
+ }
@@ -0,0 +1,140 @@
1
+ import { __rest } from "tslib";
2
+ import { createHash } from 'crypto';
3
+ import { QueueBase } from './queue-base';
4
+ import { Job } from './job';
5
+ import { Scripts } from './scripts';
6
+ const parser = require('cron-parser');
7
+ export class Repeat extends QueueBase {
8
+ async addNextRepeatableJob(name, data, opts, skipCheckExists) {
9
+ const repeatOpts = Object.assign({}, opts.repeat);
10
+ const prevMillis = opts.prevMillis || 0;
11
+ const currentCount = repeatOpts.count ? repeatOpts.count + 1 : 1;
12
+ if (typeof repeatOpts.limit !== 'undefined' &&
13
+ currentCount > repeatOpts.limit) {
14
+ return;
15
+ }
16
+ let now = Date.now();
17
+ if (!(typeof repeatOpts.endDate === undefined) &&
18
+ now > new Date(repeatOpts.endDate).getTime()) {
19
+ return;
20
+ }
21
+ now = prevMillis < now ? now : prevMillis;
22
+ const nextMillis = getNextMillis(now, repeatOpts);
23
+ const hasImmediately = repeatOpts.every && repeatOpts.immediately;
24
+ const offset = hasImmediately ? now - nextMillis : undefined;
25
+ if (nextMillis) {
26
+ // We store the undecorated opts.jobId into the repeat options
27
+ if (!prevMillis && opts.jobId) {
28
+ repeatOpts.jobId = opts.jobId;
29
+ }
30
+ const repeatJobKey = getRepeatKey(name, repeatOpts);
31
+ let repeatableExists = true;
32
+ if (!skipCheckExists) {
33
+ // Check that the repeatable job hasn't been removed
34
+ // TODO: a lua script would be better here
35
+ const client = await this.client;
36
+ repeatableExists = !!(await client.zscore(this.keys.repeat, repeatJobKey));
37
+ }
38
+ const { immediately } = repeatOpts, filteredRepeatOpts = __rest(repeatOpts, ["immediately"]);
39
+ // The job could have been deleted since this check
40
+ if (repeatableExists) {
41
+ return this.createNextJob(name, nextMillis, repeatJobKey, Object.assign(Object.assign({}, opts), { repeat: Object.assign({ offset }, filteredRepeatOpts) }), data, currentCount, hasImmediately);
42
+ }
43
+ }
44
+ }
45
+ async createNextJob(name, nextMillis, repeatJobKey, opts, data, currentCount, hasImmediately) {
46
+ const client = await this.client;
47
+ //
48
+ // Generate unique job id for this iteration.
49
+ //
50
+ const jobId = getRepeatJobId(name, nextMillis, md5(repeatJobKey), opts.repeat.jobId);
51
+ const now = Date.now();
52
+ const delay = nextMillis + (opts.repeat.offset ? opts.repeat.offset : 0) - now;
53
+ const mergedOpts = Object.assign(Object.assign({}, opts), { jobId, delay: delay < 0 || hasImmediately ? 0 : delay, timestamp: now, prevMillis: nextMillis });
54
+ mergedOpts.repeat = Object.assign(Object.assign({}, opts.repeat), { count: currentCount });
55
+ await client.zadd(this.keys.repeat, nextMillis.toString(), repeatJobKey);
56
+ return Job.create(this, name, data, mergedOpts);
57
+ }
58
+ async removeRepeatable(name, repeat, jobId) {
59
+ const repeatJobKey = getRepeatKey(name, Object.assign(Object.assign({}, repeat), { jobId }));
60
+ const repeatJobId = getRepeatJobId(name, '', md5(repeatJobKey), jobId || repeat.jobId);
61
+ return Scripts.removeRepeatable(this, repeatJobId, repeatJobKey);
62
+ }
63
+ async removeRepeatableByKey(repeatJobKey) {
64
+ const data = this.keyToData(repeatJobKey);
65
+ const repeatJobId = getRepeatJobId(data.name, '', md5(repeatJobKey), data.id);
66
+ return Scripts.removeRepeatable(this, repeatJobId, repeatJobKey);
67
+ }
68
+ keyToData(key) {
69
+ const data = key.split(':');
70
+ return {
71
+ key,
72
+ name: data[0],
73
+ id: data[1] || null,
74
+ endDate: parseInt(data[2]) || null,
75
+ tz: data[3] || null,
76
+ cron: data[4],
77
+ };
78
+ }
79
+ async getRepeatableJobs(start = 0, end = -1, asc = false) {
80
+ const client = await this.client;
81
+ const key = this.keys.repeat;
82
+ const result = asc
83
+ ? await client.zrange(key, start, end, 'WITHSCORES')
84
+ : await client.zrevrange(key, start, end, 'WITHSCORES');
85
+ const jobs = [];
86
+ for (let i = 0; i < result.length; i += 2) {
87
+ const data = result[i].split(':');
88
+ jobs.push({
89
+ key: result[i],
90
+ name: data[0],
91
+ id: data[1] || null,
92
+ endDate: parseInt(data[2]) || null,
93
+ tz: data[3] || null,
94
+ cron: data[4],
95
+ next: parseInt(result[i + 1]),
96
+ });
97
+ }
98
+ return jobs;
99
+ }
100
+ async getRepeatableCount() {
101
+ const client = await this.client;
102
+ return client.zcard(this.toKey('repeat'));
103
+ }
104
+ }
105
+ function getRepeatJobId(name, nextMillis, namespace, jobId) {
106
+ const checksum = md5(`${name}${jobId || ''}${namespace}`);
107
+ return `repeat:${checksum}:${nextMillis}`;
108
+ // return `repeat:${jobId || ''}:${name}:${namespace}:${nextMillis}`;
109
+ //return `repeat:${name}:${namespace}:${nextMillis}`;
110
+ }
111
+ function getRepeatKey(name, repeat) {
112
+ const endDate = repeat.endDate ? new Date(repeat.endDate).getTime() : '';
113
+ const tz = repeat.tz || '';
114
+ const suffix = (repeat.cron ? repeat.cron : String(repeat.every)) || '';
115
+ const jobId = repeat.jobId ? repeat.jobId : '';
116
+ return `${name}:${jobId}:${endDate}:${tz}:${suffix}`;
117
+ }
118
+ function getNextMillis(millis, opts) {
119
+ if (opts.cron && opts.every) {
120
+ throw new Error('Both .cron and .every options are defined for this repeatable job');
121
+ }
122
+ if (opts.every) {
123
+ return (Math.floor(millis / opts.every) * opts.every +
124
+ (opts.immediately ? 0 : opts.every));
125
+ }
126
+ const currentDate = opts.startDate && new Date(opts.startDate) > new Date(millis)
127
+ ? new Date(opts.startDate)
128
+ : new Date(millis);
129
+ const interval = parser.parseExpression(opts.cron, Object.assign(Object.assign({}, opts), { currentDate }));
130
+ try {
131
+ return interval.next().getTime();
132
+ }
133
+ catch (e) {
134
+ // Ignore error
135
+ }
136
+ }
137
+ function md5(str) {
138
+ return createHash('md5').update(str).digest('hex');
139
+ }
140
+ //# sourceMappingURL=repeat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repeat.js","sourceRoot":"","sources":["../../../src/classes/repeat.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { Job } from './job';
2
+ import { ChildPool } from '../classes';
3
+ declare const sandbox: <T, R, N extends string>(processFile: any, childPool: ChildPool) => (job: Job<T, R, N>) => Promise<R>;
4
+ export default sandbox;
@@ -0,0 +1,56 @@
1
+ import { ChildCommand, ParentCommand } from '../interfaces';
2
+ import { parentSend } from '../utils';
3
+ const sandbox = (processFile, childPool) => {
4
+ return async function process(job) {
5
+ const child = await childPool.retain(processFile);
6
+ let msgHandler;
7
+ let exitHandler;
8
+ await parentSend(child, {
9
+ cmd: ChildCommand.Start,
10
+ job: job.asJSON(),
11
+ });
12
+ const done = new Promise((resolve, reject) => {
13
+ msgHandler = async (msg) => {
14
+ switch (msg.cmd) {
15
+ case ParentCommand.Completed:
16
+ resolve(msg.value);
17
+ break;
18
+ case ParentCommand.Failed:
19
+ case ParentCommand.Error: {
20
+ const err = new Error();
21
+ Object.assign(err, msg.value);
22
+ reject(err);
23
+ break;
24
+ }
25
+ case ParentCommand.Progress:
26
+ await job.updateProgress(msg.value);
27
+ break;
28
+ case ParentCommand.Log:
29
+ await job.log(msg.value);
30
+ break;
31
+ }
32
+ };
33
+ exitHandler = (exitCode, signal) => {
34
+ reject(new Error('Unexpected exit code: ' + exitCode + ' signal: ' + signal));
35
+ };
36
+ child.on('message', msgHandler);
37
+ child.on('exit', exitHandler);
38
+ });
39
+ try {
40
+ await done;
41
+ return done;
42
+ }
43
+ finally {
44
+ child.removeListener('message', msgHandler);
45
+ child.removeListener('exit', exitHandler);
46
+ if (child.exitCode !== null || /SIG.*/.test(`${child.signalCode}`)) {
47
+ childPool.remove(child);
48
+ }
49
+ else {
50
+ childPool.release(child);
51
+ }
52
+ }
53
+ };
54
+ };
55
+ export default sandbox;
56
+ //# sourceMappingURL=sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../../src/classes/sandbox.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAgB,aAAa,EAAE,MAAM,eAAe,CAAC;AAE1E,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,OAAO,GAAG,CACd,WAAgB,EAChB,SAAoB,EACpB,EAAE;IACF,OAAO,KAAK,UAAU,OAAO,CAAC,GAAiB;QAC7C,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClD,IAAI,UAAe,CAAC;QACpB,IAAI,WAAgB,CAAC;QAErB,MAAM,UAAU,CAAC,KAAK,EAAE;YACtB,GAAG,EAAE,YAAY,CAAC,KAAK;YACvB,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE;SAClB,CAAC,CAAC;QAEH,MAAM,IAAI,GAAe,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,UAAU,GAAG,KAAK,EAAE,GAAiB,EAAE,EAAE;gBACvC,QAAQ,GAAG,CAAC,GAAG,EAAE;oBACf,KAAK,aAAa,CAAC,SAAS;wBAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACnB,MAAM;oBACR,KAAK,aAAa,CAAC,MAAM,CAAC;oBAC1B,KAAK,aAAa,CAAC,KAAK,CAAC,CAAC;wBACxB,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;wBACxB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC9B,MAAM,CAAC,GAAG,CAAC,CAAC;wBACZ,MAAM;qBACP;oBACD,KAAK,aAAa,CAAC,QAAQ;wBACzB,MAAM,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACpC,MAAM;oBACR,KAAK,aAAa,CAAC,GAAG;wBACpB,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACzB,MAAM;iBACT;YACH,CAAC,CAAC;YAEF,WAAW,GAAG,CAAC,QAAa,EAAE,MAAW,EAAE,EAAE;gBAC3C,MAAM,CACJ,IAAI,KAAK,CAAC,wBAAwB,GAAG,QAAQ,GAAG,WAAW,GAAG,MAAM,CAAC,CACtE,CAAC;YACJ,CAAC,CAAC;YAEF,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAChC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,IAAI;YACF,MAAM,IAAI,CAAC;YACX,OAAO,IAAI,CAAC;SACb;gBAAS;YACR,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAC5C,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YAE1C,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE;gBAClE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aACzB;iBAAM;gBACL,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aAC1B;SACF;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC"}