bullmq 5.54.3 → 5.56.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 (106) hide show
  1. package/dist/cjs/classes/child-processor.js +9 -0
  2. package/dist/cjs/classes/child-processor.js.map +1 -1
  3. package/dist/cjs/classes/errors/index.js +2 -1
  4. package/dist/cjs/classes/errors/index.js.map +1 -1
  5. package/dist/cjs/classes/errors/waiting-error.js +19 -0
  6. package/dist/cjs/classes/errors/waiting-error.js.map +1 -0
  7. package/dist/cjs/classes/job.js.map +1 -1
  8. package/dist/cjs/classes/sandbox.js +4 -1
  9. package/dist/cjs/classes/sandbox.js.map +1 -1
  10. package/dist/cjs/classes/scripts.js +4 -1
  11. package/dist/cjs/classes/scripts.js.map +1 -1
  12. package/dist/cjs/classes/worker.js +2 -0
  13. package/dist/cjs/classes/worker.js.map +1 -1
  14. package/dist/cjs/commands/addDelayedJob-6.lua +2 -2
  15. package/dist/cjs/commands/{addParentJob-4.lua → addParentJob-5.lua} +7 -6
  16. package/dist/cjs/commands/{addPrioritizedJob-8.lua → addPrioritizedJob-9.lua} +11 -10
  17. package/dist/{esm/commands/addStandardJob-8.lua → cjs/commands/addStandardJob-9.lua} +9 -8
  18. package/dist/cjs/commands/includes/collectMetrics.lua +1 -1
  19. package/dist/cjs/commands/includes/deduplicateJob.lua +66 -20
  20. package/dist/cjs/commands/includes/storeJob.lua +1 -1
  21. package/dist/cjs/commands/moveJobFromActiveToWait-9.lua +1 -1
  22. package/dist/cjs/enums/parent-command.js +5 -4
  23. package/dist/cjs/enums/parent-command.js.map +1 -1
  24. package/dist/cjs/interfaces/index.js +0 -1
  25. package/dist/cjs/interfaces/index.js.map +1 -1
  26. package/dist/cjs/scripts/addDelayedJob-6.js +71 -22
  27. package/dist/cjs/scripts/addDelayedJob-6.js.map +1 -1
  28. package/dist/cjs/scripts/{addParentJob-4.js → addParentJob-5.js} +78 -28
  29. package/dist/cjs/scripts/addParentJob-5.js.map +1 -0
  30. package/dist/cjs/scripts/{addPrioritizedJob-8.js → addPrioritizedJob-9.js} +82 -32
  31. package/dist/cjs/scripts/{addPrioritizedJob-8.js.map → addPrioritizedJob-9.js.map} +1 -1
  32. package/dist/cjs/scripts/{addStandardJob-8.js → addStandardJob-9.js} +80 -30
  33. package/dist/cjs/scripts/{addStandardJob-8.js.map → addStandardJob-9.js.map} +1 -1
  34. package/dist/cjs/scripts/index.js +3 -3
  35. package/dist/cjs/scripts/moveJobFromActiveToWait-9.js +1 -1
  36. package/dist/cjs/scripts/moveToFinished-14.js +1 -1
  37. package/dist/cjs/tsconfig-cjs.tsbuildinfo +1 -1
  38. package/dist/cjs/{interfaces/debounce-options.js → types/deduplication-options.js} +1 -1
  39. package/dist/cjs/types/deduplication-options.js.map +1 -0
  40. package/dist/cjs/types/index.js +1 -0
  41. package/dist/cjs/types/index.js.map +1 -1
  42. package/dist/cjs/version.js +1 -1
  43. package/dist/esm/classes/child-processor.js +9 -0
  44. package/dist/esm/classes/child-processor.js.map +1 -1
  45. package/dist/esm/classes/errors/index.d.ts +2 -1
  46. package/dist/esm/classes/errors/index.js +2 -1
  47. package/dist/esm/classes/errors/index.js.map +1 -1
  48. package/dist/esm/classes/errors/waiting-error.d.ts +10 -0
  49. package/dist/esm/classes/errors/waiting-error.js +15 -0
  50. package/dist/esm/classes/errors/waiting-error.js.map +1 -0
  51. package/dist/esm/classes/job.d.ts +1 -1
  52. package/dist/esm/classes/job.js.map +1 -1
  53. package/dist/esm/classes/sandbox.js +4 -1
  54. package/dist/esm/classes/sandbox.js.map +1 -1
  55. package/dist/esm/classes/scripts.d.ts +1 -1
  56. package/dist/esm/classes/scripts.js +4 -1
  57. package/dist/esm/classes/scripts.js.map +1 -1
  58. package/dist/esm/classes/worker.js +3 -1
  59. package/dist/esm/classes/worker.js.map +1 -1
  60. package/dist/esm/commands/addDelayedJob-6.lua +2 -2
  61. package/dist/esm/commands/{addParentJob-4.lua → addParentJob-5.lua} +7 -6
  62. package/dist/esm/commands/{addPrioritizedJob-8.lua → addPrioritizedJob-9.lua} +11 -10
  63. package/dist/{cjs/commands/addStandardJob-8.lua → esm/commands/addStandardJob-9.lua} +9 -8
  64. package/dist/esm/commands/includes/collectMetrics.lua +1 -1
  65. package/dist/esm/commands/includes/deduplicateJob.lua +66 -20
  66. package/dist/esm/commands/includes/storeJob.lua +1 -1
  67. package/dist/esm/commands/moveJobFromActiveToWait-9.lua +1 -1
  68. package/dist/esm/enums/parent-command.d.ts +5 -4
  69. package/dist/esm/enums/parent-command.js +5 -4
  70. package/dist/esm/enums/parent-command.js.map +1 -1
  71. package/dist/esm/interfaces/index.d.ts +0 -1
  72. package/dist/esm/interfaces/index.js +0 -1
  73. package/dist/esm/interfaces/index.js.map +1 -1
  74. package/dist/esm/interfaces/sandboxed-job.d.ts +1 -0
  75. package/dist/esm/scripts/addDelayedJob-6.js +71 -22
  76. package/dist/esm/scripts/addDelayedJob-6.js.map +1 -1
  77. package/dist/esm/scripts/{addParentJob-4.js → addParentJob-5.js} +78 -28
  78. package/dist/esm/scripts/addParentJob-5.js.map +1 -0
  79. package/dist/esm/scripts/{addPrioritizedJob-8.js → addPrioritizedJob-9.js} +82 -32
  80. package/dist/esm/scripts/{addPrioritizedJob-8.js.map → addPrioritizedJob-9.js.map} +1 -1
  81. package/dist/esm/scripts/{addStandardJob-8.js → addStandardJob-9.js} +80 -30
  82. package/dist/esm/scripts/{addStandardJob-8.js.map → addStandardJob-9.js.map} +1 -1
  83. package/dist/esm/scripts/index.d.ts +3 -3
  84. package/dist/esm/scripts/index.js +3 -3
  85. package/dist/esm/scripts/moveJobFromActiveToWait-9.js +1 -1
  86. package/dist/esm/scripts/moveToFinished-14.js +1 -1
  87. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  88. package/dist/esm/types/deduplication-options.d.ts +22 -0
  89. package/dist/esm/types/deduplication-options.js +2 -0
  90. package/dist/esm/types/deduplication-options.js.map +1 -0
  91. package/dist/esm/types/index.d.ts +1 -0
  92. package/dist/esm/types/index.js +1 -0
  93. package/dist/esm/types/index.js.map +1 -1
  94. package/dist/esm/types/job-options.d.ts +6 -6
  95. package/dist/esm/version.d.ts +1 -1
  96. package/dist/esm/version.js +1 -1
  97. package/package.json +1 -1
  98. package/dist/cjs/interfaces/debounce-options.js.map +0 -1
  99. package/dist/cjs/scripts/addParentJob-4.js.map +0 -1
  100. package/dist/esm/interfaces/debounce-options.d.ts +0 -13
  101. package/dist/esm/interfaces/debounce-options.js +0 -2
  102. package/dist/esm/interfaces/debounce-options.js.map +0 -1
  103. package/dist/esm/scripts/addParentJob-4.js.map +0 -1
  104. /package/dist/esm/scripts/{addParentJob-4.d.ts → addParentJob-5.d.ts} +0 -0
  105. /package/dist/esm/scripts/{addPrioritizedJob-8.d.ts → addPrioritizedJob-9.d.ts} +0 -0
  106. /package/dist/esm/scripts/{addStandardJob-8.d.ts → addStandardJob-9.d.ts} +0 -0
