bunqueue 1.4.0 → 1.6.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 (49) hide show
  1. package/dist/application/dlqManager.d.ts +21 -4
  2. package/dist/application/dlqManager.d.ts.map +1 -1
  3. package/dist/application/dlqManager.js +168 -26
  4. package/dist/application/dlqManager.js.map +1 -1
  5. package/dist/application/operations/ack.js +1 -1
  6. package/dist/application/operations/ack.js.map +1 -1
  7. package/dist/application/operations/jobManagement.js +1 -1
  8. package/dist/application/operations/jobManagement.js.map +1 -1
  9. package/dist/application/operations/push.js +2 -2
  10. package/dist/application/operations/push.js.map +1 -1
  11. package/dist/application/queueManager.d.ts +18 -0
  12. package/dist/application/queueManager.d.ts.map +1 -1
  13. package/dist/application/queueManager.js +135 -1
  14. package/dist/application/queueManager.js.map +1 -1
  15. package/dist/cli/dashboard.d.ts +32 -0
  16. package/dist/cli/dashboard.d.ts.map +1 -0
  17. package/dist/cli/dashboard.js +183 -0
  18. package/dist/cli/dashboard.js.map +1 -0
  19. package/dist/domain/queue/shard.d.ts +54 -13
  20. package/dist/domain/queue/shard.d.ts.map +1 -1
  21. package/dist/domain/queue/shard.js +163 -53
  22. package/dist/domain/queue/shard.js.map +1 -1
  23. package/dist/domain/types/dlq.d.ts +120 -0
  24. package/dist/domain/types/dlq.d.ts.map +1 -0
  25. package/dist/domain/types/dlq.js +77 -0
  26. package/dist/domain/types/dlq.js.map +1 -0
  27. package/dist/domain/types/stall.d.ts +49 -0
  28. package/dist/domain/types/stall.d.ts.map +1 -0
  29. package/dist/domain/types/stall.js +77 -0
  30. package/dist/domain/types/stall.js.map +1 -0
  31. package/dist/infrastructure/scheduler/cronScheduler.d.ts +8 -3
  32. package/dist/infrastructure/scheduler/cronScheduler.d.ts.map +1 -1
  33. package/dist/infrastructure/scheduler/cronScheduler.js +49 -26
  34. package/dist/infrastructure/scheduler/cronScheduler.js.map +1 -1
  35. package/dist/main.js +1 -1
  36. package/dist/main.js.map +1 -1
  37. package/dist/shared/lru.d.ts +24 -4
  38. package/dist/shared/lru.d.ts.map +1 -1
  39. package/dist/shared/lru.js +187 -66
  40. package/dist/shared/lru.js.map +1 -1
  41. package/dist/shared/skipList.d.ts +95 -0
  42. package/dist/shared/skipList.d.ts.map +1 -0
  43. package/dist/shared/skipList.js +277 -0
  44. package/dist/shared/skipList.js.map +1 -0
  45. package/dist/shared/version.d.ts +2 -2
  46. package/dist/shared/version.d.ts.map +1 -1
  47. package/dist/shared/version.js +27 -2
  48. package/dist/shared/version.js.map +1 -1
  49. package/package.json +6 -6
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Skip List Implementation
3
+ * Probabilistic data structure with O(log n) insert, delete, search
4
+ * Ideal for sorted collections with frequent modifications
5
+ */
6
+ /** Sentinel node (head) */
7
+ function createHead(maxLevel) {
8
+ const forward = [];
9
+ for (let i = 0; i <= maxLevel; i++) {
10
+ forward.push(null);
11
+ }
12
+ return {
13
+ value: null,
14
+ forward,
15
+ };
16
+ }
17
+ /**
18
+ * Skip List with O(log n) operations
19
+ * - insert: O(log n)
20
+ * - delete: O(log n)
21
+ * - search: O(log n)
22
+ * - range query: O(log n + k) where k = results
23
+ */
24
+ export class SkipList {
25
+ maxLevel;
26
+ probability;
27
+ compare;
28
+ head;
29
+ level = 0;
30
+ _size = 0;
31
+ /**
32
+ * Create a skip list
33
+ * @param compare Comparator function (negative if a < b, positive if a > b, 0 if equal)
34
+ * @param maxLevel Maximum level (default 16, supports ~65k elements efficiently)
35
+ * @param probability Level promotion probability (default 0.5)
36
+ */
37
+ constructor(compare, maxLevel = 16, probability = 0.5) {
38
+ this.compare = compare;
39
+ this.maxLevel = maxLevel;
40
+ this.probability = probability;
41
+ this.head = createHead(maxLevel);
42
+ }
43
+ /** Current number of elements */
44
+ get size() {
45
+ return this._size;
46
+ }
47
+ /** Check if empty */
48
+ get isEmpty() {
49
+ return this._size === 0;
50
+ }
51
+ /** Generate random level for new node */
52
+ randomLevel() {
53
+ let lvl = 0;
54
+ while (Math.random() < this.probability && lvl < this.maxLevel) {
55
+ lvl++;
56
+ }
57
+ return lvl;
58
+ }
59
+ /**
60
+ * Insert value - O(log n)
61
+ */
62
+ insert(value) {
63
+ const update = [];
64
+ for (let i = 0; i <= this.maxLevel; i++) {
65
+ update.push(null);
66
+ }
67
+ let current = this.head;
68
+ // Find insert position at each level
69
+ for (let i = this.level; i >= 0; i--) {
70
+ let fwd = current.forward[i];
71
+ while (fwd !== null && this.compare(fwd.value, value) < 0) {
72
+ current = fwd;
73
+ fwd = current.forward[i];
74
+ }
75
+ update[i] = current;
76
+ }
77
+ // Generate level for new node
78
+ const newLevel = this.randomLevel();
79
+ // If new level is higher than current, update head
80
+ if (newLevel > this.level) {
81
+ for (let i = this.level + 1; i <= newLevel; i++) {
82
+ update[i] = this.head;
83
+ }
84
+ this.level = newLevel;
85
+ }
86
+ // Create new node
87
+ const newNodeForward = [];
88
+ for (let i = 0; i <= newLevel; i++) {
89
+ newNodeForward.push(null);
90
+ }
91
+ const newNode = {
92
+ value,
93
+ forward: newNodeForward,
94
+ };
95
+ // Insert at each level
96
+ for (let i = 0; i <= newLevel; i++) {
97
+ const updateNode = update[i];
98
+ if (updateNode) {
99
+ newNode.forward[i] = updateNode.forward[i];
100
+ updateNode.forward[i] = newNode;
101
+ }
102
+ }
103
+ this._size++;
104
+ }
105
+ /**
106
+ * Delete value - O(log n)
107
+ * @returns true if found and deleted
108
+ */
109
+ delete(value) {
110
+ const update = [];
111
+ for (let i = 0; i <= this.maxLevel; i++) {
112
+ update.push(null);
113
+ }
114
+ let current = this.head;
115
+ // Find node at each level
116
+ for (let i = this.level; i >= 0; i--) {
117
+ let fwd = current.forward[i];
118
+ while (fwd !== null && this.compare(fwd.value, value) < 0) {
119
+ current = fwd;
120
+ fwd = current.forward[i];
121
+ }
122
+ update[i] = current;
123
+ }
124
+ // Check if found
125
+ const target = current.forward[0];
126
+ if (target === null || this.compare(target.value, value) !== 0) {
127
+ return false;
128
+ }
129
+ // Remove from each level
130
+ for (let i = 0; i <= this.level; i++) {
131
+ const updateNode = update[i];
132
+ if (updateNode?.forward[i] === target) {
133
+ updateNode.forward[i] = target.forward[i];
134
+ }
135
+ else {
136
+ break;
137
+ }
138
+ }
139
+ // Reduce level if necessary
140
+ while (this.level > 0 && this.head.forward[this.level] === null) {
141
+ this.level--;
142
+ }
143
+ this._size--;
144
+ return true;
145
+ }
146
+ /**
147
+ * Delete by predicate - O(n) worst case, but typically O(log n + k)
148
+ * Useful when you need to match by a subset of fields
149
+ */
150
+ deleteWhere(predicate) {
151
+ let current = this.head.forward[0];
152
+ while (current !== null) {
153
+ if (predicate(current.value)) {
154
+ this.delete(current.value);
155
+ return current.value;
156
+ }
157
+ current = current.forward[0];
158
+ }
159
+ return null;
160
+ }
161
+ /**
162
+ * Find exact value - O(log n)
163
+ */
164
+ find(value) {
165
+ let current = this.head;
166
+ for (let i = this.level; i >= 0; i--) {
167
+ let fwd = current.forward[i];
168
+ while (fwd !== null && this.compare(fwd.value, value) < 0) {
169
+ current = fwd;
170
+ fwd = current.forward[i];
171
+ }
172
+ }
173
+ const target = current.forward[0];
174
+ if (target !== null && this.compare(target.value, value) === 0) {
175
+ return target.value;
176
+ }
177
+ return null;
178
+ }
179
+ /**
180
+ * Check if value exists - O(log n)
181
+ */
182
+ has(value) {
183
+ return this.find(value) !== null;
184
+ }
185
+ /**
186
+ * Get first (minimum) element - O(1)
187
+ */
188
+ first() {
189
+ return this.head.forward[0]?.value ?? null;
190
+ }
191
+ /**
192
+ * Remove and return first element - O(log n)
193
+ */
194
+ shift() {
195
+ const first = this.head.forward[0];
196
+ if (first === null)
197
+ return null;
198
+ this.delete(first.value);
199
+ return first.value;
200
+ }
201
+ /**
202
+ * Range query: get all values where comparator returns <= 0
203
+ * O(log n + k) where k = number of results
204
+ * @param maxValue Upper bound (inclusive)
205
+ * @param limit Maximum number of results
206
+ */
207
+ rangeUntil(maxValue, limit) {
208
+ const result = [];
209
+ let current = this.head.forward[0];
210
+ while (current !== null && this.compare(current.value, maxValue) <= 0) {
211
+ result.push(current.value);
212
+ if (limit !== undefined && result.length >= limit)
213
+ break;
214
+ current = current.forward[0];
215
+ }
216
+ return result;
217
+ }
218
+ /**
219
+ * Get all values where predicate is true, starting from first
220
+ * Stops at first false (assumes sorted order matches predicate)
221
+ * O(k) where k = matching results
222
+ */
223
+ takeWhile(predicate, limit) {
224
+ const result = [];
225
+ let current = this.head.forward[0];
226
+ while (current !== null && predicate(current.value)) {
227
+ result.push(current.value);
228
+ if (limit !== undefined && result.length >= limit)
229
+ break;
230
+ current = current.forward[0];
231
+ }
232
+ return result;
233
+ }
234
+ /**
235
+ * Iterate all values in order
236
+ */
237
+ *values() {
238
+ let current = this.head.forward[0];
239
+ while (current !== null) {
240
+ yield current.value;
241
+ current = current.forward[0];
242
+ }
243
+ }
244
+ /**
245
+ * Convert to array
246
+ */
247
+ toArray() {
248
+ return Array.from(this.values());
249
+ }
250
+ /**
251
+ * Clear all elements
252
+ */
253
+ clear() {
254
+ this.head = createHead(this.maxLevel);
255
+ this.level = 0;
256
+ this._size = 0;
257
+ }
258
+ /**
259
+ * Filter and remove elements matching predicate
260
+ * Returns removed elements
261
+ * O(n) but removes in-place
262
+ */
263
+ removeAll(predicate) {
264
+ const removed = [];
265
+ let current = this.head.forward[0];
266
+ while (current !== null) {
267
+ const next = current.forward[0];
268
+ if (predicate(current.value)) {
269
+ removed.push(current.value);
270
+ this.delete(current.value);
271
+ }
272
+ current = next;
273
+ }
274
+ return removed;
275
+ }
276
+ }
277
+ //# sourceMappingURL=skipList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skipList.js","sourceRoot":"","sources":["../../src/shared/skipList.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Package version
2
+ * Package version - dynamically read from package.json
3
3
  */
