@tachybase/plugin-adapter-bullmq 1.3.17 → 1.3.19

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 (347) hide show
  1. package/dist/externalVersion.js +2 -2
  2. package/dist/node_modules/@bull-board/api/dist/src/handlers/error.d.ts +4 -2
  3. package/dist/node_modules/@bull-board/api/dist/src/handlers/error.js +2 -2
  4. package/dist/node_modules/@bull-board/api/dist/src/handlers/pauseAll.d.ts +4 -0
  5. package/dist/node_modules/@bull-board/api/dist/src/handlers/pauseAll.js +15 -0
  6. package/dist/node_modules/@bull-board/api/dist/src/handlers/queues.js +4 -0
  7. package/dist/node_modules/@bull-board/api/dist/src/handlers/resumeAll.d.ts +4 -0
  8. package/dist/node_modules/@bull-board/api/dist/src/handlers/resumeAll.js +15 -0
  9. package/dist/node_modules/@bull-board/api/dist/src/index.js +1 -1
  10. package/dist/node_modules/@bull-board/api/dist/src/queueAdapters/base.d.ts +4 -0
  11. package/dist/node_modules/@bull-board/api/dist/src/queueAdapters/base.js +6 -0
  12. package/dist/node_modules/@bull-board/api/dist/src/queueAdapters/bull.js +6 -4
  13. package/dist/node_modules/@bull-board/api/dist/src/routes.js +4 -0
  14. package/dist/node_modules/@bull-board/api/dist/typings/app.d.ts +22 -2
  15. package/dist/node_modules/@bull-board/api/package.json +1 -1
  16. package/dist/node_modules/@bull-board/koa/dist/KoaAdapter.js +1 -1
  17. package/dist/node_modules/@bull-board/koa/dist/index.js +6 -6
  18. package/dist/node_modules/@bull-board/koa/package.json +1 -1
  19. package/dist/node_modules/bullmq/dist/cjs/classes/backoffs.js +18 -5
  20. package/dist/node_modules/bullmq/dist/cjs/classes/child-pool.js +7 -2
  21. package/dist/node_modules/bullmq/dist/cjs/classes/child-processor.js +59 -5
  22. package/dist/node_modules/bullmq/dist/cjs/classes/child.js +3 -1
  23. package/dist/node_modules/bullmq/dist/cjs/classes/errors/index.js +2 -1
  24. package/dist/node_modules/bullmq/dist/cjs/classes/errors/waiting-error.js +19 -0
  25. package/dist/node_modules/bullmq/dist/cjs/classes/flow-producer.js +21 -5
  26. package/dist/node_modules/bullmq/dist/cjs/classes/index.js +1 -0
  27. package/dist/node_modules/bullmq/dist/cjs/classes/job-scheduler.js +88 -62
  28. package/dist/node_modules/bullmq/dist/cjs/classes/job.js +216 -109
  29. package/dist/node_modules/bullmq/dist/cjs/classes/main-base.js +1 -1
  30. package/dist/node_modules/bullmq/dist/cjs/classes/queue-base.js +10 -9
  31. package/dist/node_modules/bullmq/dist/cjs/classes/queue-getters.js +34 -14
  32. package/dist/node_modules/bullmq/dist/cjs/classes/queue.js +19 -13
  33. package/dist/node_modules/bullmq/dist/cjs/classes/redis-connection.js +16 -9
  34. package/dist/node_modules/bullmq/dist/cjs/classes/repeat.js +1 -1
  35. package/dist/node_modules/bullmq/dist/cjs/classes/sandbox.js +54 -28
  36. package/dist/node_modules/bullmq/dist/cjs/classes/scripts.js +141 -39
  37. package/dist/node_modules/bullmq/dist/cjs/classes/worker.js +191 -182
  38. package/dist/node_modules/bullmq/dist/cjs/commands/addDelayedJob-6.lua +6 -17
  39. package/dist/node_modules/bullmq/dist/cjs/commands/addJobScheduler-11.lua +123 -0
  40. package/dist/node_modules/bullmq/dist/{esm/commands/addParentJob-4.lua → cjs/commands/addParentJob-5.lua} +7 -6
  41. package/dist/node_modules/bullmq/dist/cjs/commands/{addPrioritizedJob-8.lua → addPrioritizedJob-9.lua} +11 -10
  42. package/dist/node_modules/bullmq/dist/cjs/commands/addRepeatableJob-2.lua +2 -2
  43. package/dist/node_modules/bullmq/dist/{esm/commands/addStandardJob-8.lua → cjs/commands/addStandardJob-9.lua} +9 -8
  44. package/dist/node_modules/bullmq/dist/cjs/commands/cleanJobsInSet-3.lua +9 -5
  45. package/dist/node_modules/bullmq/dist/cjs/commands/drain-5.lua +16 -16
  46. package/dist/node_modules/bullmq/dist/cjs/commands/getDependencyCounts-4.lua +31 -0
  47. package/dist/node_modules/bullmq/dist/cjs/commands/getState-8.lua +5 -5
  48. package/dist/node_modules/bullmq/dist/cjs/commands/getStateV2-8.lua +8 -8
  49. package/dist/node_modules/bullmq/dist/cjs/commands/includes/addDelayedJob.lua +23 -0
  50. package/dist/node_modules/bullmq/dist/cjs/commands/includes/addJobFromScheduler.lua +37 -0
  51. package/dist/node_modules/bullmq/dist/cjs/commands/includes/addJobWithPriority.lua +2 -2
  52. package/dist/node_modules/bullmq/dist/cjs/commands/includes/cleanList.lua +4 -2
  53. package/dist/node_modules/bullmq/dist/cjs/commands/includes/cleanSet.lua +3 -11
  54. package/dist/node_modules/bullmq/dist/cjs/commands/includes/collectMetrics.lua +1 -1
  55. package/dist/node_modules/bullmq/dist/cjs/commands/includes/deduplicateJob.lua +63 -18
  56. package/dist/node_modules/bullmq/dist/cjs/commands/includes/filterOutJobsToIgnore.lua +14 -0
  57. package/dist/node_modules/bullmq/dist/cjs/commands/includes/getNextDelayedTimestamp.lua +1 -1
  58. package/dist/node_modules/bullmq/dist/cjs/commands/includes/getOrSetMaxEvents.lua +6 -6
  59. package/dist/node_modules/bullmq/dist/cjs/commands/includes/getPriorityScore.lua +8 -0
  60. package/dist/node_modules/bullmq/dist/cjs/commands/includes/isJobSchedulerJob.lua +15 -0
  61. package/dist/node_modules/bullmq/dist/cjs/commands/includes/isLocked.lua +1 -0
  62. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveChildFromDependenciesIfNeeded.lua +77 -0
  63. package/dist/node_modules/bullmq/dist/cjs/commands/includes/{moveJobFromPriorityToActive.lua → moveJobFromPrioritizedToActive.lua} +1 -1
  64. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveParentToWait.lua +45 -0
  65. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveParentToWaitIfNeeded.lua +9 -50
  66. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveParentToWaitIfNoPendingDependencies.lua +13 -0
  67. package/dist/node_modules/bullmq/dist/cjs/commands/includes/prepareJobForProcessing.lua +2 -1
  68. package/dist/node_modules/bullmq/dist/cjs/commands/includes/promoteDelayedJobs.lua +7 -3
  69. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeDeduplicationKeyIfNeededOnFinalization.lua +23 -0
  70. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeDeduplicationKeyIfNeededOnRemoval.lua +16 -0
  71. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeJob.lua +2 -2
  72. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeJobKeys.lua +2 -2
  73. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeJobWithChildren.lua +95 -0
  74. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeListJobs.lua +7 -1
  75. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeParentDependencyKey.lua +5 -5
  76. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeZSetJobs.lua +2 -8
  77. package/dist/node_modules/bullmq/dist/cjs/commands/includes/storeJob.lua +2 -2
  78. package/dist/node_modules/bullmq/dist/cjs/commands/includes/storeJobScheduler.lua +52 -0
  79. package/dist/node_modules/bullmq/dist/cjs/commands/includes/trimEvents.lua +1 -1
  80. package/dist/node_modules/bullmq/dist/cjs/commands/includes/updateExistingJobsParent.lua +1 -1
  81. package/dist/node_modules/bullmq/dist/cjs/commands/includes/updateJobFields.lua +5 -5
  82. package/dist/node_modules/bullmq/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +2 -2
  83. package/dist/node_modules/bullmq/dist/cjs/commands/isFinished-3.lua +2 -2
  84. package/dist/node_modules/bullmq/dist/cjs/commands/moveJobFromActiveToWait-9.lua +63 -0
  85. package/dist/node_modules/bullmq/dist/cjs/commands/moveStalledJobsToWait-8.lua +109 -0
  86. package/dist/node_modules/bullmq/dist/cjs/commands/moveToActive-11.lua +3 -2
  87. package/dist/node_modules/bullmq/dist/cjs/commands/moveToFinished-14.lua +52 -52
  88. package/dist/node_modules/bullmq/dist/cjs/commands/moveToWaitingChildren-8.lua +106 -0
  89. package/dist/node_modules/bullmq/dist/cjs/commands/removeJob-2.lua +18 -66
  90. package/dist/node_modules/bullmq/dist/cjs/commands/removeJobScheduler-3.lua +1 -1
  91. package/dist/node_modules/bullmq/dist/cjs/commands/removeUnprocessedChildren-2.lua +31 -0
  92. package/dist/node_modules/bullmq/dist/cjs/commands/retryJob-11.lua +11 -5
  93. package/dist/node_modules/bullmq/dist/cjs/commands/updateJobScheduler-12.lua +90 -0
  94. package/dist/node_modules/bullmq/dist/cjs/commands/updateRepeatableJobMillis-1.lua +1 -1
  95. package/dist/node_modules/bullmq/dist/cjs/enums/child-command.js +2 -0
  96. package/dist/node_modules/bullmq/dist/cjs/enums/error-code.js +2 -1
  97. package/dist/node_modules/bullmq/dist/cjs/enums/parent-command.js +5 -2
  98. package/dist/node_modules/bullmq/dist/cjs/index.js +1 -1
  99. package/dist/node_modules/bullmq/dist/cjs/interfaces/index.js +2 -1
  100. package/dist/node_modules/bullmq/dist/cjs/interfaces/{debounce-options.js → parent-options.js} +1 -1
  101. package/dist/node_modules/bullmq/dist/cjs/interfaces/receiver.js +3 -0
  102. package/dist/node_modules/bullmq/dist/cjs/scripts/addDelayedJob-6.js +163 -84
  103. package/dist/node_modules/bullmq/dist/cjs/scripts/addJobScheduler-11.js +465 -0
  104. package/dist/node_modules/bullmq/dist/cjs/scripts/{addParentJob-4.js → addParentJob-5.js} +147 -75
  105. package/dist/node_modules/bullmq/dist/cjs/scripts/{addPrioritizedJob-8.js → addPrioritizedJob-9.js} +151 -79
  106. package/dist/node_modules/bullmq/dist/cjs/scripts/addRepeatableJob-2.js +18 -13
  107. package/dist/node_modules/bullmq/dist/cjs/scripts/{addStandardJob-8.js → addStandardJob-9.js} +149 -77
  108. package/dist/node_modules/bullmq/dist/cjs/scripts/changeDelay-4.js +7 -7
  109. package/dist/node_modules/bullmq/dist/cjs/scripts/changePriority-7.js +8 -2
  110. package/dist/node_modules/bullmq/dist/cjs/scripts/cleanJobsInSet-3.js +45 -29
  111. package/dist/node_modules/bullmq/dist/cjs/scripts/drain-5.js +49 -35
  112. package/dist/node_modules/bullmq/dist/cjs/scripts/getDependencyCounts-4.js +37 -0
  113. package/dist/node_modules/bullmq/dist/cjs/scripts/getState-8.js +5 -5
  114. package/dist/node_modules/bullmq/dist/cjs/scripts/getStateV2-8.js +8 -8
  115. package/dist/node_modules/bullmq/dist/cjs/scripts/index.js +10 -7
  116. package/dist/node_modules/bullmq/dist/cjs/scripts/isFinished-3.js +2 -2
  117. package/dist/node_modules/bullmq/dist/cjs/scripts/{moveJobFromActiveToWait-10.js → moveJobFromActiveToWait-9.js} +57 -37
  118. package/dist/node_modules/bullmq/dist/cjs/scripts/moveJobsToWait-8.js +6 -6
  119. package/dist/node_modules/bullmq/dist/cjs/scripts/moveStalledJobsToWait-8.js +171 -0
  120. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToActive-11.js +18 -8
  121. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToDelayed-8.js +12 -12
  122. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToFinished-14.js +218 -155
  123. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToWaitingChildren-8.js +529 -0
  124. package/dist/node_modules/bullmq/dist/cjs/scripts/obliterate-2.js +33 -20
  125. package/dist/node_modules/bullmq/dist/cjs/scripts/pause-7.js +1 -1
  126. package/dist/node_modules/bullmq/dist/cjs/scripts/promote-9.js +8 -2
  127. package/dist/node_modules/bullmq/dist/cjs/scripts/removeChildDependency-1.js +7 -7
  128. package/dist/node_modules/bullmq/dist/cjs/scripts/removeJob-2.js +120 -63
  129. package/dist/node_modules/bullmq/dist/cjs/scripts/removeJobScheduler-3.js +3 -3
  130. package/dist/node_modules/bullmq/dist/cjs/scripts/removeRepeatable-3.js +2 -2
  131. package/dist/node_modules/bullmq/dist/cjs/scripts/removeUnprocessedChildren-2.js +339 -0
  132. package/dist/node_modules/bullmq/dist/cjs/scripts/reprocessJob-8.js +6 -6
  133. package/dist/node_modules/bullmq/dist/cjs/scripts/retryJob-11.js +47 -26
  134. package/dist/node_modules/bullmq/dist/cjs/scripts/updateJobScheduler-12.js +274 -0
  135. package/dist/node_modules/bullmq/dist/cjs/scripts/updateProgress-3.js +6 -6
  136. package/dist/node_modules/bullmq/dist/cjs/scripts/updateRepeatableJobMillis-1.js +1 -1
  137. package/dist/node_modules/bullmq/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
  138. package/dist/node_modules/bullmq/dist/cjs/types/deduplication-options.js +3 -0
  139. package/dist/node_modules/bullmq/dist/cjs/types/index.js +3 -0
  140. package/dist/node_modules/bullmq/dist/cjs/types/job-progress.js +3 -0
  141. package/dist/node_modules/bullmq/dist/cjs/types/script-queue-context.js +3 -0
  142. package/dist/node_modules/bullmq/dist/cjs/utils.js +29 -1
  143. package/dist/node_modules/bullmq/dist/cjs/version.js +1 -1
  144. package/dist/node_modules/bullmq/dist/esm/classes/backoffs.d.ts +1 -1
  145. package/dist/node_modules/bullmq/dist/esm/classes/backoffs.js +18 -5
  146. package/dist/node_modules/bullmq/dist/esm/classes/child-pool.d.ts +1 -1
  147. package/dist/node_modules/bullmq/dist/esm/classes/child-pool.js +7 -2
  148. package/dist/node_modules/bullmq/dist/esm/classes/child-processor.d.ts +3 -2
  149. package/dist/node_modules/bullmq/dist/esm/classes/child-processor.js +59 -5
  150. package/dist/node_modules/bullmq/dist/esm/classes/child.js +3 -1
  151. package/dist/node_modules/bullmq/dist/esm/classes/errors/index.d.ts +2 -1
  152. package/dist/node_modules/bullmq/dist/esm/classes/errors/index.js +2 -1
  153. package/dist/node_modules/bullmq/dist/esm/classes/errors/waiting-error.d.ts +10 -0
  154. package/dist/node_modules/bullmq/dist/esm/classes/errors/waiting-error.js +15 -0
  155. package/dist/node_modules/bullmq/dist/esm/classes/flow-producer.d.ts +3 -9
  156. package/dist/node_modules/bullmq/dist/esm/classes/flow-producer.js +21 -5
  157. package/dist/node_modules/bullmq/dist/esm/classes/index.d.ts +1 -0
  158. package/dist/node_modules/bullmq/dist/esm/classes/index.js +1 -0
  159. package/dist/node_modules/bullmq/dist/esm/classes/job-scheduler.d.ts +2 -2
  160. package/dist/node_modules/bullmq/dist/esm/classes/job-scheduler.js +88 -62
  161. package/dist/node_modules/bullmq/dist/esm/classes/job.d.ts +69 -19
  162. package/dist/node_modules/bullmq/dist/esm/classes/job.js +217 -110
  163. package/dist/node_modules/bullmq/dist/esm/classes/main-base.d.ts +2 -3
  164. package/dist/node_modules/bullmq/dist/esm/classes/main-base.js +1 -1
  165. package/dist/node_modules/bullmq/dist/esm/classes/queue-base.d.ts +2 -5
  166. package/dist/node_modules/bullmq/dist/esm/classes/queue-base.js +11 -10
  167. package/dist/node_modules/bullmq/dist/esm/classes/queue-events-producer.d.ts +2 -2
  168. package/dist/node_modules/bullmq/dist/esm/classes/queue-events.d.ts +118 -29
  169. package/dist/node_modules/bullmq/dist/esm/classes/queue-getters.d.ts +20 -13
  170. package/dist/node_modules/bullmq/dist/esm/classes/queue-getters.js +34 -14
  171. package/dist/node_modules/bullmq/dist/esm/classes/queue.d.ts +19 -16
  172. package/dist/node_modules/bullmq/dist/esm/classes/queue.js +19 -13
  173. package/dist/node_modules/bullmq/dist/esm/classes/redis-connection.d.ts +7 -3
  174. package/dist/node_modules/bullmq/dist/esm/classes/redis-connection.js +16 -9
  175. package/dist/node_modules/bullmq/dist/esm/classes/repeat.js +1 -1
  176. package/dist/node_modules/bullmq/dist/esm/classes/sandbox.js +54 -28
  177. package/dist/node_modules/bullmq/dist/esm/classes/scripts.d.ts +20 -13
  178. package/dist/node_modules/bullmq/dist/esm/classes/scripts.js +141 -39
  179. package/dist/node_modules/bullmq/dist/esm/classes/worker.d.ts +28 -7
  180. package/dist/node_modules/bullmq/dist/esm/classes/worker.js +192 -183
  181. package/dist/node_modules/bullmq/dist/esm/commands/addDelayedJob-6.lua +6 -17
  182. package/dist/node_modules/bullmq/dist/esm/commands/addJobScheduler-11.lua +123 -0
  183. package/dist/node_modules/bullmq/dist/{cjs/commands/addParentJob-4.lua → esm/commands/addParentJob-5.lua} +7 -6
  184. package/dist/node_modules/bullmq/dist/esm/commands/{addPrioritizedJob-8.lua → addPrioritizedJob-9.lua} +11 -10
  185. package/dist/node_modules/bullmq/dist/esm/commands/addRepeatableJob-2.lua +2 -2
  186. package/dist/node_modules/bullmq/dist/{cjs/commands/addStandardJob-8.lua → esm/commands/addStandardJob-9.lua} +9 -8
  187. package/dist/node_modules/bullmq/dist/esm/commands/cleanJobsInSet-3.lua +9 -5
  188. package/dist/node_modules/bullmq/dist/esm/commands/drain-5.lua +16 -16
  189. package/dist/node_modules/bullmq/dist/esm/commands/getDependencyCounts-4.lua +31 -0
  190. package/dist/node_modules/bullmq/dist/esm/commands/getState-8.lua +5 -5
  191. package/dist/node_modules/bullmq/dist/esm/commands/getStateV2-8.lua +8 -8
  192. package/dist/node_modules/bullmq/dist/esm/commands/includes/addDelayedJob.lua +23 -0
  193. package/dist/node_modules/bullmq/dist/esm/commands/includes/addJobFromScheduler.lua +37 -0
  194. package/dist/node_modules/bullmq/dist/esm/commands/includes/addJobWithPriority.lua +2 -2
  195. package/dist/node_modules/bullmq/dist/esm/commands/includes/cleanList.lua +4 -2
  196. package/dist/node_modules/bullmq/dist/esm/commands/includes/cleanSet.lua +3 -11
  197. package/dist/node_modules/bullmq/dist/esm/commands/includes/collectMetrics.lua +1 -1
  198. package/dist/node_modules/bullmq/dist/esm/commands/includes/deduplicateJob.lua +63 -18
  199. package/dist/node_modules/bullmq/dist/esm/commands/includes/filterOutJobsToIgnore.lua +14 -0
  200. package/dist/node_modules/bullmq/dist/esm/commands/includes/getNextDelayedTimestamp.lua +1 -1
  201. package/dist/node_modules/bullmq/dist/esm/commands/includes/getOrSetMaxEvents.lua +6 -6
  202. package/dist/node_modules/bullmq/dist/esm/commands/includes/getPriorityScore.lua +8 -0
  203. package/dist/node_modules/bullmq/dist/esm/commands/includes/isJobSchedulerJob.lua +15 -0
  204. package/dist/node_modules/bullmq/dist/esm/commands/includes/isLocked.lua +1 -0
  205. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveChildFromDependenciesIfNeeded.lua +77 -0
  206. package/dist/node_modules/bullmq/dist/esm/commands/includes/{moveJobFromPriorityToActive.lua → moveJobFromPrioritizedToActive.lua} +1 -1
  207. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveParentToWait.lua +45 -0
  208. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveParentToWaitIfNeeded.lua +9 -50
  209. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveParentToWaitIfNoPendingDependencies.lua +13 -0
  210. package/dist/node_modules/bullmq/dist/esm/commands/includes/prepareJobForProcessing.lua +2 -1
  211. package/dist/node_modules/bullmq/dist/esm/commands/includes/promoteDelayedJobs.lua +7 -3
  212. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeDeduplicationKeyIfNeededOnFinalization.lua +23 -0
  213. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeDeduplicationKeyIfNeededOnRemoval.lua +16 -0
  214. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeJob.lua +2 -2
  215. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeJobKeys.lua +2 -2
  216. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeJobWithChildren.lua +95 -0
  217. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeListJobs.lua +7 -1
  218. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeParentDependencyKey.lua +5 -5
  219. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeZSetJobs.lua +2 -8
  220. package/dist/node_modules/bullmq/dist/esm/commands/includes/storeJob.lua +2 -2
  221. package/dist/node_modules/bullmq/dist/esm/commands/includes/storeJobScheduler.lua +52 -0
  222. package/dist/node_modules/bullmq/dist/esm/commands/includes/trimEvents.lua +1 -1
  223. package/dist/node_modules/bullmq/dist/esm/commands/includes/updateExistingJobsParent.lua +1 -1
  224. package/dist/node_modules/bullmq/dist/esm/commands/includes/updateJobFields.lua +5 -5
  225. package/dist/node_modules/bullmq/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +2 -2
  226. package/dist/node_modules/bullmq/dist/esm/commands/isFinished-3.lua +2 -2
  227. package/dist/node_modules/bullmq/dist/esm/commands/moveJobFromActiveToWait-9.lua +63 -0
  228. package/dist/node_modules/bullmq/dist/esm/commands/moveStalledJobsToWait-8.lua +109 -0
  229. package/dist/node_modules/bullmq/dist/esm/commands/moveToActive-11.lua +3 -2
  230. package/dist/node_modules/bullmq/dist/esm/commands/moveToFinished-14.lua +52 -52
  231. package/dist/node_modules/bullmq/dist/esm/commands/moveToWaitingChildren-8.lua +106 -0
  232. package/dist/node_modules/bullmq/dist/esm/commands/removeJob-2.lua +18 -66
  233. package/dist/node_modules/bullmq/dist/esm/commands/removeJobScheduler-3.lua +1 -1
  234. package/dist/node_modules/bullmq/dist/esm/commands/removeUnprocessedChildren-2.lua +31 -0
  235. package/dist/node_modules/bullmq/dist/esm/commands/retryJob-11.lua +11 -5
  236. package/dist/node_modules/bullmq/dist/esm/commands/updateJobScheduler-12.lua +90 -0
  237. package/dist/node_modules/bullmq/dist/esm/commands/updateRepeatableJobMillis-1.lua +1 -1
  238. package/dist/node_modules/bullmq/dist/esm/enums/child-command.d.ts +3 -1
  239. package/dist/node_modules/bullmq/dist/esm/enums/child-command.js +2 -0
  240. package/dist/node_modules/bullmq/dist/esm/enums/error-code.d.ts +3 -2
  241. package/dist/node_modules/bullmq/dist/esm/enums/error-code.js +2 -1
  242. package/dist/node_modules/bullmq/dist/esm/enums/parent-command.d.ts +5 -2
  243. package/dist/node_modules/bullmq/dist/esm/enums/parent-command.js +5 -2
  244. package/dist/node_modules/bullmq/dist/esm/interfaces/backoff-options.d.ts +5 -0
  245. package/dist/node_modules/bullmq/dist/esm/interfaces/base-job-options.d.ts +3 -9
  246. package/dist/node_modules/bullmq/dist/esm/interfaces/child-message.d.ts +1 -0
  247. package/dist/node_modules/bullmq/dist/esm/interfaces/index.d.ts +2 -1
  248. package/dist/node_modules/bullmq/dist/esm/interfaces/index.js +2 -1
  249. package/dist/node_modules/bullmq/dist/esm/interfaces/job-json.d.ts +6 -2
  250. package/dist/node_modules/bullmq/dist/esm/interfaces/job-scheduler-json.d.ts +7 -4
  251. package/dist/node_modules/bullmq/dist/esm/interfaces/minimal-job.d.ts +34 -15
  252. package/dist/node_modules/bullmq/dist/esm/interfaces/parent-options.d.ts +11 -0
  253. package/dist/node_modules/bullmq/dist/esm/interfaces/parent-options.js +2 -0
  254. package/dist/node_modules/bullmq/dist/esm/interfaces/parent.d.ts +6 -2
  255. package/dist/node_modules/bullmq/dist/esm/interfaces/queue-options.d.ts +15 -6
  256. package/dist/node_modules/bullmq/dist/esm/interfaces/receiver.d.ts +4 -0
  257. package/dist/node_modules/bullmq/dist/esm/interfaces/receiver.js +2 -0
  258. package/dist/node_modules/bullmq/dist/esm/interfaces/repeat-options.d.ts +1 -2
  259. package/dist/node_modules/bullmq/dist/esm/interfaces/repeatable-options.d.ts +2 -0
  260. package/dist/node_modules/bullmq/dist/esm/interfaces/sandboxed-job.d.ts +3 -2
  261. package/dist/node_modules/bullmq/dist/esm/interfaces/sandboxed-options.d.ts +1 -1
  262. package/dist/node_modules/bullmq/dist/esm/interfaces/telemetry.d.ts +18 -15
  263. package/dist/node_modules/bullmq/dist/esm/interfaces/worker-options.d.ts +10 -10
  264. package/dist/node_modules/bullmq/dist/esm/scripts/addDelayedJob-6.js +163 -84
  265. package/dist/node_modules/bullmq/dist/esm/scripts/addJobScheduler-11.js +462 -0
  266. package/dist/node_modules/bullmq/dist/esm/scripts/{addParentJob-4.js → addParentJob-5.js} +147 -75
  267. package/dist/node_modules/bullmq/dist/esm/scripts/{addPrioritizedJob-8.js → addPrioritizedJob-9.js} +151 -79
  268. package/dist/node_modules/bullmq/dist/esm/scripts/addRepeatableJob-2.js +18 -13
  269. package/dist/node_modules/bullmq/dist/esm/scripts/{addStandardJob-8.js → addStandardJob-9.js} +149 -77
  270. package/dist/node_modules/bullmq/dist/esm/scripts/changeDelay-4.js +7 -7
  271. package/dist/node_modules/bullmq/dist/esm/scripts/changePriority-7.js +8 -2
  272. package/dist/node_modules/bullmq/dist/esm/scripts/cleanJobsInSet-3.js +45 -29
  273. package/dist/node_modules/bullmq/dist/esm/scripts/drain-5.js +49 -35
  274. package/dist/node_modules/bullmq/dist/esm/scripts/getDependencyCounts-4.d.ts +5 -0
  275. package/dist/node_modules/bullmq/dist/esm/scripts/getDependencyCounts-4.js +34 -0
  276. package/dist/node_modules/bullmq/dist/esm/scripts/getState-8.js +5 -5
  277. package/dist/node_modules/bullmq/dist/esm/scripts/getStateV2-8.js +8 -8
  278. package/dist/node_modules/bullmq/dist/esm/scripts/index.d.ts +10 -7
  279. package/dist/node_modules/bullmq/dist/esm/scripts/index.js +10 -7
  280. package/dist/node_modules/bullmq/dist/esm/scripts/isFinished-3.js +2 -2
  281. package/dist/node_modules/bullmq/dist/esm/scripts/{moveJobFromActiveToWait-10.js → moveJobFromActiveToWait-9.js} +57 -37
  282. package/dist/node_modules/bullmq/dist/esm/scripts/moveJobsToWait-8.js +6 -6
  283. package/dist/node_modules/bullmq/dist/esm/scripts/moveStalledJobsToWait-8.js +168 -0
  284. package/dist/node_modules/bullmq/dist/esm/scripts/moveToActive-11.js +18 -8
  285. package/dist/node_modules/bullmq/dist/esm/scripts/moveToDelayed-8.js +12 -12
  286. package/dist/node_modules/bullmq/dist/esm/scripts/moveToFinished-14.js +218 -155
  287. package/dist/node_modules/bullmq/dist/esm/scripts/moveToWaitingChildren-8.js +526 -0
  288. package/dist/node_modules/bullmq/dist/esm/scripts/obliterate-2.js +33 -20
  289. package/dist/node_modules/bullmq/dist/esm/scripts/pause-7.js +1 -1
  290. package/dist/node_modules/bullmq/dist/esm/scripts/promote-9.js +8 -2
  291. package/dist/node_modules/bullmq/dist/esm/scripts/removeChildDependency-1.js +7 -7
  292. package/dist/node_modules/bullmq/dist/esm/scripts/removeJob-2.js +120 -63
  293. package/dist/node_modules/bullmq/dist/esm/scripts/removeJobScheduler-3.js +3 -3
  294. package/dist/node_modules/bullmq/dist/esm/scripts/removeRepeatable-3.js +2 -2
  295. package/dist/node_modules/bullmq/dist/esm/scripts/removeUnprocessedChildren-2.d.ts +5 -0
  296. package/dist/node_modules/bullmq/dist/esm/scripts/removeUnprocessedChildren-2.js +336 -0
  297. package/dist/node_modules/bullmq/dist/esm/scripts/reprocessJob-8.js +6 -6
  298. package/dist/node_modules/bullmq/dist/esm/scripts/retryJob-11.js +47 -26
  299. package/dist/node_modules/bullmq/dist/esm/scripts/updateJobScheduler-12.d.ts +5 -0
  300. package/dist/node_modules/bullmq/dist/esm/scripts/updateJobScheduler-12.js +271 -0
  301. package/dist/node_modules/bullmq/dist/esm/scripts/updateProgress-3.js +6 -6
  302. package/dist/node_modules/bullmq/dist/esm/scripts/updateRepeatableJobMillis-1.js +1 -1
  303. package/dist/node_modules/bullmq/dist/esm/tsconfig.tsbuildinfo +1 -1
  304. package/dist/node_modules/bullmq/dist/esm/types/deduplication-options.d.ts +22 -0
  305. package/dist/node_modules/bullmq/dist/esm/types/deduplication-options.js +2 -0
  306. package/dist/node_modules/bullmq/dist/esm/types/index.d.ts +3 -0
  307. package/dist/node_modules/bullmq/dist/esm/types/index.js +3 -0
  308. package/dist/node_modules/bullmq/dist/esm/types/job-options.d.ts +19 -8
  309. package/dist/node_modules/bullmq/dist/esm/types/job-progress.d.ts +1 -0
  310. package/dist/node_modules/bullmq/dist/esm/types/job-progress.js +2 -0
  311. package/dist/node_modules/bullmq/dist/esm/types/script-queue-context.d.ts +2 -0
  312. package/dist/node_modules/bullmq/dist/esm/types/script-queue-context.js +2 -0
  313. package/dist/node_modules/bullmq/dist/esm/utils.d.ts +25 -5
  314. package/dist/node_modules/bullmq/dist/esm/utils.js +27 -0
  315. package/dist/node_modules/bullmq/dist/esm/version.d.ts +1 -1
  316. package/dist/node_modules/bullmq/dist/esm/version.js +1 -1
  317. package/dist/node_modules/bullmq/package.json +1 -1
  318. package/package.json +7 -7
  319. package/dist/node_modules/bullmq/dist/cjs/commands/addJobScheduler-2.lua +0 -91
  320. package/dist/node_modules/bullmq/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -53
  321. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeDeduplicationKey.lua +0 -11
  322. package/dist/node_modules/bullmq/dist/cjs/commands/includes/removeDeduplicationKeyIfNeeded.lua +0 -14
  323. package/dist/node_modules/bullmq/dist/cjs/commands/moveJobFromActiveToWait-10.lua +0 -60
  324. package/dist/node_modules/bullmq/dist/cjs/commands/moveStalledJobsToWait-9.lua +0 -156
  325. package/dist/node_modules/bullmq/dist/cjs/commands/moveToWaitingChildren-5.lua +0 -68
  326. package/dist/node_modules/bullmq/dist/cjs/scripts/addJobScheduler-2.js +0 -237
  327. package/dist/node_modules/bullmq/dist/cjs/scripts/moveStalledJobsToWait-9.js +0 -529
  328. package/dist/node_modules/bullmq/dist/cjs/scripts/moveToWaitingChildren-5.js +0 -83
  329. package/dist/node_modules/bullmq/dist/esm/commands/addJobScheduler-2.lua +0 -91
  330. package/dist/node_modules/bullmq/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -53
  331. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeDeduplicationKey.lua +0 -11
  332. package/dist/node_modules/bullmq/dist/esm/commands/includes/removeDeduplicationKeyIfNeeded.lua +0 -14
  333. package/dist/node_modules/bullmq/dist/esm/commands/moveJobFromActiveToWait-10.lua +0 -60
  334. package/dist/node_modules/bullmq/dist/esm/commands/moveStalledJobsToWait-9.lua +0 -156
  335. package/dist/node_modules/bullmq/dist/esm/commands/moveToWaitingChildren-5.lua +0 -68
  336. package/dist/node_modules/bullmq/dist/esm/interfaces/debounce-options.d.ts +0 -13
  337. package/dist/node_modules/bullmq/dist/esm/interfaces/debounce-options.js +0 -2
  338. package/dist/node_modules/bullmq/dist/esm/scripts/addJobScheduler-2.js +0 -234
  339. package/dist/node_modules/bullmq/dist/esm/scripts/moveStalledJobsToWait-9.js +0 -526
  340. package/dist/node_modules/bullmq/dist/esm/scripts/moveToWaitingChildren-5.js +0 -80
  341. /package/dist/node_modules/bullmq/dist/esm/scripts/{addJobScheduler-2.d.ts → addJobScheduler-11.d.ts} +0 -0
  342. /package/dist/node_modules/bullmq/dist/esm/scripts/{addParentJob-4.d.ts → addParentJob-5.d.ts} +0 -0
  343. /package/dist/node_modules/bullmq/dist/esm/scripts/{addPrioritizedJob-8.d.ts → addPrioritizedJob-9.d.ts} +0 -0
  344. /package/dist/node_modules/bullmq/dist/esm/scripts/{addStandardJob-8.d.ts → addStandardJob-9.d.ts} +0 -0
  345. /package/dist/node_modules/bullmq/dist/esm/scripts/{moveJobFromActiveToWait-10.d.ts → moveJobFromActiveToWait-9.d.ts} +0 -0
  346. /package/dist/node_modules/bullmq/dist/esm/scripts/{moveStalledJobsToWait-9.d.ts → moveStalledJobsToWait-8.d.ts} +0 -0
  347. /package/dist/node_modules/bullmq/dist/esm/scripts/{moveToWaitingChildren-5.d.ts → moveToWaitingChildren-8.d.ts} +0 -0