@@ -89,8 +89,8 @@ else
89
89
  end
90
90
  end
91
91
 
92
- local deduplicationJobId = deduplicateJob(opts['de'], jobId, deduplicationKey,
93
- eventsKey, maxEvents)
92
+ local deduplicationJobId = deduplicateJob(opts['de'], jobId, delayedKey, deduplicationKey,
93
+ eventsKey, maxEvents, args[1])
94
94
  if deduplicationJobId then
95
95
  return deduplicationJobId
96
96
  end
@@ -7,8 +7,9 @@
7
7
  Input:
8
8
  KEYS[1] 'meta'
9
9
  KEYS[2] 'id'
10
- KEYS[3] 'completed'
11
- KEYS[4] events stream key
10
+ KEYS[3] 'delayed'
11
+ KEYS[4] 'completed'
12
+ KEYS[5] events stream key
12
13
 
13
14
  ARGV[1] msgpacked arguments array
14
15
  [1] key prefix,
@@ -32,8 +33,8 @@
32
33
  local metaKey = KEYS[1]
33
34
  local idKey = KEYS[2]
34
35
 
35
- local completedKey = KEYS[3]
36
- local eventsKey = KEYS[4]
36
+ local completedKey = KEYS[4]
37
+ local eventsKey = KEYS[5]
37
38
 
