@tachybase/plugin-print-template 1.3.17 → 1.3.18

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