bullmq 4.0.0-beta.1 → 4.0.0

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 (841) hide show
  1. package/README.md +156 -22
  2. package/dist/cjs/classes/async-fifo-queue.js +90 -0
  3. package/dist/cjs/classes/async-fifo-queue.js.map +1 -0
  4. package/dist/{classes → cjs/classes}/backoffs.js +10 -9
  5. package/dist/cjs/classes/backoffs.js.map +1 -0
  6. package/dist/cjs/classes/child-pool.js +64 -0
  7. package/dist/cjs/classes/child-pool.js.map +1 -0
  8. package/dist/cjs/classes/child-processor.js +150 -0
  9. package/dist/cjs/classes/child-processor.js.map +1 -0
  10. package/dist/cjs/classes/child.js +216 -0
  11. package/dist/cjs/classes/child.js.map +1 -0
  12. package/dist/cjs/classes/delayed-error.js +19 -0
  13. package/dist/cjs/classes/delayed-error.js.map +1 -0
  14. package/dist/cjs/classes/flow-producer.js +283 -0
  15. package/dist/cjs/classes/flow-producer.js.map +1 -0
  16. package/dist/{classes → cjs/classes}/index.js +11 -3
  17. package/dist/cjs/classes/index.js.map +1 -0
  18. package/dist/cjs/classes/job.js +768 -0
  19. package/dist/cjs/classes/job.js.map +1 -0
  20. package/dist/cjs/classes/main-base.js +45 -0
  21. package/dist/cjs/classes/main-base.js.map +1 -0
  22. package/dist/cjs/classes/main-worker.js +10 -0
  23. package/dist/cjs/classes/main-worker.js.map +1 -0
  24. package/dist/cjs/classes/main.js +10 -0
  25. package/dist/cjs/classes/main.js.map +1 -0
  26. package/dist/cjs/classes/queue-base.js +135 -0
  27. package/dist/cjs/classes/queue-base.js.map +1 -0
  28. package/dist/cjs/classes/queue-events.js +120 -0
  29. package/dist/cjs/classes/queue-events.js.map +1 -0
  30. package/dist/cjs/classes/queue-getters.js +347 -0
  31. package/dist/cjs/classes/queue-getters.js.map +1 -0
  32. package/dist/cjs/classes/queue-keys.js +45 -0
  33. package/dist/cjs/classes/queue-keys.js.map +1 -0
  34. package/dist/cjs/classes/queue.js +275 -0
  35. package/dist/cjs/classes/queue.js.map +1 -0
  36. package/dist/cjs/classes/redis-connection.js +207 -0
  37. package/dist/cjs/classes/redis-connection.js.map +1 -0
  38. package/dist/cjs/classes/repeat.js +149 -0
  39. package/dist/cjs/classes/repeat.js.map +1 -0
  40. package/dist/{classes → cjs/classes}/sandbox.js +18 -14
  41. package/dist/cjs/classes/sandbox.js.map +1 -0
  42. package/dist/cjs/classes/scripts.js +658 -0
  43. package/dist/cjs/classes/scripts.js.map +1 -0
  44. package/dist/cjs/classes/unrecoverable-error.js +19 -0
  45. package/dist/cjs/classes/unrecoverable-error.js.map +1 -0
  46. package/dist/cjs/classes/waiting-children-error.js +19 -0
  47. package/dist/cjs/classes/waiting-children-error.js.map +1 -0
  48. package/dist/cjs/classes/worker.js +577 -0
  49. package/dist/cjs/classes/worker.js.map +1 -0
  50. package/dist/cjs/commands/addJob-9.lua +170 -0
  51. package/dist/cjs/commands/changeDelay-3.lua +40 -0
  52. package/dist/cjs/commands/changePriority-5.lua +52 -0
  53. package/dist/cjs/commands/cleanJobsInSet-2.lua +48 -0
  54. package/dist/cjs/commands/drain-4.lua +26 -0
  55. package/dist/{commands → cjs/commands}/extendLock-2.lua +1 -0
  56. package/dist/cjs/commands/getCounts-1.lua +35 -0
  57. package/dist/cjs/commands/getRanges-1.lua +69 -0
  58. package/dist/cjs/commands/getState-8.lua +66 -0
  59. package/dist/cjs/commands/getStateV2-8.lua +59 -0
  60. package/dist/cjs/commands/includes/addDelayMarkerIfNeeded.lua +15 -0
  61. package/dist/cjs/commands/includes/addJobWithPriority.lua +15 -0
  62. package/dist/cjs/commands/includes/addPriorityMarkerIfNeeded.lua +12 -0
  63. package/dist/cjs/commands/includes/batches.lua +18 -0
  64. package/dist/cjs/commands/includes/checkItemInList.lua +12 -0
  65. package/dist/cjs/commands/includes/checkStalledJobs.lua +139 -0
  66. package/dist/cjs/commands/includes/cleanList.lua +47 -0
  67. package/dist/cjs/commands/includes/cleanSet.lua +39 -0
  68. package/dist/cjs/commands/includes/collectMetrics.lua +46 -0
  69. package/dist/cjs/commands/includes/destructureJobKey.lua +12 -0
  70. package/dist/cjs/commands/includes/getJobsInZset.lua +12 -0
  71. package/dist/cjs/commands/includes/getNextDelayedTimestamp.lua +13 -0
  72. package/dist/cjs/commands/includes/getRateLimitTTL.lua +17 -0
  73. package/dist/cjs/commands/includes/getTargetQueueList.lua +12 -0
  74. package/dist/cjs/commands/includes/getTimestamp.lua +19 -0
  75. package/dist/cjs/commands/includes/getZSetItems.lua +7 -0
  76. package/dist/cjs/commands/includes/isLocked.lua +31 -0
  77. package/dist/cjs/commands/includes/moveJobFromPriorityToActive.lua +14 -0
  78. package/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +28 -0
  79. package/dist/cjs/commands/includes/prepareJobForProcessing.lua +74 -0
  80. package/dist/cjs/commands/includes/promoteDelayedJobs.lua +39 -0
  81. package/dist/cjs/commands/includes/pushBackJobWithPriority.lua +9 -0
  82. package/dist/cjs/commands/includes/removeJob.lua +13 -0
  83. package/dist/cjs/commands/includes/removeJobFromAnyState.lua +35 -0
  84. package/dist/cjs/commands/includes/removeJobs.lua +25 -0
  85. package/dist/cjs/commands/includes/removeJobsByMaxAge.lua +15 -0
  86. package/dist/cjs/commands/includes/removeJobsByMaxCount.lua +15 -0
  87. package/dist/cjs/commands/includes/removeParentDependencyKey.lua +77 -0
  88. package/dist/cjs/commands/includes/removeZSetJobs.lua +15 -0
  89. package/dist/cjs/commands/includes/trimEvents.lua +12 -0
  90. package/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +40 -0
  91. package/dist/cjs/commands/index.js +10 -0
  92. package/dist/cjs/commands/index.js.map +1 -0
  93. package/dist/cjs/commands/isFinished-3.lua +48 -0
  94. package/dist/cjs/commands/isJobInList-1.lua +16 -0
  95. package/dist/cjs/commands/moveJobFromActiveToWait-9.lua +53 -0
  96. package/dist/cjs/commands/moveStalledJobsToWait-8.lua +24 -0
  97. package/dist/cjs/commands/moveToActive-10.lua +116 -0
  98. package/dist/cjs/commands/moveToDelayed-8.lua +66 -0
  99. package/dist/cjs/commands/moveToFinished-13.lua +250 -0
  100. package/dist/cjs/commands/moveToWaitingChildren-4.lua +62 -0
  101. package/dist/cjs/commands/obliterate-2.lua +102 -0
  102. package/dist/cjs/commands/pause-5.lua +36 -0
  103. package/dist/cjs/commands/promote-7.lua +57 -0
  104. package/dist/cjs/commands/releaseLock-1.lua +19 -0
  105. package/dist/cjs/commands/removeJob-1.lua +71 -0
  106. package/{src → dist/cjs}/commands/removeRepeatable-2.lua +13 -1
  107. package/dist/cjs/commands/reprocessJob-6.lua +43 -0
  108. package/dist/cjs/commands/retryJob-9.lua +69 -0
  109. package/dist/cjs/commands/retryJobs-6.lua +53 -0
  110. package/dist/cjs/commands/saveStacktrace-1.lua +22 -0
  111. package/dist/cjs/commands/script-loader.js +408 -0
  112. package/dist/cjs/commands/script-loader.js.map +1 -0
  113. package/dist/cjs/commands/updateData-1.lua +20 -0
  114. package/dist/cjs/commands/updateProgress-2.lua +26 -0
  115. package/dist/cjs/enums/error-code.enum.js +13 -0
  116. package/dist/cjs/enums/error-code.enum.js.map +1 -0
  117. package/dist/cjs/enums/index.js +6 -0
  118. package/dist/cjs/enums/index.js.map +1 -0
  119. package/dist/cjs/enums/metrics-time.js +15 -0
  120. package/dist/cjs/enums/metrics-time.js.map +1 -0
  121. package/dist/{index.js → cjs/index.js} +2 -0
  122. package/dist/cjs/index.js.map +1 -0
  123. package/dist/cjs/interfaces/advanced-options.js +3 -0
  124. package/dist/cjs/interfaces/advanced-options.js.map +1 -0
  125. package/dist/cjs/interfaces/backoff-options.js.map +1 -0
  126. package/dist/cjs/interfaces/base-job-options.js +3 -0
  127. package/dist/cjs/interfaces/base-job-options.js.map +1 -0
  128. package/dist/cjs/interfaces/child-command.js +10 -0
  129. package/dist/cjs/interfaces/child-command.js.map +1 -0
  130. package/dist/{interfaces/backoff-opts.js → cjs/interfaces/child-message.js} +1 -1
  131. package/dist/cjs/interfaces/child-message.js.map +1 -0
  132. package/dist/{interfaces/redis-opts.js → cjs/interfaces/connection.js} +1 -1
  133. package/dist/cjs/interfaces/connection.js.map +1 -0
  134. package/dist/{interfaces/jobs-opts.js → cjs/interfaces/flow-job.js} +1 -1
  135. package/dist/cjs/interfaces/flow-job.js.map +1 -0
  136. package/dist/cjs/interfaces/index.js +28 -0
  137. package/dist/cjs/interfaces/index.js.map +1 -0
  138. package/dist/cjs/interfaces/ioredis-events.js +3 -0
  139. package/dist/cjs/interfaces/ioredis-events.js.map +1 -0
  140. package/dist/{interfaces/repeat-opts.js → cjs/interfaces/job-json.js} +1 -1
  141. package/dist/cjs/interfaces/job-json.js.map +1 -0
  142. package/dist/{interfaces/worker-opts.js → cjs/interfaces/keep-jobs.js} +1 -1
  143. package/dist/cjs/interfaces/keep-jobs.js.map +1 -0
  144. package/dist/cjs/interfaces/metrics-options.js +3 -0
  145. package/dist/cjs/interfaces/metrics-options.js.map +1 -0
  146. package/dist/cjs/interfaces/metrics.js +3 -0
  147. package/dist/cjs/interfaces/metrics.js.map +1 -0
  148. package/dist/cjs/interfaces/minimal-job.js +3 -0
  149. package/dist/cjs/interfaces/minimal-job.js.map +1 -0
  150. package/dist/cjs/interfaces/parent-command.js +15 -0
  151. package/dist/cjs/interfaces/parent-command.js.map +1 -0
  152. package/dist/cjs/interfaces/parent-message.js +3 -0
  153. package/dist/cjs/interfaces/parent-message.js.map +1 -0
  154. package/dist/cjs/interfaces/parent.js +3 -0
  155. package/dist/cjs/interfaces/parent.js.map +1 -0
  156. package/dist/{interfaces → cjs/interfaces}/queue-options.js +1 -0
  157. package/dist/cjs/interfaces/queue-options.js.map +1 -0
  158. package/dist/cjs/interfaces/rate-limiter-options.js.map +1 -0
  159. package/dist/cjs/interfaces/redis-options.js.map +1 -0
  160. package/dist/{interfaces/jobs-options.js → cjs/interfaces/redis-streams.js} +1 -1
  161. package/dist/cjs/interfaces/redis-streams.js.map +1 -0
  162. package/dist/cjs/interfaces/repeat-options.js.map +1 -0
  163. package/dist/cjs/interfaces/sandboxed-job-processor.js +3 -0
  164. package/dist/cjs/interfaces/sandboxed-job-processor.js.map +1 -0
  165. package/dist/cjs/interfaces/sandboxed-job.js +3 -0
  166. package/dist/cjs/interfaces/sandboxed-job.js.map +1 -0
  167. package/dist/cjs/interfaces/worker-options.js.map +1 -0
  168. package/dist/cjs/scripts/addJob-9.js +252 -0
  169. package/dist/cjs/scripts/addJob-9.js.map +1 -0
  170. package/dist/cjs/scripts/changeDelay-3.js +41 -0
  171. package/dist/cjs/scripts/changeDelay-3.js.map +1 -0
  172. package/dist/cjs/scripts/changePriority-5.js +87 -0
  173. package/dist/cjs/scripts/changePriority-5.js.map +1 -0
  174. package/dist/cjs/scripts/cleanJobsInSet-2.js +259 -0
  175. package/dist/cjs/scripts/cleanJobsInSet-2.js.map +1 -0
  176. package/dist/cjs/scripts/drain-4.js +178 -0
  177. package/dist/cjs/scripts/drain-4.js.map +1 -0
  178. package/dist/cjs/scripts/extendLock-2.js +30 -0
  179. package/dist/cjs/scripts/extendLock-2.js.map +1 -0
  180. package/dist/cjs/scripts/getCounts-1.js +41 -0
  181. package/dist/cjs/scripts/getCounts-1.js.map +1 -0
  182. package/dist/cjs/scripts/getRanges-1.js +72 -0
  183. package/dist/cjs/scripts/getRanges-1.js.map +1 -0
  184. package/dist/cjs/scripts/getState-8.js +74 -0
  185. package/dist/cjs/scripts/getState-8.js.map +1 -0
  186. package/dist/cjs/scripts/getStateV2-8.js +58 -0
  187. package/dist/cjs/scripts/getStateV2-8.js.map +1 -0
  188. package/dist/cjs/scripts/index.js +34 -0
  189. package/dist/cjs/scripts/index.js.map +1 -0
  190. package/dist/cjs/scripts/isFinished-3.js +49 -0
  191. package/dist/cjs/scripts/isFinished-3.js.map +1 -0
  192. package/dist/cjs/scripts/isJobInList-1.js +32 -0
  193. package/dist/cjs/scripts/isJobInList-1.js.map +1 -0
  194. package/dist/cjs/scripts/moveJobFromActiveToWait-9.js +70 -0
  195. package/dist/cjs/scripts/moveJobFromActiveToWait-9.js.map +1 -0
  196. package/dist/cjs/scripts/moveStalledJobsToWait-8.js +289 -0
  197. package/dist/cjs/scripts/moveStalledJobsToWait-8.js.map +1 -0
  198. package/dist/cjs/scripts/moveToActive-10.js +269 -0
  199. package/dist/cjs/scripts/moveToActive-10.js.map +1 -0
  200. package/dist/cjs/scripts/moveToDelayed-8.js +152 -0
  201. package/dist/cjs/scripts/moveToDelayed-8.js.map +1 -0
  202. package/dist/cjs/scripts/moveToFinished-13.js +624 -0
  203. package/dist/cjs/scripts/moveToFinished-13.js.map +1 -0
  204. package/dist/cjs/scripts/moveToWaitingChildren-4.js +59 -0
  205. package/dist/cjs/scripts/moveToWaitingChildren-4.js.map +1 -0
  206. package/dist/cjs/scripts/obliterate-2.js +244 -0
  207. package/dist/cjs/scripts/obliterate-2.js.map +1 -0
  208. package/dist/cjs/scripts/pause-5.js +48 -0
  209. package/dist/cjs/scripts/pause-5.js.map +1 -0
  210. package/dist/cjs/scripts/promote-7.js +87 -0
  211. package/dist/cjs/scripts/promote-7.js.map +1 -0
  212. package/dist/cjs/scripts/releaseLock-1.js +25 -0
  213. package/dist/cjs/scripts/releaseLock-1.js.map +1 -0
  214. package/dist/cjs/scripts/removeJob-1.js +210 -0
  215. package/dist/cjs/scripts/removeJob-1.js.map +1 -0
  216. package/dist/cjs/scripts/removeRepeatable-2.js +38 -0
  217. package/dist/cjs/scripts/removeRepeatable-2.js.map +1 -0
  218. package/dist/cjs/scripts/reprocessJob-6.js +56 -0
  219. package/dist/cjs/scripts/reprocessJob-6.js.map +1 -0
  220. package/dist/cjs/scripts/retryJob-9.js +128 -0
  221. package/dist/cjs/scripts/retryJob-9.js.map +1 -0
  222. package/dist/cjs/scripts/retryJobs-6.js +76 -0
  223. package/dist/cjs/scripts/retryJobs-6.js.map +1 -0
  224. package/dist/cjs/scripts/saveStacktrace-1.js +27 -0
  225. package/dist/cjs/scripts/saveStacktrace-1.js.map +1 -0
  226. package/dist/cjs/scripts/updateData-1.js +26 -0
  227. package/dist/cjs/scripts/updateData-1.js.map +1 -0
  228. package/dist/cjs/scripts/updateProgress-2.js +31 -0
  229. package/dist/cjs/scripts/updateProgress-2.js.map +1 -0
  230. package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -0
  231. package/dist/cjs/types/backoff-strategy.js +3 -0
  232. package/dist/cjs/types/backoff-strategy.js.map +1 -0
  233. package/dist/cjs/types/finished-status.js +3 -0
  234. package/dist/cjs/types/finished-status.js.map +1 -0
  235. package/dist/cjs/types/index.js +11 -0
  236. package/dist/cjs/types/index.js.map +1 -0
  237. package/dist/cjs/types/job-json-sandbox.js +3 -0
  238. package/dist/cjs/types/job-json-sandbox.js.map +1 -0
  239. package/dist/cjs/types/job-options.js +3 -0
  240. package/dist/cjs/types/job-options.js.map +1 -0
  241. package/dist/cjs/types/job-type.js +3 -0
  242. package/dist/cjs/types/job-type.js.map +1 -0
  243. package/dist/cjs/types/minimal-queue.js +3 -0
  244. package/dist/cjs/types/minimal-queue.js.map +1 -0
  245. package/dist/cjs/types/repeat-strategy.js +3 -0
  246. package/dist/cjs/types/repeat-strategy.js.map +1 -0
  247. package/dist/cjs/utils.js +152 -0
  248. package/dist/cjs/utils.js.map +1 -0
  249. package/dist/esm/classes/async-fifo-queue.d.ts +31 -0
  250. package/dist/esm/classes/async-fifo-queue.js +86 -0
  251. package/dist/esm/classes/async-fifo-queue.js.map +1 -0
  252. package/dist/esm/classes/backoffs.d.ts +10 -0
  253. package/dist/esm/classes/backoffs.js +44 -0
  254. package/dist/esm/classes/backoffs.js.map +1 -0
  255. package/dist/esm/classes/child-pool.d.ts +23 -0
  256. package/dist/esm/classes/child-pool.js +60 -0
  257. package/dist/esm/classes/child-pool.js.map +1 -0
  258. package/dist/esm/classes/child-processor.d.ts +26 -0
  259. package/dist/esm/classes/child-processor.js +146 -0
  260. package/dist/esm/classes/child-processor.js.map +1 -0
  261. package/dist/esm/classes/child.d.ts +36 -0
  262. package/dist/esm/classes/child.js +212 -0
  263. package/dist/esm/classes/child.js.map +1 -0
  264. package/dist/esm/classes/delayed-error.d.ts +10 -0
  265. package/dist/esm/classes/delayed-error.js +15 -0
  266. package/dist/esm/classes/delayed-error.js.map +1 -0
  267. package/dist/esm/classes/flow-producer.d.ts +163 -0
  268. package/dist/esm/classes/flow-producer.js +279 -0
  269. package/dist/esm/classes/flow-producer.js.map +1 -0
  270. package/dist/{classes → esm/classes}/index.d.ts +9 -3
  271. package/dist/esm/classes/index.js +22 -0
  272. package/dist/esm/classes/index.js.map +1 -0
  273. package/dist/esm/classes/job.d.ts +355 -0
  274. package/dist/esm/classes/job.js +764 -0
  275. package/dist/esm/classes/job.js.map +1 -0
  276. package/dist/esm/classes/main-base.d.ts +4 -0
  277. package/dist/esm/classes/main-base.js +43 -0
  278. package/dist/esm/classes/main-base.js.map +1 -0
  279. package/dist/esm/classes/main-worker.js +8 -0
  280. package/dist/esm/classes/main-worker.js.map +1 -0
  281. package/dist/esm/classes/main.js +8 -0
  282. package/dist/esm/classes/main.js.map +1 -0
  283. package/dist/esm/classes/queue-base.d.ts +67 -0
  284. package/dist/esm/classes/queue-base.js +131 -0
  285. package/dist/esm/classes/queue-base.js.map +1 -0
  286. package/dist/esm/classes/queue-events.d.ts +179 -0
  287. package/dist/esm/classes/queue-events.js +116 -0
  288. package/dist/esm/classes/queue-events.js.map +1 -0
  289. package/dist/esm/classes/queue-getters.d.ts +164 -0
  290. package/dist/esm/classes/queue-getters.js +344 -0
  291. package/dist/esm/classes/queue-getters.js.map +1 -0
  292. package/dist/esm/classes/queue-keys.d.ts +10 -0
  293. package/dist/esm/classes/queue-keys.js +41 -0
  294. package/dist/esm/classes/queue-keys.js.map +1 -0
  295. package/dist/esm/classes/queue.d.ts +236 -0
  296. package/dist/esm/classes/queue.js +271 -0
  297. package/dist/esm/classes/queue.js.map +1 -0
  298. package/dist/esm/classes/redis-connection.d.ts +37 -0
  299. package/dist/esm/classes/redis-connection.js +203 -0
  300. package/dist/esm/classes/redis-connection.js.map +1 -0
  301. package/dist/esm/classes/repeat.d.ts +25 -0
  302. package/dist/esm/classes/repeat.js +144 -0
  303. package/dist/esm/classes/repeat.js.map +1 -0
  304. package/dist/esm/classes/sandbox.d.ts +4 -0
  305. package/dist/esm/classes/sandbox.js +58 -0
  306. package/dist/esm/classes/sandbox.js.map +1 -0
  307. package/dist/esm/classes/scripts.d.ts +106 -0
  308. package/dist/esm/classes/scripts.js +654 -0
  309. package/dist/esm/classes/scripts.js.map +1 -0
  310. package/dist/esm/classes/unrecoverable-error.d.ts +10 -0
  311. package/dist/esm/classes/unrecoverable-error.js +15 -0
  312. package/dist/esm/classes/unrecoverable-error.js.map +1 -0
  313. package/dist/esm/classes/waiting-children-error.d.ts +10 -0
  314. package/dist/esm/classes/waiting-children-error.js +15 -0
  315. package/dist/esm/classes/waiting-children-error.js.map +1 -0
  316. package/dist/esm/classes/worker.d.ts +215 -0
  317. package/dist/esm/classes/worker.js +573 -0
  318. package/dist/esm/classes/worker.js.map +1 -0
  319. package/dist/esm/commands/addJob-9.lua +170 -0
  320. package/dist/esm/commands/changeDelay-3.lua +40 -0
  321. package/dist/esm/commands/changePriority-5.lua +52 -0
  322. package/dist/esm/commands/cleanJobsInSet-2.lua +48 -0
  323. package/dist/esm/commands/drain-4.lua +26 -0
  324. package/{src → dist/esm}/commands/extendLock-2.lua +1 -0
  325. package/dist/esm/commands/getCounts-1.lua +35 -0
  326. package/dist/esm/commands/getRanges-1.lua +69 -0
  327. package/dist/esm/commands/getState-8.lua +66 -0
  328. package/dist/esm/commands/getStateV2-8.lua +59 -0
  329. package/dist/esm/commands/includes/addDelayMarkerIfNeeded.lua +15 -0
  330. package/dist/esm/commands/includes/addJobWithPriority.lua +15 -0
  331. package/dist/esm/commands/includes/addPriorityMarkerIfNeeded.lua +12 -0
  332. package/dist/esm/commands/includes/batches.lua +18 -0
  333. package/dist/esm/commands/includes/checkItemInList.lua +12 -0
  334. package/dist/esm/commands/includes/checkStalledJobs.lua +139 -0
  335. package/dist/esm/commands/includes/cleanList.lua +47 -0
  336. package/dist/esm/commands/includes/cleanSet.lua +39 -0
  337. package/dist/esm/commands/includes/collectMetrics.lua +46 -0
  338. package/dist/esm/commands/includes/destructureJobKey.lua +12 -0
  339. package/dist/esm/commands/includes/getJobsInZset.lua +12 -0
  340. package/dist/esm/commands/includes/getNextDelayedTimestamp.lua +13 -0
  341. package/dist/esm/commands/includes/getRateLimitTTL.lua +17 -0
  342. package/dist/esm/commands/includes/getTargetQueueList.lua +12 -0
  343. package/dist/esm/commands/includes/getTimestamp.lua +19 -0
  344. package/dist/esm/commands/includes/getZSetItems.lua +7 -0
  345. package/dist/esm/commands/includes/isLocked.lua +31 -0
  346. package/dist/esm/commands/includes/moveJobFromPriorityToActive.lua +14 -0
  347. package/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +28 -0
  348. package/dist/esm/commands/includes/prepareJobForProcessing.lua +74 -0
  349. package/dist/esm/commands/includes/promoteDelayedJobs.lua +39 -0
  350. package/dist/esm/commands/includes/pushBackJobWithPriority.lua +9 -0
  351. package/dist/esm/commands/includes/removeJob.lua +13 -0
  352. package/dist/esm/commands/includes/removeJobFromAnyState.lua +35 -0
  353. package/dist/esm/commands/includes/removeJobs.lua +25 -0
  354. package/dist/esm/commands/includes/removeJobsByMaxAge.lua +15 -0
  355. package/dist/esm/commands/includes/removeJobsByMaxCount.lua +15 -0
  356. package/dist/esm/commands/includes/removeParentDependencyKey.lua +77 -0
  357. package/dist/esm/commands/includes/removeZSetJobs.lua +15 -0
  358. package/dist/esm/commands/includes/trimEvents.lua +12 -0
  359. package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +40 -0
  360. package/dist/esm/commands/index.d.ts +4 -0
  361. package/dist/esm/commands/index.js +5 -0
  362. package/dist/esm/commands/index.js.map +1 -0
  363. package/dist/esm/commands/isFinished-3.lua +48 -0
  364. package/dist/esm/commands/isJobInList-1.lua +16 -0
  365. package/dist/esm/commands/moveJobFromActiveToWait-9.lua +53 -0
  366. package/dist/esm/commands/moveStalledJobsToWait-8.lua +24 -0
  367. package/dist/esm/commands/moveToActive-10.lua +116 -0
  368. package/dist/esm/commands/moveToDelayed-8.lua +66 -0
  369. package/dist/esm/commands/moveToFinished-13.lua +250 -0
  370. package/dist/esm/commands/moveToWaitingChildren-4.lua +62 -0
  371. package/dist/esm/commands/obliterate-2.lua +102 -0
  372. package/dist/esm/commands/pause-5.lua +36 -0
  373. package/dist/esm/commands/promote-7.lua +57 -0
  374. package/dist/esm/commands/releaseLock-1.lua +19 -0
  375. package/dist/esm/commands/removeJob-1.lua +71 -0
  376. package/dist/{commands → esm/commands}/removeRepeatable-2.lua +13 -1
  377. package/dist/esm/commands/reprocessJob-6.lua +43 -0
  378. package/dist/esm/commands/retryJob-9.lua +69 -0
  379. package/dist/esm/commands/retryJobs-6.lua +53 -0
  380. package/dist/esm/commands/saveStacktrace-1.lua +22 -0
  381. package/dist/esm/commands/script-loader.d.ts +119 -0
  382. package/dist/esm/commands/script-loader.js +403 -0
  383. package/dist/esm/commands/script-loader.js.map +1 -0
  384. package/dist/esm/commands/updateData-1.lua +20 -0
  385. package/dist/esm/commands/updateProgress-2.lua +26 -0
  386. package/dist/esm/enums/error-code.enum.d.ts +8 -0
  387. package/dist/esm/enums/error-code.enum.js +10 -0
  388. package/dist/esm/enums/error-code.enum.js.map +1 -0
  389. package/dist/esm/enums/index.d.ts +2 -0
  390. package/dist/esm/enums/index.js +3 -0
  391. package/dist/esm/enums/index.js.map +1 -0
  392. package/dist/esm/enums/metrics-time.d.ts +10 -0
  393. package/dist/esm/enums/metrics-time.js +12 -0
  394. package/dist/esm/enums/metrics-time.js.map +1 -0
  395. package/dist/{index.d.ts → esm/index.d.ts} +2 -0
  396. package/{src/index.ts → dist/esm/index.js} +7 -4
  397. package/dist/esm/index.js.map +1 -0
  398. package/dist/esm/interfaces/advanced-options.d.ts +13 -0
  399. package/dist/esm/interfaces/advanced-options.js +2 -0
  400. package/dist/esm/interfaces/advanced-options.js.map +1 -0
  401. package/dist/esm/interfaces/backoff-options.d.ts +15 -0
  402. package/dist/esm/interfaces/backoff-options.js +2 -0
  403. package/dist/esm/interfaces/backoff-options.js.map +1 -0
  404. package/dist/esm/interfaces/base-job-options.d.ts +97 -0
  405. package/dist/esm/interfaces/base-job-options.js +2 -0
  406. package/dist/esm/interfaces/base-job-options.js.map +1 -0
  407. package/dist/esm/interfaces/child-command.d.ts +5 -0
  408. package/dist/esm/interfaces/child-command.js +7 -0
  409. package/dist/esm/interfaces/child-command.js.map +1 -0
  410. package/dist/esm/interfaces/child-message.d.ts +6 -0
  411. package/dist/esm/interfaces/child-message.js +2 -0
  412. package/dist/esm/interfaces/child-message.js.map +1 -0
  413. package/dist/esm/interfaces/connection.d.ts +8 -0
  414. package/dist/esm/interfaces/connection.js +2 -0
  415. package/dist/esm/interfaces/connection.js.map +1 -0
  416. package/dist/esm/interfaces/flow-job.d.ts +19 -0
  417. package/dist/esm/interfaces/flow-job.js +2 -0
  418. package/dist/esm/interfaces/flow-job.js.map +1 -0
  419. package/dist/esm/interfaces/index.d.ts +24 -0
  420. package/dist/esm/interfaces/index.js +25 -0
  421. package/dist/esm/interfaces/index.js.map +1 -0
  422. package/dist/esm/interfaces/ioredis-events.d.ts +8 -0
  423. package/dist/esm/interfaces/ioredis-events.js +2 -0
  424. package/dist/esm/interfaces/ioredis-events.js.map +1 -0
  425. package/dist/esm/interfaces/job-json.d.ts +37 -0
  426. package/dist/esm/interfaces/job-json.js +2 -0
  427. package/dist/esm/interfaces/job-json.js.map +1 -0
  428. package/dist/esm/interfaces/keep-jobs.d.ts +17 -0
  429. package/dist/esm/interfaces/keep-jobs.js +2 -0
  430. package/dist/esm/interfaces/keep-jobs.js.map +1 -0
  431. package/dist/esm/interfaces/metrics-options.d.ts +12 -0
  432. package/dist/esm/interfaces/metrics-options.js +2 -0
  433. package/dist/esm/interfaces/metrics-options.js.map +1 -0
  434. package/dist/esm/interfaces/metrics.d.ts +9 -0
  435. package/dist/esm/interfaces/metrics.js +2 -0
  436. package/dist/esm/interfaces/metrics.js.map +1 -0
  437. package/dist/esm/interfaces/minimal-job.d.ts +129 -0
  438. package/dist/esm/interfaces/minimal-job.js +2 -0
  439. package/dist/esm/interfaces/minimal-job.js.map +1 -0
  440. package/dist/esm/interfaces/parent-command.d.ts +10 -0
  441. package/dist/esm/interfaces/parent-command.js +12 -0
  442. package/dist/esm/interfaces/parent-command.js.map +1 -0
  443. package/dist/esm/interfaces/parent-message.d.ts +8 -0
  444. package/dist/esm/interfaces/parent-message.js +2 -0
  445. package/dist/esm/interfaces/parent-message.js.map +1 -0
  446. package/dist/esm/interfaces/parent.d.ts +20 -0
  447. package/dist/esm/interfaces/parent.js +2 -0
  448. package/dist/esm/interfaces/parent.js.map +1 -0
  449. package/dist/esm/interfaces/queue-options.d.ts +74 -0
  450. package/dist/esm/interfaces/queue-options.js +6 -0
  451. package/dist/esm/interfaces/queue-options.js.map +1 -0
  452. package/dist/esm/interfaces/rate-limiter-options.d.ts +12 -0
  453. package/dist/esm/interfaces/rate-limiter-options.js +2 -0
  454. package/dist/esm/interfaces/rate-limiter-options.js.map +1 -0
  455. package/dist/esm/interfaces/redis-options.d.ts +7 -0
  456. package/dist/esm/interfaces/redis-options.js +2 -0
  457. package/dist/esm/interfaces/redis-options.js.map +1 -0
  458. package/dist/esm/interfaces/redis-streams.d.ts +4 -0
  459. package/dist/esm/interfaces/redis-streams.js +2 -0
  460. package/dist/esm/interfaces/redis-streams.js.map +1 -0
  461. package/dist/esm/interfaces/repeat-options.d.ts +33 -0
  462. package/dist/esm/interfaces/repeat-options.js +2 -0
  463. package/dist/esm/interfaces/repeat-options.js.map +1 -0
  464. package/dist/esm/interfaces/sandboxed-job-processor.d.ts +5 -0
  465. package/dist/esm/interfaces/sandboxed-job-processor.js +2 -0
  466. package/dist/esm/interfaces/sandboxed-job-processor.js.map +1 -0
  467. package/dist/esm/interfaces/sandboxed-job.d.ts +13 -0
  468. package/dist/esm/interfaces/sandboxed-job.js +2 -0
  469. package/dist/esm/interfaces/sandboxed-job.js.map +1 -0
  470. package/dist/esm/interfaces/worker-options.d.ts +123 -0
  471. package/dist/esm/interfaces/worker-options.js +2 -0
  472. package/dist/esm/interfaces/worker-options.js.map +1 -0
  473. package/dist/esm/scripts/addJob-9.d.ts +5 -0
  474. package/dist/esm/scripts/addJob-9.js +249 -0
  475. package/dist/esm/scripts/addJob-9.js.map +1 -0
  476. package/dist/esm/scripts/changeDelay-3.d.ts +5 -0
  477. package/dist/esm/scripts/changeDelay-3.js +38 -0
  478. package/dist/esm/scripts/changeDelay-3.js.map +1 -0
  479. package/dist/esm/scripts/changePriority-5.d.ts +5 -0
  480. package/dist/esm/scripts/changePriority-5.js +84 -0
  481. package/dist/esm/scripts/changePriority-5.js.map +1 -0
  482. package/dist/esm/scripts/cleanJobsInSet-2.d.ts +5 -0
  483. package/dist/esm/scripts/cleanJobsInSet-2.js +256 -0
  484. package/dist/esm/scripts/cleanJobsInSet-2.js.map +1 -0
  485. package/dist/esm/scripts/drain-4.d.ts +5 -0
  486. package/dist/esm/scripts/drain-4.js +175 -0
  487. package/dist/esm/scripts/drain-4.js.map +1 -0
  488. package/dist/esm/scripts/extendLock-2.d.ts +5 -0
  489. package/dist/esm/scripts/extendLock-2.js +27 -0
  490. package/dist/esm/scripts/extendLock-2.js.map +1 -0
  491. package/dist/esm/scripts/getCounts-1.d.ts +5 -0
  492. package/dist/esm/scripts/getCounts-1.js +38 -0
  493. package/dist/esm/scripts/getCounts-1.js.map +1 -0
  494. package/dist/esm/scripts/getRanges-1.d.ts +5 -0
  495. package/dist/esm/scripts/getRanges-1.js +69 -0
  496. package/dist/esm/scripts/getRanges-1.js.map +1 -0
  497. package/dist/esm/scripts/getState-8.d.ts +5 -0
  498. package/dist/esm/scripts/getState-8.js +71 -0
  499. package/dist/esm/scripts/getState-8.js.map +1 -0
  500. package/dist/esm/scripts/getStateV2-8.d.ts +5 -0
  501. package/dist/esm/scripts/getStateV2-8.js +55 -0
  502. package/dist/esm/scripts/getStateV2-8.js.map +1 -0
  503. package/dist/esm/scripts/index.d.ts +30 -0
  504. package/dist/esm/scripts/index.js +31 -0
  505. package/dist/esm/scripts/index.js.map +1 -0
  506. package/dist/esm/scripts/isFinished-3.d.ts +5 -0
  507. package/dist/esm/scripts/isFinished-3.js +46 -0
  508. package/dist/esm/scripts/isFinished-3.js.map +1 -0
  509. package/dist/esm/scripts/isJobInList-1.d.ts +5 -0
  510. package/dist/esm/scripts/isJobInList-1.js +29 -0
  511. package/dist/esm/scripts/isJobInList-1.js.map +1 -0
  512. package/dist/esm/scripts/moveJobFromActiveToWait-9.d.ts +5 -0
  513. package/dist/esm/scripts/moveJobFromActiveToWait-9.js +67 -0
  514. package/dist/esm/scripts/moveJobFromActiveToWait-9.js.map +1 -0
  515. package/dist/esm/scripts/moveStalledJobsToWait-8.d.ts +5 -0
  516. package/dist/esm/scripts/moveStalledJobsToWait-8.js +286 -0
  517. package/dist/esm/scripts/moveStalledJobsToWait-8.js.map +1 -0
  518. package/dist/esm/scripts/moveToActive-10.d.ts +5 -0
  519. package/dist/esm/scripts/moveToActive-10.js +266 -0
  520. package/dist/esm/scripts/moveToActive-10.js.map +1 -0
  521. package/dist/esm/scripts/moveToDelayed-8.d.ts +5 -0
  522. package/dist/esm/scripts/moveToDelayed-8.js +149 -0
  523. package/dist/esm/scripts/moveToDelayed-8.js.map +1 -0
  524. package/dist/esm/scripts/moveToFinished-13.d.ts +5 -0
  525. package/dist/esm/scripts/moveToFinished-13.js +621 -0
  526. package/dist/esm/scripts/moveToFinished-13.js.map +1 -0
  527. package/dist/esm/scripts/moveToWaitingChildren-4.d.ts +5 -0
  528. package/dist/esm/scripts/moveToWaitingChildren-4.js +56 -0
  529. package/dist/esm/scripts/moveToWaitingChildren-4.js.map +1 -0
  530. package/dist/esm/scripts/obliterate-2.d.ts +5 -0
  531. package/dist/esm/scripts/obliterate-2.js +241 -0
  532. package/dist/esm/scripts/obliterate-2.js.map +1 -0
  533. package/dist/esm/scripts/pause-5.d.ts +5 -0
  534. package/dist/esm/scripts/pause-5.js +45 -0
  535. package/dist/esm/scripts/pause-5.js.map +1 -0
  536. package/dist/esm/scripts/promote-7.d.ts +5 -0
  537. package/dist/esm/scripts/promote-7.js +84 -0
  538. package/dist/esm/scripts/promote-7.js.map +1 -0
  539. package/dist/esm/scripts/releaseLock-1.d.ts +5 -0
  540. package/dist/esm/scripts/releaseLock-1.js +22 -0
  541. package/dist/esm/scripts/releaseLock-1.js.map +1 -0
  542. package/dist/esm/scripts/removeJob-1.d.ts +5 -0
  543. package/dist/esm/scripts/removeJob-1.js +207 -0
  544. package/dist/esm/scripts/removeJob-1.js.map +1 -0
  545. package/dist/esm/scripts/removeRepeatable-2.d.ts +5 -0
  546. package/dist/esm/scripts/removeRepeatable-2.js +35 -0
  547. package/dist/esm/scripts/removeRepeatable-2.js.map +1 -0
  548. package/dist/esm/scripts/reprocessJob-6.d.ts +5 -0
  549. package/dist/esm/scripts/reprocessJob-6.js +53 -0
  550. package/dist/esm/scripts/reprocessJob-6.js.map +1 -0
  551. package/dist/esm/scripts/retryJob-9.d.ts +5 -0
  552. package/dist/esm/scripts/retryJob-9.js +125 -0
  553. package/dist/esm/scripts/retryJob-9.js.map +1 -0
  554. package/dist/esm/scripts/retryJobs-6.d.ts +5 -0
  555. package/dist/esm/scripts/retryJobs-6.js +73 -0
  556. package/dist/esm/scripts/retryJobs-6.js.map +1 -0
  557. package/dist/esm/scripts/saveStacktrace-1.d.ts +5 -0
  558. package/dist/esm/scripts/saveStacktrace-1.js +24 -0
  559. package/dist/esm/scripts/saveStacktrace-1.js.map +1 -0
  560. package/dist/esm/scripts/updateData-1.d.ts +5 -0
  561. package/dist/esm/scripts/updateData-1.js +23 -0
  562. package/dist/esm/scripts/updateData-1.js.map +1 -0
  563. package/dist/esm/scripts/updateProgress-2.d.ts +5 -0
  564. package/dist/esm/scripts/updateProgress-2.js +28 -0
  565. package/dist/esm/scripts/updateProgress-2.js.map +1 -0
  566. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  567. package/dist/esm/types/backoff-strategy.d.ts +2 -0
  568. package/dist/esm/types/backoff-strategy.js +2 -0
  569. package/dist/esm/types/backoff-strategy.js.map +1 -0
  570. package/dist/esm/types/finished-status.d.ts +2 -0
  571. package/dist/esm/types/finished-status.js +2 -0
  572. package/dist/esm/types/finished-status.js.map +1 -0
  573. package/dist/esm/types/index.d.ts +7 -0
  574. package/dist/esm/types/index.js +8 -0
  575. package/dist/esm/types/index.js.map +1 -0
  576. package/dist/esm/types/job-json-sandbox.d.ts +5 -0
  577. package/dist/esm/types/job-json-sandbox.js +2 -0
  578. package/dist/esm/types/job-json-sandbox.js.map +1 -0
  579. package/dist/esm/types/job-options.d.ts +20 -0
  580. package/dist/esm/types/job-options.js +2 -0
  581. package/dist/esm/types/job-options.js.map +1 -0
  582. package/dist/esm/types/job-type.d.ts +3 -0
  583. package/dist/esm/types/job-type.js +2 -0
  584. package/dist/esm/types/job-type.js.map +1 -0
  585. package/dist/esm/types/minimal-queue.d.ts +2 -0
  586. package/dist/esm/types/minimal-queue.js +2 -0
  587. package/dist/esm/types/minimal-queue.js.map +1 -0
  588. package/dist/esm/types/repeat-strategy.d.ts +2 -0
  589. package/dist/esm/types/repeat-strategy.js +2 -0
  590. package/dist/esm/types/repeat-strategy.js.map +1 -0
  591. package/dist/esm/utils.d.ts +42 -0
  592. package/dist/esm/utils.js +134 -0
  593. package/dist/esm/utils.js.map +1 -0
  594. package/package.json +181 -60
  595. package/.travis.yml +0 -32
  596. package/SUMMARY.md +0 -4
  597. package/commitlint.config.js +0 -1
  598. package/dist/classes/backoffs.d.ts +0 -14
  599. package/dist/classes/backoffs.js.map +0 -1
  600. package/dist/classes/child-pool.d.ts +0 -22
  601. package/dist/classes/child-pool.js +0 -98
  602. package/dist/classes/child-pool.js.map +0 -1
  603. package/dist/classes/compat.d.ts +0 -316
  604. package/dist/classes/compat.js +0 -667
  605. package/dist/classes/compat.js.map +0 -1
  606. package/dist/classes/index.js.map +0 -1
  607. package/dist/classes/job.d.ts +0 -93
  608. package/dist/classes/job.js +0 -351
  609. package/dist/classes/job.js.map +0 -1
  610. package/dist/classes/master.js +0 -112
  611. package/dist/classes/master.js.map +0 -1
  612. package/dist/classes/queue-base.d.ts +0 -23
  613. package/dist/classes/queue-base.js +0 -68
  614. package/dist/classes/queue-base.js.map +0 -1
  615. package/dist/classes/queue-events.d.ts +0 -8
  616. package/dist/classes/queue-events.js +0 -59
  617. package/dist/classes/queue-events.js.map +0 -1
  618. package/dist/classes/queue-getters.d.ts +0 -38
  619. package/dist/classes/queue-getters.js +0 -182
  620. package/dist/classes/queue-getters.js.map +0 -1
  621. package/dist/classes/queue-keeper.js +0 -103
  622. package/dist/classes/queue-keeper.js.map +0 -1
  623. package/dist/classes/queue-scheduler.d.ts +0 -25
  624. package/dist/classes/queue-scheduler.js +0 -96
  625. package/dist/classes/queue-scheduler.js.map +0 -1
  626. package/dist/classes/queue.d.ts +0 -46
  627. package/dist/classes/queue.js +0 -122
  628. package/dist/classes/queue.js.map +0 -1
  629. package/dist/classes/redis-connection.d.ts +0 -17
  630. package/dist/classes/redis-connection.js +0 -97
  631. package/dist/classes/redis-connection.js.map +0 -1
  632. package/dist/classes/repeat.d.ts +0 -26
  633. package/dist/classes/repeat.js +0 -128
  634. package/dist/classes/repeat.js.map +0 -1
  635. package/dist/classes/sandbox.d.ts +0 -2
  636. package/dist/classes/sandbox.js.map +0 -1
  637. package/dist/classes/scripts.d.ts +0 -43
  638. package/dist/classes/scripts.js +0 -296
  639. package/dist/classes/scripts.js.map +0 -1
  640. package/dist/classes/worker.d.ts +0 -38
  641. package/dist/classes/worker.js +0 -231
  642. package/dist/classes/worker.js.map +0 -1
  643. package/dist/commands/addJob-8.lua +0 -106
  644. package/dist/commands/cleanJobsInSet-1.lua +0 -48
  645. package/dist/commands/index.d.ts +0 -2
  646. package/dist/commands/index.js +0 -42
  647. package/dist/commands/index.js.map +0 -1
  648. package/dist/commands/isFinished-2.lua +0 -22
  649. package/dist/commands/isJobInList-1.lua +0 -20
  650. package/dist/commands/moveStalledJobsToWait-8.lua +0 -91
  651. package/dist/commands/moveToActive-8.lua +0 -79
  652. package/dist/commands/moveToDelayed-5.lua +0 -39
  653. package/dist/commands/moveToFinished-6.lua +0 -87
  654. package/dist/commands/moveToFinished-7.lua +0 -92
  655. package/dist/commands/pause-4.lua +0 -27
  656. package/dist/commands/promote-4.lua +0 -49
  657. package/dist/commands/releaseLock-1.lua +0 -19
  658. package/dist/commands/removeJob-10.lua +0 -37
  659. package/dist/commands/reprocessJob-4.lua +0 -36
  660. package/dist/commands/retryJob-4.lua +0 -34
  661. package/dist/commands/takeLock-1.lua +0 -17
  662. package/dist/commands/updateDelaySet-7.lua +0 -71
  663. package/dist/commands/updateProgress-2.lua +0 -15
  664. package/dist/enums/index.d.ts +0 -1
  665. package/dist/enums/index.js +0 -5
  666. package/dist/enums/index.js.map +0 -1
  667. package/dist/enums/retry-errors.enum.d.ts +0 -5
  668. package/dist/enums/retry-errors.enum.js +0 -9
  669. package/dist/enums/retry-errors.enum.js.map +0 -1
  670. package/dist/index.js.map +0 -1
  671. package/dist/interfaces/advance-opts.js +0 -12
  672. package/dist/interfaces/advance-opts.js.map +0 -1
  673. package/dist/interfaces/advanced-options.d.ts +0 -9
  674. package/dist/interfaces/advanced-options.js +0 -11
  675. package/dist/interfaces/advanced-options.js.map +0 -1
  676. package/dist/interfaces/advanced-opts.js +0 -11
  677. package/dist/interfaces/advanced-opts.js.map +0 -1
  678. package/dist/interfaces/backoff-options.d.ts +0 -4
  679. package/dist/interfaces/backoff-options.js.map +0 -1
  680. package/dist/interfaces/backoff-opts.js.map +0 -1
  681. package/dist/interfaces/index.d.ts +0 -9
  682. package/dist/interfaces/index.js +0 -6
  683. package/dist/interfaces/index.js.map +0 -1
  684. package/dist/interfaces/jobs-options.d.ts +0 -16
  685. package/dist/interfaces/jobs-options.js.map +0 -1
  686. package/dist/interfaces/jobs-opts.js.map +0 -1
  687. package/dist/interfaces/queue-keeper-opts.js +0 -3
  688. package/dist/interfaces/queue-keeper-opts.js.map +0 -1
  689. package/dist/interfaces/queue-options.d.ts +0 -24
  690. package/dist/interfaces/queue-options.js.map +0 -1
  691. package/dist/interfaces/queue-opts.js +0 -8
  692. package/dist/interfaces/queue-opts.js.map +0 -1
  693. package/dist/interfaces/queue-scheduler-options.d.ts +0 -5
  694. package/dist/interfaces/queue-scheduler-options.js +0 -3
  695. package/dist/interfaces/queue-scheduler-options.js.map +0 -1
  696. package/dist/interfaces/queue-scheduler-opts.js +0 -3
  697. package/dist/interfaces/queue-scheduler-opts.js.map +0 -1
  698. package/dist/interfaces/rate-limiter-options.d.ts +0 -4
  699. package/dist/interfaces/rate-limiter-options.js.map +0 -1
  700. package/dist/interfaces/rate-limiter-opts.js +0 -3
  701. package/dist/interfaces/rate-limiter-opts.js.map +0 -1
  702. package/dist/interfaces/redis-options.d.ts +0 -7
  703. package/dist/interfaces/redis-options.js.map +0 -1
  704. package/dist/interfaces/redis-opts.js.map +0 -1
  705. package/dist/interfaces/repeat-options.d.ts +0 -11
  706. package/dist/interfaces/repeat-options.js.map +0 -1
  707. package/dist/interfaces/repeat-opts.js.map +0 -1
  708. package/dist/interfaces/worker-options.d.ts +0 -11
  709. package/dist/interfaces/worker-options.js.map +0 -1
  710. package/dist/interfaces/worker-opts.js.map +0 -1
  711. package/dist/test/test_bulk.js +0 -55
  712. package/dist/test/test_bulk.js.map +0 -1
  713. package/dist/test/test_child-pool.js +0 -81
  714. package/dist/test/test_child-pool.js.map +0 -1
  715. package/dist/test/test_clean.js +0 -124
  716. package/dist/test/test_clean.js.map +0 -1
  717. package/dist/test/test_compat.d.ts +0 -1
  718. package/dist/test/test_compat.js +0 -533
  719. package/dist/test/test_compat.js.map +0 -1
  720. package/dist/test/test_connection.d.ts +0 -1
  721. package/dist/test/test_connection.js +0 -140
  722. package/dist/test/test_connection.js.map +0 -1
  723. package/dist/test/test_delay.d.ts +0 -1
  724. package/dist/test/test_delay.js +0 -186
  725. package/dist/test/test_delay.js.map +0 -1
  726. package/dist/test/test_events.d.ts +0 -1
  727. package/dist/test/test_events.js +0 -147
  728. package/dist/test/test_events.js.map +0 -1
  729. package/dist/test/test_getters.d.ts +0 -1
  730. package/dist/test/test_getters.js +0 -293
  731. package/dist/test/test_getters.js.map +0 -1
  732. package/dist/test/test_job.d.ts +0 -1
  733. package/dist/test/test_job.js +0 -419
  734. package/dist/test/test_job.js.map +0 -1
  735. package/dist/test/test_pause.d.ts +0 -1
  736. package/dist/test/test_pause.js +0 -255
  737. package/dist/test/test_pause.js.map +0 -1
  738. package/dist/test/test_queue.d.ts +0 -0
  739. package/dist/test/test_queue.js +0 -72
  740. package/dist/test/test_queue.js.map +0 -1
  741. package/dist/test/test_rate_limiter.d.ts +0 -1
  742. package/dist/test/test_rate_limiter.js +0 -98
  743. package/dist/test/test_rate_limiter.js.map +0 -1
  744. package/dist/test/test_repeat.d.ts +0 -1
  745. package/dist/test/test_repeat.js +0 -602
  746. package/dist/test/test_repeat.js.map +0 -1
  747. package/dist/test/test_sandboxed_process.d.ts +0 -1
  748. package/dist/test/test_sandboxed_process.js +0 -319
  749. package/dist/test/test_sandboxed_process.js.map +0 -1
  750. package/dist/test/test_stalled_jobs.d.ts +0 -1
  751. package/dist/test/test_stalled_jobs.js +0 -107
  752. package/dist/test/test_stalled_jobs.js.map +0 -1
  753. package/dist/test/test_worker.d.ts +0 -1
  754. package/dist/test/test_worker.js +0 -1182
  755. package/dist/test/test_worker.js.map +0 -1
  756. package/dist/utils.d.ts +0 -8
  757. package/dist/utils.js +0 -31
  758. package/dist/utils.js.map +0 -1
  759. package/release.txt +0 -21
  760. package/src/classes/backoffs.ts +0 -67
  761. package/src/classes/child-pool.ts +0 -119
  762. package/src/classes/compat.ts +0 -890
  763. package/src/classes/index.ts +0 -13
  764. package/src/classes/job.ts +0 -495
  765. package/src/classes/master.ts +0 -113
  766. package/src/classes/queue-base.ts +0 -87
  767. package/src/classes/queue-events.ts +0 -78
  768. package/src/classes/queue-getters.ts +0 -213
  769. package/src/classes/queue-scheduler.ts +0 -125
  770. package/src/classes/queue.ts +0 -180
  771. package/src/classes/redis-connection.ts +0 -111
  772. package/src/classes/repeat.ts +0 -217
  773. package/src/classes/sandbox.ts +0 -60
  774. package/src/classes/scripts.ts +0 -468
  775. package/src/classes/worker.ts +0 -288
  776. package/src/commands/addJob-8.lua +0 -106
  777. package/src/commands/cleanJobsInSet-1.lua +0 -48
  778. package/src/commands/index.ts +0 -62
  779. package/src/commands/isFinished-2.lua +0 -22
  780. package/src/commands/isJobInList-1.lua +0 -20
  781. package/src/commands/moveStalledJobsToWait-8.lua +0 -91
  782. package/src/commands/moveToActive-8.lua +0 -79
  783. package/src/commands/moveToDelayed-5.lua +0 -39
  784. package/src/commands/moveToFinished-7.lua +0 -92
  785. package/src/commands/pause-4.lua +0 -27
  786. package/src/commands/promote-4.lua +0 -49
  787. package/src/commands/releaseLock-1.lua +0 -19
  788. package/src/commands/removeJob-10.lua +0 -37
  789. package/src/commands/reprocessJob-4.lua +0 -36
  790. package/src/commands/retryJob-4.lua +0 -34
  791. package/src/commands/takeLock-1.lua +0 -17
  792. package/src/commands/updateDelaySet-7.lua +0 -71
  793. package/src/commands/updateProgress-2.lua +0 -15
  794. package/src/enums/index.ts +0 -1
  795. package/src/enums/retry-errors.enum.ts +0 -5
  796. package/src/interfaces/advanced-options.ts +0 -28
  797. package/src/interfaces/backoff-options.ts +0 -4
  798. package/src/interfaces/index.ts +0 -9
  799. package/src/interfaces/jobs-options.ts +0 -53
  800. package/src/interfaces/queue-options.ts +0 -30
  801. package/src/interfaces/queue-scheduler-options.ts +0 -6
  802. package/src/interfaces/rate-limiter-options.ts +0 -7
  803. package/src/interfaces/redis-options.ts +0 -9
  804. package/src/interfaces/repeat-options.ts +0 -19
  805. package/src/interfaces/worker-options.ts +0 -13
  806. package/src/test/fixtures/fixture_processor.js +0 -13
  807. package/src/test/fixtures/fixture_processor_bar.js +0 -13
  808. package/src/test/fixtures/fixture_processor_crash.js +0 -16
  809. package/src/test/fixtures/fixture_processor_exit.js +0 -15
  810. package/src/test/fixtures/fixture_processor_fail.js +0 -13
  811. package/src/test/fixtures/fixture_processor_foo.js +0 -13
  812. package/src/test/fixtures/fixture_processor_progress.js +0 -29
  813. package/src/test/fixtures/fixture_processor_slow.js +0 -13
  814. package/src/test/test_bulk.ts +0 -59
  815. package/src/test/test_child-pool.ts +0 -88
  816. package/src/test/test_clean.ts +0 -148
  817. package/src/test/test_compat.ts +0 -640
  818. package/src/test/test_connection.ts +0 -159
  819. package/src/test/test_delay.ts +0 -220
  820. package/src/test/test_events.ts +0 -198
  821. package/src/test/test_getters.ts +0 -348
  822. package/src/test/test_job.ts +0 -524
  823. package/src/test/test_pause.ts +0 -313
  824. package/src/test/test_queue.ts +0 -70
  825. package/src/test/test_rate_limiter.ts +0 -113
  826. package/src/test/test_repeat.ts +0 -783
  827. package/src/test/test_sandboxed_process.ts +0 -380
  828. package/src/test/test_stalled_jobs.ts +0 -146
  829. package/src/test/test_worker.ts +0 -1503
  830. package/src/utils.ts +0 -28
  831. package/tsconfig.json +0 -25
  832. package/tslint.json +0 -23
  833. /package/dist/{classes/master.d.ts → cjs/classes/main-worker.d.ts} +0 -0
  834. /package/dist/{test/test_bulk.d.ts → cjs/classes/main.d.ts} +0 -0
  835. /package/dist/{interfaces → cjs/interfaces}/backoff-options.js +0 -0
  836. /package/dist/{interfaces → cjs/interfaces}/rate-limiter-options.js +0 -0
  837. /package/dist/{interfaces → cjs/interfaces}/redis-options.js +0 -0
  838. /package/dist/{interfaces → cjs/interfaces}/repeat-options.js +0 -0
  839. /package/dist/{interfaces → cjs/interfaces}/worker-options.js +0 -0
  840. /package/dist/{test/test_child-pool.d.ts → esm/classes/main-worker.d.ts} +0 -0
  841. /package/dist/{test/test_clean.d.ts → esm/classes/main.d.ts} +0 -0