38
39
  local jobId
39
40
  local jobIdKey
@@ -81,8 +82,8 @@ else
81
82
  end
82
83
  end
83
84
 
84
- local deduplicationJobId = deduplicateJob(opts['de'], jobId,
85
- deduplicationKey, eventsKey, maxEvents)
85
+ local deduplicationJobId = deduplicateJob(opts['de'], jobId, KEYS[3],
86
+ deduplicationKey, eventsKey, maxEvents, args[1])
86
87
  if deduplicationJobId then
87
88
  return deduplicationJobId
88
89
  end
@@ -9,10 +9,11 @@
9
9
  KEYS[2] 'meta'
10
10
  KEYS[3] 'id'
11
11
  KEYS[4] 'prioritized'
12
- KEYS[5] 'completed'
13
- KEYS[6] 'active'
14
- KEYS[7] events stream key
15
- KEYS[8] 'pc' priority counter
12
+ KEYS[5] 'delayed'
13
+ KEYS[6] 'completed'
14
+ KEYS[7] 'active'
15
+ KEYS[8] events stream key
16
+ KEYS[9] 'pc' priority counter
16
17
 
17
18
  ARGV[1] msgpacked arguments array
18
19
  [1] key prefix,
@@ -37,10 +38,10 @@ local metaKey = KEYS[2]
37
38
  local idKey = KEYS[3]
38
39
  local priorityKey = KEYS[4]
39
40
 
40
- local completedKey = KEYS[5]
41
- local activeKey = KEYS[6]
42
- local eventsKey = KEYS[7]
43
- local priorityCounterKey = KEYS[8]
41
+ local completedKey = KEYS[6]
42
+ local activeKey = KEYS[7]
43
+ local eventsKey = KEYS[8]
44
+ local priorityCounterKey = KEYS[9]
44
45
 
45
46
  local jobId
46
47
  local jobIdKey
@@ -90,8 +91,8 @@ else
90
91
  end
91
92
  end
92
93
 
93
- local deduplicationJobId = deduplicateJob(opts['de'], jobId,
94
- deduplicationKey, eventsKey, maxEvents)
94
+ local deduplicationJobId = deduplicateJob(opts['de'], jobId, KEYS[5],
95
+ deduplicationKey, eventsKey, maxEvents, args[1])
95
96
  if deduplicationJobId then
96
97
  return deduplicationJobId
97
98
  end
@@ -20,9 +20,10 @@
20
20
  KEYS[3] 'meta'
21
21
  KEYS[4] 'id'
22
22
  KEYS[5] 'completed'
23
- KEYS[6] 'active'
24
- KEYS[7] events stream key
25
- KEYS[8] marker key
23
+ KEYS[6] 'delayed'
24
+ KEYS[7] 'active'
25
+ KEYS[8] events stream key
26
+ KEYS[9] marker key
26
27
 