@@ -7,6 +7,7 @@ var ChildStatus;
7
7
  ChildStatus[ChildStatus["Terminating"] = 2] = "Terminating";
8
8
  ChildStatus[ChildStatus["Errored"] = 3] = "Errored";
9
9
  })(ChildStatus || (ChildStatus = {}));
10
+ const RESPONSE_TIMEOUT = process.env.NODE_ENV === 'test' ? 500 : 5000;
10
11
  /**
11
12
  * ChildProcessor
12
13
  *
@@ -15,8 +16,9 @@ var ChildStatus;
15
16
  *
16
17
  */
17
18
  export class ChildProcessor {
18
- constructor(send) {
19
+ constructor(send, receiver) {
19
20
  this.send = send;
21
+ this.receiver = receiver;
20
22
  }
21
23
  async init(processorFile) {
22
24
  let processor;
@@ -104,7 +106,7 @@ export class ChildProcessor {
104
106
  wrapJob(job, send) {
105
107
  const wrappedJob = Object.assign(Object.assign({}, job), { data: JSON.parse(job.data || '{}'), opts: job.opts, returnValue: JSON.parse(job.returnvalue || '{}'),
106
108
  /*
107
- * Emulate the real job `updateProgress` function, should works as `progress` function.
109
+ * Proxy `updateProgress` function, should works as `progress` function.
108
110
  */
109
111
  async updateProgress(progress) {
110
112
  // Locally store reference to new progress value
@@ -117,7 +119,7 @@ export class ChildProcessor {
117
119
  });
118
120
  },
119
121
  /*
120
- * Emulate the real job `log` function.
122
+ * Proxy job `log` function.
121
123
  */
122
124
  log: async (row) => {
123
125
  await send({
@@ -126,7 +128,7 @@ export class ChildProcessor {
126
128
  });
127
129
  },
128
130
  /*
129
- * Emulate the real job `moveToDelayed` function.
131
+ * Proxy `moveToDelayed` function.
130
132
  */
131
133
  moveToDelayed: async (timestamp, token) => {
132
134
  await send({
@@ -135,7 +137,16 @@ export class ChildProcessor {
135
137
  });
136
138
  },
137
139
  /*
138
- * Emulate the real job `updateData` function.
140
+ * Proxy `moveToWait` function.
141
+ */
142
+ moveToWait: async (token) => {
143
+ await send({
144
+ cmd: ParentCommand.MoveToWait,
145
+ value: { token },
146
+ });
147
+ },
148
+ /*
149
+ * Proxy `updateData` function.
139
150
  */
140
151
  updateData: async (data) => {
141
152
  await send({
@@ -143,8 +154,51 @@ export class ChildProcessor {
143
154
  value: data,
144
155
  });
145
156
  wrappedJob.data = data;
157
+ },
158
+ /**
159
+ * Proxy `getChildrenValues` function.
160
+ */
161
+ getChildrenValues: async () => {
162
+ const requestId = Math.random().toString(36).substring(2, 15);
163
+ await send({
164
+ requestId,
165
+ cmd: ParentCommand.GetChildrenValues,
166
+ });
167
+ return waitResponse(requestId, this.receiver, RESPONSE_TIMEOUT, 'getChildrenValues');
168
+ },
169
+ /**
170
+ * Proxy `getIgnoredChildrenFailures` function.
171
+ *
172
+ * This method sends a request to retrieve the failures of ignored children
173
+ * and waits for a response from the parent process.
174
+ *
175
+ * @returns - A promise that resolves with the ignored children failures.
176
+ * The exact structure of the returned data depends on the parent process implementation.
177
+ */
178
+ getIgnoredChildrenFailures: async () => {
179
+ const requestId = Math.random().toString(36).substring(2, 15);
180
+ await send({
181
+ requestId,
182
+ cmd: ParentCommand.GetIgnoredChildrenFailures,
183
+ });
184
+ return waitResponse(requestId, this.receiver, RESPONSE_TIMEOUT, 'getIgnoredChildrenFailures');
146
185
  } });
147
186
  return wrappedJob;
148
187
  }
149
188
  }
189
+ const waitResponse = async (requestId, receiver, timeout, cmd) => {
190
+ return new Promise((resolve, reject) => {
191
+ const listener = (msg) => {
192
+ if (msg.requestId === requestId) {
193
+ resolve(msg.value);
194
+ receiver.off('message', listener);
195
+ }
196
+ };
197
+ receiver.on('message', listener);
198
+ setTimeout(() => {
199
+ receiver.off('message', listener);
200
+ reject(new Error(`TimeoutError: ${cmd} timed out in (${timeout}ms)`));
201
+ }, timeout);
202
+ });
203
+ };
150
204
  //# sourceMappingURL=child-processor.js.map
@@ -44,7 +44,9 @@ export class Child extends EventEmitter {
44
44
  return this.childProcess.pid;
45
45
  }
46
46
  else if (this.worker) {
47
- return this.worker.threadId;
47
+ // Worker threads pids can become negative when they are terminated
48
+ // so we need to use the absolute value to index the retained object
49
+ return Math.abs(this.worker.threadId);
48
50
  }
49
51
  else {
50
52
  throw new Error('No child process or worker thread');
@@ -1,4 +1,5 @@
1
1
  export * from './delayed-error';
2
- export * from './unrecoverable-error';
3
2
  export * from './rate-limit-error';
3
+ export * from './unrecoverable-error';
4
4
  export * from './waiting-children-error';
5
+ export * from './waiting-error';
@@ -1,5 +1,6 @@
1
1
  export * from './delayed-error';
2
- export * from './unrecoverable-error';
3
2
  export * from './rate-limit-error';
3
+ export * from './unrecoverable-error';
4
4
  export * from './waiting-children-error';
5
+ export * from './waiting-error';
5
6
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,10 @@
1
+ export declare const WAITING_ERROR = "bullmq:movedToWait";
2
+ /**
3
+ * WaitingError
4
+ *
5
+ * Error to be thrown when job is moved to wait or prioritized state
6
+ * from job in active state.
7
+ */
8
+ export declare class WaitingError extends Error {
9
+ constructor(message?: string);
10
+ }
@@ -0,0 +1,15 @@
1
+ export const WAITING_ERROR = 'bullmq:movedToWait';
2
+ /**
3
+ * WaitingError
4
+ *
5
+ * Error to be thrown when job is moved to wait or prioritized state
6
+ * from job in active state.
7
+ */
8
+ export class WaitingError extends Error {
9
+ constructor(message = WAITING_ERROR) {
10
+ super(message);
11
+ this.name = this.constructor.name;
12
+ Object.setPrototypeOf(this, new.target.prototype);
13
+ }
14
+ }
15
+ //# sourceMappingURL=waiting-error.js.map
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
2
  import { EventEmitter } from 'events';
3
3
  import { ChainableCommander } from 'ioredis';
4
- import { FlowJob, FlowQueuesOpts, FlowOpts, IoredisListener, QueueBaseOptions, RedisClient, Tracer, ContextManager } from '../interfaces';
4
+ import { FlowJob, FlowQueuesOpts, FlowOpts, IoredisListener, ParentOptions, QueueBaseOptions, RedisClient, Tracer, ContextManager } from '../interfaces';
5
5
  import { Job } from './job';
6
6
  import { KeysMap, QueueKeys } from './queue-keys';
7
7
  import { RedisConnection } from './redis-connection';
@@ -9,10 +9,7 @@ export interface AddNodeOpts {
9
9
  multi: ChainableCommander;
10
10
  node: FlowJob;
11
11
  parent?: {
12
- parentOpts: {
13
- id: string;
14
- queue: string;
15
- };
12
+ parentOpts: ParentOptions;
16
13
  parentDependenciesKey: string;
17
14
  };
18
15
  /**
@@ -24,10 +21,7 @@ export interface AddChildrenOpts {
24
21
  multi: ChainableCommander;
25
22
  nodes: FlowJob[];
26
23
  parent: {
27
- parentOpts: {
28
- id: string;
29
- queue: string;
30
- };
24
+ parentOpts: ParentOptions;
31
25
  parentDependenciesKey: string;
32
26
  };
33
27
  queuesOpts?: FlowQueuesOpts;
@@ -18,7 +18,12 @@ export class FlowProducer extends EventEmitter {
18
18
  super();
19
19
  this.opts = opts;
20
20
  this.opts = Object.assign({ prefix: 'bull' }, opts);
21
- this.connection = new Connection(opts.connection, isRedisInstance(opts.connection), false, opts.skipVersionCheck);
21
+ this.connection = new Connection(opts.connection, {
22
+ shared: isRedisInstance(opts.connection),
23
+ blocking: false,
24
+ skipVersionCheck: opts.skipVersionCheck,
25
+ skipWaitingForReady: opts.skipWaitingForReady,
26
+ });
22
27
  this.connection.on('error', (error) => this.emit('error', error));
23
28
  this.connection.on('close', () => {
24
29
  if (!this.closing) {
@@ -112,6 +117,7 @@ export class FlowProducer extends EventEmitter {
112
117
  const updatedOpts = Object.assign({
113
118
  depth: 10,
114
119
  maxChildren: 20,
120
+ prefix: this.opts.prefix,
115
121
  }, opts);
116
122
  const jobsTree = this.getNode(client, updatedOpts);
117
123
  return jobsTree;
@@ -166,7 +172,7 @@ export class FlowProducer extends EventEmitter {
166
172
  const queueOpts = queuesOpts && queuesOpts[node.queueName];
167
173
  const jobsOpts = (_a = queueOpts === null || queueOpts === void 0 ? void 0 : queueOpts.defaultJobOptions) !== null && _a !== void 0 ? _a : {};
168
174
  const jobId = ((_b = node.opts) === null || _b === void 0 ? void 0 : _b.jobId) || v4();
169
- return trace(this.telemetry, SpanKind.PRODUCER, node.name, 'addNode', node.queueName, async (span, srcPropagationMedatada) => {
175
+ return trace(this.telemetry, SpanKind.PRODUCER, node.queueName, 'addNode', node.queueName, async (span, srcPropagationMedatada) => {
170
176
  var _a, _b;
171
177
  span === null || span === void 0 ? void 0 : span.setAttributes({
172
178
  [TelemetryAttributes.JobName]: node.name,
@@ -253,19 +259,29 @@ export class FlowProducer extends EventEmitter {
253
259
  const queue = this.queueFromNode(node, new QueueKeys(node.prefix), node.prefix);
254
260
  const job = await this.Job.fromId(queue, node.id);
255
261
  if (job) {
256
- const { processed = {}, unprocessed = [] } = await job.getDependencies({
262
+ const { processed = {}, unprocessed = [], failed = [], ignored = {}, } = await job.getDependencies({
263
+ failed: {
264
+ count: node.maxChildren,
265
+ },
257
266
  processed: {
258
267
  count: node.maxChildren,
259
268
  },
260
269
  unprocessed: {
261
270
  count: node.maxChildren,
262
271
  },
272
+ ignored: {
273
+ count: node.maxChildren,
274
+ },
263
275
  });
264
276
  const processedKeys = Object.keys(processed);
265
- const childrenCount = processedKeys.length + unprocessed.length;
277
+ const ignoredKeys = Object.keys(ignored);
278
+ const childrenCount = processedKeys.length +
279
+ unprocessed.length +
280
+ ignoredKeys.length +
281
+ failed.length;
266
282
  const newDepth = node.depth - 1;
267
283
  if (childrenCount > 0 && newDepth) {
268
- const children = await this.getChildren(client, [...processedKeys, ...unprocessed], newDepth, node.maxChildren);
284
+ const children = await this.getChildren(client, [...processedKeys, ...unprocessed, ...failed, ...ignoredKeys], newDepth, node.maxChildren);
269
285
  return { job, children };
270
286
  }
271
287
  else {
@@ -1,5 +1,6 @@
1
1
  export * from './async-fifo-queue';
2
2
  export * from './backoffs';
3
+ export * from './child';
3
4
  export * from './child-pool';
4
5
  export * from './child-processor';
5
6
  export * from './errors';
@@ -1,5 +1,6 @@
1
1
  export * from './async-fifo-queue';
2
2
  export * from './backoffs';
3
+ export * from './child';
3
4
  export * from './child-pool';
4
5
  export * from './child-processor';
5
6
  export * from './errors';
@@ -10,12 +10,12 @@ export declare class JobScheduler extends QueueBase {
10
10
  override: boolean;
11
11
  producerId?: string;
12
12
  }): Promise<Job<T, R, N> | undefined>;
13
- private createNextJob;
13
+ private getNextJobOpts;
14
14
  removeJobScheduler(jobSchedulerId: string): Promise<number>;
15
15
  private getSchedulerData;
16
16
  private transformSchedulerData;
17
17
  private keyToData;
18
- getScheduler<D = any>(id: string): Promise<JobSchedulerJson<D>>;
18
+ getScheduler<D = any>(id: string): Promise<JobSchedulerJson<D> | undefined>;
19
19
  private getTemplateFromJSON;
20
20
  getJobSchedulers<D = any>(start?: number, end?: number, asc?: boolean): Promise<JobSchedulerJson<D>[]>;
21
21
  getSchedulersCount(): Promise<number>;
@@ -11,7 +11,7 @@ export class JobScheduler extends QueueBase {
11
11
  (opts.settings && opts.settings.repeatStrategy) || defaultRepeatStrategy;
12
12
  }
13
13
  async upsertJobScheduler(jobSchedulerId, repeatOpts, jobName, jobData, opts, { override, producerId }) {
14
- const { every, pattern, offset } = repeatOpts;
14
+ const { every, limit, pattern, offset } = repeatOpts;
15
15
  if (pattern && every) {
16
16
  throw new Error('Both .pattern and .every options are defined for this repeatable job');
17
17
  }
@@ -33,51 +33,38 @@ export class JobScheduler extends QueueBase {
33
33
  // Check if we reached the end date of the repeatable job
34
34
  let now = Date.now();
35
35
  const { endDate } = repeatOpts;
36
- if (!(typeof endDate === undefined) && now > new Date(endDate).getTime()) {
36
+ if (endDate && now > new Date(endDate).getTime()) {
37
37
  return;
38
38
  }
39
+ const prevMillis = opts.prevMillis || 0;
40
+ now = prevMillis < now ? now : prevMillis;
39
41
  // Check if we have a start date for the repeatable job
40
42
  const { startDate, immediately } = repeatOpts, filteredRepeatOpts = __rest(repeatOpts, ["startDate", "immediately"]);
43
+ let startMillis = (now > prevMillis ? now : prevMillis) + (offset || 0);
41
44
  if (startDate) {
42
- const startMillis = new Date(startDate).getTime();
43
- now = startMillis > now ? startMillis : now;
45
+ startMillis = new Date(startDate).getTime();
46
+ startMillis = startMillis > now ? startMillis : now;
44
47
  }
45
- const prevMillis = opts.prevMillis || 0;
46
- now = prevMillis < now ? now : prevMillis;
47
48
  let nextMillis;
48
- let newOffset = offset;
49
+ let newOffset = null;
49
50
  if (every) {
50
- const nextSlot = Math.floor(now / every) * every + every;
51
+ const prevSlot = Math.floor((startMillis - (offset || 0)) / every) * every;
52
+ newOffset = typeof offset === 'number' ? offset : startMillis - prevSlot;
53
+ const nextSlot = prevSlot + every;
51
54
  if (prevMillis || offset) {
52
- nextMillis = nextSlot + (offset || 0);
55
+ nextMillis = nextSlot;
53
56
  }
54
57
  else {
55
- nextMillis = now;
56
- newOffset = every - (nextSlot - now);
57
- // newOffset should always be positive, but as an extra safety check
58
- newOffset = newOffset < 0 ? 0 : newOffset;
59
- }
60
- if (nextMillis < now) {
61
- nextMillis = now;
58
+ nextMillis = prevSlot;
62
59
  }
63
60
  }
64
61
  else if (pattern) {
65
62
  nextMillis = await this.repeatStrategy(now, repeatOpts, jobName);
63
+ if (nextMillis < now) {
64
+ nextMillis = now;
65
+ }
66
66
  }
67
- const multi = (await this.client).multi();
68
67
  if (nextMillis) {
69
- if (override) {
70
- this.scripts.addJobScheduler(multi, jobSchedulerId, nextMillis, JSON.stringify(typeof jobData === 'undefined' ? {} : jobData), Job.optsAsJSON(opts), {
71
- name: jobName,
72
- endDate: endDate ? new Date(endDate).getTime() : undefined,
73
- tz: repeatOpts.tz,
74
- pattern,
75
- every,
76
- });
77
- }
78
- else {
79
- this.scripts.updateJobSchedulerNextMillis(multi, jobSchedulerId, nextMillis);
80
- }
81
68
  return this.trace(SpanKind.PRODUCER, 'add', `${this.name}.${jobName}`, async (span, srcPropagationMedatada) => {
82
69
  var _a, _b;
83
70
  let telemetry = opts.telemetry;
@@ -92,27 +79,42 @@ export class JobScheduler extends QueueBase {
92
79
  };
93
80
  }
94
81
  }
95
- const job = this.createNextJob(multi, jobName, nextMillis, jobSchedulerId, Object.assign(Object.assign({}, opts), { repeat: Object.assign(Object.assign({}, filteredRepeatOpts), { offset: newOffset }), telemetry }), jobData, iterationCount, producerId);
96
- const results = await multi.exec(); // multi.exec returns an array of results [ err, result ][]
97
- // Check if there are any errors
98
- const erroredResult = results.find(result => result[0]);
99
- if (erroredResult) {
100
- throw new Error(`Error upserting job scheduler ${jobSchedulerId} - ${erroredResult[0]}`);
82
+ const mergedOpts = this.getNextJobOpts(nextMillis, jobSchedulerId, Object.assign(Object.assign({}, opts), { repeat: filteredRepeatOpts, telemetry }), iterationCount, newOffset);
83
+ if (override) {
84
+ const jobId = await this.scripts.addJobScheduler(jobSchedulerId, nextMillis, JSON.stringify(typeof jobData === 'undefined' ? {} : jobData), Job.optsAsJSON(opts), {
85
+ name: jobName,
86
+ endDate: endDate ? new Date(endDate).getTime() : undefined,
87
+ tz: repeatOpts.tz,
88
+ pattern,
89
+ every,
90
+ limit,
91
+ offset: newOffset,
92
+ }, Job.optsAsJSON(mergedOpts), producerId);
93
+ const job = new this.Job(this, jobName, jobData, mergedOpts, jobId);
94
+ job.id = jobId;
95
+ span === null || span === void 0 ? void 0 : span.setAttributes({
96
+ [TelemetryAttributes.JobSchedulerId]: jobSchedulerId,
97
+ [TelemetryAttributes.JobId]: job.id,
98
+ });
99
+ return job;
100
+ }
101
+ else {
102
+ const jobId = await this.scripts.updateJobSchedulerNextMillis(jobSchedulerId, nextMillis, JSON.stringify(typeof jobData === 'undefined' ? {} : jobData), Job.optsAsJSON(mergedOpts), producerId);
103
+ if (jobId) {
104
+ const job = new this.Job(this, jobName, jobData, mergedOpts, jobId);
105
+ job.id = jobId;
106
+ span === null || span === void 0 ? void 0 : span.setAttributes({
107
+ [TelemetryAttributes.JobSchedulerId]: jobSchedulerId,
108
+ [TelemetryAttributes.JobId]: job.id,
109
+ });
110
+ return job;
111
+ }
101
112
  }
102
- // Get last result with the job id
103
- const lastResult = results.pop();
104
- job.id = lastResult[1];
105
- span === null || span === void 0 ? void 0 : span.setAttributes({
106
- [TelemetryAttributes.JobSchedulerId]: jobSchedulerId,
107
- [TelemetryAttributes.JobId]: job.id,
108
- });
109
- return job;
110
113
  });
111
114
  }
112
115
  }
113
- createNextJob(client, name, nextMillis, jobSchedulerId, opts, data, currentCount,
114
- // The job id of the job that produced this next iteration
115
- producerId) {
116
+ getNextJobOpts(nextMillis, jobSchedulerId, opts, currentCount, offset) {
117
+ var _a;
116
118
  //
117
119
  // Generate unique job id for this iteration.
118
120
  //
@@ -121,16 +123,12 @@ export class JobScheduler extends QueueBase {
121
123
  nextMillis,
122
124
  });
123
125
  const now = Date.now();
124
- const delay = nextMillis - now;
126
+ const delay = nextMillis + offset - now;
125
127
  const mergedOpts = Object.assign(Object.assign({}, opts), { jobId, delay: delay < 0 ? 0 : delay, timestamp: now, prevMillis: nextMillis, repeatJobKey: jobSchedulerId });
126
- mergedOpts.repeat = Object.assign(Object.assign({}, opts.repeat), { count: currentCount });
127
- const job = new this.Job(this, name, data, mergedOpts, jobId);
128
- job.addJob(client);
129
- if (producerId) {
130
- const producerJobKey = this.toKey(producerId);
131
- client.hset(producerJobKey, 'nrjid', job.id);
132
- }
133
- return job;
128
+ mergedOpts.repeat = Object.assign(Object.assign({}, opts.repeat), { offset, count: currentCount, endDate: ((_a = opts.repeat) === null || _a === void 0 ? void 0 : _a.endDate)
129
+ ? new Date(opts.repeat.endDate).getTime()
130
+ : undefined });
131
+ return mergedOpts;
134
132
  }
135
133
  async removeJobScheduler(jobSchedulerId) {
136
134
  return this.scripts.removeJobScheduler(jobSchedulerId);
@@ -139,15 +137,43 @@ export class JobScheduler extends QueueBase {
139
137
  const jobData = await client.hgetall(this.toKey('repeat:' + key));
140
138
  return this.transformSchedulerData(key, jobData, next);
141
139
  }
142
- async transformSchedulerData(key, jobData, next) {
140
+ transformSchedulerData(key, jobData, next) {
143
141
  if (jobData) {
144
- return Object.assign(Object.assign({ key, name: jobData.name, endDate: parseInt(jobData.endDate) || null, tz: jobData.tz || null, pattern: jobData.pattern || null, every: jobData.every || null }, (jobData.data || jobData.opts
145
- ? {
146
- template: this.getTemplateFromJSON(jobData.data, jobData.opts),
147
- }
148
- : {})), { next });
142
+ const jobSchedulerData = {
143
+ key,
144
+ name: jobData.name,
145
+ next,
146
+ };
147
+ if (jobData.ic) {
148
+ jobSchedulerData.iterationCount = parseInt(jobData.ic);
149
+ }
150
+ if (jobData.limit) {
151
+ jobSchedulerData.limit = parseInt(jobData.limit);
152
+ }
153
+ if (jobData.endDate) {
154
+ jobSchedulerData.endDate = parseInt(jobData.endDate);
155
+ }
156
+ if (jobData.tz) {
157
+ jobSchedulerData.tz = jobData.tz;
158
+ }
159
+ if (jobData.pattern) {
160
+ jobSchedulerData.pattern = jobData.pattern;
161
+ }
162
+ if (jobData.every) {
163
+ jobSchedulerData.every = parseInt(jobData.every);
164
+ }
165
+ if (jobData.offset) {
166
+ jobSchedulerData.offset = parseInt(jobData.offset);
167
+ }
168
+ if (jobData.data || jobData.opts) {
169
+ jobSchedulerData.template = this.getTemplateFromJSON(jobData.data, jobData.opts);
170
+ }
171
+ return jobSchedulerData;
172
+ }
173
+ // TODO: remove this check and keyToData as it is here only to support legacy code
174
+ if (key.includes(':')) {
175
+ return this.keyToData(key, next);
149
176
  }
150
- return this.keyToData(key, next);
151
177
  }
152
178
  keyToData(key, next) {
153
179
  const data = key.split(':');