flashq 0.1.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 (78) hide show
  1. package/README.md +283 -0
  2. package/dist/client/advanced.d.ts +174 -0
  3. package/dist/client/advanced.d.ts.map +1 -0
  4. package/dist/client/advanced.js +248 -0
  5. package/dist/client/advanced.js.map +1 -0
  6. package/dist/client/connection.d.ts +103 -0
  7. package/dist/client/connection.d.ts.map +1 -0
  8. package/dist/client/connection.js +570 -0
  9. package/dist/client/connection.js.map +1 -0
  10. package/dist/client/core.d.ts +119 -0
  11. package/dist/client/core.d.ts.map +1 -0
  12. package/dist/client/core.js +257 -0
  13. package/dist/client/core.js.map +1 -0
  14. package/dist/client/cron.d.ts +59 -0
  15. package/dist/client/cron.d.ts.map +1 -0
  16. package/dist/client/cron.js +82 -0
  17. package/dist/client/cron.js.map +1 -0
  18. package/dist/client/dlq.d.ts +52 -0
  19. package/dist/client/dlq.d.ts.map +1 -0
  20. package/dist/client/dlq.js +73 -0
  21. package/dist/client/dlq.js.map +1 -0
  22. package/dist/client/flows.d.ts +49 -0
  23. package/dist/client/flows.d.ts.map +1 -0
  24. package/dist/client/flows.js +67 -0
  25. package/dist/client/flows.js.map +1 -0
  26. package/dist/client/index.d.ts +644 -0
  27. package/dist/client/index.d.ts.map +1 -0
  28. package/dist/client/index.js +829 -0
  29. package/dist/client/index.js.map +1 -0
  30. package/dist/client/jobs.d.ts +183 -0
  31. package/dist/client/jobs.d.ts.map +1 -0
  32. package/dist/client/jobs.js +272 -0
  33. package/dist/client/jobs.js.map +1 -0
  34. package/dist/client/kv.d.ts +63 -0
  35. package/dist/client/kv.d.ts.map +1 -0
  36. package/dist/client/kv.js +131 -0
  37. package/dist/client/kv.js.map +1 -0
  38. package/dist/client/metrics.d.ts +34 -0
  39. package/dist/client/metrics.d.ts.map +1 -0
  40. package/dist/client/metrics.js +49 -0
  41. package/dist/client/metrics.js.map +1 -0
  42. package/dist/client/pubsub.d.ts +42 -0
  43. package/dist/client/pubsub.d.ts.map +1 -0
  44. package/dist/client/pubsub.js +92 -0
  45. package/dist/client/pubsub.js.map +1 -0
  46. package/dist/client/queue.d.ts +111 -0
  47. package/dist/client/queue.d.ts.map +1 -0
  48. package/dist/client/queue.js +160 -0
  49. package/dist/client/queue.js.map +1 -0
  50. package/dist/client/types.d.ts +23 -0
  51. package/dist/client/types.d.ts.map +1 -0
  52. package/dist/client/types.js +3 -0
  53. package/dist/client/types.js.map +1 -0
  54. package/dist/client.d.ts +17 -0
  55. package/dist/client.d.ts.map +1 -0
  56. package/dist/client.js +23 -0
  57. package/dist/client.js.map +1 -0
  58. package/dist/events.d.ts +184 -0
  59. package/dist/events.d.ts.map +1 -0
  60. package/dist/events.js +340 -0
  61. package/dist/events.js.map +1 -0
  62. package/dist/index.d.ts +30 -0
  63. package/dist/index.d.ts.map +1 -0
  64. package/dist/index.js +43 -0
  65. package/dist/index.js.map +1 -0
  66. package/dist/queue.d.ts +104 -0
  67. package/dist/queue.d.ts.map +1 -0
  68. package/dist/queue.js +139 -0
  69. package/dist/queue.js.map +1 -0
  70. package/dist/types.d.ts +185 -0
  71. package/dist/types.d.ts.map +1 -0
  72. package/dist/types.js +6 -0
  73. package/dist/types.js.map +1 -0
  74. package/dist/worker.d.ts +88 -0
  75. package/dist/worker.d.ts.map +1 -0
  76. package/dist/worker.js +296 -0
  77. package/dist/worker.js.map +1 -0
  78. package/package.json +70 -0