27
28
  ARGV[1] msgpacked arguments array
28
29
  [1] key prefix,
@@ -43,7 +44,7 @@
43
44
  jobId - OK
44
45
  -5 - Missing parent key
45
46
  ]]
46
- local eventsKey = KEYS[7]
47
+ local eventsKey = KEYS[8]
47
48
 
48
49
  local jobId
49
50
  local jobIdKey
@@ -94,8 +95,8 @@ else
94
95
  end
95
96
  end
96
97
 
97
- local deduplicationJobId = deduplicateJob(opts['de'], jobId,
98
- deduplicationKey, eventsKey, maxEvents)
98
+ local deduplicationJobId = deduplicateJob(opts['de'], jobId, KEYS[6],
99
+ deduplicationKey, eventsKey, maxEvents, args[1])
99
100
  if deduplicationJobId then
100
101
  return deduplicationJobId
101
102
  end
@@ -104,11 +105,11 @@ end
104
105
  storeJob(eventsKey, jobIdKey, jobId, args[3], ARGV[2], opts, timestamp,
105
106
  parentKey, parentData, repeatJobKey)
106
107
 
107
- local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[6], KEYS[1], KEYS[2])
108
+ local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[7], KEYS[1], KEYS[2])
108
109
 
109
110
  -- LIFO or FIFO
110
111
  local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH'
111
- addJobInTargetList(target, KEYS[8], pushCmd, isPausedOrMaxed, jobId)
112
+ addJobInTargetList(target, KEYS[9], pushCmd, isPausedOrMaxed, jobId)
112
113
 
113
114
  -- Emit waiting event
114
115
  rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
@@ -1,7 +1,7 @@
1
1
  --[[
2
2
  Functions to collect metrics based on a current and previous count of jobs.
3
3
  Granualarity is fixed at 1 minute.
4
- ]]
4
+ ]]
5
5
  --- @include "batches"
6
6
  local function collectMetrics(metaKey, dataPointsList, maxDataPoints,
7
7
  timestamp)
@@ -1,23 +1,69 @@
1
1
  --[[
2
2
  Function to debounce a job.
3
- ]]
4
- local function deduplicateJob(deduplicationOpts, jobId, deduplicationKey, eventsKey, maxEvents)
5
- local deduplicationId = deduplicationOpts and deduplicationOpts['id']
6
- if deduplicationId then
7
- local ttl = deduplicationOpts['ttl']
8
- local deduplicationKeyExists
9
- if ttl then
10
- deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
11
- else
12
- deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
13
- end
14
- if deduplicationKeyExists then
15
- local currentDebounceJobId = rcall('GET', deduplicationKey)
16
- rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId", currentDebounceJobId,
17
- "debounceId", deduplicationId)
18
- rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
19
- currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
20
- return currentDebounceJobId
21
- end
22
- end
3
+ ]]
4
+ -- Includes
5
+ --- @include "removeJobKeys"
6
+ local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
7
+ prefix)
8
+ local deduplicationId = deduplicationOpts and deduplicationOpts['id']
9
+ if deduplicationId then
10
+ local ttl = deduplicationOpts['ttl']
11
+ if deduplicationOpts['replace'] and ttl and ttl > 0 then
12
+ local currentDebounceJobId = rcall('GET', deduplicationKey)
13
+ if currentDebounceJobId then
14
+ if rcall("ZREM", delayedKey, currentDebounceJobId) > 0 then
15
+ removeJobKeys(prefix .. currentDebounceJobId)
16
+ rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDebounceJobId,
17
+ "prev", "delayed")
18
+
19
+ if deduplicationOpts['extend'] then
20
+ rcall('SET', deduplicationKey, jobId, 'PX', ttl)
21
+ else
22
+ rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
23
+ end
24
+
25
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
26
+ jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDebounceJobId)
27
+ return
28
+ else
29
+ return currentDebounceJobId
30
+ end
31
+ else
32
+ rcall('SET', deduplicationKey, jobId, 'PX', ttl)
33
+ return
34
+ end
35
+ else
36
+ local ttl = deduplicationOpts['ttl']
37
+ local deduplicationKeyExists
38
+ if ttl then
39
+ if deduplicationOpts['extend'] then
40
+ local currentDebounceJobId = rcall('GET', deduplicationKey)
41
+ if currentDebounceJobId then
42
+ rcall('SET', deduplicationKey, currentDebounceJobId, 'PX', ttl)
43
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
44
+ "jobId", currentDebounceJobId, "debounceId", deduplicationId)
45
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
46
+ currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
47
+ return currentDebounceJobId
48
+ else
49
+ rcall('SET', deduplicationKey, jobId, 'PX', ttl)
50
+ return
51
+ end
52
+ else
53
+ deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
54
+ end
55
+ else
56
+ deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
57
+ end
58
+
59
+ if deduplicationKeyExists then
60
+ local currentDebounceJobId = rcall('GET', deduplicationKey)
61
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
62
+ currentDebounceJobId, "debounceId", deduplicationId)
63
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
64
+ currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
65
+ return currentDebounceJobId
66
+ end
67
+ end
68
+ end
23
69
  end
