@queuedash/sdk 1.0.0 → 2.0.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/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Alex Budure
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @queuedash/sdk
2
2
 
3
- Official SDK for Queuedash - Real-time monitoring for BullMQ, Bull, and Bee-Queue.
3
+ Official SDK for Queuedash - Real-time monitoring for BullMQ, Bull, Bee-Queue, and GroupMQ.
4
4
 
5
5
  ## Installation
6
6
 
@@ -14,7 +14,7 @@ yarn add @queuedash/sdk
14
14
 
15
15
  ## Quick Start
16
16
 
17
- The SDK auto-detects your queue library (BullMQ, Bull, or Bee-Queue) - just use `attach()`:
17
+ The SDK auto-detects your queue library (BullMQ, Bull, Bee-Queue, or GroupMQ) - just use `attach()`:
18
18
 
19
19
  ### BullMQ
20
20
 
@@ -157,13 +157,9 @@ The SDK is production-ready with multiple layers of protection:
157
157
 
158
158
  ## Features
159
159
 
160
- - **Auto-detection**: Works with BullMQ, Bull, and Bee-Queue automatically
160
+ - **Auto-detection**: Works with BullMQ, Bull, Bee-Queue, and GroupMQ automatically
161
161
  - **Real-time sync**: Jobs are synced as events happen
162
162
  - **Smart batching**: Events are automatically batched for performance
163
163
  - **Auto-retry**: Failed syncs are automatically retried
164
164
  - **Zero config**: Works out of the box with sensible defaults
165
165
  - **TypeScript**: Full TypeScript support
