bullmq 1.87.0 → 1.88.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 (53) hide show
  1. package/dist/cjs/classes/child-pool.js +1 -2
  2. package/dist/cjs/classes/child-pool.js.map +1 -1
  3. package/dist/cjs/classes/child-processor.js +13 -7
  4. package/dist/cjs/classes/child-processor.js.map +1 -1
  5. package/dist/cjs/classes/compat.d.ts +7 -7
  6. package/dist/cjs/classes/flow-producer.d.ts +7 -7
  7. package/dist/cjs/classes/flow-producer.js +2 -2
  8. package/dist/cjs/classes/flow-producer.js.map +1 -1
  9. package/dist/cjs/classes/job.d.ts +4 -4
  10. package/dist/cjs/classes/job.js +2 -2
  11. package/dist/cjs/classes/job.js.map +1 -1
  12. package/dist/cjs/classes/queue-events.js +1 -1
  13. package/dist/cjs/classes/queue-getters.js +11 -12
  14. package/dist/cjs/classes/queue-getters.js.map +1 -1
  15. package/dist/cjs/classes/queue-scheduler.js +1 -1
  16. package/dist/cjs/classes/redis-connection.js +3 -4
  17. package/dist/cjs/classes/redis-connection.js.map +1 -1
  18. package/dist/cjs/classes/worker.js +1 -1
  19. package/dist/cjs/commands/includes/cleanList.lua +6 -2
  20. package/dist/cjs/commands/includes/removeJob.lua +2 -2
  21. package/dist/cjs/commands/includes/removeJobFromAnyState.lua +1 -1
  22. package/dist/cjs/commands/includes/removeParentDependencyKey.lua +5 -7
  23. package/dist/cjs/commands/includes/updateParentDepsIfNeeded.lua +1 -1
  24. package/dist/cjs/commands/removeJob-1.lua +1 -1
  25. package/dist/cjs/commands/retryJobs-6.lua +0 -1
  26. package/dist/cjs/utils.d.ts +1 -0
  27. package/dist/esm/classes/child-pool.js +1 -2
  28. package/dist/esm/classes/child-pool.js.map +1 -1
  29. package/dist/esm/classes/child-processor.js +13 -7
  30. package/dist/esm/classes/child-processor.js.map +1 -1
  31. package/dist/esm/classes/compat.d.ts +7 -7
  32. package/dist/esm/classes/flow-producer.d.ts +7 -7
  33. package/dist/esm/classes/flow-producer.js +2 -2
  34. package/dist/esm/classes/flow-producer.js.map +1 -1
  35. package/dist/esm/classes/job.d.ts +4 -4
  36. package/dist/esm/classes/job.js +2 -2
  37. package/dist/esm/classes/job.js.map +1 -1
  38. package/dist/esm/classes/queue-events.js +1 -1
  39. package/dist/esm/classes/queue-getters.js +11 -12
  40. package/dist/esm/classes/queue-getters.js.map +1 -1
  41. package/dist/esm/classes/queue-scheduler.js +1 -1
  42. package/dist/esm/classes/redis-connection.js +2 -3
  43. package/dist/esm/classes/redis-connection.js.map +1 -1
  44. package/dist/esm/classes/worker.js +1 -1
  45. package/dist/esm/commands/includes/cleanList.lua +6 -2
  46. package/dist/esm/commands/includes/removeJob.lua +2 -2
  47. package/dist/esm/commands/includes/removeJobFromAnyState.lua +1 -1
  48. package/dist/esm/commands/includes/removeParentDependencyKey.lua +5 -7
  49. package/dist/esm/commands/includes/updateParentDepsIfNeeded.lua +1 -1
  50. package/dist/esm/commands/removeJob-1.lua +1 -1
  51. package/dist/esm/commands/retryJobs-6.lua +0 -1
  52. package/dist/esm/utils.d.ts +1 -0
  53. package/package.json +74 -51
@@ -7,7 +7,8 @@
7
7
  --- @include "getTimestamp"
8
8
  --- @include "removeJob"
9
9
 
10
- local function cleanList(listKey, jobKeyPrefix, rangeStart, rangeEnd, timestamp, skipCheckLock)
10
+ local function cleanList(listKey, jobKeyPrefix, rangeStart, rangeEnd,
11
+ timestamp, isWaiting)
11
12
  local jobs = rcall("LRANGE", listKey, rangeStart, rangeEnd)
12
13
  local deleted = {}
13
14
  local deletedCount = 0