@@ -7,7 +7,7 @@ local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
7
7
  local delay = opts['delay'] or 0
8
8
  local priority = opts['priority'] or 0
9
9
  local debounceId = opts['de'] and opts['de']['id']
10
-
10
+
11
11
  local optionalValues = {}
12
12
  if parentKey ~= nil then
13
13
  table.insert(optionalValues, "parentKey")
@@ -51,7 +51,7 @@ if removed > 0 then
51
51
 
52
52
  -- Emit waiting event
53
53
  rcall("XADD", KEYS[9], "MAXLEN", "~", maxEvents, "*", "event", "waiting",
54
- "jobId", jobId)
54
+ "jobId", jobId, "prev", "active")
55
55
  end
56
56
 
57
57
  local pttl = rcall("PTTL", KEYS[6])
@@ -10,9 +10,10 @@ var ParentCommand;
10
10
  ParentCommand[ParentCommand["InitCompleted"] = 4] = "InitCompleted";
11
11
  ParentCommand[ParentCommand["Log"] = 5] = "Log";
12
12
  ParentCommand[ParentCommand["MoveToDelayed"] = 6] = "MoveToDelayed";
13
- ParentCommand[ParentCommand["Progress"] = 7] = "Progress";
14
- ParentCommand[ParentCommand["Update"] = 8] = "Update";
15
- ParentCommand[ParentCommand["GetChildrenValues"] = 9] = "GetChildrenValues";
16
- ParentCommand[ParentCommand["GetIgnoredChildrenFailures"] = 10] = "GetIgnoredChildrenFailures";
13
+ ParentCommand[ParentCommand["MoveToWait"] = 7] = "MoveToWait";
14
+ ParentCommand[ParentCommand["Progress"] = 8] = "Progress";
15
+ ParentCommand[ParentCommand["Update"] = 9] = "Update";
16
+ ParentCommand[ParentCommand["GetChildrenValues"] = 10] = "GetChildrenValues";
17
+ ParentCommand[ParentCommand["GetIgnoredChildrenFailures"] = 11] = "GetIgnoredChildrenFailures";
17
18
  })(ParentCommand = exports.ParentCommand || (exports.ParentCommand = {}));
18
19
  //# sourceMappingURL=parent-command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parent-command.js","sourceRoot":"","sources":["../../../src/enums/parent-command.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAYX;AAZD,WAAY,aAAa;IACvB,2DAAS,CAAA;IACT,mDAAK,CAAA;IACL,qDAAM,CAAA;IACN,6DAAU,CAAA;IACV,mEAAa,CAAA;IACb,+CAAG,CAAA;IACH,mEAAa,CAAA;IACb,yDAAQ,CAAA;IACR,qDAAM,CAAA;IACN,2EAAiB,CAAA;IACjB,8FAA0B,CAAA;AAC5B,CAAC,EAZW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAYxB"}
