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.
- package/README.md +283 -0
- package/dist/client/advanced.d.ts +174 -0
- package/dist/client/advanced.d.ts.map +1 -0
- package/dist/client/advanced.js +248 -0
- package/dist/client/advanced.js.map +1 -0
- package/dist/client/connection.d.ts +103 -0
- package/dist/client/connection.d.ts.map +1 -0
- package/dist/client/connection.js +570 -0
- package/dist/client/connection.js.map +1 -0
- package/dist/client/core.d.ts +119 -0
- package/dist/client/core.d.ts.map +1 -0
- package/dist/client/core.js +257 -0
- package/dist/client/core.js.map +1 -0
- package/dist/client/cron.d.ts +59 -0
- package/dist/client/cron.d.ts.map +1 -0
- package/dist/client/cron.js +82 -0
- package/dist/client/cron.js.map +1 -0
- package/dist/client/dlq.d.ts +52 -0
- package/dist/client/dlq.d.ts.map +1 -0
- package/dist/client/dlq.js +73 -0
- package/dist/client/dlq.js.map +1 -0
- package/dist/client/flows.d.ts +49 -0
- package/dist/client/flows.d.ts.map +1 -0
- package/dist/client/flows.js +67 -0
- package/dist/client/flows.js.map +1 -0
- package/dist/client/index.d.ts +644 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +829 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/jobs.d.ts +183 -0
- package/dist/client/jobs.d.ts.map +1 -0
- package/dist/client/jobs.js +272 -0
- package/dist/client/jobs.js.map +1 -0
- package/dist/client/kv.d.ts +63 -0
- package/dist/client/kv.d.ts.map +1 -0
- package/dist/client/kv.js +131 -0
- package/dist/client/kv.js.map +1 -0
- package/dist/client/metrics.d.ts +34 -0
- package/dist/client/metrics.d.ts.map +1 -0
- package/dist/client/metrics.js +49 -0
- package/dist/client/metrics.js.map +1 -0
- package/dist/client/pubsub.d.ts +42 -0
- package/dist/client/pubsub.d.ts.map +1 -0
- package/dist/client/pubsub.js +92 -0
- package/dist/client/pubsub.js.map +1 -0
- package/dist/client/queue.d.ts +111 -0
- package/dist/client/queue.d.ts.map +1 -0
- package/dist/client/queue.js +160 -0
- package/dist/client/queue.js.map +1 -0
- package/dist/client/types.d.ts +23 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +3 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client.d.ts +17 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +23 -0
- package/dist/client.js.map +1 -0
- package/dist/events.d.ts +184 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +340 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +30 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/queue.d.ts +104 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +139 -0
- package/dist/queue.js.map +1 -0
- package/dist/types.d.ts +185 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/worker.d.ts +88 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +296 -0
- package/dist/worker.js.map +1 -0
- 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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"}
|