bullmq 2.2.0 → 2.2.1

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 (234) hide show
  1. package/dist/cjs/classes/job.d.ts +1 -1
  2. package/dist/cjs/classes/redis-connection.d.ts +6 -2
  3. package/dist/cjs/classes/redis-connection.js +11 -5
  4. package/dist/cjs/classes/redis-connection.js.map +1 -1
  5. package/dist/cjs/scripts/addJob-8.d.ts +5 -0
  6. package/dist/{esm/commands/addJob-8.lua → cjs/scripts/addJob-8.js} +83 -31
  7. package/dist/cjs/scripts/addJob-8.js.map +1 -0
  8. package/dist/cjs/scripts/changeDelay-4.d.ts +5 -0
  9. package/dist/cjs/{commands/changeDelay-4.lua → scripts/changeDelay-4.js} +11 -11
  10. package/dist/cjs/scripts/changeDelay-4.js.map +1 -0
  11. package/dist/cjs/scripts/cleanJobsInSet-2.d.ts +5 -0
  12. package/dist/cjs/scripts/cleanJobsInSet-2.js +264 -0
  13. package/dist/cjs/scripts/cleanJobsInSet-2.js.map +1 -0
  14. package/dist/cjs/scripts/drain-4.d.ts +5 -0
  15. package/dist/cjs/{commands/includes/removeParentDependencyKey.lua → scripts/drain-4.js} +110 -10
  16. package/dist/cjs/scripts/drain-4.js.map +1 -0
  17. package/dist/cjs/scripts/extendLock-2.d.ts +5 -0
  18. package/dist/{esm/commands/extendLock-2.lua → cjs/scripts/extendLock-2.js} +11 -4
  19. package/dist/cjs/scripts/extendLock-2.js.map +1 -0
  20. package/dist/cjs/scripts/getState-7.d.ts +5 -0
  21. package/dist/{esm/commands/getState-7.lua → cjs/scripts/getState-7.js} +22 -12
  22. package/dist/cjs/scripts/getState-7.js.map +1 -0
  23. package/dist/cjs/scripts/getStateV2-7.d.ts +5 -0
  24. package/dist/cjs/{commands/getStateV2-7.lua → scripts/getStateV2-7.js} +11 -10
  25. package/dist/cjs/scripts/getStateV2-7.js.map +1 -0
  26. package/dist/cjs/scripts/index.d.ts +26 -0
  27. package/dist/cjs/scripts/index.js +30 -0
  28. package/dist/cjs/scripts/index.js.map +1 -0
  29. package/dist/cjs/scripts/isFinished-3.d.ts +5 -0
  30. package/dist/cjs/{commands/isFinished-3.lua → scripts/isFinished-3.js} +11 -10
  31. package/dist/cjs/scripts/isFinished-3.js.map +1 -0
  32. package/dist/cjs/scripts/isJobInList-1.d.ts +5 -0
  33. package/dist/cjs/scripts/isJobInList-1.js +32 -0
  34. package/dist/cjs/scripts/isJobInList-1.js.map +1 -0
  35. package/dist/cjs/scripts/moveStalledJobsToWait-8.d.ts +5 -0
  36. package/dist/cjs/scripts/moveStalledJobsToWait-8.js +291 -0
  37. package/dist/cjs/scripts/moveStalledJobsToWait-8.js.map +1 -0
  38. package/dist/cjs/scripts/moveToActive-9.d.ts +5 -0
  39. package/dist/cjs/scripts/moveToActive-9.js +207 -0
  40. package/dist/cjs/scripts/moveToActive-9.js.map +1 -0
  41. package/dist/cjs/scripts/moveToDelayed-5.d.ts +5 -0
  42. package/dist/cjs/{commands/moveToDelayed-5.lua → scripts/moveToDelayed-5.js} +11 -13
  43. package/dist/cjs/scripts/moveToDelayed-5.js.map +1 -0
  44. package/dist/cjs/scripts/moveToFinished-12.d.ts +5 -0
  45. package/dist/cjs/scripts/moveToFinished-12.js +538 -0
  46. package/dist/cjs/scripts/moveToFinished-12.js.map +1 -0
  47. package/dist/cjs/scripts/moveToWaitingChildren-4.d.ts +5 -0
  48. package/dist/cjs/{commands/moveToWaitingChildren-4.lua → scripts/moveToWaitingChildren-4.js} +11 -14
  49. package/dist/cjs/scripts/moveToWaitingChildren-4.js.map +1 -0
  50. package/dist/cjs/scripts/obliterate-2.d.ts +5 -0
  51. package/dist/cjs/scripts/obliterate-2.js +241 -0
  52. package/dist/cjs/scripts/obliterate-2.js.map +1 -0
  53. package/dist/cjs/scripts/pause-4.d.ts +5 -0
  54. package/dist/{esm/commands/pause-4.lua → cjs/scripts/pause-4.js} +11 -7
  55. package/dist/cjs/scripts/pause-4.js.map +1 -0
  56. package/dist/cjs/scripts/promote-6.d.ts +5 -0
  57. package/dist/cjs/{commands/promote-6.lua → scripts/promote-6.js} +22 -14
  58. package/dist/cjs/scripts/promote-6.js.map +1 -0
  59. package/dist/cjs/scripts/releaseLock-1.d.ts +5 -0
  60. package/dist/{esm/commands/releaseLock-1.lua → cjs/scripts/releaseLock-1.js} +11 -5
  61. package/dist/cjs/scripts/releaseLock-1.js.map +1 -0
  62. package/dist/cjs/scripts/removeJob-1.d.ts +5 -0
  63. package/dist/cjs/scripts/removeJob-1.js +206 -0
  64. package/dist/cjs/scripts/removeJob-1.js.map +1 -0
  65. package/dist/cjs/scripts/removeRepeatable-2.d.ts +5 -0
  66. package/dist/cjs/{commands/removeRepeatable-2.lua → scripts/removeRepeatable-2.js} +11 -7
  67. package/dist/cjs/scripts/removeRepeatable-2.js.map +1 -0
  68. package/dist/cjs/scripts/reprocessJob-4.d.ts +5 -0
  69. package/dist/{esm/commands/reprocessJob-4.lua → cjs/scripts/reprocessJob-4.js} +11 -5
  70. package/dist/cjs/scripts/reprocessJob-4.js.map +1 -0
  71. package/dist/cjs/scripts/retryJob-6.d.ts +5 -0
  72. package/dist/{esm/commands/retryJob-6.lua → cjs/scripts/retryJob-6.js} +22 -13
  73. package/dist/cjs/scripts/retryJob-6.js.map +1 -0
  74. package/dist/cjs/scripts/retryJobs-6.d.ts +5 -0
  75. package/dist/cjs/{commands/retryJobs-6.lua → scripts/retryJobs-6.js} +38 -15
  76. package/dist/cjs/scripts/retryJobs-6.js.map +1 -0
  77. package/dist/cjs/scripts/takeLock-1.d.ts +5 -0
  78. package/dist/cjs/{commands/takeLock-1.lua → scripts/takeLock-1.js} +11 -4
  79. package/dist/cjs/scripts/takeLock-1.js.map +1 -0
  80. package/dist/cjs/scripts/updateData-1.d.ts +5 -0
  81. package/dist/cjs/scripts/updateData-1.js +23 -0
  82. package/dist/cjs/scripts/updateData-1.js.map +1 -0
  83. package/dist/cjs/scripts/updateProgress-2.d.ts +5 -0
  84. package/dist/{esm/commands/updateProgress-2.lua → cjs/scripts/updateProgress-2.js} +11 -5
  85. package/dist/cjs/scripts/updateProgress-2.js.map +1 -0
  86. package/dist/esm/classes/job.d.ts +1 -1
  87. package/dist/esm/classes/redis-connection.d.ts +6 -2
  88. package/dist/esm/classes/redis-connection.js +11 -5
  89. package/dist/esm/classes/redis-connection.js.map +1 -1
  90. package/dist/esm/scripts/addJob-8.d.ts +5 -0
  91. package/dist/{cjs/commands/addJob-8.lua → esm/scripts/addJob-8.js} +80 -31
  92. package/dist/esm/scripts/addJob-8.js.map +1 -0
  93. package/dist/esm/scripts/changeDelay-4.d.ts +5 -0
  94. package/dist/esm/{commands/changeDelay-4.lua → scripts/changeDelay-4.js} +8 -11
  95. package/dist/esm/scripts/changeDelay-4.js.map +1 -0
  96. package/dist/esm/scripts/cleanJobsInSet-2.d.ts +5 -0
  97. package/dist/esm/scripts/cleanJobsInSet-2.js +261 -0
  98. package/dist/esm/scripts/cleanJobsInSet-2.js.map +1 -0
  99. package/dist/esm/scripts/drain-4.d.ts +5 -0
  100. package/dist/esm/{commands/includes/removeParentDependencyKey.lua → scripts/drain-4.js} +107 -10
  101. package/dist/esm/scripts/drain-4.js.map +1 -0
  102. package/dist/esm/scripts/extendLock-2.d.ts +5 -0
  103. package/dist/{cjs/commands/extendLock-2.lua → esm/scripts/extendLock-2.js} +8 -4
  104. package/dist/esm/scripts/extendLock-2.js.map +1 -0
  105. package/dist/esm/scripts/getState-7.d.ts +5 -0
  106. package/dist/{cjs/commands/getState-7.lua → esm/scripts/getState-7.js} +19 -12
  107. package/dist/esm/scripts/getState-7.js.map +1 -0
  108. package/dist/esm/scripts/getStateV2-7.d.ts +5 -0
  109. package/dist/esm/{commands/getStateV2-7.lua → scripts/getStateV2-7.js} +8 -10
  110. package/dist/esm/scripts/getStateV2-7.js.map +1 -0
  111. package/dist/esm/scripts/index.d.ts +26 -0
  112. package/dist/esm/scripts/index.js +27 -0
  113. package/dist/esm/scripts/index.js.map +1 -0
  114. package/dist/esm/scripts/isFinished-3.d.ts +5 -0
  115. package/dist/esm/{commands/isFinished-3.lua → scripts/isFinished-3.js} +8 -10
  116. package/dist/esm/scripts/isFinished-3.js.map +1 -0
  117. package/dist/esm/scripts/isJobInList-1.d.ts +5 -0
  118. package/dist/esm/scripts/isJobInList-1.js +29 -0
  119. package/dist/esm/scripts/isJobInList-1.js.map +1 -0
  120. package/dist/esm/scripts/moveStalledJobsToWait-8.d.ts +5 -0
  121. package/dist/esm/scripts/moveStalledJobsToWait-8.js +288 -0
  122. package/dist/esm/scripts/moveStalledJobsToWait-8.js.map +1 -0
  123. package/dist/esm/scripts/moveToActive-9.d.ts +5 -0
  124. package/dist/esm/scripts/moveToActive-9.js +204 -0
  125. package/dist/esm/scripts/moveToActive-9.js.map +1 -0
  126. package/dist/esm/scripts/moveToDelayed-5.d.ts +5 -0
  127. package/dist/esm/{commands/moveToDelayed-5.lua → scripts/moveToDelayed-5.js} +8 -13
  128. package/dist/esm/scripts/moveToDelayed-5.js.map +1 -0
  129. package/dist/esm/scripts/moveToFinished-12.d.ts +5 -0
  130. package/dist/esm/scripts/moveToFinished-12.js +535 -0
  131. package/dist/esm/scripts/moveToFinished-12.js.map +1 -0
  132. package/dist/esm/scripts/moveToWaitingChildren-4.d.ts +5 -0
  133. package/dist/esm/{commands/moveToWaitingChildren-4.lua → scripts/moveToWaitingChildren-4.js} +8 -14
  134. package/dist/esm/scripts/moveToWaitingChildren-4.js.map +1 -0
  135. package/dist/esm/scripts/obliterate-2.d.ts +5 -0
  136. package/dist/esm/scripts/obliterate-2.js +238 -0
  137. package/dist/esm/scripts/obliterate-2.js.map +1 -0
  138. package/dist/esm/scripts/pause-4.d.ts +5 -0
  139. package/dist/{cjs/commands/pause-4.lua → esm/scripts/pause-4.js} +8 -7
  140. package/dist/esm/scripts/pause-4.js.map +1 -0
  141. package/dist/esm/scripts/promote-6.d.ts +5 -0
  142. package/dist/esm/{commands/promote-6.lua → scripts/promote-6.js} +19 -14
  143. package/dist/esm/scripts/promote-6.js.map +1 -0
  144. package/dist/esm/scripts/releaseLock-1.d.ts +5 -0
  145. package/dist/{cjs/commands/releaseLock-1.lua → esm/scripts/releaseLock-1.js} +8 -5
  146. package/dist/esm/scripts/releaseLock-1.js.map +1 -0
  147. package/dist/esm/scripts/removeJob-1.d.ts +5 -0
  148. package/dist/esm/scripts/removeJob-1.js +203 -0
  149. package/dist/esm/scripts/removeJob-1.js.map +1 -0
  150. package/dist/esm/scripts/removeRepeatable-2.d.ts +5 -0
  151. package/dist/esm/{commands/removeRepeatable-2.lua → scripts/removeRepeatable-2.js} +8 -7
  152. package/dist/esm/scripts/removeRepeatable-2.js.map +1 -0
  153. package/dist/esm/scripts/reprocessJob-4.d.ts +5 -0
  154. package/dist/{cjs/commands/reprocessJob-4.lua → esm/scripts/reprocessJob-4.js} +8 -5
  155. package/dist/esm/scripts/reprocessJob-4.js.map +1 -0
  156. package/dist/esm/scripts/retryJob-6.d.ts +5 -0
  157. package/dist/{cjs/commands/retryJob-6.lua → esm/scripts/retryJob-6.js} +19 -13
  158. package/dist/esm/scripts/retryJob-6.js.map +1 -0
  159. package/dist/esm/scripts/retryJobs-6.d.ts +5 -0
  160. package/dist/esm/{commands/retryJobs-6.lua → scripts/retryJobs-6.js} +35 -15
  161. package/dist/esm/scripts/retryJobs-6.js.map +1 -0
  162. package/dist/esm/scripts/takeLock-1.d.ts +5 -0
  163. package/dist/esm/{commands/takeLock-1.lua → scripts/takeLock-1.js} +8 -4
  164. package/dist/esm/scripts/takeLock-1.js.map +1 -0
  165. package/dist/esm/scripts/updateData-1.d.ts +5 -0
  166. package/dist/esm/{commands/updateData-1.lua → scripts/updateData-1.js} +8 -4
  167. package/dist/esm/scripts/updateData-1.js.map +1 -0
  168. package/dist/esm/scripts/updateProgress-2.d.ts +5 -0
  169. package/dist/{cjs/commands/updateProgress-2.lua → esm/scripts/updateProgress-2.js} +8 -5
  170. package/dist/esm/scripts/updateProgress-2.js.map +1 -0
  171. package/package.json +4 -2
  172. package/dist/cjs/commands/cleanJobsInSet-2.lua +0 -46
  173. package/dist/cjs/commands/drain-4.lua +0 -25
  174. package/dist/cjs/commands/includes/addJobWithPriority.lua +0 -16
  175. package/dist/cjs/commands/includes/batches.lua +0 -18
  176. package/dist/cjs/commands/includes/checkItemInList.lua +0 -12
  177. package/dist/cjs/commands/includes/checkStalledJobs.lua +0 -137
  178. package/dist/cjs/commands/includes/cleanList.lua +0 -50
  179. package/dist/cjs/commands/includes/cleanSet.lua +0 -50
  180. package/dist/cjs/commands/includes/collectMetrics.lua +0 -46
  181. package/dist/cjs/commands/includes/destructureJobKey.lua +0 -12
  182. package/dist/cjs/commands/includes/getNextDelayedTimestamp.lua +0 -13
  183. package/dist/cjs/commands/includes/getTargetQueueList.lua +0 -12
  184. package/dist/cjs/commands/includes/getTimestamp.lua +0 -19
  185. package/dist/cjs/commands/includes/getZSetItems.lua +0 -7
  186. package/dist/cjs/commands/includes/isLocked.lua +0 -31
  187. package/dist/cjs/commands/includes/moveJobFromWaitToActive.lua +0 -84
  188. package/dist/cjs/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -25
  189. package/dist/cjs/commands/includes/promoteDelayedJobs.lua +0 -49
  190. package/dist/cjs/commands/includes/removeJob.lua +0 -13
  191. package/dist/cjs/commands/includes/removeJobFromAnyState.lua +0 -26
  192. package/dist/cjs/commands/includes/removeJobs.lua +0 -38
  193. package/dist/cjs/commands/includes/removeJobsByMaxAge.lua +0 -15
  194. package/dist/cjs/commands/includes/removeJobsByMaxCount.lua +0 -15
  195. package/dist/cjs/commands/includes/trimEvents.lua +0 -12
  196. package/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +0 -28
  197. package/dist/cjs/commands/isJobInList-1.lua +0 -16
  198. package/dist/cjs/commands/moveStalledJobsToWait-8.lua +0 -24
  199. package/dist/cjs/commands/moveToActive-9.lua +0 -67
  200. package/dist/cjs/commands/moveToFinished-12.lua +0 -201
  201. package/dist/cjs/commands/obliterate-2.lua +0 -94
  202. package/dist/cjs/commands/removeJob-1.lua +0 -72
  203. package/dist/cjs/commands/updateData-1.lua +0 -16
  204. package/dist/esm/commands/cleanJobsInSet-2.lua +0 -46
  205. package/dist/esm/commands/drain-4.lua +0 -25
  206. package/dist/esm/commands/includes/addJobWithPriority.lua +0 -16
  207. package/dist/esm/commands/includes/batches.lua +0 -18
  208. package/dist/esm/commands/includes/checkItemInList.lua +0 -12
  209. package/dist/esm/commands/includes/checkStalledJobs.lua +0 -137
  210. package/dist/esm/commands/includes/cleanList.lua +0 -50
  211. package/dist/esm/commands/includes/cleanSet.lua +0 -50
  212. package/dist/esm/commands/includes/collectMetrics.lua +0 -46
  213. package/dist/esm/commands/includes/destructureJobKey.lua +0 -12
  214. package/dist/esm/commands/includes/getNextDelayedTimestamp.lua +0 -13
  215. package/dist/esm/commands/includes/getTargetQueueList.lua +0 -12
  216. package/dist/esm/commands/includes/getTimestamp.lua +0 -19
  217. package/dist/esm/commands/includes/getZSetItems.lua +0 -7
  218. package/dist/esm/commands/includes/isLocked.lua +0 -31
  219. package/dist/esm/commands/includes/moveJobFromWaitToActive.lua +0 -84
  220. package/dist/esm/commands/includes/moveParentFromWaitingChildrenToFailed.lua +0 -25
  221. package/dist/esm/commands/includes/promoteDelayedJobs.lua +0 -49
  222. package/dist/esm/commands/includes/removeJob.lua +0 -13
  223. package/dist/esm/commands/includes/removeJobFromAnyState.lua +0 -26
  224. package/dist/esm/commands/includes/removeJobs.lua +0 -38
  225. package/dist/esm/commands/includes/removeJobsByMaxAge.lua +0 -15
  226. package/dist/esm/commands/includes/removeJobsByMaxCount.lua +0 -15
  227. package/dist/esm/commands/includes/trimEvents.lua +0 -12
  228. package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +0 -28
  229. package/dist/esm/commands/isJobInList-1.lua +0 -16
  230. package/dist/esm/commands/moveStalledJobsToWait-8.lua +0 -24
  231. package/dist/esm/commands/moveToActive-9.lua +0 -67
  232. package/dist/esm/commands/moveToFinished-12.lua +0 -201
  233. package/dist/esm/commands/obliterate-2.lua +0 -94
  234. package/dist/esm/commands/removeJob-1.lua +0 -72