1
+ {"version":3,"file":"parent-command.js","sourceRoot":"","sources":["../../../src/enums/parent-command.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAaX;AAbD,WAAY,aAAa;IACvB,2DAAS,CAAA;IACT,mDAAK,CAAA;IACL,qDAAM,CAAA;IACN,6DAAU,CAAA;IACV,mEAAa,CAAA;IACb,+CAAG,CAAA;IACH,mEAAa,CAAA;IACb,6DAAU,CAAA;IACV,yDAAQ,CAAA;IACR,qDAAM,CAAA;IACN,4EAAiB,CAAA;IACjB,8FAA0B,CAAA;AAC5B,CAAC,EAbW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAaxB"}
@@ -6,7 +6,6 @@ tslib_1.__exportStar(require("./backoff-options"), exports);
6
6
  tslib_1.__exportStar(require("./base-job-options"), exports);
7
7
  tslib_1.__exportStar(require("./child-message"), exports);
8
8
  tslib_1.__exportStar(require("./connection"), exports);
9
- tslib_1.__exportStar(require("./debounce-options"), exports);
10
9
  tslib_1.__exportStar(require("./flow-job"), exports);
11
10
  tslib_1.__exportStar(require("./ioredis-events"), exports);
12
11
  tslib_1.__exportStar(require("./job-json"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,4DAAkC;AAClC,6DAAmC;AACnC,0DAAgC;AAChC,uDAA6B;AAC7B,6DAAmC;AACnC,qDAA2B;AAC3B,2DAAiC;AACjC,qDAA2B;AAC3B,+DAAqC;AACrC,sDAA4B;AAC5B,4DAAkC;AAClC,oDAA0B;AAC1B,wDAA8B;AAC9B,2DAAiC;AACjC,mDAAyB;AACzB,2DAAiC;AACjC,0DAAgC;AAChC,iEAAuC;AACvC,0DAAgC;AAChC,0DAAgC;AAChC,2DAAiC;AACjC,+DAAqC;AACrC,2DAAiC;AACjC,oEAA0C;AAC1C,0DAAgC;AAChC,8DAAoC;AACpC,2DAAiC;AACjC,sDAA4B;AAC5B,qDAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,4DAAkC;AAClC,6DAAmC;AACnC,0DAAgC;AAChC,uDAA6B;AAC7B,qDAA2B;AAC3B,2DAAiC;AACjC,qDAA2B;AAC3B,+DAAqC;AACrC,sDAA4B;AAC5B,4DAAkC;AAClC,oDAA0B;AAC1B,wDAA8B;AAC9B,2DAAiC;AACjC,mDAAyB;AACzB,2DAAiC;AACjC,0DAAgC;AAChC,iEAAuC;AACvC,0DAAgC;AAChC,0DAAgC;AAChC,2DAAiC;AACjC,+DAAqC;AACrC,2DAAiC;AACjC,oEAA0C;AAC1C,0DAAgC;AAChC,8DAAoC;AACpC,2DAAiC;AACjC,sDAA4B;AAC5B,qDAA2B"}
@@ -114,26 +114,75 @@ local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
114
114
  end
115
115
  --[[
116
116
  Function to debounce a job.
117
- ]]
118
- local function deduplicateJob(deduplicationOpts, jobId, deduplicationKey, eventsKey, maxEvents)
119
- local deduplicationId = deduplicationOpts and deduplicationOpts['id']
120
- if deduplicationId then
121
- local ttl = deduplicationOpts['ttl']
122
- local deduplicationKeyExists
123
- if ttl then
124
- deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
125
- else
126
- deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
127
- end
128
- if deduplicationKeyExists then
129
- local currentDebounceJobId = rcall('GET', deduplicationKey)
130
- rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId", currentDebounceJobId,
131
- "debounceId", deduplicationId)
132
- rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
133
- currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
134
- return currentDebounceJobId
135
- end
136
- end
117
+ ]]
118
+ -- Includes
119
+ --[[
120
+ Function to remove job keys.
121
+ ]]
122
+ local function removeJobKeys(jobKey)
123
+ return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
124
+ jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
125
+ end
126
+ local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
127
+ prefix)
128
+ local deduplicationId = deduplicationOpts and deduplicationOpts['id']
129
+ if deduplicationId then
130
+ local ttl = deduplicationOpts['ttl']
131
+ if deduplicationOpts['replace'] and ttl and ttl > 0 then
132
+ local currentDebounceJobId = rcall('GET', deduplicationKey)
133
+ if currentDebounceJobId then
134
+ if rcall("ZREM", delayedKey, currentDebounceJobId) > 0 then
135
+ removeJobKeys(prefix .. currentDebounceJobId)
136
+ rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDebounceJobId,
137
+ "prev", "delayed")
138
+ if deduplicationOpts['extend'] then
139
+ rcall('SET', deduplicationKey, jobId, 'PX', ttl)
140
+ else
141
+ rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
142
+ end
143
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
144
+ jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDebounceJobId)
145
+ return
146
+ else
147
+ return currentDebounceJobId
148
+ end
149
+ else
150
+ rcall('SET', deduplicationKey, jobId, 'PX', ttl)
151
+ return
152
+ end
153
+ else
154
+ local ttl = deduplicationOpts['ttl']
155
+ local deduplicationKeyExists
156
+ if ttl then
157
+ if deduplicationOpts['extend'] then
158
+ local currentDebounceJobId = rcall('GET', deduplicationKey)
159
+ if currentDebounceJobId then
160
+ rcall('SET', deduplicationKey, currentDebounceJobId, 'PX', ttl)
161
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
162
+ "jobId", currentDebounceJobId, "debounceId", deduplicationId)
163
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
164
+ currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
165
+ return currentDebounceJobId
166
+ else
167
+ rcall('SET', deduplicationKey, jobId, 'PX', ttl)
168
+ return
169
+ end
170
+ else
171
+ deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
172
+ end
173
+ else
174
+ deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
175
+ end
176
+ if deduplicationKeyExists then
177
+ local currentDebounceJobId = rcall('GET', deduplicationKey)
178
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
179
+ currentDebounceJobId, "debounceId", deduplicationId)
180
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
181
+ currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
182
+ return currentDebounceJobId
183
+ end
184
+ end
185
+ end
137
186
  end