@@ -0,0 +1,644 @@
1
+ /**
2
+ * FlashQ Client - High-performance job queue client
3
+ *
4
+ * @example
5
+ * ```typescript
6
+ * import { FlashQ } from 'flashq';
7
+ *
8
+ * const client = new FlashQ();
9
+ *
10
+ * // Add a job (auto-connects!)
11
+ * const job = await client.add('emails', { to: 'user@example.com' });
12
+ *
13
+ * // That's it! No connect() needed.
14
+ * ```
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // With options
19
+ * const client = new FlashQ({
20
+ * host: 'localhost',
21
+ * port: 6789,
22
+ * token: 'secret'
23
+ * });
24
+ *
25
+ * // Add with job options
26
+ * await client.add('emails', { to: 'user@example.com' }, {
27
+ * priority: 10,
28
+ * delay: 5000,
29
+ * max_attempts: 3
30
+ * });
31
+ * ```
32
+ */
33
+ import { FlashQConnection } from './connection';
34
+ import * as kv from './kv';
35
+ import type { Job, JobState, JobWithState, PushOptions, QueueInfo, QueueStats, Metrics, CronJob, CronOptions, JobLogEntry, FlowChild, FlowResult, FlowOptions } from './types';
36
+ /**
37
+ * FlashQ Client - High-performance job queue client with auto-connect.
38
+ */
39
+ export declare class FlashQ extends FlashQConnection {
40
+ /**
41
+ * Push a job to a queue.
42
+ *
43
+ * @param queue - Queue name
44
+ * @param data - Job data payload
45
+ * @param options - Push options (priority, delay, ttl, etc.)
46
+ * @returns Created job
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const job = await client.push('emails', { to: 'user@example.com' });
51
+ * ```
52
+ */
53
+ push<T = unknown>(queueName: string, data: T, options?: PushOptions): Promise<Job>;
54
+ /**
55
+ * Add a job to a queue (alias for push).
56
+ *
57
+ * @param queue - Queue name
58
+ * @param data - Job data payload
59
+ * @param options - Push options
60
+ * @returns Created job
61
+ */
62
+ add<T = unknown>(queueName: string, data: T, options?: PushOptions): Promise<Job>;
63
+ /**
64
+ * Push multiple jobs to a queue in a single batch.
65
+ *
66
+ * @param queue - Queue name
67
+ * @param jobs - Array of jobs with data and options
68
+ * @returns Array of created job IDs
69
+ */
70
+ pushBatch<T = unknown>(queueName: string, jobList: Array<{
71
+ data: T;
72
+ } & PushOptions>): Promise<number[]>;
73
+ /**
74
+ * Add multiple jobs to a queue (alias for pushBatch).
75
+ */
76
+ addBulk<T = unknown>(queueName: string, jobList: Array<{
77
+ data: T;
78
+ } & PushOptions>): Promise<number[]>;
79
+ /**
80
+ * Pull a job from a queue (blocking with server-side timeout).
81
+ *
82
+ * @param queue - Queue name
83
+ * @param timeout - Server-side timeout in ms (default: 60s)
84
+ * @returns Job or null if timeout
85
+ */
86
+ pull<T = unknown>(queueName: string, timeout?: number): Promise<(Job & {
87
+ data: T;
88
+ }) | null>;
89
+ /**
90
+ * Pull multiple jobs from a queue.
91
+ *
92
+ * @param queue - Queue name
93
+ * @param count - Number of jobs to pull
94
+ * @param timeout - Server-side timeout in ms (default: 60s)
95
+ * @returns Array of jobs
96
+ */
97
+ pullBatch<T = unknown>(queueName: string, count: number, timeout?: number): Promise<Array<Job & {
98
+ data: T;
99
+ }>>;
100
+ /**
101
+ * Acknowledge a job as completed.
102
+ *
103
+ * @param jobId - Job ID
104
+ * @param result - Optional result data
105
+ */
106
+ ack(jobId: number, result?: unknown): Promise<void>;
107
+ /**
108
+ * Acknowledge multiple jobs at once.
109
+ *
110
+ * @param jobIds - Array of job IDs
111
+ * @returns Number of jobs acknowledged
112
+ */
113
+ ackBatch(jobIds: number[]): Promise<number>;
114
+ /**
115
+ * Fail a job (will retry or move to DLQ).
116
+ *
117
+ * @param jobId - Job ID
118
+ * @param error - Optional error message
119
+ */
120
+ fail(jobId: number, error?: string): Promise<void>;
121
+ /**
122
+ * Get a job with its current state.
123
+ *
124
+ * @param jobId - Job ID
125
+ * @returns Job with state, or null if not found
126
+ */
127
+ getJob(jobId: number): Promise<JobWithState | null>;
128
+ /**
129
+ * Get job state only.
130
+ *
131
+ * @param jobId - Job ID
132
+ * @returns Job state or null if not found
133
+ */
134
+ getState(jobId: number): Promise<JobState | null>;
135
+ /**
136
+ * Get job result.
137
+ *
138
+ * @param jobId - Job ID
139
+ * @returns Job result or null
140
+ */
141
+ getResult<T = unknown>(jobId: number): Promise<T | null>;
142
+ /**
143
+ * Wait for a job to complete and return its result.
144
+ *
145
+ * @param jobId - Job ID
146
+ * @param timeout - Timeout in ms (default: 30000)
147
+ * @returns Job result or null
148
+ * @throws Error if job fails or times out
149
+ */
150
+ finished<T = unknown>(jobId: number, timeout?: number): Promise<T | null>;
151
+ /**
152
+ * Get a job by its custom ID.
153
+ *
154
+ * @param customId - Custom job ID
155
+ * @returns Job with state or null
156
+ */
157
+ getJobByCustomId(customId: string): Promise<JobWithState | null>;
158
+ /**
159
+ * Get multiple jobs by their IDs in a single call.
160
+ *
161
+ * @param jobIds - Array of job IDs
162
+ * @returns Array of jobs with states
163
+ */
164
+ getJobsBatch(jobIds: number[]): Promise<JobWithState[]>;
165
+ /**
166
+ * Cancel a pending job.
167
+ *
168
+ * @param jobId - Job ID
169
+ */
170
+ cancel(jobId: number): Promise<void>;
171
+ /**
172
+ * Update job progress.
173
+ *
174
+ * @param jobId - Job ID
175
+ * @param progress - Progress value (0-100)
176
+ * @param message - Optional progress message
177
+ */
178
+ progress(jobId: number, progressValue: number, message?: string): Promise<void>;
179
+ /**
180
+ * Get job progress.
181
+ *
182
+ * @param jobId - Job ID
183
+ * @returns Progress value and message
184
+ */
185
+ getProgress(jobId: number): Promise<{
186
+ progress: number;
187
+ message?: string;
188
+ }>;
189
+ /**
190
+ * Add a log entry to a job.
191
+ *
192
+ * @param jobId - Job ID
193
+ * @param message - Log message
194
+ * @param level - Log level (info, warn, error)
195
+ */
196
+ log(jobId: number, message: string, level?: 'info' | 'warn' | 'error'): Promise<void>;
197
+ /**
198
+ * Get log entries for a job.
199
+ *
200
+ * @param jobId - Job ID
201
+ * @returns Array of log entries
202
+ */
203
+ getLogs(jobId: number): Promise<JobLogEntry[]>;
204
+ /**
205
+ * Send a heartbeat for a long-running job.
206
+ *
207
+ * @param jobId - Job ID
208
+ */
209
+ heartbeat(jobId: number): Promise<void>;
210
+ /**
211
+ * Pause a queue.
212
+ *
213
+ * @param queue - Queue name
214
+ */
215
+ pause(queueName: string): Promise<void>;
216
+ /**
217
+ * Resume a paused queue.
218
+ *
219
+ * @param queue - Queue name
220
+ */
221
+ resume(queueName: string): Promise<void>;
222
+ /**
223
+ * Check if a queue is paused.
224
+ *
225
+ * @param queue - Queue name
226
+ * @returns true if paused
227
+ */
228
+ isPaused(queueName: string): Promise<boolean>;
229
+ /**
230
+ * Set rate limit for a queue (jobs per second).
231
+ *
232
+ * @param queue - Queue name
233
+ * @param limit - Jobs per second
234
+ */
235
+ setRateLimit(queueName: string, limit: number): Promise<void>;
236
+ /**
237
+ * Clear rate limit for a queue.
238
+ *
239
+ * @param queue - Queue name
240
+ */
241
+ clearRateLimit(queueName: string): Promise<void>;
242
+ /**
243
+ * Set concurrency limit for a queue.
244
+ *
245
+ * @param queue - Queue name
246
+ * @param limit - Max concurrent jobs
247
+ */
248
+ setConcurrency(queueName: string, limit: number): Promise<void>;
249
+ /**
250
+ * Clear concurrency limit for a queue.
251
+ *
252
+ * @param queue - Queue name
253
+ */
254
+ clearConcurrency(queueName: string): Promise<void>;
255
+ /**
256
+ * List all queues.
257
+ *
258
+ * @returns Array of queue info
259
+ */
260
+ listQueues(): Promise<QueueInfo[]>;
261
+ /**
262
+ * Get jobs from the dead letter queue.
263
+ *
264
+ * @param queue - Queue name
265
+ * @param count - Max jobs to return (default: 100)
266
+ * @returns Array of failed jobs
267
+ */
268
+ getDlq(queueName: string, count?: number): Promise<Job[]>;
269
+ /**
270
+ * Retry jobs from the dead letter queue.
271
+ *
272
+ * @param queue - Queue name
273
+ * @param jobId - Optional specific job ID to retry
274
+ * @returns Number of jobs retried
275
+ */
276
+ retryDlq(queueName: string, jobId?: number): Promise<number>;
277
+ /**
278
+ * Purge all jobs from the dead letter queue.
279
+ *
280
+ * @param queue - Queue name
281
+ * @returns Number of jobs purged
282
+ */
283
+ purgeDlq(queueName: string): Promise<number>;
284
+ /**
285
+ * Add a cron job for scheduled recurring tasks.
286
+ *
287
+ * @param name - Unique cron job name
288
+ * @param options - Cron options
289
+ */
290
+ addCron(name: string, options: CronOptions): Promise<void>;
291
+ /**
292
+ * Delete a cron job.
293
+ *
294
+ * @param name - Cron job name
295
+ * @returns true if deleted
296
+ */
297
+ deleteCron(name: string): Promise<boolean>;
298
+ /**
299
+ * List all cron jobs.
300
+ *
301
+ * @returns Array of cron jobs
302
+ */
303
+ listCrons(): Promise<CronJob[]>;
304
+ /**
305
+ * Get queue statistics.
306
+ *
307
+ * @returns Queue stats
308
+ */
309
+ stats(): Promise<QueueStats>;
310
+ /**
311
+ * Get detailed metrics.
312
+ *
313
+ * @returns Detailed metrics object
314
+ */
315
+ metrics(): Promise<Metrics>;
316
+ /**
317
+ * Push a flow (parent job with children).
318
+ *
319
+ * @param queue - Parent queue name
320
+ * @param parentData - Parent job data
321
+ * @param children - Array of child jobs
322
+ * @param options - Flow options
323
+ * @returns Parent and children IDs
324
+ */
325
+ pushFlow<T = unknown>(queueName: string, parentData: T, children: FlowChild[], options?: FlowOptions): Promise<FlowResult>;
326
+ /**
327
+ * Get children job IDs for a parent job in a flow.
328
+ *
329
+ * @param jobId - Parent job ID
330
+ * @returns Array of children job IDs
331
+ */
332
+ getChildren(jobId: number): Promise<number[]>;
333
+ /**
334
+ * Get jobs filtered by queue and/or state with pagination.
335
+ *
336
+ * @param options - Filter options
337
+ * @returns Jobs and total count
338
+ */
339
+ getJobs(options?: {
340
+ queue?: string;
341
+ state?: JobState;
342
+ limit?: number;
343
+ offset?: number;
344
+ }): Promise<{
345
+ jobs: JobWithState[];
346
+ total: number;
347
+ }>;
348
+ /**
349
+ * Get job counts by state for a queue.
350
+ *
351
+ * @param queue - Queue name
352
+ * @returns Counts by state
353
+ */
354
+ getJobCounts(queueName: string): Promise<{
355
+ waiting: number;
356
+ active: number;
357
+ delayed: number;
358
+ completed: number;
359
+ failed: number;
360
+ }>;
361
+ /**
362
+ * Get total count of jobs in a queue (waiting + delayed).
363
+ *
364
+ * @param queue - Queue name
365
+ * @returns Total job count
366
+ */
367
+ count(queueName: string): Promise<number>;
368
+ /**
369
+ * Clean jobs older than grace period by state.
370
+ *
371
+ * @param queue - Queue name
372
+ * @param grace - Grace period in ms
373
+ * @param state - Job state to clean
374
+ * @param limit - Optional max jobs to clean
375
+ * @returns Number of jobs cleaned
376
+ */
377
+ clean(queueName: string, grace: number, state: 'waiting' | 'delayed' | 'completed' | 'failed', limit?: number): Promise<number>;
378
+ /**
379
+ * Drain all waiting jobs from a queue.
380
+ *
381
+ * @param queue - Queue name
382
+ * @returns Number of jobs drained
383
+ */
384
+ drain(queueName: string): Promise<number>;
385
+ /**
386
+ * Remove ALL data for a queue.
387
+ *
388
+ * @param queue - Queue name
389
+ * @returns Total items removed
390
+ */
391
+ obliterate(queueName: string): Promise<number>;
392
+ /**
393
+ * Change job priority.
394
+ *
395
+ * @param jobId - Job ID
396
+ * @param priority - New priority
397
+ */
398
+ changePriority(jobId: number, priority: number): Promise<void>;
399
+ /**
400
+ * Move job from processing back to delayed.
401
+ *
402
+ * @param jobId - Job ID
403
+ * @param delay - Delay in ms
404
+ */
405
+ moveToDelayed(jobId: number, delay: number): Promise<void>;
406
+ /**
407
+ * Promote delayed job to waiting immediately.
408
+ *
409
+ * @param jobId - Job ID
410
+ */
411
+ promote(jobId: number): Promise<void>;
412
+ /**
413
+ * Update job data.
414
+ *
415
+ * @param jobId - Job ID
416
+ * @param data - New data payload
417
+ */
418
+ update<T = unknown>(jobId: number, data: T): Promise<void>;
419
+ /**
420
+ * Discard job - move directly to DLQ.
421
+ *
422
+ * @param jobId - Job ID
423
+ */
424
+ discard(jobId: number): Promise<void>;
425
+ /**
426
+ * Subscribe to real-time events via SSE.
427
+ *
428
+ * @param queue - Optional queue to filter events
429
+ * @returns EventSubscriber instance
430
+ *
431
+ * @example
432
+ * ```typescript
433
+ * const events = client.subscribe();
434
+ * events.on('completed', (e) => console.log(`Job ${e.jobId} completed`));
435
+ * await events.connect();
436
+ * ```
437
+ */
438
+ subscribe(queueName?: string): import('../events').EventSubscriber;
439
+ /**
440
+ * Subscribe to real-time events via WebSocket.
441
+ *
442
+ * @param queue - Optional queue to filter events
443
+ * @returns EventSubscriber instance
444
+ */
445
+ subscribeWs(queueName?: string): import('../events').EventSubscriber;
446
+ /**
447
+ * Set a key-value pair.
448
+ *
449
+ * @param key - Key name
450
+ * @param value - Value (any JSON-serializable data)
451
+ * @param options - Optional TTL settings
452
+ *
453
+ * @example
454
+ * ```typescript
455
+ * await client.kvSet('user:123', { name: 'John' });
456
+ * await client.kvSet('session:abc', { token: 'xyz' }, { ttl: 3600000 }); // 1 hour TTL
457
+ * ```
458
+ */
459
+ kvSet(key: string, value: unknown, options?: kv.KvSetOptions): Promise<void>;
460
+ /**
461
+ * Get a value by key.
462
+ *
463
+ * @param key - Key name
464
+ * @returns Value or null if not found/expired
465
+ *
466
+ * @example
467
+ * ```typescript
468
+ * const user = await client.kvGet<User>('user:123');
469
+ * ```
470
+ */
471
+ kvGet<T = unknown>(key: string): Promise<T | null>;
472
+ /**
473
+ * Delete a key.
474
+ *
475
+ * @param key - Key name
476
+ * @returns true if key existed
477
+ */
478
+ kvDel(key: string): Promise<boolean>;
479
+ /**
480
+ * Check if a key exists.
481
+ *
482
+ * @param key - Key name
483
+ * @returns true if key exists and not expired
484
+ */
485
+ kvExists(key: string): Promise<boolean>;
486
+ /**
487
+ * Set TTL on an existing key.
488
+ *
489
+ * @param key - Key name
490
+ * @param ttl - Time-to-live in milliseconds
491
+ * @returns true if key existed
492
+ */
493
+ kvExpire(key: string, ttl: number): Promise<boolean>;
494
+ /**
495
+ * Get remaining TTL for a key.
496
+ *
497
+ * @param key - Key name
498
+ * @returns ms remaining, -1 if no TTL, -2 if key doesn't exist
499
+ */
500
+ kvTtl(key: string): Promise<number>;
501
+ /**
502
+ * Get multiple values by keys (batch operation).
503
+ *
504
+ * @param keys - Array of keys
505
+ * @returns Array of values (null for missing keys)
506
+ *
507
+ * @example
508
+ * ```typescript
509
+ * const [user1, user2, user3] = await client.kvMget<User>(['user:1', 'user:2', 'user:3']);
510
+ * ```
511
+ */
512
+ kvMget<T = unknown>(keys: string[]): Promise<(T | null)[]>;
513
+ /**
514
+ * Set multiple key-value pairs (batch operation).
515
+ *
516
+ * @param entries - Array of {key, value, ttl?}
517
+ * @returns Number of keys set
518
+ *
519
+ * @example
520
+ * ```typescript
521
+ * await client.kvMset([
522
+ * { key: 'user:1', value: { name: 'Alice' } },
523
+ * { key: 'user:2', value: { name: 'Bob' }, ttl: 60000 },
524
+ * ]);
525
+ * ```
526
+ */
527
+ kvMset(entries: kv.KvEntry[]): Promise<number>;
528
+ /**
529
+ * List keys matching a pattern.
530
+ *
531
+ * @param pattern - Glob pattern (* = any, ? = one char)
532
+ * @returns Array of matching keys
533
+ *
534
+ * @example
535
+ * ```typescript
536
+ * const userKeys = await client.kvKeys('user:*');
537
+ * const sessionKeys = await client.kvKeys('session:???');
538
+ * ```
539
+ */
540
+ kvKeys(pattern?: string): Promise<string[]>;
541
+ /**
542
+ * Increment a numeric value atomically.
543
+ *
544
+ * @param key - Key name
545
+ * @param by - Amount to increment (default: 1)
546
+ * @returns New value
547
+ *
548
+ * @example
549
+ * ```typescript
550
+ * const views = await client.kvIncr('page:views');
551
+ * const score = await client.kvIncr('user:123:score', 10);
552
+ * ```
553
+ */
554
+ kvIncr(key: string, by?: number): Promise<number>;
555
+ /**
556
+ * Decrement a numeric value atomically.
557
+ *
558
+ * @param key - Key name
559
+ * @param by - Amount to decrement (default: 1)
560
+ * @returns New value
561
+ */
562
+ kvDecr(key: string, by?: number): Promise<number>;
563
+ /**
564
+ * Publish a message to a channel.
565
+ *
566
+ * @param channel - Channel name
567
+ * @param message - Message data (any JSON-serializable data)
568
+ * @returns Number of subscribers that received the message
569
+ *
570
+ * @example
571
+ * ```typescript
572
+ * const receivers = await client.publish('notifications', { type: 'alert', text: 'Hello!' });
573
+ * console.log(`Message sent to ${receivers} subscribers`);
574
+ * ```
575
+ */
576
+ publish(channel: string, message: unknown): Promise<number>;
577
+ /**
578
+ * Subscribe to channels.
579
+ * Note: For real-time message delivery, use WebSocket/SSE connections.
580
+ *
581
+ * @param channels - Array of channel names
582
+ * @returns List of subscribed channels
583
+ *
584
+ * @example
585
+ * ```typescript
586
+ * await client.pubsubSubscribe(['notifications', 'alerts']);
587
+ * ```
588
+ */
589
+ pubsubSubscribe(channels: string[]): Promise<string[]>;
590
+ /**
591
+ * Subscribe to channels matching patterns (e.g., "events:*").
592
+ *
593
+ * @param patterns - Array of glob patterns
594
+ * @returns List of subscribed patterns
595
+ *
596
+ * @example
597
+ * ```typescript
598
+ * await client.pubsubPsubscribe(['events:*', 'logs:*']);
599
+ * ```
600
+ */
601
+ pubsubPsubscribe(patterns: string[]): Promise<string[]>;
602
+ /**
603
+ * Unsubscribe from channels.
604
+ *
605
+ * @param channels - Array of channel names
606
+ * @returns List of unsubscribed channels
607
+ */
608
+ pubsubUnsubscribe(channels: string[]): Promise<string[]>;
609
+ /**
610
+ * Unsubscribe from patterns.
611
+ *
612
+ * @param patterns - Array of patterns
613
+ * @returns List of unsubscribed patterns
614
+ */
615
+ pubsubPunsubscribe(patterns: string[]): Promise<string[]>;
616
+ /**
617
+ * List active channels (optionally matching a pattern).
618
+ *
619
+ * @param pattern - Optional glob pattern
620
+ * @returns Array of active channel names
621
+ *
622
+ * @example
623
+ * ```typescript
624
+ * const allChannels = await client.pubsubChannels();
625
+ * const eventChannels = await client.pubsubChannels('events:*');
626
+ * ```
627
+ */
628
+ pubsubChannels(pattern?: string): Promise<string[]>;
629
+ /**
630
+ * Get subscriber counts for channels.
631
+ *
632
+ * @param channels - Array of channel names
633
+ * @returns Array of [channel, count] tuples
634
+ *
635
+ * @example
636
+ * ```typescript
637
+ * const counts = await client.pubsubNumsub(['notifications', 'alerts']);
638
+ * // [['notifications', 5], ['alerts', 2]]
639
+ * ```
640
+ */
641
+ pubsubNumsub(channels: string[]): Promise<Array<[string, number]>>;
642
+ }
643
+ export default FlashQ;
644
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}