@@ -0,0 +1,538 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.moveToFinished = void 0;
4
+ const content = `--[[
5
+ Move job from active to a finished status (completed o failed)
6
+ A job can only be moved to completed if it was active.
7
+ The job must be locked before it can be moved to a finished status,
8
+ and the lock must be released in this script.
9
+ Input:
10
+ KEYS[1] wait key
11
+ KEYS[2] active key
12
+ KEYS[3] priority key
13
+ KEYS[4] event stream key
14
+ KEYS[5] stalled key
15
+ -- Rate limiting
16
+ KEYS[6] rate limiter key
17
+ KEYS[7] delayed key
18
+ KEYS[8] paused key
19
+ KEYS[9] completed/failed key
20
+ KEYS[10] jobId key
21
+ KEYS[11] meta key
22
+ KEYS[12] metrics key
23
+ ARGV[1] jobId
24
+ ARGV[2] timestamp
25
+ ARGV[3] msg property returnvalue / failedReason
26
+ ARGV[4] return value / failed reason
27
+ ARGV[5] target (completed/failed)
28
+ ARGV[6] event data (? maybe just send jobid).
29
+ ARGV[7] fetch next?
30
+ ARGV[8] keys prefix
31
+ ARGV[9] opts
32
+ opts - token - lock token
33
+ opts - keepJobs
34
+ opts - lockDuration - lock duration in milliseconds
35
+ opts - parent - parent data
36
+ opts - parentKey
37
+ opts - attempts max attempts
38
+ opts - attemptsMade
39
+ opts - maxMetricsSize
40
+ opts - fpof - fail parent on fail
41
+ Output:
42
+ 0 OK
43
+ -1 Missing key.
44
+ -2 Missing lock.
45
+ -3 Job not in active set
46
+ -4 Job has pending dependencies
47
+ Events:
48
+ 'completed/failed'
49
+ ]]
50
+ local rcall = redis.call
51
+ --- Includes
52
+ --[[
53
+ Functions to collect metrics based on a current and previous count of jobs.
54
+ Granualarity is fixed at 1 minute.
55
+ ]]
56
+ --[[
57
+ Function to loop in batches.
58
+ Just a bit of warning, some commands as ZREM
59
+ could receive a maximum of 7000 parameters per call.
60
+ ]]
61
+ local function batches(n, batchSize)
62
+ local i = 0
63
+ return function()
64
+ local from = i * batchSize + 1
65
+ i = i + 1
66
+ if (from <= n) then
67
+ local to = math.min(from + batchSize - 1, n)
68
+ return from, to
69
+ end
70
+ end
71
+ end
72
+ local function collectMetrics(metaKey, dataPointsList, maxDataPoints,
73
+ timestamp)
74
+ -- Increment current count
75
+ local count = rcall("HINCRBY", metaKey, "count", 1) - 1
76
+ -- Compute how many data points we need to add to the list, N.
77
+ local prevTS = rcall("HGET", metaKey, "prevTS")
78
+ if not prevTS then
79
+ -- If prevTS is nil, set it to the current timestamp
80
+ rcall("HSET", metaKey, "prevTS", timestamp, "prevCount", 0)
81
+ return
82
+ end
83
+ local N = math.floor((timestamp - prevTS) / 60000)
84
+ if N > 0 then
85
+ local delta = count - rcall("HGET", metaKey, "prevCount")
86
+ -- If N > 1, add N-1 zeros to the list
87
+ if N > 1 then
88
+ local points = {}
89
+ points[1] = delta
90
+ for i = 2, N do
91
+ points[i] = 0
92
+ end
93
+ for from, to in batches(#points, 7000) do
94
+ rcall("LPUSH", dataPointsList, unpack(points, from, to))
95
+ end
96
+ else
97
+ -- LPUSH delta to the list
98
+ rcall("LPUSH", dataPointsList, delta)
99
+ end
100
+ -- LTRIM to keep list to its max size
101
+ rcall("LTRIM", dataPointsList, 0, maxDataPoints - 1)
102
+ -- update prev count with current count
103
+ rcall("HSET", metaKey, "prevCount", count, "prevTS", timestamp)
104
+ end
105
+ end
106
+ --[[
107
+ Function to return the next delayed job timestamp.
108
+ ]]
109
+ local function getNextDelayedTimestamp(delayedKey)
110
+ local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
111
+ if #result then
112
+ local nextTimestamp = tonumber(result[2])
113
+ if (nextTimestamp ~= nil) then
114
+ nextTimestamp = nextTimestamp / 0x1000
115
+ end
116
+ return nextTimestamp
117
+ end
118
+ end
119
+ --[[
120
+ Function to move job from wait state to active.
121
+ Input:
122
+ keys[1] wait key
123
+ keys[2] active key
124
+ keys[3] priority key
125
+ keys[4] stream events key
126
+ keys[5] stalled key
127
+ -- Rate limiting
128
+ keys[6] rate limiter key
129
+ keys[7] delayed key
130
+ opts - token - lock token
131
+ opts - lockDuration
132
+ opts - limiter
133
+ ]]
134
+ local function moveJobFromWaitToActive(keys, keyPrefix, jobId, processedOn, opts)
135
+ -- Check if we need to perform rate limiting.
136
+ local maxJobs = tonumber(opts['limiter'] and opts['limiter']['max'])
137
+ if(maxJobs) then
138
+ local rateLimiterKey = keys[6];
139
+ local groupKey
140
+ local groupKeyOpt = opts['limiter'] and opts['limiter']['groupKey'] or ""
141
+ if groupKeyOpt ~= "" then
142
+ groupKey = string.match(jobId, "[^:]+$")
143
+ if groupKey ~= jobId then
144
+ rateLimiterKey = rateLimiterKey .. ":" .. groupKey
145
+ end
146
+ end
147
+ local jobCounter
148
+ if groupKey ~= nil then
149
+ if rateLimiterKey ~= keys[6] then
150
+ jobCounter = tonumber(rcall("INCR", rateLimiterKey))
151
+ end
152
+ else
153
+ jobCounter = tonumber(rcall("INCR", rateLimiterKey))
154
+ end
155
+ local limiterDuration = opts['limiter'] and opts['limiter']['duration']
156
+ -- check if rate limit hit
157
+ if jobCounter ~= nil and jobCounter > maxJobs then
158
+ local exceedingJobs = jobCounter - maxJobs
159
+ local expireTime = tonumber(rcall("PTTL", rateLimiterKey))
160
+ local delay = expireTime + ((exceedingJobs - 1) * limiterDuration) / maxJobs;
161
+ local timestamp = delay + tonumber(processedOn)
162
+ -- put job into delayed queue
163
+ rcall("ZADD", keys[7], timestamp * 0x1000 + bit.band(jobCounter, 0xfff), jobId);
164
+ rcall("XADD", keys[4], "*", "event", "delayed", "jobId", jobId, "delay", timestamp);
165
+ -- remove from active queue
166
+ rcall("LREM", keys[2], 1, jobId)
167
+ -- Return when we can process more jobs
168
+ return expireTime
169
+ else
170
+ if jobCounter == 1 then
171
+ rcall("PEXPIRE", rateLimiterKey, limiterDuration)
172
+ end
173
+ end
174
+ end
175
+ local jobKey = keyPrefix .. jobId
176
+ local lockKey = jobKey .. ':lock'
177
+ -- get a lock
178
+ if opts['token'] ~= "0" then
179
+ rcall("SET", lockKey, opts['token'], "PX", opts['lockDuration'])
180
+ end
181
+ rcall("ZREM", keys[3], jobId) -- remove from priority
182
+ rcall("XADD", keys[4], "*", "event", "active", "jobId", jobId, "prev", "waiting")
183
+ rcall("HSET", jobKey, "processedOn", processedOn)
184
+ rcall("HINCRBY", jobKey, "attemptsMade", 1)
185
+ return {rcall("HGETALL", jobKey), jobId} -- get job data
186
+ end
187
+ --[[
188
+ Function to recursively move from waitingChildren to failed.
189
+ ]]
190
+ local function moveParentFromWaitingChildrenToFailed( parentQueueKey, parentKey, parentId, jobId, timestamp)
191
+ if rcall("ZREM", parentQueueKey .. ":waiting-children", parentId) == 1 then
192
+ rcall("ZADD", parentQueueKey .. ":failed", timestamp, parentId)
193
+ rcall("HMSET", parentKey, "failedReason", "child " .. jobId .. " failed", "finishedOn", timestamp)
194
+ local rawParentData = rcall("HGET", parentKey, "parent")
195
+ if rawParentData ~= false then
196
+ local parentData = cjson.decode(rawParentData)
197
+ if parentData['fpof'] then
198
+ moveParentFromWaitingChildrenToFailed(
199
+ parentData['queueKey'],
200
+ parentData['queueKey'] .. ':' .. parentData['id'],
201
+ parentData['id'],
202
+ parentKey,
203
+ timestamp
204
+ )
205
+ end
206
+ end
207
+ end
208
+ end
209
+ --[[
210
+ Updates the delay set, by moving delayed jobs that should
211
+ be processed now to "wait".
212
+ Events:
213
+ 'waiting'
214
+ ]]
215
+ local rcall = redis.call
216
+ -- Includes
217
+ --[[
218
+ Function to add job considering priority.
219
+ ]]
220
+ local function addJobWithPriority(priorityKey, priority, targetKey, jobId)
221
+ rcall("ZADD", priorityKey, priority, jobId)
222
+ local count = rcall("ZCOUNT", priorityKey, 0, priority)
223
+ local len = rcall("LLEN", targetKey)
224
+ local id = rcall("LINDEX", targetKey, len - (count - 1))
225
+ if id then
226
+ rcall("LINSERT", targetKey, "BEFORE", id, jobId)
227
+ else
228
+ rcall("RPUSH", targetKey, jobId)
229
+ end
230
+ end
231
+ --[[
232
+ Function to check for the meta.paused key to decide if we are paused or not
233
+ (since an empty list and !EXISTS are not really the same).
234
+ ]]
235
+ local function getTargetQueueList(queueMetaKey, waitKey, pausedKey)
236
+ if rcall("HEXISTS", queueMetaKey, "paused") ~= 1 then
237
+ return waitKey
238
+ else
239
+ return pausedKey
240
+ end
241
+ end
242
+ -- Try to get as much as 1000 jobs at once, and returns the nextTimestamp if
243
+ -- there are more delayed jobs to process.
244
+ local function promoteDelayedJobs(delayedKey, waitKey, priorityKey, pausedKey,
245
+ metaKey, eventStreamKey, prefix, timestamp)
246
+ local jobs = rcall("ZRANGEBYSCORE", delayedKey, 0, (timestamp + 1) * 0x1000, "LIMIT", 0, 1000)
247
+ if (#jobs > 0) then
248
+ rcall("ZREM", delayedKey, unpack(jobs))
249
+ -- check if we need to use push in paused instead of waiting
250
+ local target = getTargetQueueList(metaKey, waitKey, pausedKey)
251
+ for _, jobId in ipairs(jobs) do
252
+ local priority =
253
+ tonumber(rcall("HGET", prefix .. jobId, "priority")) or 0
254
+ if priority == 0 then
255
+ -- LIFO or FIFO
256
+ rcall("LPUSH", target, jobId)
257
+ else
258
+ addJobWithPriority(priorityKey, priority, target, jobId)
259
+ end
260
+ -- Emit waiting event
261
+ rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
262
+ jobId, "prev", "delayed")
263
+ rcall("HSET", prefix .. jobId, "delay", 0)
264
+ end
265
+ end
266
+ local nextTimestamp = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")[2]
267
+ if (nextTimestamp ~= nil) then
268
+ nextTimestamp = nextTimestamp / 0x1000
269
+ end
270
+ return nextTimestamp
271
+ end
272
+ --[[
273
+ Functions to remove jobs by max age.
274
+ ]]
275
+ -- Includes
276
+ --[[
277
+ Function to remove job.
278
+ ]]
279
+ -- Includes
280
+ --[[
281
+ Check if this job has a parent. If so we will just remove it from
282
+ the parent child list, but if it is the last child we should move the parent to "wait/paused"
283
+ which requires code from "moveToFinished"
284
+ ]]
285
+ --[[
286
+ Functions to destructure job key.
287
+ Just a bit of warning, these functions may be a bit slow and affect performance significantly.
288
+ ]]
289
+ local getJobIdFromKey = function (jobKey)
290
+ return string.match(jobKey, ".*:(.*)")
291
+ end
292
+ local getJobKeyPrefix = function (jobKey, jobId)
293
+ return string.sub(jobKey, 0, #jobKey - #jobId)
294
+ end
295
+ local function moveParentToWait(parentPrefix, parentId, emitEvent)
296
+ local parentTarget = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "wait", parentPrefix .. "paused")
297
+ rcall("RPUSH", parentTarget, parentId)
298
+ if emitEvent then
299
+ local parentEventStream = parentPrefix .. "events"
300
+ rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
301
+ end
302
+ end
303
+ local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey)
304
+ if parentKey then
305
+ local parentProcessedKey = parentKey .. ":processed"
306
+ rcall("HDEL", parentProcessedKey, jobKey)
307
+ local parentDependenciesKey = parentKey .. ":dependencies"
308
+ local result = rcall("SREM", parentDependenciesKey, jobKey)
309
+ if result > 0 then
310
+ local pendingDependencies = rcall("SCARD", parentDependenciesKey)
311
+ if pendingDependencies == 0 then
312
+ local parentId = getJobIdFromKey(parentKey)
313
+ local parentPrefix = getJobKeyPrefix(parentKey, parentId)
314
+ local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
315
+ if numRemovedElements == 1 then
316
+ if hard then
317
+ if parentPrefix == baseKey then
318
+ removeParentDependencyKey(parentKey, hard, nil, baseKey)
319
+ rcall("DEL", parentKey, parentKey .. ':logs',
320
+ parentKey .. ':dependencies', parentKey .. ':processed')
321
+ else
322
+ moveParentToWait(parentPrefix, parentId)
323
+ end
324
+ else
325
+ moveParentToWait(parentPrefix, parentId, true)
326
+ end
327
+ end
328
+ end
329
+ end
330
+ else
331
+ local missedParentKey = rcall("HGET", jobKey, "parentKey")
332
+ if( (type(missedParentKey) == "string") and missedParentKey ~= "" and (rcall("EXISTS", missedParentKey) == 1)) then
333
+ local parentProcessedKey = missedParentKey .. ":processed"
334
+ rcall("HDEL", parentProcessedKey, jobKey)
335
+ local parentDependenciesKey = missedParentKey .. ":dependencies"
336
+ local result = rcall("SREM", parentDependenciesKey, jobKey)
337
+ if result > 0 then
338
+ local pendingDependencies = rcall("SCARD", parentDependenciesKey)
339
+ if pendingDependencies == 0 then
340
+ local parentId = getJobIdFromKey(missedParentKey)
341
+ local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
342
+ local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
343
+ if numRemovedElements == 1 then
344
+ if hard then
345
+ if parentPrefix == baseKey then
346
+ removeParentDependencyKey(missedParentKey, hard, nil, baseKey)
347
+ rcall("DEL", missedParentKey, missedParentKey .. ':logs',
348
+ missedParentKey .. ':dependencies', missedParentKey .. ':processed')
349
+ else
350
+ moveParentToWait(parentPrefix, parentId)
351
+ end
352
+ else
353
+ moveParentToWait(parentPrefix, parentId, true)
354
+ end
355
+ end
356
+ end
357
+ end
358
+ end
359
+ end
360
+ end
361
+ local function removeJob(jobId, hard, baseKey)
362
+ local jobKey = baseKey .. jobId
363
+ removeParentDependencyKey(jobKey, hard, nil, baseKey)
364
+ rcall("DEL", jobKey, jobKey .. ':logs',
365
+ jobKey .. ':dependencies', jobKey .. ':processed')
366
+ end
367
+ local function removeJobsByMaxAge(timestamp, maxAge, targetSet, prefix)
368
+ local start = timestamp - maxAge * 1000
369
+ local jobIds = rcall("ZREVRANGEBYSCORE", targetSet, start, "-inf")
370
+ for i, jobId in ipairs(jobIds) do
371
+ removeJob(jobId, false, prefix)
372
+ end
373
+ rcall("ZREMRANGEBYSCORE", targetSet, "-inf", start)
374
+ end
375
+ --[[
376
+ Functions to remove jobs by max count.
377
+ ]]
378
+ -- Includes
379
+ local function removeJobsByMaxCount(maxCount, targetSet, prefix)
380
+ local start = maxCount
381
+ local jobIds = rcall("ZREVRANGE", targetSet, start, -1)
382
+ for i, jobId in ipairs(jobIds) do
383
+ removeJob(jobId, false, prefix)
384
+ end
385
+ rcall("ZREMRANGEBYRANK", targetSet, 0, -(maxCount + 1))
386
+ end
387
+ --[[
388
+ Function to trim events, default 10000.
389
+ ]]
390
+ local function trimEvents(metaKey, eventStreamKey)
391
+ local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
392
+ if maxEvents ~= false then
393
+ rcall("XTRIM", eventStreamKey, "MAXLEN", "~", maxEvents)
394
+ else
395
+ rcall("XTRIM", eventStreamKey, "MAXLEN", "~", 10000)
396
+ end
397
+ end
398
+ --[[
399
+ Validate and move or add dependencies to parent.
400
+ ]]
401
+ -- Includes
402
+ local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
403
+ parentId, jobIdKey, returnvalue )
404
+ local processedSet = parentKey .. ":processed"
405
+ rcall("HSET", processedSet, jobIdKey, returnvalue)
406
+ local activeParent = rcall("ZSCORE", parentQueueKey .. ":waiting-children", parentId)
407
+ if rcall("SCARD", parentDependenciesKey) == 0 and activeParent then
408
+ rcall("ZREM", parentQueueKey .. ":waiting-children", parentId)
409
+ local parentTarget = getTargetQueueList(parentQueueKey .. ":meta", parentQueueKey .. ":wait",
410
+ parentQueueKey .. ":paused")
411
+ local priority = tonumber(rcall("HGET", parentKey, "priority"))
412
+ -- Standard or priority add
413
+ if priority == 0 then
414
+ rcall("RPUSH", parentTarget, parentId)
415
+ else
416
+ addJobWithPriority(parentQueueKey .. ":priority", priority, parentTarget, parentId)
417
+ end
418
+ rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
419
+ end
420
+ end
421
+ local jobIdKey = KEYS[10]
422
+ if rcall("EXISTS", jobIdKey) == 1 then -- // Make sure job exists
423
+ local opts = cmsgpack.unpack(ARGV[9])
424
+ local token = opts['token']
425
+ local parentId = opts['parent'] and opts['parent']['id'] or ""
426
+ local parentQueueKey = opts['parent'] and opts['parent']['queue'] or ""
427
+ local parentKey = opts['parentKey'] or ""
428
+ local attempts = opts['attempts']
429
+ local attemptsMade = opts['attemptsMade']
430
+ local maxMetricsSize = opts['maxMetricsSize']
431
+ local maxCount = opts['keepJobs']['count']
432
+ local maxAge = opts['keepJobs']['age']
433
+ if token ~= "0" then
434
+ local lockKey = jobIdKey .. ':lock'
435
+ if rcall("GET", lockKey) == token then
436
+ rcall("DEL", lockKey)
437
+ rcall("SREM", KEYS[5], ARGV[1])
438
+ else
439
+ return -2
440
+ end
441
+ end
442
+ if rcall("SCARD", jobIdKey .. ":dependencies") ~= 0 then -- // Make sure it does not have pending dependencies
443
+ return -4
444
+ end
445
+ local jobId = ARGV[1]
446
+ local timestamp = ARGV[2]
447
+ -- Remove from active list (if not active we shall return error)
448
+ local numRemovedElements = rcall("LREM", KEYS[2], -1, jobId)
449
+ if (numRemovedElements < 1) then return -3 end
450
+ -- Trim events before emiting them to avoid trimming events emitted in this script
451
+ trimEvents(KEYS[11], KEYS[4])
452
+ -- If job has a parent we need to
453
+ -- 1) remove this job id from parents dependencies
454
+ -- 2) move the job Id to parent "processed" set
455
+ -- 3) push the results into parent "results" list
456
+ -- 4) if parent's dependencies is empty, then move parent to "wait/paused". Note it may be a different queue!.
457
+ if parentId == "" and parentKey ~= "" then
458
+ parentId = getJobIdFromKey(parentKey)
459
+ parentQueueKey = getJobKeyPrefix(parentKey, ":" .. parentId)
460
+ end
461
+ if parentId ~= "" then
462
+ if ARGV[5] == "completed" then
463
+ local dependenciesSet = parentKey .. ":dependencies"
464
+ if rcall("SREM", dependenciesSet, jobIdKey) == 1 then
465
+ updateParentDepsIfNeeded(parentKey, parentQueueKey, dependenciesSet,
466
+ parentId, jobIdKey, ARGV[4])
467
+ end
468
+ elseif opts['fpof'] then
469
+ moveParentFromWaitingChildrenToFailed(parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
470
+ end
471
+ end
472
+ -- Remove job?
473
+ if maxCount ~= 0 then
474
+ local targetSet = KEYS[9]
475
+ -- Add to complete/failed set
476
+ rcall("ZADD", targetSet, timestamp, jobId)
477
+ rcall("HMSET", jobIdKey, ARGV[3], ARGV[4], "finishedOn", timestamp)
478
+ -- "returnvalue" / "failedReason" and "finishedOn"
479
+ -- Remove old jobs?
480
+ local prefix = ARGV[8]
481
+ if maxAge ~= nil then
482
+ removeJobsByMaxAge(timestamp, maxAge, targetSet, prefix)
483
+ end
484
+ if maxCount ~= nil and maxCount > 0 then
485
+ removeJobsByMaxCount(maxCount, targetSet, prefix)
486
+ end
487
+ else
488
+ rcall("DEL", jobIdKey, jobIdKey .. ':logs', jobIdKey .. ':processed')
489
+ end
490
+ rcall("XADD", KEYS[4], "*", "event", ARGV[5], "jobId", jobId, ARGV[3],
491
+ ARGV[4])
492
+ if ARGV[5] == "failed" then
493
+ if tonumber(attemptsMade) >= tonumber(attempts) then
494
+ rcall("XADD", KEYS[4], "*", "event", "retries-exhausted", "jobId",
495
+ jobId, "attemptsMade", attemptsMade)
496
+ end
497
+ end
498
+ -- Collect metrics
499
+ if maxMetricsSize ~= "" then
500
+ collectMetrics(KEYS[12], KEYS[12]..':data', maxMetricsSize, timestamp)
501
+ end
502
+ -- Try to get next job to avoid an extra roundtrip if the queue is not closing,
503
+ -- and not rate limited.
504
+ if (ARGV[7] == "1") then
505
+ -- Check if there are delayed jobs that can be promoted
506
+ promoteDelayedJobs(KEYS[7], KEYS[1], KEYS[3], KEYS[8], KEYS[11], KEYS[4], ARGV[8], timestamp)
507
+ jobId = rcall("RPOPLPUSH", KEYS[1], KEYS[2])
508
+ if jobId == "0" then
509
+ rcall("LREM", KEYS[2], 1, 0)
510
+ elseif jobId then
511
+ return moveJobFromWaitToActive(KEYS, ARGV[8], jobId, timestamp, opts)
512
+ end
513
+ -- Return the timestamp for the next delayed job if any.
514
+ local nextTimestamp = getNextDelayedTimestamp(KEYS[7])
515
+ if (nextTimestamp ~= nil) then
516
+ -- The result is guaranteed to be positive, since the
517
+ -- ZRANGEBYSCORE command would have return a job otherwise.
518
+ return nextTimestamp - timestamp
519
+ end
520
+ end
521
+ local waitLen = rcall("LLEN", KEYS[1])
522
+ if waitLen == 0 then
523
+ local activeLen = rcall("LLEN", KEYS[2])
524
+ if activeLen == 0 then
525
+ rcall("XADD", KEYS[4], "*", "event", "drained")
526
+ end
527
+ end
528
+ return 0
529
+ else
530
+ return -1
531
+ end
532
+ `;
533
+ exports.moveToFinished = {
534
+ name: 'moveToFinished',
535
+ content,
536
+ keys: 12,
537
+ };
538
+ //# sourceMappingURL=moveToFinished-12.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moveToFinished-12.js","sourceRoot":"","sources":["../../../src/scripts/moveToFinished-12.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAghBf,CAAC;AACW,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAgB;IACtB,OAAO;IACP,IAAI,EAAE,EAAE;CACT,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const moveToWaitingChildren: {
2
+ name: string;
3
+ content: string;
4
+ keys: number;
5
+ };
@@ -1,17 +1,17 @@
1
- --[[
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.moveToWaitingChildren = void 0;
4
+ const content = `--[[
2
5
  Moves job from active to waiting children set.
3
-
4
6
  Input:
5
7
  KEYS[1] lock key
6
8
  KEYS[2] active key
7
9
  KEYS[3] waitChildrenKey key
8
10
  KEYS[4] job key
9
-
10
11
  ARGV[1] token
11
12
  ARGV[2] child key
12
13
  ARGV[3] timestamp
13
14
  ARGV[4] the id of the job
14
-
15
15
  Output:
16
16
  0 - OK
17
17
  1 - There are not pending dependencies.
@@ -20,7 +20,6 @@
20
20
  -3 - Job not in active set
21
21
  ]]
22
22
  local rcall = redis.call
23
-
24
23
  local function moveToWaitingChildren (activeKey, waitingChildrenKey, jobId, timestamp, lockKey, token)
25
24
  if token ~= "0" then
26
25
  if rcall("GET", lockKey) == token then
@@ -29,34 +28,32 @@ local function moveToWaitingChildren (activeKey, waitingChildrenKey, jobId, time
29
28
  return -2
30
29
  end
31
30
  end
32
-
33
31
  local score = tonumber(timestamp)
34
-
35
32
  local numRemovedElements = rcall("LREM", activeKey, -1, jobId)
36
-
37
33
  if(numRemovedElements < 1) then
38
34
  return -3
39
35
  end
40
-
41
36
  rcall("ZADD", waitingChildrenKey, score, jobId)
42
-
43
37
  return 0
44
38
  end
45
-
46
39
  if rcall("EXISTS", KEYS[4]) == 1 then
47
40
  if ARGV[2] ~= "" then
48
41
  if rcall("SISMEMBER", KEYS[4] .. ":dependencies", ARGV[2]) ~= 0 then
49
42
  return moveToWaitingChildren(KEYS[2], KEYS[3], ARGV[4], ARGV[3], KEYS[1], ARGV[1])
50
43
  end
51
-
52
44
  return 1
53
45
  else
54
46
  if rcall("SCARD", KEYS[4] .. ":dependencies") ~= 0 then
55
47
  return moveToWaitingChildren(KEYS[2], KEYS[3], ARGV[4], ARGV[3], KEYS[1], ARGV[1])
56
48
  end
57
-
58
49
  return 1
59
50
  end
60
51
  end
61
-
62
52
  return -1
53
+ `;
54
+ exports.moveToWaitingChildren = {
55
+ name: 'moveToWaitingChildren',
56
+ content,
57
+ keys: 4,
58
+ };
59
+ //# sourceMappingURL=moveToWaitingChildren-4.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"moveToWaitingChildren-4.js","sourceRoot":"","sources":["../../../src/scripts/moveToWaitingChildren-4.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDf,CAAC;AACW,QAAA,qBAAqB,GAAG;IACnC,IAAI,EAAE,uBAAuB;IAC7B,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const obliterate: {
2
+ name: string;
3
+ content: string;
4
+ keys: number;
5
+ };