@@ -0,0 +1,69 @@
1
+ --[[
2
+ Retries a failed job by moving it back to the wait queue.
3
+
4
+ Input:
5
+ KEYS[1] 'active',
6
+ KEYS[2] 'wait'
7
+ KEYS[3] 'paused'
8
+ KEYS[4] job key
9
+ KEYS[5] 'meta'
10
+ KEYS[6] events stream
11
+ KEYS[7] delayed key
12
+ KEYS[8] prioritized key
13
+ KEYS[9] 'pc' priority counter
14
+
15
+ ARGV[1] key prefix
16
+ ARGV[2] timestamp
17
+ ARGV[3] pushCmd
18
+ ARGV[4] jobId
19
+ ARGV[5] token
20
+
21
+ Events:
22
+ 'waiting'
23
+
24
+ Output:
25
+ 0 - OK
26
+ -1 - Missing key
27
+ -2 - Missing lock
28
+ ]]
29
+ local rcall = redis.call
30
+
31
+ -- Includes
32
+ --- @include "includes/addJobWithPriority"
33
+ --- @include "includes/getTargetQueueList"
34
+ --- @include "includes/promoteDelayedJobs"
35
+
36
+ local target, paused = getTargetQueueList(KEYS[5], KEYS[2], KEYS[3])
37
+ -- Check if there are delayed jobs that we can move to wait.
38
+ -- test example: when there are delayed jobs between retries
39
+ promoteDelayedJobs(KEYS[7], KEYS[2], target, KEYS[8], KEYS[6], ARGV[1], ARGV[2], paused, KEYS[9])
40
+
41
+ if rcall("EXISTS", KEYS[4]) == 1 then
42
+
43
+ if ARGV[5] ~= "0" then
44
+ local lockKey = KEYS[4] .. ':lock'
45
+ if rcall("GET", lockKey) == ARGV[5] then
46
+ rcall("DEL", lockKey)
47
+ else
48
+ return -2
49
+ end
50
+ end
51
+
52
+ rcall("LREM", KEYS[1], 0, ARGV[4])
53
+
54
+ local priority = tonumber(rcall("HGET", KEYS[4], "priority")) or 0
55
+
56
+ -- Standard or priority add
57
+ if priority == 0 then
58
+ rcall(ARGV[3], target, ARGV[4])
59
+ else
60
+ addJobWithPriority(KEYS[2], KEYS[8], priority, paused, ARGV[4], KEYS[9])
61
+ end
62
+
63
+ -- Emit waiting event
64
+ rcall("XADD", KEYS[6], "*", "event", "waiting", "jobId", ARGV[4], "prev", "failed")
65
+
66
+ return 0
67
+ else
68
+ return -1
69
+ end
@@ -0,0 +1,53 @@
1
+ --[[
2
+ Attempts to retry all failed jobs
3
+
4
+ Input:
5
+ KEYS[1] base key
6
+ KEYS[2] events stream
7
+ KEYS[3] state key (failed, completed)
8
+ KEYS[4] 'wait'
9
+ KEYS[5] 'paused'
10
+ KEYS[6] 'meta'
11
+
12
+ ARGV[1] count
13
+ ARGV[2] timestamp
14
+ ARGV[3] prev state
15
+
16
+ Output:
17
+ 1 means the operation is not completed
18
+ 0 means the operation is completed
19
+ ]]
20
+ local maxCount = tonumber(ARGV[1])
21
+ local timestamp = tonumber(ARGV[2])
22
+
23
+ local rcall = redis.call;
24
+
25
+ -- Includes
26
+ --- @include "includes/batches"
27
+ --- @include "includes/getTargetQueueList"
28
+
29
+ local target = getTargetQueueList(KEYS[6], KEYS[4], KEYS[5])
30
+
31
+ local jobs = rcall('ZRANGEBYSCORE', KEYS[3], 0, timestamp, 'LIMIT', 0, maxCount)
32
+ if (#jobs > 0) then
33
+ for i, key in ipairs(jobs) do
34
+ local jobKey = KEYS[1] .. key
35
+ rcall("HDEL", jobKey, "finishedOn", "processedOn", "failedReason", "returnvalue")
36
+
37
+ -- Emit waiting event
38
+ rcall("XADD", KEYS[2], "*", "event", "waiting", "jobId", key, "prev", ARGV[3]);
39
+ end
40
+
41
+ for from, to in batches(#jobs, 7000) do
42
+ rcall("ZREM", KEYS[3], unpack(jobs, from, to))
43
+ rcall("LPUSH", target, unpack(jobs, from, to))
44
+ end
45
+ end
46
+
47
+ maxCount = maxCount - #jobs
48
+
49
+ if(maxCount <= 0) then
50
+ return 1
51
+ end
52
+
53
+ return 0
@@ -0,0 +1,22 @@
1
+ --[[
2
+ Save stacktrace and failedReason.
3
+
4
+ Input:
5
+ KEYS[1] job key
6
+
7
+ ARGV[1] stacktrace
8
+ ARGV[2] failedReason
9
+
10
+ Output:
11
+ 0 - OK
12
+ -1 - Missing key
13
+ ]]
14
+ local rcall = redis.call
15
+
16
+ if rcall("EXISTS", KEYS[1]) == 1 then
17
+ rcall("HMSET", KEYS[1], "stacktrace", ARGV[1], "failedReason", ARGV[2])
18
+
19
+ return 0
20
+ else
21
+ return -1
22
+ end
@@ -0,0 +1,119 @@
1
+ import { RedisClient } from '../interfaces';
2
+ export interface Command {
3
+ name: string;
4
+ options: {
5
+ numberOfKeys: number;
6
+ lua: string;
7
+ };
8
+ }
9
+ /**
10
+ * Script metadata
11
+ */
12
+ export interface ScriptMetadata {
13
+ /**
14
+ * Name of the script
15
+ */
16
+ name: string;
17
+ numberOfKeys?: number;
18
+ /**
19
+ * The path to the script. For includes, this is the normalized path,
20
+ * whereas it may not be normalized for the top-level parent
21
+ */
22
+ path: string;
23
+ /**
24
+ * The raw script content
25
+ */
26
+ content: string;
27
+ /**
28
+ * A hash of the normalized path for easy replacement in the parent
29
+ */
30
+ token: string;
31
+ /**
32
+ * Metadata on the scripts that this script includes
33
+ */
34
+ includes: ScriptMetadata[];
35
+ }
36
+ export declare class ScriptLoaderError extends Error {
37
+ /**
38
+ * The include stack
39
+ */
40
+ readonly includes: string[];
41
+ readonly line: number;
42
+ readonly position: number;
43
+ constructor(message: string, path: string, stack?: string[], line?: number, position?: number);
44
+ }
45
+ /**
46
+ * Lua script loader with include support
47
+ */
48
+ export declare class ScriptLoader {
49
+ /**
50
+ * Map an alias to a path
51
+ */
52
+ private pathMapper;
53
+ private clientScripts;
54
+ /**
55
+ * Cache commands by dir
56
+ */
57
+ private commandCache;
58
+ private rootPath;
59
+ constructor();
60
+ /**
61
+ * Add a script path mapping. Allows includes of the form "<includes>/utils.lua" where `includes` is a user
62
+ * defined path
63
+ * @param name - the name of the mapping. Note: do not include angle brackets
64
+ * @param mappedPath - if a relative path is passed, it's relative to the *caller* of this function.
65
+ * Mapped paths are also accepted, e.g. "~/server/scripts/lua" or "<base>/includes"
66
+ */
67
+ addPathMapping(name: string, mappedPath: string): void;
68
+ /**
69
+ * Resolve the script path considering path mappings
70
+ * @param scriptName - the name of the script
71
+ * @param stack - the include stack, for nicer errors
72
+ */
73
+ resolvePath(scriptName: string, stack?: string[]): string;
74
+ /**
75
+ * Recursively collect all scripts included in a file
76
+ * @param file - the parent file
77
+ * @param cache - a cache for file metadata to increase efficiency. Since a file can be included
78
+ * multiple times, we make sure to load it only once.
79
+ * @param stack - internal stack to prevent circular references
80
+ */
81
+ private resolveDependencies;
82
+ /**
83
+ * Parse a (top-level) lua script
84
+ * @param filename - the full path to the script
85
+ * @param content - the content of the script
86
+ * @param cache - cache
87
+ */
88
+ parseScript(filename: string, content: string, cache?: Map<string, ScriptMetadata>): Promise<ScriptMetadata>;
89
+ /**
90
+ * Construct the final version of a file by interpolating its includes in dependency order.
91
+ * @param file - the file whose content we want to construct
92
+ * @param processed - a cache to keep track of which includes have already been processed
93
+ */
94
+ interpolate(file: ScriptMetadata, processed?: Set<string>): string;
95
+ loadCommand(filename: string, cache?: Map<string, ScriptMetadata>): Promise<Command>;
96
+ /**
97
+ * Load redis lua scripts.
98
+ * The name of the script must have the following format:
99
+ *
100
+ * cmdName-numKeys.lua
101
+ *
102
+ * cmdName must be in camel case format.
103
+ *
104
+ * For example:
105
+ * moveToFinish-3.lua
106
+ *
107
+ */
108
+ loadScripts(dir?: string, cache?: Map<string, ScriptMetadata>): Promise<Command[]>;
109
+ /**
110
+ * Attach all lua scripts in a given directory to a client instance
111
+ * @param client - redis client to attach script to
112
+ * @param pathname - the path to the directory containing the scripts
113
+ */
114
+ load(client: RedisClient, pathname: string, cache?: Map<string, ScriptMetadata>): Promise<void>;
115
+ /**
116
+ * Clears the command cache
117
+ */
118
+ clearCache(): void;
119
+ }
@@ -0,0 +1,403 @@
1
+ import { createHash } from 'crypto';
2
+ import { glob, hasMagic } from 'glob';
3
+ import * as path from 'path';
4
+ import * as fs from 'fs';
5
+ import { promisify } from 'util';
6
+ const readFile = promisify(fs.readFile);
7
+ const readdir = promisify(fs.readdir);
8
+ const GlobOptions = { dot: true, silent: false };
9
+ const IncludeRegex = /^[-]{2,3}[ \t]*@include[ \t]+(["'])(.+?)\1[; \t\n]*$/m;
10
+ const EmptyLineRegex = /^\s*[\r\n]/gm;
11
+ export class ScriptLoaderError extends Error {
12
+ constructor(message, path, stack = [], line, position = 0) {
13
+ super(message);
14
+ // Ensure the name of this error is the same as the class name
15
+ this.name = this.constructor.name;
16
+ Error.captureStackTrace(this, this.constructor);
17
+ this.includes = stack;
18
+ this.line = line !== null && line !== void 0 ? line : 0;
19
+ this.position = position;
20
+ }
21
+ }
22
+ const isPossiblyMappedPath = (path) => path && ['~', '<'].includes(path[0]);
23
+ const hasFilenamePattern = (path) => hasMagic(path, GlobOptions);
24
+ /**
25
+ * Lua script loader with include support
26
+ */
27
+ export class ScriptLoader {
28
+ constructor() {
29
+ /**
30
+ * Map an alias to a path
31
+ */
32
+ this.pathMapper = new Map();
33
+ this.clientScripts = new WeakMap();
34
+ /**
35
+ * Cache commands by dir
36
+ */
37
+ this.commandCache = new Map();
38
+ this.rootPath = getPkgJsonDir();
39
+ this.pathMapper.set('~', this.rootPath);
40
+ this.pathMapper.set('rootDir', this.rootPath);
41
+ this.pathMapper.set('base', __dirname);
42
+ }
43
+ /**
44
+ * Add a script path mapping. Allows includes of the form "<includes>/utils.lua" where `includes` is a user
45
+ * defined path
46
+ * @param name - the name of the mapping. Note: do not include angle brackets
47
+ * @param mappedPath - if a relative path is passed, it's relative to the *caller* of this function.
48
+ * Mapped paths are also accepted, e.g. "~/server/scripts/lua" or "<base>/includes"
49
+ */
50
+ addPathMapping(name, mappedPath) {
51
+ let resolved;
52
+ if (isPossiblyMappedPath(mappedPath)) {
53
+ resolved = this.resolvePath(mappedPath);
54
+ }
55
+ else {
56
+ const caller = getCallerFile();
57
+ const callerPath = path.dirname(caller);
58
+ resolved = path.normalize(path.resolve(callerPath, mappedPath));
59
+ }
60
+ const last = resolved.length - 1;
61
+ if (resolved[last] === path.sep) {
62
+ resolved = resolved.substr(0, last);
63
+ }
64
+ this.pathMapper.set(name, resolved);
65
+ }
66
+ /**
67
+ * Resolve the script path considering path mappings
68
+ * @param scriptName - the name of the script
69
+ * @param stack - the include stack, for nicer errors
70
+ */
71
+ resolvePath(scriptName, stack = []) {
72
+ const first = scriptName[0];
73
+ if (first === '~') {
74
+ scriptName = path.join(this.rootPath, scriptName.substr(2));
75
+ }
76
+ else if (first === '<') {
77
+ const p = scriptName.indexOf('>');
78
+ if (p > 0) {
79
+ const name = scriptName.substring(1, p);
80
+ const mappedPath = this.pathMapper.get(name);
81
+ if (!mappedPath) {
82
+ throw new ScriptLoaderError(`No path mapping found for "${name}"`, scriptName, stack);
83
+ }
84
+ scriptName = path.join(mappedPath, scriptName.substring(p + 1));
85
+ }
86
+ }
87
+ return path.normalize(scriptName);
88
+ }
89
+ /**
90
+ * Recursively collect all scripts included in a file
91
+ * @param file - the parent file
92
+ * @param cache - a cache for file metadata to increase efficiency. Since a file can be included
93
+ * multiple times, we make sure to load it only once.
94
+ * @param stack - internal stack to prevent circular references
95
+ */
96
+ async resolveDependencies(file, cache, isInclude = false, stack = []) {
97
+ cache = cache !== null && cache !== void 0 ? cache : new Map();
98
+ if (stack.includes(file.path)) {
99
+ throw new ScriptLoaderError(`circular reference: "${file.path}"`, file.path, stack);
100
+ }
101
+ stack.push(file.path);
102
+ function findPos(content, match) {
103
+ const pos = content.indexOf(match);
104
+ const arr = content.slice(0, pos).split('\n');
105
+ return {
106
+ line: arr.length,
107
+ column: arr[arr.length - 1].length + match.indexOf('@include') + 1,
108
+ };
109
+ }
110
+ function raiseError(msg, match) {
111
+ const pos = findPos(file.content, match);
112
+ throw new ScriptLoaderError(msg, file.path, stack, pos.line, pos.column);
113
+ }
114
+ let res;
115
+ let content = file.content;
116
+ while ((res = IncludeRegex.exec(content)) !== null) {
117
+ const [match, , reference] = res;
118
+ const includeFilename = isPossiblyMappedPath(reference)
119
+ ? // mapped paths imply absolute reference
120
+ this.resolvePath(ensureExt(reference), stack)
121
+ : // include path is relative to the file being processed
122
+ path.resolve(path.dirname(file.path), ensureExt(reference));
123
+ let includePaths;
124
+ if (hasFilenamePattern(includeFilename)) {
125
+ const filesMatched = await getFilenamesByPattern(includeFilename);
126
+ includePaths = filesMatched.map((x) => path.resolve(x));
127
+ }
128
+ else {
129
+ includePaths = [includeFilename];
130
+ }
131
+ includePaths = includePaths.filter((file) => path.extname(file) === '.lua');
132
+ if (includePaths.length === 0) {
133
+ raiseError(`include not found: "${reference}"`, match);
134
+ }
135
+ const tokens = [];
136
+ for (let i = 0; i < includePaths.length; i++) {
137
+ const includePath = includePaths[i];
138
+ const hasInclude = file.includes.find((x) => x.path === includePath);
139
+ if (hasInclude) {
140
+ /**
141
+ * We have something like
142
+ * --- \@include "a"
143
+ * ...
144
+ * --- \@include "a"
145
+ */
146
+ raiseError(`file "${reference}" already included in "${file.path}"`, match);
147
+ }
148
+ let includeMetadata = cache.get(includePath);
149
+ let token;
150
+ if (!includeMetadata) {
151
+ const { name, numberOfKeys } = splitFilename(includePath);
152
+ let childContent = '';
153
+ try {
154
+ const buf = await readFile(includePath, { flag: 'r' });
155
+ childContent = buf.toString();
156
+ }
157
+ catch (err) {
158
+ if (err.code === 'ENOENT') {
159
+ raiseError(`include not found: "${reference}"`, match);
160
+ }
161
+ else {
162
+ throw err;
163
+ }
164
+ }
165
+ // this represents a normalized version of the path to make replacement easy
166
+ token = getPathHash(includePath);
167
+ includeMetadata = {
168
+ name,
169
+ numberOfKeys,
170
+ path: includePath,
171
+ content: childContent,
172
+ token,
173
+ includes: [],
174
+ };
175
+ cache.set(includePath, includeMetadata);
176
+ }
177
+ else {
178
+ token = includeMetadata.token;
179
+ }
180
+ tokens.push(token);
181
+ file.includes.push(includeMetadata);
182
+ await this.resolveDependencies(includeMetadata, cache, true, stack);
183
+ }
184
+ // Replace @includes with normalized path hashes
185
+ const substitution = tokens.join('\n');
186
+ content = content.replace(match, substitution);
187
+ }
188
+ file.content = content;
189
+ if (isInclude) {
190
+ cache.set(file.path, file);
191
+ }
192
+ else {
193
+ cache.set(file.name, file);
194
+ }
195
+ stack.pop();
196
+ }
197
+ /**
198
+ * Parse a (top-level) lua script
199
+ * @param filename - the full path to the script
200
+ * @param content - the content of the script
201
+ * @param cache - cache
202
+ */
203
+ async parseScript(filename, content, cache) {
204
+ const { name, numberOfKeys } = splitFilename(filename);
205
+ const meta = cache === null || cache === void 0 ? void 0 : cache.get(name);
206
+ if ((meta === null || meta === void 0 ? void 0 : meta.content) === content) {
207
+ return meta;
208
+ }
209
+ const fileInfo = {
210
+ path: filename,
211
+ token: getPathHash(filename),
212
+ content,
213
+ name,
214
+ numberOfKeys,
215
+ includes: [],
216
+ };
217
+ await this.resolveDependencies(fileInfo, cache);
218
+ return fileInfo;
219
+ }
220
+ /**
221
+ * Construct the final version of a file by interpolating its includes in dependency order.
222
+ * @param file - the file whose content we want to construct
223
+ * @param processed - a cache to keep track of which includes have already been processed
224
+ */
225
+ interpolate(file, processed) {
226
+ processed = processed || new Set();
227
+ let content = file.content;
228
+ file.includes.forEach((child) => {
229
+ const emitted = processed.has(child.path);
230
+ const fragment = this.interpolate(child, processed);
231
+ const replacement = emitted ? '' : fragment;
232
+ if (!replacement) {
233
+ content = replaceAll(content, child.token, '');
234
+ }
235
+ else {
236
+ // replace the first instance with the dependency
237
+ content = content.replace(child.token, replacement);
238
+ // remove the rest
239
+ content = replaceAll(content, child.token, '');
240
+ }
241
+ processed.add(child.path);
242
+ });
243
+ return content;
244
+ }
245
+ async loadCommand(filename, cache) {
246
+ filename = path.resolve(filename);
247
+ const { name: scriptName } = splitFilename(filename);
248
+ let script = cache === null || cache === void 0 ? void 0 : cache.get(scriptName);
249
+ if (!script) {
250
+ const content = (await readFile(filename)).toString();
251
+ script = await this.parseScript(filename, content, cache);
252
+ }
253
+ const lua = removeEmptyLines(this.interpolate(script));
254
+ const { name, numberOfKeys } = script;
255
+ return {
256
+ name,
257
+ options: { numberOfKeys: numberOfKeys, lua },
258
+ };
259
+ }
260
+ /**
261
+ * Load redis lua scripts.
262
+ * The name of the script must have the following format:
263
+ *
264
+ * cmdName-numKeys.lua
265
+ *
266
+ * cmdName must be in camel case format.
267
+ *
268
+ * For example:
269
+ * moveToFinish-3.lua
270
+ *
271
+ */
272
+ async loadScripts(dir, cache) {
273
+ dir = path.normalize(dir || __dirname);
274
+ let commands = this.commandCache.get(dir);
275
+ if (commands) {
276
+ return commands;
277
+ }
278
+ const files = await readdir(dir);
279
+ const luaFiles = files.filter((file) => path.extname(file) === '.lua');
280
+ if (luaFiles.length === 0) {
281
+ /**
282
+ * To prevent unclarified runtime error "updateDelayset is not a function
283
+ * @see https://github.com/OptimalBits/bull/issues/920
284
+ */
285
+ throw new ScriptLoaderError('No .lua files found!', dir, []);
286
+ }
287
+ commands = [];
288
+ cache = cache !== null && cache !== void 0 ? cache : new Map();
289
+ for (let i = 0; i < luaFiles.length; i++) {
290
+ const file = path.join(dir, luaFiles[i]);
291
+ const command = await this.loadCommand(file, cache);
292
+ commands.push(command);
293
+ }
294
+ this.commandCache.set(dir, commands);
295
+ return commands;
296
+ }
297
+ /**
298
+ * Attach all lua scripts in a given directory to a client instance
299
+ * @param client - redis client to attach script to
300
+ * @param pathname - the path to the directory containing the scripts
301
+ */
302
+ async load(client, pathname, cache) {
303
+ let paths = this.clientScripts.get(client);
304
+ if (!paths) {
305
+ paths = new Set();
306
+ this.clientScripts.set(client, paths);
307
+ }
308
+ if (!paths.has(pathname)) {
309
+ paths.add(pathname);
310
+ const scripts = await this.loadScripts(pathname, cache !== null && cache !== void 0 ? cache : new Map());
311
+ scripts.forEach((command) => {
312
+ // Only define the command if not already defined
313
+ if (!client[command.name]) {
314
+ client.defineCommand(command.name, command.options);
315
+ }
316
+ });
317
+ }
318
+ }
319
+ /**
320
+ * Clears the command cache
321
+ */
322
+ clearCache() {
323
+ this.commandCache.clear();
324
+ }
325
+ }
326
+ function ensureExt(filename, ext = 'lua') {
327
+ const foundExt = path.extname(filename);
328
+ if (foundExt && foundExt !== '.') {
329
+ return filename;
330
+ }
331
+ if (ext && ext[0] !== '.') {
332
+ ext = `.${ext}`;
333
+ }
334
+ return `${filename}${ext}`;
335
+ }
336
+ function splitFilename(filePath) {
337
+ const longName = path.basename(filePath, '.lua');
338
+ const [name, num] = longName.split('-');
339
+ const numberOfKeys = num ? parseInt(num, 10) : undefined;
340
+ return { name, numberOfKeys };
341
+ }
342
+ async function getFilenamesByPattern(pattern) {
343
+ return new Promise((resolve, reject) => {
344
+ glob(pattern, GlobOptions, (err, files) => {
345
+ return err ? reject(err) : resolve(files);
346
+ });
347
+ });
348
+ }
349
+ // Determine the project root
350
+ // https://stackoverflow.com/a/18721515
351
+ function getPkgJsonDir() {
352
+ for (const modPath of module.paths || []) {
353
+ try {
354
+ const prospectivePkgJsonDir = path.dirname(modPath);
355
+ fs.accessSync(modPath, fs.constants.F_OK);
356
+ return prospectivePkgJsonDir;
357
+ // eslint-disable-next-line no-empty
358
+ }
359
+ catch (e) { }
360
+ }
361
+ return '';
362
+ }
363
+ // https://stackoverflow.com/a/66842927
364
+ // some dark magic here :-)
365
+ // this version is preferred to the simpler version because of
366
+ // https://github.com/facebook/jest/issues/5303 -
367
+ // tldr: dont assume you're the only one with the doing something like this
368
+ function getCallerFile() {
369
+ var _a, _b, _c;
370
+ const originalFunc = Error.prepareStackTrace;
371
+ let callerFile = '';
372
+ try {
373
+ Error.prepareStackTrace = (_, stack) => stack;
374
+ const sites = new Error().stack;
375
+ const currentFile = (_a = sites.shift()) === null || _a === void 0 ? void 0 : _a.getFileName();
376
+ while (sites.length) {
377
+ callerFile = (_c = (_b = sites.shift()) === null || _b === void 0 ? void 0 : _b.getFileName()) !== null && _c !== void 0 ? _c : '';
378
+ if (currentFile !== callerFile) {
379
+ break;
380
+ }
381
+ }
382
+ // eslint-disable-next-line no-empty
383
+ }
384
+ catch (e) {
385
+ }
386
+ finally {
387
+ Error.prepareStackTrace = originalFunc;
388
+ }
389
+ return callerFile;
390
+ }
391
+ function sha1(data) {
392
+ return createHash('sha1').update(data).digest('hex');
393
+ }
394
+ function getPathHash(normalizedPath) {
395
+ return `@@${sha1(normalizedPath)}`;
396
+ }
397
+ function replaceAll(str, find, replace) {
398
+ return str.replace(new RegExp(find, 'g'), replace);
399
+ }
400
+ function removeEmptyLines(str) {
401
+ return str.replace(EmptyLineRegex, '');
402
+ }
403
+ //# sourceMappingURL=script-loader.js.map