4
- export declare const VERSION = "1.1.2";
4
+ export declare const VERSION: string;
5
5
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/shared/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,OAAO,UAAU,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/shared/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+BH,eAAO,MAAM,OAAO,QAAe,CAAC"}
@@ -1,5 +1,30 @@
1
1
  /**
2
- * Package version
2
+ * Package version - dynamically read from package.json
3
3
  */
4
- export const VERSION = '1.1.2';
4
+ import { readFileSync } from 'fs';
5
+ import { join, dirname } from 'path';
6
+ function getVersion() {
7
+ try {
8
+ // Try to read from package.json in different possible locations
9
+ const paths = [
10
+ join(dirname(import.meta.dir), '..', 'package.json'),
11
+ join(process.cwd(), 'package.json'),
12
+ ];
13
+ for (const path of paths) {
14
+ try {
15
+ const pkg = JSON.parse(readFileSync(path, 'utf-8'));
16
+ if (pkg.version)
17
+ return pkg.version;
18
+ }
19
+ catch {
20
+ // Try next path
21
+ }
22
+ }
23
+ }
24
+ catch {
25
+ // Fallback
26
+ }
27
+ return '1.6.0'; // Fallback version
28
+ }
29
+ export const VERSION = getVersion();
5
30
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/shared/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/shared/version.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAMrC,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,gEAAgE;QAChE,MAAM,KAAK,GAAG;YACZ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC;YACpD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC;SACpC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAgB,CAAC;gBACnE,IAAI,GAAG,CAAC,OAAO;oBAAE,OAAO,GAAG,CAAC,OAAO,CAAC;YACtC,CAAC;YAAC,MAAM,CAAC;gBACP,gBAAgB;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,WAAW;IACb,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,mBAAmB;AACrC,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bunqueue",
3
- "version": "1.4.0",
3
+ "version": "1.6.0",
4
4
  "description": "High-performance job queue server written in Bun. SQLite persistence, cron scheduling, priorities, retries, DLQ, webhooks. Minimal dependencies.",
5
5
  "type": "module",
6
6
  "main": "dist/main.js",
@@ -55,11 +55,11 @@
55
55
  "devDependencies": {
56
56
  "@types/bun": "latest",
57
57
  "typescript": "^5.9.3",
58
- "@eslint/js": "^9.18.0",
59
- "typescript-eslint": "^8.21.0",
60
- "eslint": "^9.18.0",
61
- "eslint-config-prettier": "^10.0.1",
62
- "prettier": "^3.4.2"
58
+ "@eslint/js": "^9.39.2",
59
+ "typescript-eslint": "^8.54.0",
60
+ "eslint": "^9.39.2",
61
+ "eslint-config-prettier": "^10.1.8",
62
+ "prettier": "^3.8.1"
63
63
  },
64
64
  "peerDependencies": {
65
65
  "bun": ">=1.0.0"