glide-mq 0.2.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.
- package/README.md +53 -5
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +25 -1
- package/dist/connection.js.map +1 -1
- package/dist/functions/index.d.ts +9 -2
- package/dist/functions/index.d.ts.map +1 -1
- package/dist/functions/index.js +59 -1
- package/dist/functions/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/job.js +1 -1
- package/dist/job.js.map +1 -1
- package/dist/queue.d.ts +21 -2
- package/dist/queue.d.ts.map +1 -1
- package/dist/queue.js +201 -15
- package/dist/queue.js.map +1 -1
- package/dist/testing.d.ts +109 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +284 -0
- package/dist/testing.js.map +1 -0
- package/dist/types.d.ts +46 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/utils.d.ts +10 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +24 -0
- package/dist/utils.js.map +1 -1
- package/package.json +13 -1
package/dist/testing.js
ADDED
|
@@ -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
|
@@ -1,16 +1,49 @@
|
|
|
1
|
-
import type { GlideClient, GlideClusterClient } from '@glidemq/speedkey';
|
|
1
|
+
import type { GlideClient, GlideClusterClient, ReadFrom } from '@glidemq/speedkey';
|
|
2
2
|
export type Client = GlideClient | GlideClusterClient;
|
|
3
|
+
export type { ReadFrom } from '@glidemq/speedkey';
|
|
4
|
+
/** Standard password-based credentials. */
|
|
5
|
+
export interface PasswordCredentials {
|
|
6
|
+
username?: string;
|
|
7
|
+
password: string;
|
|
8
|
+
}
|
|
9
|
+
/** IAM authentication credentials for AWS ElastiCache/MemoryDB. */
|
|
10
|
+
export interface IamCredentials {
|
|
11
|
+
type: 'iam';
|
|
12
|
+
/** ElastiCache or MemoryDB. */
|
|
13
|
+
serviceType: 'elasticache' | 'memorydb';
|
|
14
|
+
/** AWS region (e.g. 'us-east-1'). */
|
|
15
|
+
region: string;
|
|
16
|
+
/** The IAM user ID used for authentication. Maps to username in Valkey AUTH. */
|
|
17
|
+
userId: string;
|
|
18
|
+
/** The ElastiCache/MemoryDB cluster name. */
|
|
19
|
+
clusterName: string;
|
|
20
|
+
/** Token refresh interval in seconds. Defaults to 300 (5 min). */
|
|
21
|
+
refreshIntervalSeconds?: number;
|
|
22
|
+
}
|
|
3
23
|
export interface ConnectionOptions {
|
|
4
24
|
addresses: {
|
|
5
25
|
host: string;
|
|
6
26
|
port: number;
|
|
7
27
|
}[];
|
|
8
28
|
useTLS?: boolean;
|
|
9
|
-
credentials?:
|
|
10
|
-
username?: string;
|
|
11
|
-
password: string;
|
|
12
|
-
};
|
|
29
|
+
credentials?: PasswordCredentials | IamCredentials;
|
|
13
30
|
clusterMode?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Read strategy for the client. Controls how read commands are routed.
|
|
33
|
+
* - 'primary': Always read from primary (default).
|
|
34
|
+
* - 'preferReplica': Round-robin across replicas, fallback to primary.
|
|
35
|
+
* - 'AZAffinity': Route reads to replicas in the same availability zone.
|
|
36
|
+
* - 'AZAffinityReplicasAndPrimary': Route reads to any node in the same AZ.
|
|
37
|
+
*
|
|
38
|
+
* AZ-based strategies require `clientAz` to be set.
|
|
39
|
+
*/
|
|
40
|
+
readFrom?: ReadFrom;
|
|
41
|
+
/**
|
|
42
|
+
* Availability zone of the client (e.g., 'us-east-1a').
|
|
43
|
+
* Used with readFrom 'AZAffinity' or 'AZAffinityReplicasAndPrimary' to route
|
|
44
|
+
* read commands to nodes in the same AZ, reducing cross-AZ latency and cost.
|
|
45
|
+
*/
|
|
46
|
+
clientAz?: string;
|
|
14
47
|
}
|
|
15
48
|
export interface DeadLetterQueueOptions {
|
|
16
49
|
/** Queue name to use as the dead letter queue. */
|
|
@@ -23,6 +56,8 @@ export interface QueueOptions {
|
|
|
23
56
|
prefix?: string;
|
|
24
57
|
/** Dead letter queue configuration. Jobs that exhaust retries are moved here. */
|
|
25
58
|
deadLetterQueue?: DeadLetterQueueOptions;
|
|
59
|
+
/** Enable transparent compression of job data. Default: 'none'. */
|
|
60
|
+
compression?: 'none' | 'gzip';
|
|
26
61
|
}
|
|
27
62
|
export interface WorkerOptions extends QueueOptions {
|
|
28
63
|
concurrency?: number;
|
|
@@ -122,4 +157,10 @@ export interface JobCounts {
|
|
|
122
157
|
completed: number;
|
|
123
158
|
failed: number;
|
|
124
159
|
}
|
|
160
|
+
export interface SearchJobsOptions {
|
|
161
|
+
state?: 'waiting' | 'active' | 'delayed' | 'completed' | 'failed';
|
|
162
|
+
name?: string;
|
|
163
|
+
data?: Record<string, unknown>;
|
|
164
|
+
limit?: number;
|
|
165
|
+
}
|
|
125
166
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compress a string with gzip and return a prefixed base64 string.
|
|
3
|
+
* Format: 'gz:' + base64(gzipped data)
|
|
4
|
+
*/
|
|
5
|
+
export declare function compress(data: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Decompress a 'gz:'-prefixed base64 string back to the original string.
|
|
8
|
+
* If the input is not compressed (no 'gz:' prefix), returns it as-is.
|
|
9
|
+
*/
|
|
10
|
+
export declare function decompress(data: string): string;
|
|
1
11
|
export declare function escapeGlob(str: string): string;
|
|
2
12
|
export declare function keyPrefix(prefix: string, queueName: string): string;
|
|
3
13
|
/**
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAM/C;AAKD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,SAAiB;;;;;;;;;;;cAatD,MAAM;cACN,MAAM;eACL,MAAM;EAEpB;AAMD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAEzE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAIpF;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,MAAM,SAAI,GACT,MAAM,CAeR;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,SAAQ,GAAG,MAAM,CAG9E;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,EAAE,GAAG,IAAI,GACpD,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAO/B;AAID;;;GAGG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,GAC5C,MAAM,EAAE,CAUV;AAID,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,IAAI,OAAO,CAAC;IACpB,UAAU,IAAI,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,gBAAgB,EACrB,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EAChC,QAAQ,EAAE,MAAM,IAAI,GACnB,OAAO,CAAC,IAAI,CAAC,CAcf;AAkDD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAqC3E"}
|
package/dist/utils.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compress = compress;
|
|
4
|
+
exports.decompress = decompress;
|
|
3
5
|
exports.escapeGlob = escapeGlob;
|
|
4
6
|
exports.keyPrefix = keyPrefix;
|
|
5
7
|
exports.keyPrefixPattern = keyPrefixPattern;
|
|
@@ -13,7 +15,29 @@ exports.hashDataToRecord = hashDataToRecord;
|
|
|
13
15
|
exports.extractJobIdsFromStreamEntries = extractJobIdsFromStreamEntries;
|
|
14
16
|
exports.reconnectWithBackoff = reconnectWithBackoff;
|
|
15
17
|
exports.nextCronOccurrence = nextCronOccurrence;
|
|
18
|
+
const zlib_1 = require("zlib");
|
|
16
19
|
const DEFAULT_PREFIX = 'glide';
|
|
20
|
+
// ---- Compression helpers ----
|
|
21
|
+
const COMPRESSED_PREFIX = 'gz:';
|
|
22
|
+
/**
|
|
23
|
+
* Compress a string with gzip and return a prefixed base64 string.
|
|
24
|
+
* Format: 'gz:' + base64(gzipped data)
|
|
25
|
+
*/
|
|
26
|
+
function compress(data) {
|
|
27
|
+
const buf = (0, zlib_1.gzipSync)(Buffer.from(data, 'utf8'));
|
|
28
|
+
return COMPRESSED_PREFIX + buf.toString('base64');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Decompress a 'gz:'-prefixed base64 string back to the original string.
|
|
32
|
+
* If the input is not compressed (no 'gz:' prefix), returns it as-is.
|
|
33
|
+
*/
|
|
34
|
+
function decompress(data) {
|
|
35
|
+
if (!data.startsWith(COMPRESSED_PREFIX)) {
|
|
36
|
+
return data;
|
|
37
|
+
}
|
|
38
|
+
const buf = Buffer.from(data.slice(COMPRESSED_PREFIX.length), 'base64');
|
|
39
|
+
return (0, zlib_1.gunzipSync)(buf).toString('utf8');
|
|
40
|
+
}
|
|
17
41
|
// Valkey SCAN glob special characters that must be escaped in key patterns
|
|
18
42
|
const GLOB_SPECIAL = /[*?\[\]\\]/g;
|
|
19
43
|
function escapeGlob(str) {
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.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
|
+
"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",
|