138
187
  --[[
139
188
  Function to get max events value or set by default 10000.
@@ -381,8 +430,8 @@ else
381
430
  maxEvents, timestamp)
382
431
  end
383
432
  end
384
- local deduplicationJobId = deduplicateJob(opts['de'], jobId, deduplicationKey,
385
- eventsKey, maxEvents)
433
+ local deduplicationJobId = deduplicateJob(opts['de'], jobId, delayedKey, deduplicationKey,
434
+ eventsKey, maxEvents, args[1])
386
435
  if deduplicationJobId then
387
436
  return deduplicationJobId
388
437
  end
@@ -1 +1 @@
1
- {"version":3,"file":"addDelayedJob-6.js","sourceRoot":"","sources":["../../../src/scripts/addDelayedJob-6.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyYf,CAAC;AACW,QAAA,aAAa,GAAG;IAC3B,IAAI,EAAE,eAAe;IACrB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
1
+ {"version":3,"file":"addDelayedJob-6.js","sourceRoot":"","sources":["../../../src/scripts/addDelayedJob-6.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0bf,CAAC;AACW,QAAA,aAAa,GAAG;IAC3B,IAAI,EAAE,eAAe;IACrB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}
@@ -9,8 +9,9 @@ const content = `--[[
9
9
  Input:
10
10
  KEYS[1] 'meta'
11
11
  KEYS[2] 'id'
12
- KEYS[3] 'completed'
13
- KEYS[4] events stream key
12
+ KEYS[3] 'delayed'
13
+ KEYS[4] 'completed'
14
+ KEYS[5] events stream key
14
15
  ARGV[1] msgpacked arguments array
15
16
  [1] key prefix,
16
17
  [2] custom id (will not generate one automatically)
@@ -30,8 +31,8 @@ const content = `--[[
30
31
  ]]
31
32
  local metaKey = KEYS[1]
32
33
  local idKey = KEYS[2]
33
- local completedKey = KEYS[3]
34
- local eventsKey = KEYS[4]
34
+ local completedKey = KEYS[4]
35
+ local eventsKey = KEYS[5]
35
36
  local jobId
36
37
  local jobIdKey
37
38
  local rcall = redis.call
@@ -46,26 +47,75 @@ local parentData
46
47
  -- Includes
47
48
  --[[
48
49
  Function to debounce a job.
49
- ]]
50
- local function deduplicateJob(deduplicationOpts, jobId, deduplicationKey, eventsKey, maxEvents)
51
- local deduplicationId = deduplicationOpts and deduplicationOpts['id']
52
- if deduplicationId then
53
- local ttl = deduplicationOpts['ttl']
54
- local deduplicationKeyExists
55
- if ttl then
56
- deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
57
- else
58
- deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
59
- end
60
- if deduplicationKeyExists then
61
- local currentDebounceJobId = rcall('GET', deduplicationKey)
62
- rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId", currentDebounceJobId,
63
- "debounceId", deduplicationId)
64
- rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
65
- currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
66
- return currentDebounceJobId
67
- end
68
- end
50
+ ]]
51
+ -- Includes
52
+ --[[
53
+ Function to remove job keys.
54
+ ]]
55
+ local function removeJobKeys(jobKey)
56
+ return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
57
+ jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
58
+ end
59
+ local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
60
+ prefix)
61
+ local deduplicationId = deduplicationOpts and deduplicationOpts['id']
62
+ if deduplicationId then
63
+ local ttl = deduplicationOpts['ttl']
64
+ if deduplicationOpts['replace'] and ttl and ttl > 0 then
65
+ local currentDebounceJobId = rcall('GET', deduplicationKey)
66
+ if currentDebounceJobId then
67
+ if rcall("ZREM", delayedKey, currentDebounceJobId) > 0 then
68
+ removeJobKeys(prefix .. currentDebounceJobId)
69
+ rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDebounceJobId,
70
+ "prev", "delayed")
71
+ if deduplicationOpts['extend'] then
72
+ rcall('SET', deduplicationKey, jobId, 'PX', ttl)
73
+ else
74
+ rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
75
+ end
76
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
77
+ jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDebounceJobId)
78
+ return
79
+ else
80
+ return currentDebounceJobId
81
+ end
82
+ else
83
+ rcall('SET', deduplicationKey, jobId, 'PX', ttl)
84
+ return
85
+ end
86
+ else
87
+ local ttl = deduplicationOpts['ttl']
88
+ local deduplicationKeyExists
89
+ if ttl then
90
+ if deduplicationOpts['extend'] then
91
+ local currentDebounceJobId = rcall('GET', deduplicationKey)
92
+ if currentDebounceJobId then
93
+ rcall('SET', deduplicationKey, currentDebounceJobId, 'PX', ttl)
94
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
95
+ "jobId", currentDebounceJobId, "debounceId", deduplicationId)
96
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
97
+ currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
98
+ return currentDebounceJobId
99
+ else
100
+ rcall('SET', deduplicationKey, jobId, 'PX', ttl)
101
+ return
102
+ end
103
+ else
104
+ deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
105
+ end
106
+ else
107
+ deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
108
+ end
109
+ if deduplicationKeyExists then
110
+ local currentDebounceJobId = rcall('GET', deduplicationKey)
111
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
112
+ currentDebounceJobId, "debounceId", deduplicationId)
113
+ rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
114
+ currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
115
+ return currentDebounceJobId
116
+ end
117
+ end
118
+ end
69
119
  end