@@ -20,7 +21,7 @@ local function cleanList(listKey, jobKeyPrefix, rangeStart, rangeEnd, timestamp,
20
21
  end
21
22
 
22
23
  local jobKey = jobKeyPrefix .. job
23
- if (skipCheckLock or rcall("EXISTS", jobKey .. ":lock") == 0) then
24
+ if (isWaiting or rcall("EXISTS", jobKey .. ":lock") == 0) then
24
25
  -- Find the right timestamp of the job to compare to maxTimestamp:
25
26
  -- * finishedOn says when the job was completed, but it isn't set unless the job has actually completed
26
27
  -- * processedOn represents when the job was last attempted, but it doesn't get populated until the job is first tried
@@ -32,6 +33,9 @@ local function cleanList(listKey, jobKeyPrefix, rangeStart, rangeEnd, timestamp,
32
33
  -- occur at the end of the script
33
34
  rcall("LSET", listKey, rangeEnd - jobIdsLen + i, deletionMarker)
34
35
  removeJob(job, true, jobKeyPrefix)
36
+ if isWaiting then
37
+ rcall("ZREM", jobKeyPrefix .. "priority", job)
38
+ end
35
39
  deletedCount = deletedCount + 1
36
40
  table.insert(deleted, job)
37
41
  end
@@ -5,8 +5,8 @@
5
5
  -- Includes
6
6
  --- @include "removeParentDependencyKey"
7
7
 
8
- local function removeJob(key, hard, baseKey)
9
- local jobKey = baseKey .. key
8
+ local function removeJob(jobId, hard, baseKey)
9
+ local jobKey = baseKey .. jobId
10
10
  removeParentDependencyKey(jobKey, hard, nil, baseKey)
11
11
  rcall("DEL", jobKey, jobKey .. ':logs',
12
12
  jobKey .. ':dependencies', jobKey .. ':processed')
@@ -21,6 +21,6 @@ local function removeJobFromAnyState( prefix, jobId)
21
21
  elseif rcall("ZREM", prefix .. "failed", jobId) == 1 then
22
22
  return "failed"
23
23
  end
24
-
24
+
25
25
  return "unknown"
26
26
  end
@@ -5,17 +5,15 @@
5
5
  ]]
6
6
 
7
7
  --- @include "destructureJobKey"
8
+ --- @include "getTargetQueueList"
8
9
 
9
10
  local function moveParentToWait(parentPrefix, parentId, emitEvent)
10
- if rcall("HEXISTS", parentPrefix .. "meta", "paused") ~= 1 then
11
- rcall("RPUSH", parentPrefix .. "wait", parentId)
12
- else
13
- rcall("RPUSH", parentPrefix .. "paused", parentId)
14
- end
11
+ local parentTarget = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "wait", parentPrefix .. "paused")
12
+ rcall("RPUSH", parentTarget, parentId)
15
13
 
16
14
  if emitEvent then
17
15
  local parentEventStream = parentPrefix .. "events"
18
- rcall("XADD", parentEventStream, "*", "event", "active", "jobId", parentId, "prev", "waiting-children")
16
+ rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
19
17
  end
20
18
  end
21
19
 
@@ -78,6 +76,6 @@ local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey)
78
76
  end
79
77
  end
80
78
  end
81
- end
79
+ end
82
80
  end
83
81
  end
@@ -14,7 +14,7 @@ local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDepende
14
14
  if rcall("SCARD", parentDependenciesKey) == 0 and activeParent then
15
15
  rcall("ZREM", parentQueueKey .. ":waiting-children", parentId)
16
16
  local parentTarget = getTargetQueueList(parentQueueKey .. ":meta", parentQueueKey .. ":wait", parentQueueKey .. ":paused")
17
- local priority = rcall("HGET", parentKey, "priority")
17
+ local priority = tonumber(rcall("HGET", parentKey, "priority"))
18
18
  -- Standard or priority add
19
19
  if priority == 0 then
20
20
  rcall("RPUSH", parentTarget, parentId)
@@ -48,7 +48,7 @@ local function removeJob( prefix, jobId, parentKey)
48
48
  end
49
49
 
50
50
  local prev = removeJobFromAnyState(prefix, jobId)
51
-
51
+
52
52
  rcall("ZREM", prefix .. "priority", jobId)
53
53
  rcall("DEL", jobKey, jobKey .. ":logs", jobKey .. ":dependencies", jobKey .. ":processed")
54
54
 
@@ -25,7 +25,6 @@ local rcall = redis.call;
25
25
  -- Includes
26
26
  --- @include "includes/batches"
27
27
  --- @include "includes/getTargetQueueList"
28
- --- @include "includes/getZSetItems"
29
28
 
30
29
  local target = getTargetQueueList(KEYS[6], KEYS[4], KEYS[5])
31
30
 
@@ -1,4 +1,5 @@
1
1
  /// <reference types="node" />
2
+ /// <reference types="node" />
2
3
  import { Cluster, Redis } from 'ioredis';
3
4
  import { ChildMessage, JobsOptions, ParentMessage, QueueOptions, RedisClient } from './interfaces';
4
5
  import { ChildProcess } from 'child_process';