166
-
167
- ## License
168
-
169
- MIT
package/dist/client.d.ts CHANGED
@@ -25,7 +25,7 @@ export declare class Queuedash {
25
25
  constructor(options: QueuedashOptions);
26
26
  /**
27
27
  * Attach a queue or worker for monitoring.
28
- * Auto-detects the queue library (BullMQ, Bull, Bee-Queue).
28
+ * Auto-detects the queue library (BullMQ, Bull, Bee-Queue, GroupMQ).
29
29
  *
30
30
  * @example
31
31
  * ```ts
@@ -64,6 +64,8 @@ export declare class Queuedash {
64
64
  * Manually flush all pending jobs
65
65
  */
66
66
  flush(): Promise<void>;
67
+ private splitIntoChunks;
68
+ private sendBatch;
67
69
  private openCircuitBreaker;
68
70
  private log;
69
71
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAgB,MAAM,SAAS,CAAC;AAelE,KAAK,iBAAiB,GAAG;IACvB,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC;IAC9D,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAcF,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAyB;IAEzC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,wBAAwB,CAAC,CAAiB;IAClD,OAAO,CAAC,aAAa,CAAqB;IAG1C,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,cAAc,CAAqB;gBAE/B,OAAO,EAAE,gBAAgB;IAsBrC;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAE,GAAG,IAAI;IAyBzE,OAAO,CAAC,UAAU;YAqCJ,YAAY;IAqE1B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,UAAU;IAiClB,OAAO,CAAC,SAAS;IA+BjB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqChE;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAyB3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgG5B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,GAAG;IAQX;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,qBAAqB;CAiB9B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAgB,MAAM,SAAS,CAAC;AAiBlE,KAAK,iBAAiB,GAAG;IACvB,EAAE,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,KAAK,GAAG,CAAC;IAC9D,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;AAcF,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAyB;IAEzC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,sBAAsB,CAAK;IACnC,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,wBAAwB,CAAC,CAAiB;IAClD,OAAO,CAAC,aAAa,CAAqB;IAG1C,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,cAAc,CAAqB;gBAE/B,OAAO,EAAE,gBAAgB;IAsBrC;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAE,GAAG,IAAI;IAyBzE,OAAO,CAAC,UAAU;YAqCJ,YAAY;IAqE1B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,UAAU;IAiClB,OAAO,CAAC,SAAS;IA+BjB,OAAO,CAAC,oBAAoB;IAoB5B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqChE;;OAEG;IACH,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAyB3B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsF5B,OAAO,CAAC,eAAe;YAuBT,SAAS;IA+BvB,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,GAAG;IAQX;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,qBAAqB;CAiB9B"}
package/dist/client.js CHANGED
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.Queuedash = void 0;
37
+ const MAX_PAYLOAD_SIZE = 4.5 * 1024 * 1024; // 4.5MB
37
38
  class Queuedash {
38
39
  constructor(options) {
39
40
  this.jobQueue = [];
@@ -52,8 +53,8 @@ class Queuedash {
52
53
  this.apiUrl =
53
54
  options.baseUrl ||
54
55
  (process.env.NODE_ENV === "production"
55
- ? "https://api.queuedash.com"
56
- : "http://localhost:4001");
56
+ ? "https://sync.queuedash.com"
57
+ : "http://localhost:4002");
57
58
  this.batchSize = options.batchSize ?? 50;
58
59
  this.flushInterval = options.flushInterval ?? 100;
59
60
  this.maxRetries = options.maxRetries ?? 5;
@@ -65,7 +66,7 @@ class Queuedash {
65
66
  }
66
67
  /**
67
68
  * Attach a queue or worker for monitoring.
68
- * Auto-detects the queue library (BullMQ, Bull, Bee-Queue).
69
+ * Auto-detects the queue library (BullMQ, Bull, Bee-Queue, GroupMQ).
69
70
  *
70
71
  * @example
71
72
  * ```ts
@@ -97,7 +98,7 @@ class Queuedash {
97
98
  this.attachBee(resource);
98
99
  break;
99
100
  default:
100
- throw new Error("Queuedash: Unknown queue type. Supported: BullMQ Queue/Worker, Bull, Bee-Queue");
101
+ throw new Error("Queuedash: Unknown queue type. Supported: BullMQ Queue/Worker, Bull, Bee-Queue, GroupMQ");
101
102
  }
102
103
  return this;
103
104
  }
@@ -153,25 +154,25 @@ class Queuedash {
153
154
  }
154
155
  }
155
156
  this.attachedQueues.add(`bullmq:${queueName}`);
156
- const syncJobById = (jobId) => {
157
+ const syncJobById = (jobId, status) => {
157
158
  queue.getJob(jobId).then((job) => {
158
159
  if (job) {
159
- this.syncJob(this.extractBullMQJobData(job, queueName));
160
+ this.syncJob(this.extractBullMQJobData(job, queueName, status));
160
161
  }
161
162
  });
162
163
  };
163
- events.on("waiting", ({ jobId }) => syncJobById(jobId));
164
- events.on("progress", ({ jobId }) => syncJobById(jobId));
165
- events.on("completed", ({ jobId }) => syncJobById(jobId));
166
- events.on("failed", ({ jobId }) => syncJobById(jobId));
167
- events.on("waiting-children", ({ jobId }) => syncJobById(jobId));
168
- events.on("added", ({ jobId }) => syncJobById(jobId));
169
- events.on("active", ({ jobId }) => syncJobById(jobId));
170
- events.on("delayed", ({ jobId }) => syncJobById(jobId));
164
+ events.on("waiting", ({ jobId }) => syncJobById(jobId, "waiting"));
165
+ events.on("progress", ({ jobId }) => syncJobById(jobId, "active"));
166
+ events.on("completed", ({ jobId }) => syncJobById(jobId, "completed"));
167
+ events.on("failed", ({ jobId }) => syncJobById(jobId, "failed"));
168
+ events.on("waiting-children", ({ jobId }) => syncJobById(jobId, "waiting-children"));
169
+ events.on("added", ({ jobId }) => syncJobById(jobId, "waiting"));
170
+ events.on("active", ({ jobId }) => syncJobById(jobId, "active"));
171
+ events.on("delayed", ({ jobId }) => syncJobById(jobId, "delayed"));
171
172
  events.on("deduplicated", ({ jobId }) => syncJobById(jobId));
172
173
  events.on("removed", ({ jobId }) => this.deleteJob(jobId, queueName));
173
- events.on("stalled", ({ jobId }) => syncJobById(jobId));
174
- events.on("retries-exhausted", ({ jobId }) => syncJobById(jobId));
174
+ events.on("stalled", ({ jobId }) => syncJobById(jobId, "waiting"));
175
+ events.on("retries-exhausted", ({ jobId }) => syncJobById(jobId, "failed"));
175
176
  }
176
177
  attachBullMQWorker(_worker) {
177
178
  // TODO: Worker monitoring - track active jobs, stalled detection, etc.
@@ -227,7 +228,7 @@ class Queuedash {
227
228
  this.syncJob(jobData);
228
229
  });
229
230
  }
230
- extractBullMQJobData(job, queueName) {
231
+ extractBullMQJobData(job, queueName, status) {
231
232
  return {
232
233
  jobId: job.id,
233
234
  name: job.name,
@@ -243,6 +244,7 @@ class Queuedash {
243
244
  delay: job.opts?.delay,
244
245
  timestamp: job.timestamp,
245
246
  progress: typeof job.progress === "number" ? job.progress : null,
247
+ status,
246
248
  };
247
249
  }
248
250
  extractBullJobData(job, queueName) {
@@ -343,26 +345,23 @@ class Queuedash {
343
345
  const jobsToSync = [...this.jobQueue];
344
346
  this.jobQueue = [];
345
347
  try {
346
- const controller = new AbortController();
347
- const timeoutId = setTimeout(() => controller.abort(), this.requestTimeout);
348
- const response = await fetch(`${this.apiUrl}/api/v1/jobs/sync`, {
349
- method: "POST",
350
- headers: {
351
- "Content-Type": "application/json",
352
- Authorization: `Bearer ${this.apiKey}`,
353
- },
354
- body: JSON.stringify({ jobs: jobsToSync }),
355
- signal: controller.signal,
356
- });
357
- clearTimeout(timeoutId);
358
- if (!response.ok) {
359
- const errorText = await response.text();
360
- throw new Error(`HTTP ${response.status}: ${errorText}`);
361
- }
362
- const result = (await response.json());
363
- if (!result.success && result.errors) {
364
- console.warn("Queuedash: Some jobs failed to sync:", result.errors);
348
+ // Check if payload is too large and split into chunks if needed
349
+ const payload = JSON.stringify({ jobs: jobsToSync });
350
+ if (payload.length > MAX_PAYLOAD_SIZE) {
351
+ const chunks = this.splitIntoChunks(jobsToSync, MAX_PAYLOAD_SIZE);
352
+ for (const chunk of chunks) {
353
+ await this.sendBatch(chunk);
354
+ // Remove successfully sent jobs so they aren't re-queued on later chunk failure
355
+ jobsToSync.splice(0, chunk.length);
356
+ chunk.forEach((job) => {
357
+ this.syncingJobIds.delete(`${job.queueName}:${job.jobId}`);
358
+ });
359
+ }
360
+ this.retryCount = 0;
361
+ this.circuitBreakerFailures = 0;
362
+ return;
365
363
  }
364
+ await this.sendBatch(jobsToSync);
366
365
  this.retryCount = 0;
367
366
  this.circuitBreakerFailures = 0;
368
367
  jobsToSync.forEach((job) => {
@@ -404,6 +403,47 @@ class Queuedash {
404
403
  this.isFlushing = false;
405
404
  }
406
405
  }
406
+ splitIntoChunks(jobs, maxSize) {
407
+ const chunks = [];
408
+ let currentChunk = [];
409
+ let currentSize = 0;
410
+ for (const job of jobs) {
411
+ const jobSize = JSON.stringify(job).length;
412
+ if (currentSize + jobSize > maxSize && currentChunk.length > 0) {
413
+ chunks.push(currentChunk);
414
+ currentChunk = [];
415
+ currentSize = 0;
416
+ }
417
+ currentChunk.push(job);
418
+ currentSize += jobSize;
419
+ }
420
+ if (currentChunk.length > 0) {
421
+ chunks.push(currentChunk);
422
+ }
423
+ return chunks;
424
+ }
425
+ async sendBatch(jobs) {
426
+ const controller = new AbortController();
427
+ const timeoutId = setTimeout(() => controller.abort(), this.requestTimeout);
428
+ const response = await fetch(`${this.apiUrl}/api/v1/jobs/sync`, {
429
+ method: "POST",
430
+ headers: {
431
+ "Content-Type": "application/json",
432
+ Authorization: `Bearer ${this.apiKey}`,
433
+ },
434
+ body: JSON.stringify({ jobs }),
435
+ signal: controller.signal,
436
+ });
437
+ clearTimeout(timeoutId);
438
+ if (!response.ok) {
439
+ const errorText = await response.text();
440
+ throw new Error(`HTTP ${response.status}: ${errorText}`);
441
+ }
442
+ const result = (await response.json());
443
+ if (!result.success && result.errors) {
444
+ console.warn("Queuedash: Some jobs failed to sync:", result.errors);
445
+ }
446
+ }
407
447
  openCircuitBreaker() {
408
448
  if (this.circuitBreakerOpen)
409
449
  return;
@@ -85,7 +85,7 @@ describe("Queuedash SDK", () => {
85
85
  sdk.syncJob(createMockJobData("job-1"));
86
86
  // Trigger flush by advancing timer
87
87
  jest.advanceTimersByTime(100);
88
- expect(mockFetch).toHaveBeenCalledWith(expect.stringContaining("https://api.queuedash.com"), expect.any(Object));
88
+ expect(mockFetch).toHaveBeenCalledWith(expect.stringContaining("https://sync.queuedash.com"), expect.any(Object));
89
89
  process.env.NODE_ENV = originalEnv;
90
90
  });
91
91
  it("should use localhost URL in non-production environment", () => {
@@ -98,7 +98,7 @@ describe("Queuedash SDK", () => {
98
98
  sdk = new client_1.Queuedash({ apiKey: "test-api-key" });
99
99
  sdk.syncJob(createMockJobData("job-1"));
100
100
  jest.advanceTimersByTime(100);
101
- expect(mockFetch).toHaveBeenCalledWith(expect.stringContaining("http://localhost:4001"), expect.any(Object));
101
+ expect(mockFetch).toHaveBeenCalledWith(expect.stringContaining("http://localhost:4002"), expect.any(Object));
102
102
  process.env.NODE_ENV = originalEnv;
103
103
  });
104
104
  it("should override default URL with baseUrl option", () => {
package/dist/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export interface QueuedashOptions {
2
2
  /** Your Queuedash API key */
3
3
  apiKey: string;
4
- /** Override the API URL (defaults to https://api.queuedash.com in production) */
4
+ /** Override the API URL (defaults to https://sync.queuedash.com in production) */
5
5
  baseUrl?: string;
6
6
  /** Number of jobs to batch before syncing (default: 50) */
7
7
  batchSize?: number;
@@ -33,6 +33,7 @@ export interface JobData {
33
33
  delay?: number | null;
34
34
  timestamp?: number | null;
35
35
  progress?: number | null;
36
+ status?: string;
36
37
  }
37
38
  export interface SyncResponse {
38
39
  success: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,EAAE,IAAI,CAAC;IACd,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kDAAkD;IAClD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,OAAO,EAAE,IAAI,CAAC;IACd,WAAW,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@queuedash/sdk",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "description": "Queuedash SDK for real-time queue monitoring",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -40,6 +40,7 @@
40
40
  "@changesets/cli": "^2.29.7",
41
41
  "@types/jest": "^29.5.14",
42
42
  "@types/node": "^22.14.0",
43
+ "bullmq": "^5.67.2",
43
44
  "husky": "^9.1.7",
44
45
  "jest": "^29.7.0",
45
46
  "lint-staged": "^16.2.7",