70
120
  --[[
71
121
  Function to get max events value or set by default 10000.
@@ -336,8 +386,8 @@ else
336
386
  maxEvents, timestamp)
337
387
  end
338
388
  end
339
- local deduplicationJobId = deduplicateJob(opts['de'], jobId,
340
- deduplicationKey, eventsKey, maxEvents)
389
+ local deduplicationJobId = deduplicateJob(opts['de'], jobId, KEYS[3],
390
+ deduplicationKey, eventsKey, maxEvents, args[1])
341
391
  if deduplicationJobId then
342
392
  return deduplicationJobId
343
393
  end
@@ -357,6 +407,6 @@ return jobId .. "" -- convert to string
357
407
  exports.addParentJob = {
358
408
  name: 'addParentJob',
359
409
  content,
360
- keys: 4,
410
+ keys: 5,
361
411
  };
362
- //# sourceMappingURL=addParentJob-4.js.map
412
+ //# sourceMappingURL=addParentJob-5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addParentJob-5.js","sourceRoot":"","sources":["../../../src/scripts/addParentJob-5.ts"],"names":[],"mappings":";;;AAAA,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkZf,CAAC;AACW,QAAA,YAAY,GAAG;IAC1B,IAAI,EAAE,cAAc;IACpB,OAAO;IACP,IAAI,EAAE,CAAC;CACR,CAAC"}