package/package.json CHANGED
@@ -1,12 +1,18 @@
1
1
  {
2
2
  "name": "bullmq",
3
- "version": "1.87.0",
3
+ "version": "1.88.0",
4
4
  "description": "Queue for messages and jobs based on Redis",
5
- "main": "dist/cjs/index.js",
6
- "module": "dist/esm/index.js",
7
- "jsnext:main": "dist/esm/index.js",
8
- "types": "dist/esm/index.d.ts",
9
- "source": "src/index.ts",
5
+ "main": "./dist/cjs/index.js",
6
+ "module": "./dist/esm/index.js",
7
+ "types": "./dist/esm/index.d.ts",
8
+ "source": "./src/index.ts",
9
+ "exports": {
10
+ ".": {
11
+ "require": "./dist/cjs/index.js",
12
+ "import": "./dist/esm/index.js",
13
+ "types": "./dist/esm/index.d.ts"
14
+ }
15
+ },
10
16
  "author": "Taskforce.sh Inc.",
11
17
  "license": "MIT",
12
18
  "keywords": [
@@ -24,8 +30,7 @@
24
30
  "clean:temp:files": "rimraf dist/cjs/bullmq.d.ts dist/esm/bullmq.d.ts dist/tsdoc-metadata.json",
25
31
  "copy:lua": "copyfiles -f ./src/commands/*.lua ./dist/cjs/commands && copyfiles -f ./src/commands/*.lua ./dist/esm/commands",
26
32
  "copy:includes:lua": "copyfiles -f ./src/commands/includes/*.lua ./dist/cjs/commands/includes && copyfiles -f ./src/commands/includes/*.lua ./dist/esm/commands/includes",
27
- "coverage": "nyc --reporter=text npm run test",
28
- "coveralls": "nyc report --reporter=text-lcov | coveralls",
33
+ "coverage": "nyc --reporter=text --reporter=lcovonly yarn test",
29
34
  "cm": "git cz",
30
35
  "docs": "typedoc --excludeExternals --excludeProtected --excludePrivate --readme none src/index.ts",
31
36
  "dc:up": "docker-compose -f docker-compose.yml up -d",
@@ -34,8 +39,9 @@
34
39
  "eslint:fix": "./node_modules/.bin/eslint . --ignore-path ./.eslintignore --fix",
35
40
  "lint": "./node_modules/.bin/eslint . --ignore-path ./.eslintignore",
36
41
  "lint:staged": "lint-staged",
37
- "prepare": "yarn build",
42
+ "prepublishOnly": "yarn build",
38
43
  "generate:raw:scripts": "ts-node --project tsconfig-cjs.json generateRawScripts.ts",
44
+ "postinstall": "husky install",
39
45
  "prettier": "prettier --config package.json src/**/*.ts",
40
46
  "pretty:quick": "pretty-quick --ignore-path ./.eslintignore --staged",
41
47
  "semantic-release": "semantic-release",
@@ -46,68 +52,69 @@
46
52
  "tsc:all": "tsc && tsc -p tsconfig-cjs.json"
47
53
  },
48
54
  "dependencies": {
49
- "cron-parser": "^4.2.1",
50
- "get-port": "^5.1.1",
51
- "glob": "^7.2.0",
52
- "ioredis": "^4.28.5",
55
+ "cron-parser": "^4.6.0",
56
+ "get-port": "6.1.2",
57
+ "glob": "^8.0.3",
58
+ "ioredis": "^5.2.2",
53
59
  "lodash": "^4.17.21",
54
- "msgpackr": "^1.4.6",
60
+ "msgpackr": "^1.6.2",
55
61
  "semver": "^7.3.7",
56
- "tslib": "^1.14.1",
62
+ "tslib": "^2.0.0",
57
63
  "uuid": "^8.3.2"
58
64
  },
59
65
  "devDependencies": {
60
- "@commitlint/cli": "^8.3.5",
61
- "@commitlint/config-conventional": "^8.3.4",
66
+ "@commitlint/cli": "^17.0.3",
67
+ "@commitlint/config-conventional": "^17.0.3",
62
68
  "@istanbuljs/nyc-config-typescript": "^0.1.3",
63
- "@semantic-release/changelog": "^6.0.0",
69
+ "@semantic-release/changelog": "^6.0.1",
64
70
  "@semantic-release/commit-analyzer": "^9.0.2",
65
71
  "@semantic-release/git": "^10.0.1",
66
- "@semantic-release/github": "^8.0.2",
67
- "@semantic-release/npm": "^8.0.3",
72
+ "@semantic-release/github": "^8.0.5",
73
+ "@semantic-release/npm": "^9.0.1",
68
74
  "@semantic-release/release-notes-generator": "^10.0.3",
69
- "@types/chai": "^4.2.22",
70
- "@types/chai-as-promised": "^7.1.4",
75
+ "@types/chai": "^4.3.1",
76
+ "@types/chai-as-promised": "^7.1.5",
71
77
  "@types/glob": "^7.2.0",
72
78
  "@types/ioredis": "^4.28.2",
73
- "@types/lodash": "^4.14.173",
79
+ "@types/lodash.defaults": "^4.2.7",
80
+ "@types/lodash.isarguments": "^3.1.7",
74
81
  "@types/mocha": "^5.2.7",
75
82
  "@types/msgpack": "^0.0.31",
76
83
  "@types/node": "^12.20.25",
77
84
  "@types/semver": "^7.3.9",
78
85
  "@types/sinon": "^7.5.2",
79
86
  "@types/uuid": "^3.4.10",
80
- "@typescript-eslint/eslint-plugin": "4.5.0",
81
- "@typescript-eslint/parser": "4.5.0",
87
+ "@typescript-eslint/eslint-plugin": "^5.33.0",
88
+ "@typescript-eslint/parser": "^5.33.0",
82
89
  "chai": "^4.3.4",
83
90
  "chai-as-promised": "^7.1.1",
84
- "commitizen": "^4.2.4",
91
+ "commitizen": "^4.2.5",
85
92
  "copyfiles": "^2.4.1",
86
93
  "coveralls": "^3.1.1",
87
- "eslint": "7.0.0",
88
- "eslint-config-prettier": "6.7.0",
89
- "eslint-plugin-mocha": "^8.2.0",
90
- "eslint-plugin-prettier": "3.1.2",
91
- "eslint-plugin-promise": "4.2.1",
92
- "eslint-plugin-tsdoc": "^0.2.14",
93
- "husky": "^3.1.0",
94
+ "eslint": "^8.22.0",
95
+ "eslint-config-prettier": "^8.5.0",
96
+ "eslint-plugin-mocha": "^10.1.0",
97
+ "eslint-plugin-prettier": "4.2.1",
98
+ "eslint-plugin-promise": "6.0.0",
99
+ "eslint-plugin-tsdoc": "^0.2.16",
100
+ "husky": "^8.0.1",
94
101
  "istanbul": "^0.4.5",
95
- "lint-staged": "10.5.4",
96
- "mocha": "^6.2.3",
102
+ "lint-staged": "13.0.3",
103
+ "mocha": "^10.0.0",
97
104
  "mocha-lcov-reporter": "^1.3.0",
98
- "moment": "^2.29.1",
105
+ "moment": "^2.29.4",
99
106
  "npm-run-all": "^4.1.5",
100
- "nyc": "^14.1.1",
101
- "prettier": "^2.4.1",
102
- "pretty-quick": "^3.1.1",
107
+ "nyc": "^15.1.0",
108
+ "prettier": "^2.7.1",
109
+ "pretty-quick": "^3.1.3",
103
110
  "rimraf": "^3.0.2",
104
- "semantic-release": "^18.0.1",
105
- "sinon": "^7.5.0",
111
+ "semantic-release": "^19.0.3",
112
+ "sinon": "^14.0.0",
106
113
  "test-console": "^2.0.0",
107
- "ts-mocha": "^8.0.0",
114
+ "ts-mocha": "^10.0.0",
108
115
  "ts-node": "^10.7.0",
109
- "typedoc": "^0.22.15",
110
- "typescript": "^4.6.3"
116
+ "typedoc": "^0.23.0",
117
+ "typescript": "^4.7.4"
111
118
  },
112
119
  "nyc": {
113
120
  "extends": "@istanbuljs/nyc-config-typescript",
@@ -118,7 +125,29 @@
118
125
  ],
119
126
  "exclude": [
120
127
  "bullmq-tests/test_*.ts"
121
- ]
128
+ ],
129
+ "lines": 80,
130
+ "functions": 80,
131
+ "branches": 70,
132
+ "statements": 80,
133
+ "watermarks": {
134
+ "lines": [
135
+ 80,
136
+ 95
137
+ ],
138
+ "functions": [
139
+ 80,
140
+ 95
141
+ ],
142
+ "branches": [
143
+ 80,
144
+ 95
145
+ ],
146
+ "statements": [
147
+ 80,
148
+ 95
149
+ ]
150
+ }
122
151
  },
123
152
  "config": {
124
153
  "commitizen": {
@@ -133,12 +162,6 @@
133
162
  "lint-staged": {
134
163
  "*.{js,ts}": "yarn eslint:fix"
135
164
  },
136
- "husky": {
137
- "hooks": {
138
- "commit-msg": "commitlint -E HUSKY_GIT_PARAMS",
139
- "pre-commit": "npm-run-all pretty:quick lint:staged"
140
- }
141
- },
142
165
  "repository": {
143
166
  "type": "git",
144
167
  "url": "https://github.com/taskforcesh/bullmq.git"