glide-mq 0.3.0 → 0.4.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.
@@ -0,0 +1,284 @@
1
+ "use strict";
2
+ /**
3
+ * In-memory testing mode for glide-mq.
4
+ * TestQueue and TestWorker mimic the real API using plain Maps - no Valkey needed.
5
+ *
6
+ * Usage:
7
+ * import { TestQueue, TestWorker } from 'glide-mq/testing';
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.TestWorker = exports.TestQueue = exports.TestJob = void 0;
11
+ const events_1 = require("events");
12
+ /**
13
+ * Minimal Job-like object returned by TestQueue methods and passed to processors.
14
+ * Mirrors the public surface of the real Job class.
15
+ */
16
+ class TestJob {
17
+ id;
18
+ name;
19
+ data;
20
+ opts;
21
+ attemptsMade;
22
+ returnvalue;
23
+ failedReason;
24
+ progress;
25
+ timestamp;
26
+ finishedOn;
27
+ processedOn;
28
+ constructor(record) {
29
+ this.id = record.id;
30
+ this.name = record.name;
31
+ this.data = record.data;
32
+ this.opts = record.opts;
33
+ this.attemptsMade = record.attemptsMade;
34
+ this.returnvalue = record.returnvalue;
35
+ this.failedReason = record.failedReason;
36
+ this.progress = 0;
37
+ this.timestamp = record.timestamp;
38
+ this.finishedOn = record.finishedOn;
39
+ this.processedOn = record.processedOn;
40
+ }
41
+ async log(_message) {
42
+ // no-op in test mode
43
+ }
44
+ async updateProgress(p) {
45
+ this.progress = p;
46
+ }
47
+ async updateData(data) {
48
+ this.data = data;
49
+ }
50
+ }
51
+ exports.TestJob = TestJob;
52
+ /** Check if all key-value pairs in filter exist in data (shallow match). */
53
+ function matchesData(data, filter) {
54
+ for (const [key, value] of Object.entries(filter)) {
55
+ if (data[key] !== value)
56
+ return false;
57
+ }
58
+ return true;
59
+ }
60
+ class TestQueue extends events_1.EventEmitter {
61
+ name;
62
+ /** @internal */ jobs = new Map();
63
+ /** @internal */ dedupSet = new Set();
64
+ idCounter = 0;
65
+ paused = false;
66
+ opts;
67
+ /** Workers register themselves here so we can notify on add. */
68
+ /** @internal */ workers = new Set();
69
+ constructor(name, opts) {
70
+ super();
71
+ this.name = name;
72
+ this.opts = opts ?? {};
73
+ }
74
+ /** Add a single job. Returns null if deduplicated. */
75
+ async add(name, data, opts) {
76
+ if (opts?.deduplication && this.opts.dedup) {
77
+ const dedupId = opts.deduplication.id;
78
+ if (this.dedupSet.has(dedupId)) {
79
+ return null;
80
+ }
81
+ this.dedupSet.add(dedupId);
82
+ }
83
+ const id = String(++this.idCounter);
84
+ const record = {
85
+ id,
86
+ name,
87
+ data,
88
+ opts: opts ?? {},
89
+ state: 'waiting',
90
+ attemptsMade: 0,
91
+ returnvalue: undefined,
92
+ failedReason: undefined,
93
+ timestamp: Date.now(),
94
+ finishedOn: undefined,
95
+ processedOn: undefined,
96
+ };
97
+ this.jobs.set(id, record);
98
+ const job = new TestJob(record);
99
+ this.emit('added', job);
100
+ // Notify attached workers (microtask so the add() caller gets the job first)
101
+ if (!this.paused) {
102
+ queueMicrotask(() => {
103
+ for (const w of this.workers) {
104
+ w.onJobAdded();
105
+ }
106
+ });
107
+ }
108
+ return job;
109
+ }
110
+ /** Add multiple jobs. */
111
+ async addBulk(jobs) {
112
+ const results = [];
113
+ for (const entry of jobs) {
114
+ const job = await this.add(entry.name, entry.data, entry.opts);
115
+ if (job)
116
+ results.push(job);
117
+ }
118
+ return results;
119
+ }
120
+ /** Retrieve a job by ID. */
121
+ async getJob(id) {
122
+ const record = this.jobs.get(id);
123
+ if (!record)
124
+ return null;
125
+ return new TestJob(record);
126
+ }
127
+ /** Retrieve jobs by state. */
128
+ async getJobs(type, start = 0, end = -1) {
129
+ const matching = [];
130
+ for (const record of this.jobs.values()) {
131
+ if (record.state === type) {
132
+ matching.push(new TestJob(record));
133
+ }
134
+ }
135
+ const sliceEnd = end >= 0 ? end + 1 : undefined;
136
+ return matching.slice(start, sliceEnd);
137
+ }
138
+ /** Get counts by state. */
139
+ async getJobCounts() {
140
+ const counts = { waiting: 0, active: 0, delayed: 0, completed: 0, failed: 0 };
141
+ for (const record of this.jobs.values()) {
142
+ counts[record.state]++;
143
+ }
144
+ return counts;
145
+ }
146
+ /** Pause the queue - workers stop picking up new jobs. */
147
+ async pause() {
148
+ this.paused = true;
149
+ }
150
+ /** Resume the queue. */
151
+ async resume() {
152
+ this.paused = false;
153
+ // Kick workers to process any waiting jobs
154
+ for (const w of this.workers) {
155
+ w.onJobAdded();
156
+ }
157
+ }
158
+ /** Check if paused. */
159
+ isPaused() {
160
+ return this.paused;
161
+ }
162
+ /** Search jobs by name and/or data fields. */
163
+ async searchJobs(opts) {
164
+ const results = [];
165
+ for (const record of this.jobs.values()) {
166
+ if (opts.name !== undefined && record.name !== opts.name)
167
+ continue;
168
+ if (opts.state !== undefined && record.state !== opts.state)
169
+ continue;
170
+ if (opts.data !== undefined && !matchesData(record.data, opts.data))
171
+ continue;
172
+ results.push(new TestJob(record));
173
+ }
174
+ return results;
175
+ }
176
+ /** Close the queue. */
177
+ async close() {
178
+ this.removeAllListeners();
179
+ this.workers.clear();
180
+ }
181
+ }
182
+ exports.TestQueue = TestQueue;
183
+ class TestWorker extends events_1.EventEmitter {
184
+ queue;
185
+ processor;
186
+ concurrency;
187
+ activeCount = 0;
188
+ running = true;
189
+ processing = false;
190
+ constructor(queue, processor, opts) {
191
+ super();
192
+ this.queue = queue;
193
+ this.processor = processor;
194
+ this.concurrency = opts?.concurrency ?? 1;
195
+ // Register with the queue
196
+ queue.workers.add(this);
197
+ // Process any jobs already in the queue
198
+ queueMicrotask(() => this.drain());
199
+ }
200
+ /** @internal Called by TestQueue when a job is added. */
201
+ onJobAdded() {
202
+ if (!this.running)
203
+ return;
204
+ this.drain();
205
+ }
206
+ /** Pull and process waiting jobs up to concurrency. */
207
+ drain() {
208
+ if (this.processing)
209
+ return;
210
+ this.processing = true;
211
+ // Use microtask to batch multiple onJobAdded calls
212
+ queueMicrotask(() => {
213
+ this.processing = false;
214
+ this.processAvailable();
215
+ });
216
+ }
217
+ processAvailable() {
218
+ if (!this.running || this.queue.isPaused())
219
+ return;
220
+ while (this.activeCount < this.concurrency) {
221
+ const record = this.findNextWaiting();
222
+ if (!record)
223
+ break;
224
+ record.state = 'active';
225
+ record.processedOn = Date.now();
226
+ this.activeCount++;
227
+ this.processJob(record);
228
+ }
229
+ }
230
+ findNextWaiting() {
231
+ for (const record of this.queue.jobs.values()) {
232
+ if (record.state === 'waiting')
233
+ return record;
234
+ }
235
+ return undefined;
236
+ }
237
+ processJob(record) {
238
+ const job = new TestJob(record);
239
+ this.processor(job)
240
+ .then((result) => {
241
+ record.state = 'completed';
242
+ record.returnvalue = result;
243
+ record.finishedOn = Date.now();
244
+ job.returnvalue = result;
245
+ job.finishedOn = record.finishedOn;
246
+ this.emit('completed', job, result);
247
+ this.queue.emit('completed', job, result);
248
+ })
249
+ .catch((err) => {
250
+ record.attemptsMade++;
251
+ const maxAttempts = record.opts.attempts ?? 0;
252
+ if (maxAttempts > 0 && record.attemptsMade < maxAttempts) {
253
+ // Retry: put back to waiting
254
+ record.state = 'waiting';
255
+ // Schedule a re-drain so the retry gets picked up
256
+ queueMicrotask(() => this.processAvailable());
257
+ }
258
+ else {
259
+ record.state = 'failed';
260
+ record.failedReason = err.message;
261
+ record.finishedOn = Date.now();
262
+ job.failedReason = err.message;
263
+ job.finishedOn = record.finishedOn;
264
+ this.emit('failed', job, err);
265
+ this.queue.emit('failed', job, err);
266
+ }
267
+ })
268
+ .finally(() => {
269
+ this.activeCount--;
270
+ // Try to pick up more work
271
+ if (this.running && !this.queue.isPaused()) {
272
+ this.processAvailable();
273
+ }
274
+ });
275
+ }
276
+ /** Stop processing and detach from the queue. */
277
+ async close() {
278
+ this.running = false;
279
+ this.queue.workers.delete(this);
280
+ this.removeAllListeners();
281
+ }
282
+ }
283
+ exports.TestWorker = TestWorker;
284
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -157,4 +157,10 @@ export interface JobCounts {
157
157
  completed: number;
158
158
  failed: number;
159
159
  }
160
+ export interface SearchJobsOptions {
161
+ state?: 'waiting' | 'active' | 'delayed' | 'completed' | 'failed';
162
+ name?: string;
163
+ data?: Record<string, unknown>;
164
+ limit?: number;
165
+ }
160
166
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,9 +1,19 @@
1
1
  {
2
2
  "name": "glide-mq",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "High-performance message queue for Node.js built on Valkey/Redis with native NAPI bindings",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "default": "./dist/index.js"
11
+ },
12
+ "./testing": {
13
+ "types": "./dist/testing.d.ts",
14
+ "default": "./dist/testing.js"
15
+ }
16
+ },
7
17
  "type": "commonjs",
8
18
  "scripts": {
9
19
  "build": "tsc",
@@ -28,8 +38,10 @@
28
38
  "@glidemq/speedkey": "^0.2.0"
29
39
  },
30
40
  "devDependencies": {
41
+ "@types/express": "^5.0.6",
31
42
  "@types/node": "^22",
32
43
  "bullmq": "^5.69.2",
44
+ "express": "^5.2.1",
33
45
  "ioredis": "^5.9.3",
34
46
  "tsx": "^4.21.0",
35
47
  "typescript": "^5",