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,34 @@
1
+ /**
2
+ * Stats and metrics operations
3
+ */
4
+ import type { IFlashQClient, QueueStats, Metrics } from './types';
5
+ /**
6
+ * Get queue statistics.
7
+ *
8
+ * @param client - FlashQ client instance
9
+ * @returns Queue stats (queued, processing, delayed, dlq counts)
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const stats = await client.stats();
14
+ * console.log(`Queued: ${stats.queued}`);
15
+ * console.log(`Processing: ${stats.processing}`);
16
+ * console.log(`Delayed: ${stats.delayed}`);
17
+ * console.log(`DLQ: ${stats.dlq}`);
18
+ * ```
19
+ */
20
+ export declare function stats(client: IFlashQClient): Promise<QueueStats>;
21
+ /**
22
+ * Get detailed metrics.
23
+ *
24
+ * @param client - FlashQ client instance
25
+ * @returns Detailed metrics object
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const metrics = await client.metrics();
30
+ * console.log('Throughput:', metrics.throughput);
31
+ * ```
32
+ */
33
+ export declare function metrics(client: IFlashQClient): Promise<Metrics>;
34
+ //# sourceMappingURL=metrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/client/metrics.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElE;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,KAAK,CACzB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,UAAU,CAAC,CAgBrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,OAAO,CAAC,CAKlB"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stats = stats;
4
+ exports.metrics = metrics;
5
+ /**
6
+ * Get queue statistics.
7
+ *
8
+ * @param client - FlashQ client instance
9
+ * @returns Queue stats (queued, processing, delayed, dlq counts)
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const stats = await client.stats();
14
+ * console.log(`Queued: ${stats.queued}`);
15
+ * console.log(`Processing: ${stats.processing}`);
16
+ * console.log(`Delayed: ${stats.delayed}`);
17
+ * console.log(`DLQ: ${stats.dlq}`);
18
+ * ```
19
+ */
20
+ async function stats(client) {
21
+ const response = await client.send({
22
+ cmd: 'STATS',
23
+ });
24
+ return {
25
+ queued: response.queued,
26
+ processing: response.processing,
27
+ delayed: response.delayed,
28
+ dlq: response.dlq,
29
+ };
30
+ }
31
+ /**
32
+ * Get detailed metrics.
33
+ *
34
+ * @param client - FlashQ client instance
35
+ * @returns Detailed metrics object
36
+ *
37
+ * @example
38
+ * ```typescript
39
+ * const metrics = await client.metrics();
40
+ * console.log('Throughput:', metrics.throughput);
41
+ * ```
42
+ */
43
+ async function metrics(client) {
44
+ const response = await client.send({
45
+ cmd: 'METRICS',
46
+ });
47
+ return response.metrics;
48
+ }
49
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/client/metrics.ts"],"names":[],"mappings":";;AAoBA,sBAkBC;AAcD,0BAOC;AAtDD;;;;;;;;;;;;;;GAcG;AACI,KAAK,UAAU,KAAK,CACzB,MAAqB;IAErB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAM/B;QACD,GAAG,EAAE,OAAO;KACb,CAAC,CAAC;IACH,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,GAAG,EAAE,QAAQ,CAAC,GAAG;KAClB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,OAAO,CAC3B,MAAqB;IAErB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAoC;QACpE,GAAG,EAAE,SAAS;KACf,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Pub/Sub operations for FlashQ client.
3
+ * Redis-like publish/subscribe messaging.
4
+ */
5
+ import type { FlashQConnection } from './connection';
6
+ /**
7
+ * Publish a message to a channel.
8
+ * @returns Number of subscribers that received the message.
9
+ */
10
+ export declare function publish(client: FlashQConnection, channel: string, message: unknown): Promise<number>;
11
+ /**
12
+ * Subscribe to channels.
13
+ * @returns List of subscribed channels.
14
+ */
15
+ export declare function subscribe(client: FlashQConnection, channels: string[]): Promise<string[]>;
16
+ /**
17
+ * Subscribe to patterns (e.g., "events:*").
18
+ * @returns List of subscribed patterns.
19
+ */
20
+ export declare function psubscribe(client: FlashQConnection, patterns: string[]): Promise<string[]>;
21
+ /**
22
+ * Unsubscribe from channels.
23
+ * @returns List of unsubscribed channels.
24
+ */
25
+ export declare function unsubscribe(client: FlashQConnection, channels: string[]): Promise<string[]>;
26
+ /**
27
+ * Unsubscribe from patterns.
28
+ * @returns List of unsubscribed patterns.
29
+ */
30
+ export declare function punsubscribe(client: FlashQConnection, patterns: string[]): Promise<string[]>;
31
+ /**
32
+ * List active channels.
33
+ * @param pattern - Optional glob pattern to filter channels
34
+ * @returns Array of active channel names
35
+ */
36
+ export declare function channels(client: FlashQConnection, pattern?: string): Promise<string[]>;
37
+ /**
38
+ * Get subscriber counts for channels.
39
+ * @returns Array of [channel, count] tuples
40
+ */
41
+ export declare function numsub(client: FlashQConnection, channelNames: string[]): Promise<Array<[string, number]>>;
42
+ //# sourceMappingURL=pubsub.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pubsub.d.ts","sourceRoot":"","sources":["../../src/client/pubsub.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AA2BrD;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,gBAAgB,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAMnB;AAED;;;GAGG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,gBAAgB,EACxB,YAAY,EAAE,MAAM,EAAE,GACrB,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,CAMlC"}
@@ -0,0 +1,92 @@
1
+ "use strict";
2
+ /**
3
+ * Pub/Sub operations for FlashQ client.
4
+ * Redis-like publish/subscribe messaging.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.publish = publish;
8
+ exports.subscribe = subscribe;
9
+ exports.psubscribe = psubscribe;
10
+ exports.unsubscribe = unsubscribe;
11
+ exports.punsubscribe = punsubscribe;
12
+ exports.channels = channels;
13
+ exports.numsub = numsub;
14
+ /**
15
+ * Publish a message to a channel.
16
+ * @returns Number of subscribers that received the message.
17
+ */
18
+ async function publish(client, channel, message) {
19
+ const response = await client.send({ cmd: 'PUB', channel, message });
20
+ if (!response.ok) {
21
+ throw new Error(response.error || 'Publish failed');
22
+ }
23
+ return response.receivers;
24
+ }
25
+ /**
26
+ * Subscribe to channels.
27
+ * @returns List of subscribed channels.
28
+ */
29
+ async function subscribe(client, channels) {
30
+ const response = await client.send({ cmd: 'SUB', channels });
31
+ if (!response.ok) {
32
+ throw new Error(response.error || 'Subscribe failed');
33
+ }
34
+ return response.channels;
35
+ }
36
+ /**
37
+ * Subscribe to patterns (e.g., "events:*").
38
+ * @returns List of subscribed patterns.
39
+ */
40
+ async function psubscribe(client, patterns) {
41
+ const response = await client.send({ cmd: 'PSUB', patterns });
42
+ if (!response.ok) {
43
+ throw new Error(response.error || 'Pattern subscribe failed');
44
+ }
45
+ return response.channels;
46
+ }
47
+ /**
48
+ * Unsubscribe from channels.
49
+ * @returns List of unsubscribed channels.
50
+ */
51
+ async function unsubscribe(client, channels) {
52
+ const response = await client.send({ cmd: 'UNSUB', channels });
53
+ if (!response.ok) {
54
+ throw new Error(response.error || 'Unsubscribe failed');
55
+ }
56
+ return response.channels;
57
+ }
58
+ /**
59
+ * Unsubscribe from patterns.
60
+ * @returns List of unsubscribed patterns.
61
+ */
62
+ async function punsubscribe(client, patterns) {
63
+ const response = await client.send({ cmd: 'PUNSUB', patterns });
64
+ if (!response.ok) {
65
+ throw new Error(response.error || 'Pattern unsubscribe failed');
66
+ }
67
+ return response.channels;
68
+ }
69
+ /**
70
+ * List active channels.
71
+ * @param pattern - Optional glob pattern to filter channels
72
+ * @returns Array of active channel names
73
+ */
74
+ async function channels(client, pattern) {
75
+ const response = await client.send({ cmd: 'PUBSUBCHANNELS', pattern });
76
+ if (!response.ok) {
77
+ throw new Error(response.error || 'Channels list failed');
78
+ }
79
+ return response.channels;
80
+ }
81
+ /**
82
+ * Get subscriber counts for channels.
83
+ * @returns Array of [channel, count] tuples
84
+ */
85
+ async function numsub(client, channelNames) {
86
+ const response = await client.send({ cmd: 'PUBSUBNUMSUB', channels: channelNames });
87
+ if (!response.ok) {
88
+ throw new Error(response.error || 'Numsub failed');
89
+ }
90
+ return response.counts;
91
+ }
92
+ //# sourceMappingURL=pubsub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pubsub.js","sourceRoot":"","sources":["../../src/client/pubsub.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAiCH,0BAUC;AAMD,8BASC;AAMD,gCASC;AAMD,kCASC;AAMD,oCASC;AAOD,4BASC;AAMD,wBASC;AAzGD;;;GAGG;AACI,KAAK,UAAU,OAAO,CAC3B,MAAwB,EACxB,OAAe,EACf,OAAgB;IAEhB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAc,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAClF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,gBAAgB,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,QAAQ,CAAC,SAAS,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,SAAS,CAC7B,MAAwB,EACxB,QAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAc,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,kBAAkB,CAAC,CAAC;IACxD,CAAC;IACD,OAAO,QAAQ,CAAC,QAAQ,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,UAAU,CAC9B,MAAwB,EACxB,QAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAc,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,0BAA0B,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,QAAQ,CAAC,QAAQ,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,WAAW,CAC/B,MAAwB,EACxB,QAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAc,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5E,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,oBAAoB,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,QAAQ,CAAC,QAAQ,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,YAAY,CAChC,MAAwB,EACxB,QAAkB;IAElB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAc,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,4BAA4B,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,QAAQ,CAAC,QAAQ,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,QAAQ,CAC5B,MAAwB,EACxB,OAAgB;IAEhB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAmB,EAAE,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC;IACzF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,sBAAsB,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,QAAQ,CAAC,QAAQ,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,MAAM,CAC1B,MAAwB,EACxB,YAAsB;IAEtB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAiB,EAAE,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,CAAC;IACpG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,eAAe,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,QAAQ,CAAC,MAAM,CAAC;AACzB,CAAC"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * Queue control operations
3
+ */
4
+ import type { IFlashQClient, QueueInfo } from './types';
5
+ /**
6
+ * Pause a queue. Workers will stop pulling jobs.
7
+ *
8
+ * @param client - FlashQ client instance
9
+ * @param queue - Queue name
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * await client.pause('emails');
14
+ * ```
15
+ */
16
+ export declare function pause(client: IFlashQClient, queue: string): Promise<void>;
17
+ /**
18
+ * Resume a paused queue.
19
+ *
20
+ * @param client - FlashQ client instance
21
+ * @param queue - Queue name
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * await client.resume('emails');
26
+ * ```
27
+ */
28
+ export declare function resume(client: IFlashQClient, queue: string): Promise<void>;
29
+ /**
30
+ * Check if a queue is paused.
31
+ *
32
+ * @param client - FlashQ client instance
33
+ * @param queue - Queue name
34
+ * @returns true if paused
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * if (await client.isPaused('emails')) {
39
+ * console.log('Queue is paused');
40
+ * }
41
+ * ```
42
+ */
43
+ export declare function isPaused(client: IFlashQClient, queue: string): Promise<boolean>;
44
+ /**
45
+ * Set rate limit for a queue (jobs per second).
46
+ *
47
+ * @param client - FlashQ client instance
48
+ * @param queue - Queue name
49
+ * @param limit - Jobs per second
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * // Allow 10 jobs per second
54
+ * await client.setRateLimit('api-calls', 10);
55
+ * ```
56
+ */
57
+ export declare function setRateLimit(client: IFlashQClient, queue: string, limit: number): Promise<void>;
58
+ /**
59
+ * Clear rate limit for a queue.
60
+ *
61
+ * @param client - FlashQ client instance
62
+ * @param queue - Queue name
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * await client.clearRateLimit('api-calls');
67
+ * ```
68
+ */
69
+ export declare function clearRateLimit(client: IFlashQClient, queue: string): Promise<void>;
70
+ /**
71
+ * Set concurrency limit for a queue.
72
+ *
73
+ * @param client - FlashQ client instance
74
+ * @param queue - Queue name
75
+ * @param limit - Max concurrent jobs
76
+ *
77
+ * @example
78
+ * ```typescript
79
+ * // Allow max 5 concurrent jobs
80
+ * await client.setConcurrency('heavy-tasks', 5);
81
+ * ```
82
+ */
83
+ export declare function setConcurrency(client: IFlashQClient, queue: string, limit: number): Promise<void>;
84
+ /**
85
+ * Clear concurrency limit for a queue.
86
+ *
87
+ * @param client - FlashQ client instance
88
+ * @param queue - Queue name
89
+ *
90
+ * @example
91
+ * ```typescript
92
+ * await client.clearConcurrency('heavy-tasks');
93
+ * ```
94
+ */
95
+ export declare function clearConcurrency(client: IFlashQClient, queue: string): Promise<void>;
96
+ /**
97
+ * List all queues.
98
+ *
99
+ * @param client - FlashQ client instance
100
+ * @returns Array of queue info
101
+ *
102
+ * @example
103
+ * ```typescript
104
+ * const queues = await client.listQueues();
105
+ * for (const q of queues) {
106
+ * console.log(`${q.name}: ${q.size} jobs`);
107
+ * }
108
+ * ```
109
+ */
110
+ export declare function listQueues(client: IFlashQClient): Promise<QueueInfo[]>;
111
+ //# sourceMappingURL=queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../src/client/queue.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAExD;;;;;;;;;;GAUG;AACH,wBAAsB,KAAK,CACzB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,OAAO,CAAC,CAMlB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,SAAS,EAAE,CAAC,CAKtB"}
@@ -0,0 +1,160 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pause = pause;
4
+ exports.resume = resume;
5
+ exports.isPaused = isPaused;
6
+ exports.setRateLimit = setRateLimit;
7
+ exports.clearRateLimit = clearRateLimit;
8
+ exports.setConcurrency = setConcurrency;
9
+ exports.clearConcurrency = clearConcurrency;
10
+ exports.listQueues = listQueues;
11
+ /**
12
+ * Pause a queue. Workers will stop pulling jobs.
13
+ *
14
+ * @param client - FlashQ client instance
15
+ * @param queue - Queue name
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * await client.pause('emails');
20
+ * ```
21
+ */
22
+ async function pause(client, queue) {
23
+ await client.send({
24
+ cmd: 'PAUSE',
25
+ queue,
26
+ });
27
+ }
28
+ /**
29
+ * Resume a paused queue.
30
+ *
31
+ * @param client - FlashQ client instance
32
+ * @param queue - Queue name
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * await client.resume('emails');
37
+ * ```
38
+ */
39
+ async function resume(client, queue) {
40
+ await client.send({
41
+ cmd: 'RESUME',
42
+ queue,
43
+ });
44
+ }
45
+ /**
46
+ * Check if a queue is paused.
47
+ *
48
+ * @param client - FlashQ client instance
49
+ * @param queue - Queue name
50
+ * @returns true if paused
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * if (await client.isPaused('emails')) {
55
+ * console.log('Queue is paused');
56
+ * }
57
+ * ```
58
+ */
59
+ async function isPaused(client, queue) {
60
+ const response = await client.send({
61
+ cmd: 'ISPAUSED',
62
+ queue,
63
+ });
64
+ return response.paused;
65
+ }
66
+ /**
67
+ * Set rate limit for a queue (jobs per second).
68
+ *
69
+ * @param client - FlashQ client instance
70
+ * @param queue - Queue name
71
+ * @param limit - Jobs per second
72
+ *
73
+ * @example
74
+ * ```typescript
75
+ * // Allow 10 jobs per second
76
+ * await client.setRateLimit('api-calls', 10);
77
+ * ```
78
+ */
79
+ async function setRateLimit(client, queue, limit) {
80
+ await client.send({
81
+ cmd: 'RATELIMIT',
82
+ queue,
83
+ limit,
84
+ });
85
+ }
86
+ /**
87
+ * Clear rate limit for a queue.
88
+ *
89
+ * @param client - FlashQ client instance
90
+ * @param queue - Queue name
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * await client.clearRateLimit('api-calls');
95
+ * ```
96
+ */
97
+ async function clearRateLimit(client, queue) {
98
+ await client.send({
99
+ cmd: 'RATELIMITCLEAR',
100
+ queue,
101
+ });
102
+ }
103
+ /**
104
+ * Set concurrency limit for a queue.
105
+ *
106
+ * @param client - FlashQ client instance
107
+ * @param queue - Queue name
108
+ * @param limit - Max concurrent jobs
109
+ *
110
+ * @example
111
+ * ```typescript
112
+ * // Allow max 5 concurrent jobs
113
+ * await client.setConcurrency('heavy-tasks', 5);
114
+ * ```
115
+ */
116
+ async function setConcurrency(client, queue, limit) {
117
+ await client.send({
118
+ cmd: 'SETCONCURRENCY',
119
+ queue,
120
+ limit,
121
+ });
122
+ }
123
+ /**
124
+ * Clear concurrency limit for a queue.
125
+ *
126
+ * @param client - FlashQ client instance
127
+ * @param queue - Queue name
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * await client.clearConcurrency('heavy-tasks');
132
+ * ```
133
+ */
134
+ async function clearConcurrency(client, queue) {
135
+ await client.send({
136
+ cmd: 'CLEARCONCURRENCY',
137
+ queue,
138
+ });
139
+ }
140
+ /**
141
+ * List all queues.
142
+ *
143
+ * @param client - FlashQ client instance
144
+ * @returns Array of queue info
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * const queues = await client.listQueues();
149
+ * for (const q of queues) {
150
+ * console.log(`${q.name}: ${q.size} jobs`);
151
+ * }
152
+ * ```
153
+ */
154
+ async function listQueues(client) {
155
+ const response = await client.send({
156
+ cmd: 'LISTQUEUES',
157
+ });
158
+ return response.queues;
159
+ }
160
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../src/client/queue.ts"],"names":[],"mappings":";;AAgBA,sBAQC;AAaD,wBAQC;AAgBD,4BASC;AAeD,oCAUC;AAaD,wCAQC;AAeD,wCAUC;AAaD,4CAQC;AAgBD,gCAOC;AApLD;;;;;;;;;;GAUG;AACI,KAAK,UAAU,KAAK,CACzB,MAAqB,EACrB,KAAa;IAEb,MAAM,MAAM,CAAC,IAAI,CAAkB;QACjC,GAAG,EAAE,OAAO;QACZ,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,MAAM,CAC1B,MAAqB,EACrB,KAAa;IAEb,MAAM,MAAM,CAAC,IAAI,CAAkB;QACjC,GAAG,EAAE,QAAQ;QACb,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,QAAQ,CAC5B,MAAqB,EACrB,KAAa;IAEb,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAmC;QACnE,GAAG,EAAE,UAAU;QACf,KAAK;KACN,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,MAAM,CAAC;AACzB,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,YAAY,CAChC,MAAqB,EACrB,KAAa,EACb,KAAa;IAEb,MAAM,MAAM,CAAC,IAAI,CAAkB;QACjC,GAAG,EAAE,WAAW;QAChB,KAAK;QACL,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,cAAc,CAClC,MAAqB,EACrB,KAAa;IAEb,MAAM,MAAM,CAAC,IAAI,CAAkB;QACjC,GAAG,EAAE,gBAAgB;QACrB,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,KAAK,UAAU,cAAc,CAClC,MAAqB,EACrB,KAAa,EACb,KAAa;IAEb,MAAM,MAAM,CAAC,IAAI,CAAkB;QACjC,GAAG,EAAE,gBAAgB;QACrB,KAAK;QACL,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;GAUG;AACI,KAAK,UAAU,gBAAgB,CACpC,MAAqB,EACrB,KAAa;IAEb,MAAM,MAAM,CAAC,IAAI,CAAkB;QACjC,GAAG,EAAE,kBAAkB;QACvB,KAAK;KACN,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,UAAU,CAC9B,MAAqB;IAErB,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAuC;QACvE,GAAG,EAAE,YAAY;KAClB,CAAC,CAAC;IACH,OAAO,QAAQ,CAAC,MAAM,CAAC;AACzB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Internal types for FlashQ client modules
3
+ */
4
+ import type { ClientOptions, Job, JobState, JobWithState, PushOptions, QueueInfo, QueueStats, Metrics, CronJob, CronOptions, JobLogEntry, FlowChild, FlowResult } from '../types';
5
+ /**
6
+ * Interface for the internal send method.
7
+ * Used by all modules to communicate with the server.
8
+ */
9
+ export interface IFlashQClient {
10
+ /** Send a command to the server */
11
+ send<T>(command: Record<string, unknown>, customTimeout?: number): Promise<T>;
12
+ /** Client options */
13
+ readonly options: Required<ClientOptions>;
14
+ }
15
+ /**
16
+ * Flow options for parent job
17
+ */
18
+ export interface FlowOptions {
19
+ /** Job priority (higher = processed first) */
20
+ priority?: number;
21
+ }
22
+ export type { ClientOptions, Job, JobState, JobWithState, PushOptions, QueueInfo, QueueStats, Metrics, CronJob, CronOptions, JobLogEntry, FlowChild, FlowResult, };
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EACV,aAAa,EACb,GAAG,EACH,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,SAAS,EACT,UAAU,EACV,OAAO,EACP,OAAO,EACP,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,EACX,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,mCAAmC;IACnC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,qBAAqB;IACrB,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAGD,YAAY,EACV,aAAa,EACb,GAAG,EACH,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,SAAS,EACT,UAAU,EACV,OAAO,EACP,OAAO,EACP,WAAW,EACX,WAAW,EACX,SAAS,EACT,UAAU,GACX,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * FlashQ Client
3
+ *
4
+ * High-performance job queue client with auto-connect.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { FlashQ } from 'flashq';
9
+ *
10
+ * const client = new FlashQ();
11
+ * const job = await client.add('emails', { to: 'user@example.com' });
12
+ * ```
13
+ *
14
+ * @module
15
+ */
16
+ export { FlashQ, FlashQ as default } from './client/index';
17
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/client.js ADDED
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ /**
3
+ * FlashQ Client
4
+ *
5
+ * High-performance job queue client with auto-connect.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { FlashQ } from 'flashq';
10
+ *
11
+ * const client = new FlashQ();
12
+ * const job = await client.add('emails', { to: 'user@example.com' });
13
+ * ```
14
+ *
15
+ * @module
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.default = exports.FlashQ = void 0;
19
+ // Re-export from modular structure
20
+ var index_1 = require("./client/index");
21
+ Object.defineProperty(exports, "FlashQ", { enumerable: true, get: function () { return index_1.FlashQ; } });
22
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return index_1.FlashQ; } });
23
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,mCAAmC;AACnC,wCAA2D;AAAlD,+FAAA,MAAM,OAAA;AAAE,gGAAA,MAAM,OAAW"}