flashq 0.2.1 → 0.3.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 (98) hide show
  1. package/dist/client/connection.d.ts +0 -66
  2. package/dist/client/connection.d.ts.map +1 -1
  3. package/dist/client/connection.js +46 -279
  4. package/dist/client/connection.js.map +1 -1
  5. package/dist/client/http/request.d.ts +20 -0
  6. package/dist/client/http/request.d.ts.map +1 -0
  7. package/dist/client/http/request.js +196 -0
  8. package/dist/client/http/request.js.map +1 -0
  9. package/dist/client/http/response.d.ts +9 -0
  10. package/dist/client/http/response.d.ts.map +1 -0
  11. package/dist/client/http/response.js +78 -0
  12. package/dist/client/http/response.js.map +1 -0
  13. package/dist/client/index.d.ts +63 -565
  14. package/dist/client/index.d.ts.map +1 -1
  15. package/dist/client/index.js +94 -635
  16. package/dist/client/index.js.map +1 -1
  17. package/dist/client/{advanced.d.ts → methods/advanced.d.ts} +1 -1
  18. package/dist/client/methods/advanced.d.ts.map +1 -0
  19. package/dist/client/methods/advanced.js.map +1 -0
  20. package/dist/client/{core.d.ts → methods/core.d.ts} +2 -2
  21. package/dist/client/methods/core.d.ts.map +1 -0
  22. package/dist/client/{core.js → methods/core.js} +1 -1
  23. package/dist/client/methods/core.js.map +1 -0
  24. package/dist/client/{cron.d.ts → methods/cron.d.ts} +1 -1
  25. package/dist/client/methods/cron.d.ts.map +1 -0
  26. package/dist/client/methods/cron.js.map +1 -0
  27. package/dist/client/{dlq.d.ts → methods/dlq.d.ts} +1 -1
  28. package/dist/client/methods/dlq.d.ts.map +1 -0
  29. package/dist/client/methods/dlq.js.map +1 -0
  30. package/dist/client/{flows.d.ts → methods/flows.d.ts} +1 -1
  31. package/dist/client/methods/flows.d.ts.map +1 -0
  32. package/dist/client/methods/flows.js.map +1 -0
  33. package/dist/client/{jobs.d.ts → methods/jobs.d.ts} +2 -16
  34. package/dist/client/methods/jobs.d.ts.map +1 -0
  35. package/dist/client/{jobs.js → methods/jobs.js} +1 -15
  36. package/dist/client/methods/jobs.js.map +1 -0
  37. package/dist/client/{metrics.d.ts → methods/metrics.d.ts} +1 -1
  38. package/dist/client/methods/metrics.d.ts.map +1 -0
  39. package/dist/client/methods/metrics.js.map +1 -0
  40. package/dist/client/{queue.d.ts → methods/queue.d.ts} +1 -1
  41. package/dist/client/methods/queue.d.ts.map +1 -0
  42. package/dist/client/methods/queue.js.map +1 -0
  43. package/dist/events/index.d.ts +24 -0
  44. package/dist/events/index.d.ts.map +1 -0
  45. package/dist/events/index.js +53 -0
  46. package/dist/events/index.js.map +1 -0
  47. package/dist/events/subscriber.d.ts +29 -0
  48. package/dist/events/subscriber.d.ts.map +1 -0
  49. package/dist/{events.js → events/subscriber.js} +12 -150
  50. package/dist/events/subscriber.js.map +1 -0
  51. package/dist/events/types.d.ts +36 -0
  52. package/dist/events/types.d.ts.map +1 -0
  53. package/dist/events/types.js +6 -0
  54. package/dist/events/types.js.map +1 -0
  55. package/dist/index.d.ts +1 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +1 -1
  58. package/dist/index.js.map +1 -1
  59. package/dist/types.d.ts +0 -2
  60. package/dist/types.d.ts.map +1 -1
  61. package/dist/worker.d.ts +0 -2
  62. package/dist/worker.d.ts.map +1 -1
  63. package/dist/worker.js +0 -32
  64. package/dist/worker.js.map +1 -1
  65. package/package.json +1 -1
  66. package/dist/client/advanced.d.ts.map +0 -1
  67. package/dist/client/advanced.js.map +0 -1
  68. package/dist/client/core.d.ts.map +0 -1
  69. package/dist/client/core.js.map +0 -1
  70. package/dist/client/cron.d.ts.map +0 -1
  71. package/dist/client/cron.js.map +0 -1
  72. package/dist/client/dlq.d.ts.map +0 -1
  73. package/dist/client/dlq.js.map +0 -1
  74. package/dist/client/flows.d.ts.map +0 -1
  75. package/dist/client/flows.js.map +0 -1
  76. package/dist/client/jobs.d.ts.map +0 -1
  77. package/dist/client/jobs.js.map +0 -1
  78. package/dist/client/kv.d.ts +0 -63
  79. package/dist/client/kv.d.ts.map +0 -1
  80. package/dist/client/kv.js +0 -131
  81. package/dist/client/kv.js.map +0 -1
  82. package/dist/client/metrics.d.ts.map +0 -1
  83. package/dist/client/metrics.js.map +0 -1
  84. package/dist/client/pubsub.d.ts +0 -42
  85. package/dist/client/pubsub.d.ts.map +0 -1
  86. package/dist/client/pubsub.js +0 -92
  87. package/dist/client/pubsub.js.map +0 -1
  88. package/dist/client/queue.d.ts.map +0 -1
  89. package/dist/client/queue.js.map +0 -1
  90. package/dist/events.d.ts +0 -184
  91. package/dist/events.d.ts.map +0 -1
  92. package/dist/events.js.map +0 -1
  93. /package/dist/client/{advanced.js → methods/advanced.js} +0 -0
  94. /package/dist/client/{cron.js → methods/cron.js} +0 -0
  95. /package/dist/client/{dlq.js → methods/dlq.js} +0 -0
  96. /package/dist/client/{flows.js → methods/flows.js} +0 -0
  97. /package/dist/client/{metrics.js → methods/metrics.js} +0 -0
  98. /package/dist/client/{queue.js → methods/queue.js} +0 -0
@@ -1,103 +1,37 @@
1
1
  import { EventEmitter } from 'events';
2
2
  import type { ClientOptions } from '../types';
3
- /** Maximum job data size in bytes (1MB) */
4
3
  export declare const MAX_JOB_DATA_SIZE: number;
5
- /** Maximum batch size allowed by the server */
6
4
  export declare const MAX_BATCH_SIZE = 1000;
7
- /**
8
- * Validate queue name to prevent injection attacks
9
- * @throws Error if queue name is invalid
10
- */
11
5
  export declare function validateQueueName(queue: string): void;
12
- /**
13
- * Validate job data size
14
- * @throws Error if data exceeds max size
15
- */
16
6
  export declare function validateJobDataSize(data: unknown): void;
17
7
  type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'closed';
18
- /**
19
- * Base connection class for FlashQ.
20
- * Handles TCP/HTTP connection, binary protocol, request multiplexing, and auto-reconnect.
21
- */
22
8
  export declare class FlashQConnection extends EventEmitter {
23
9
  protected _options: Required<ClientOptions>;
24
10
  private socket;
25
11
  private connectionState;
26
12
  private authenticated;
27
13
  private pendingRequests;
28
- private responseQueue;
29
14
  private buffer;
30
15
  private binaryBuffer;
31
16
  private reconnectAttempts;
32
17
  private reconnectTimer;
33
18
  private manualClose;
34
19
  constructor(options?: ClientOptions);
35
- /** Get client options (read-only) */
36
20
  get options(): Required<ClientOptions>;
37
- /**
38
- * Connect to FlashQ server.
39
- * Automatically called on first command if not connected.
40
- *
41
- * @example
42
- * ```typescript
43
- * const client = new FlashQ();
44
- * await client.connect();
45
- * ```
46
- */
47
21
  connect(): Promise<void>;
48
- /**
49
- * Attempt to reconnect with exponential backoff
50
- */
51
22
  private scheduleReconnect;
52
23
  private setupSocketHandlers;
53
24
  private processBuffer;
54
25
  private processBinaryBuffer;
55
26
  private handleResponse;
56
- /**
57
- * Close the connection to the server.
58
- *
59
- * @example
60
- * ```typescript
61
- * await client.close();
62
- * ```
63
- */
64
27
  close(): Promise<void>;
65
- /**
66
- * Check if connected to the server.
67
- *
68
- * @returns true if connected
69
- */
70
28
  isConnected(): boolean;
71
- /**
72
- * Get current connection state.
73
- *
74
- * @returns Connection state
75
- */
76
29
  getConnectionState(): ConnectionState;
77
- /**
78
- * Ping the server to check connection health.
79
- *
80
- * @returns true if server responds
81
- */
82
30
  ping(): Promise<boolean>;
83
- /**
84
- * Authenticate with the server.
85
- *
86
- * @param token - Authentication token
87
- */
88
31
  auth(token: string): Promise<void>;
89
- /**
90
- * Send a command to the server.
91
- * Auto-connects if not connected.
92
- *
93
- * @param command - Command object
94
- * @param customTimeout - Optional custom timeout
95
- * @returns Response from server
96
- */
97
32
  send<T>(command: Record<string, unknown>, customTimeout?: number): Promise<T>;
98
33
  private sendTcp;
99
34
  private sendHttp;
100
- private httpRequest;
101
35
  }
102
36
  export {};
103
37
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/client/connection.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,UAAU,CAAC;AAI3D,2CAA2C;AAC3C,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAE7C,+CAA+C;AAC/C,eAAO,MAAM,cAAc,OAAO,CAAC;AAWnC;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CASrD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAOvD;AAUD,KAAK,eAAe,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,QAAQ,CAAC;AAI/F;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC5C,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,aAAa,CAGb;IACR,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,YAAY,CAA2B;IAG/C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,GAAE,aAAkB;IAuBvC,qCAAqC;IACrC,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,CAAC,CAErC;IAED;;;;;;;;;OASG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuE9B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,mBAAmB;IA8B3B,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,cAAc;IAwBtB;;;;;;;OAOG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B5B;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAItB;;;;OAIG;IACH,kBAAkB,IAAI,eAAe;IAIrC;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAS9B;;;;OAIG;IACG,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxC;;;;;;;OAOG;IACG,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YAoCrE,OAAO;YAiCP,QAAQ;YAQR,WAAW;CAkI1B"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/client/connection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,UAAU,CAAC;AAI3D,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAC7C,eAAO,MAAM,cAAc,OAAO,CAAC;AAKnC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAKrD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAKvD;AAQD,KAAK,eAAe,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,QAAQ,CAAC;AAE/F,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC5C,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,GAAE,aAAkB;IAmBvC,IAAI,OAAO,IAAI,QAAQ,CAAC,aAAa,CAAC,CAA0B;IAE1D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAsD9B,OAAO,CAAC,iBAAiB;IAwBzB,OAAO,CAAC,mBAAmB;IAuB3B,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,cAAc;IAUhB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY5B,WAAW,IAAI,OAAO;IACtB,kBAAkB,IAAI,eAAe;IAE/B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAOxB,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;YA0BrE,OAAO;YAmBP,QAAQ;CAiBvB"}
@@ -37,60 +37,39 @@ exports.FlashQConnection = exports.MAX_BATCH_SIZE = exports.MAX_JOB_DATA_SIZE =
37
37
  exports.validateQueueName = validateQueueName;
38
38
  exports.validateJobDataSize = validateJobDataSize;
39
39
  /**
40
- * Connection management for FlashQ client
41
- * Production-ready with auto-reconnect, validation, and proper error handling
40
+ * Connection management for FlashQ client.
42
41
  */
43
42
  const net = __importStar(require("net"));
44
43
  const events_1 = require("events");
45
44
  const msgpack_1 = require("@msgpack/msgpack");
46
- // ============== Constants ==============
47
- /** Maximum job data size in bytes (1MB) */
45
+ const request_1 = require("./http/request");
46
+ const response_1 = require("./http/response");
48
47
  exports.MAX_JOB_DATA_SIZE = 1024 * 1024;
49
- /** Maximum batch size allowed by the server */
50
48
  exports.MAX_BATCH_SIZE = 1000;
51
- /** Valid queue name pattern */
52
49
  const QUEUE_NAME_REGEX = /^[a-zA-Z0-9_.-]{1,256}$/;
53
- /** Ultra-fast request ID generator (no crypto overhead) */
54
50
  let requestIdCounter = 0;
55
51
  const generateReqId = () => `r${++requestIdCounter}`;
56
- // ============== Validation ==============
57
- /**
58
- * Validate queue name to prevent injection attacks
59
- * @throws Error if queue name is invalid
60
- */
61
52
  function validateQueueName(queue) {
62
- if (!queue || typeof queue !== 'string') {
53
+ if (!queue || typeof queue !== 'string')
63
54
  throw new Error('Queue name is required');
64
- }
65
55
  if (!QUEUE_NAME_REGEX.test(queue)) {
66
- throw new Error(`Invalid queue name: "${queue}". Must match pattern: alphanumeric, underscore, hyphen, dot (1-256 chars)`);
56
+ throw new Error(`Invalid queue name: "${queue}". Must be alphanumeric, _, -, . (1-256 chars)`);
67
57
  }
68
58
  }
69
- /**
70
- * Validate job data size
71
- * @throws Error if data exceeds max size
72
- */
73
59
  function validateJobDataSize(data) {
74
60
  const size = JSON.stringify(data).length;
75
61
  if (size > exports.MAX_JOB_DATA_SIZE) {
76
- throw new Error(`Job data size (${size} bytes) exceeds maximum allowed (${exports.MAX_JOB_DATA_SIZE} bytes)`);
62
+ throw new Error(`Job data size (${size} bytes) exceeds max (${exports.MAX_JOB_DATA_SIZE} bytes)`);
77
63
  }
78
64
  }
79
- // ============== Connection Class ==============
80
- /**
81
- * Base connection class for FlashQ.
82
- * Handles TCP/HTTP connection, binary protocol, request multiplexing, and auto-reconnect.
83
- */
84
65
  class FlashQConnection extends events_1.EventEmitter {
85
66
  _options;
86
67
  socket = null;
87
68
  connectionState = 'disconnected';
88
69
  authenticated = false;
89
70
  pendingRequests = new Map();
90
- responseQueue = [];
91
71
  buffer = '';
92
72
  binaryBuffer = Buffer.alloc(0);
93
- // Reconnect state
94
73
  reconnectAttempts = 0;
95
74
  reconnectTimer = null;
96
75
  manualClose = false;
@@ -110,44 +89,21 @@ class FlashQConnection extends events_1.EventEmitter {
110
89
  reconnectDelay: options.reconnectDelay ?? 1000,
111
90
  maxReconnectDelay: options.maxReconnectDelay ?? 30000,
112
91
  };
113
- // HTTP is stateless, so we're always "connected"
114
- if (this._options.useHttp) {
92
+ if (this._options.useHttp)
115
93
  this.connectionState = 'connected';
116
- }
117
- }
118
- /** Get client options (read-only) */
119
- get options() {
120
- return this._options;
121
94
  }
122
- /**
123
- * Connect to FlashQ server.
124
- * Automatically called on first command if not connected.
125
- *
126
- * @example
127
- * ```typescript
128
- * const client = new FlashQ();
129
- * await client.connect();
130
- * ```
131
- */
95
+ get options() { return this._options; }
132
96
  async connect() {
133
97
  if (this._options.useHttp) {
134
98
  this.connectionState = 'connected';
135
99
  return;
136
100
  }
137
- if (this.connectionState === 'connected') {
101
+ if (this.connectionState === 'connected')
138
102
  return;
139
- }
140
103
  if (this.connectionState === 'connecting') {
141
- // Wait for existing connection attempt
142
104
  return new Promise((resolve, reject) => {
143
- const onConnect = () => {
144
- this.removeListener('error', onError);
145
- resolve();
146
- };
147
- const onError = (err) => {
148
- this.removeListener('connect', onConnect);
149
- reject(err);
150
- };
105
+ const onConnect = () => { this.removeListener('error', onError); resolve(); };
106
+ const onError = (err) => { this.removeListener('connect', onConnect); reject(err); };
151
107
  this.once('connect', onConnect);
152
108
  this.once('error', onError);
153
109
  });
@@ -159,10 +115,10 @@ class FlashQConnection extends events_1.EventEmitter {
159
115
  this.connectionState = 'disconnected';
160
116
  reject(new Error('Connection timeout'));
161
117
  }, this._options.timeout);
162
- const connectionOptions = this._options.socketPath
118
+ const opts = this._options.socketPath
163
119
  ? { path: this._options.socketPath }
164
120
  : { host: this._options.host, port: this._options.port };
165
- this.socket = net.createConnection(connectionOptions, async () => {
121
+ this.socket = net.createConnection(opts, async () => {
166
122
  clearTimeout(timeout);
167
123
  this.connectionState = 'connected';
168
124
  this.reconnectAttempts = 0;
@@ -191,13 +147,9 @@ class FlashQConnection extends events_1.EventEmitter {
191
147
  });
192
148
  });
193
149
  }
194
- /**
195
- * Attempt to reconnect with exponential backoff
196
- */
197
150
  scheduleReconnect() {
198
- if (this.manualClose || !this._options.autoReconnect) {
151
+ if (this.manualClose || !this._options.autoReconnect)
199
152
  return;
200
- }
201
153
  if (this._options.maxReconnectAttempts > 0 &&
202
154
  this.reconnectAttempts >= this._options.maxReconnectAttempts) {
203
155
  this.emit('reconnect_failed', new Error('Max reconnection attempts reached'));
@@ -205,10 +157,8 @@ class FlashQConnection extends events_1.EventEmitter {
205
157
  }
206
158
  this.connectionState = 'reconnecting';
207
159
  this.reconnectAttempts++;
208
- // Exponential backoff with jitter
209
160
  const baseDelay = Math.min(this._options.reconnectDelay * Math.pow(2, this.reconnectAttempts - 1), this._options.maxReconnectDelay);
210
- const jitter = Math.random() * 0.3 * baseDelay;
211
- const delay = baseDelay + jitter;
161
+ const delay = baseDelay + Math.random() * 0.3 * baseDelay;
212
162
  this.emit('reconnecting', { attempt: this.reconnectAttempts, delay });
213
163
  this.reconnectTimer = setTimeout(async () => {
214
164
  try {
@@ -239,14 +189,11 @@ class FlashQConnection extends events_1.EventEmitter {
239
189
  this.connectionState = 'disconnected';
240
190
  this.authenticated = false;
241
191
  this.emit('disconnect');
242
- // Auto-reconnect if enabled and not manually closed
243
192
  if (wasConnected && !this.manualClose && this._options.autoReconnect) {
244
193
  this.scheduleReconnect();
245
194
  }
246
195
  });
247
- this.socket.on('error', (err) => {
248
- this.emit('error', err);
249
- });
196
+ this.socket.on('error', (err) => this.emit('error', err));
250
197
  }
251
198
  processBuffer() {
252
199
  const lines = this.buffer.split('\n');
@@ -255,12 +202,9 @@ class FlashQConnection extends events_1.EventEmitter {
255
202
  if (!line.trim())
256
203
  continue;
257
204
  try {
258
- const response = JSON.parse(line);
259
- this.handleResponse(response);
260
- }
261
- catch {
262
- // Ignore parse errors
205
+ this.handleResponse(JSON.parse(line));
263
206
  }
207
+ catch { /* ignore */ }
264
208
  }
265
209
  }
266
210
  processBinaryBuffer() {
@@ -271,52 +215,27 @@ class FlashQConnection extends events_1.EventEmitter {
271
215
  const frameData = this.binaryBuffer.subarray(4, 4 + len);
272
216
  this.binaryBuffer = this.binaryBuffer.subarray(4 + len);
273
217
  try {
274
- const response = (0, msgpack_1.decode)(frameData);
275
- this.handleResponse(response);
276
- }
277
- catch {
278
- // Ignore decode errors
218
+ this.handleResponse((0, msgpack_1.decode)(frameData));
279
219
  }
220
+ catch { /* ignore */ }
280
221
  }
281
222
  }
282
223
  handleResponse(response) {
283
- if (response.reqId) {
284
- const pending = this.pendingRequests.get(response.reqId);
285
- if (pending) {
286
- this.pendingRequests.delete(response.reqId);
287
- clearTimeout(pending.timer);
288
- if (response.ok === false && response.error) {
289
- pending.reject(new Error(response.error));
290
- }
291
- else {
292
- pending.resolve(response);
293
- }
294
- }
295
- }
296
- else {
297
- const pending = this.responseQueue.shift();
298
- if (pending) {
299
- if (response.ok === false && response.error) {
300
- pending.reject(new Error(response.error));
301
- }
302
- else {
303
- pending.resolve(response);
304
- }
305
- }
306
- }
224
+ if (!response.reqId)
225
+ return;
226
+ const pending = this.pendingRequests.get(response.reqId);
227
+ if (!pending)
228
+ return;
229
+ this.pendingRequests.delete(response.reqId);
230
+ clearTimeout(pending.timer);
231
+ if (response.ok === false && response.error)
232
+ pending.reject(new Error(response.error));
233
+ else
234
+ pending.resolve(response);
307
235
  }
308
- /**
309
- * Close the connection to the server.
310
- *
311
- * @example
312
- * ```typescript
313
- * await client.close();
314
- * ```
315
- */
316
236
  async close() {
317
237
  this.manualClose = true;
318
238
  this.connectionState = 'closed';
319
- // Cancel any pending reconnect
320
239
  if (this.reconnectTimer) {
321
240
  clearTimeout(this.reconnectTimer);
322
241
  this.reconnectTimer = null;
@@ -326,36 +245,13 @@ class FlashQConnection extends events_1.EventEmitter {
326
245
  pending.reject(new Error('Connection closed'));
327
246
  }
328
247
  this.pendingRequests.clear();
329
- for (const pending of this.responseQueue) {
330
- pending.reject(new Error('Connection closed'));
331
- }
332
- this.responseQueue.length = 0;
333
248
  if (this.socket) {
334
249
  this.socket.destroy();
335
250
  this.socket = null;
336
251
  }
337
252
  }
338
- /**
339
- * Check if connected to the server.
340
- *
341
- * @returns true if connected
342
- */
343
- isConnected() {
344
- return this.connectionState === 'connected';
345
- }
346
- /**
347
- * Get current connection state.
348
- *
349
- * @returns Connection state
350
- */
351
- getConnectionState() {
352
- return this.connectionState;
353
- }
354
- /**
355
- * Ping the server to check connection health.
356
- *
357
- * @returns true if server responds
358
- */
253
+ isConnected() { return this.connectionState === 'connected'; }
254
+ getConnectionState() { return this.connectionState; }
359
255
  async ping() {
360
256
  try {
361
257
  const response = await this.send({ cmd: 'PING' });
@@ -365,32 +261,14 @@ class FlashQConnection extends events_1.EventEmitter {
365
261
  return false;
366
262
  }
367
263
  }
368
- /**
369
- * Authenticate with the server.
370
- *
371
- * @param token - Authentication token
372
- */
373
264
  async auth(token) {
374
- const response = await this.send({
375
- cmd: 'AUTH',
376
- token,
377
- });
378
- if (!response.ok) {
265
+ const response = await this.send({ cmd: 'AUTH', token });
266
+ if (!response.ok)
379
267
  throw new Error('Authentication failed');
380
- }
381
268
  this._options.token = token;
382
269
  this.authenticated = true;
383
270
  }
384
- /**
385
- * Send a command to the server.
386
- * Auto-connects if not connected.
387
- *
388
- * @param command - Command object
389
- * @param customTimeout - Optional custom timeout
390
- * @returns Response from server
391
- */
392
271
  async send(command, customTimeout) {
393
- // Wait for reconnection if in progress
394
272
  if (this.connectionState === 'reconnecting') {
395
273
  await new Promise((resolve, reject) => {
396
274
  const timeout = setTimeout(() => {
@@ -412,33 +290,20 @@ class FlashQConnection extends events_1.EventEmitter {
412
290
  this.once('reconnect_failed', onFailed);
413
291
  });
414
292
  }
415
- if (this.connectionState !== 'connected') {
293
+ if (this.connectionState !== 'connected')
416
294
  await this.connect();
417
- }
418
- if (this._options.useHttp) {
419
- return this.sendHttp(command, customTimeout);
420
- }
421
- return this.sendTcp(command, customTimeout);
295
+ return this._options.useHttp ? this.sendHttp(command, customTimeout) : this.sendTcp(command, customTimeout);
422
296
  }
423
297
  async sendTcp(command, customTimeout) {
424
- if (!this.socket || this.connectionState !== 'connected') {
298
+ if (!this.socket || this.connectionState !== 'connected')
425
299
  throw new Error('Not connected');
426
- }
427
300
  return new Promise((resolve, reject) => {
428
301
  const reqId = generateReqId();
429
302
  const timeoutMs = customTimeout ?? this._options.timeout;
430
- const timer = setTimeout(() => {
431
- this.pendingRequests.delete(reqId);
432
- reject(new Error('Request timeout'));
433
- }, timeoutMs);
434
- this.pendingRequests.set(reqId, {
435
- resolve: (value) => resolve(value),
436
- reject,
437
- timer,
438
- });
303
+ const timer = setTimeout(() => { this.pendingRequests.delete(reqId); reject(new Error('Request timeout')); }, timeoutMs);
304
+ this.pendingRequests.set(reqId, { resolve: (value) => resolve(value), reject, timer });
439
305
  if (this._options.useBinary) {
440
- const payload = { ...command, reqId };
441
- const encoded = (0, msgpack_1.encode)(payload);
306
+ const encoded = (0, msgpack_1.encode)({ ...command, reqId });
442
307
  const frame = Buffer.alloc(4 + encoded.length);
443
308
  frame.writeUInt32BE(encoded.length, 0);
444
309
  frame.set(encoded, 4);
@@ -453,116 +318,18 @@ class FlashQConnection extends events_1.EventEmitter {
453
318
  const { cmd, ...params } = command;
454
319
  const baseUrl = `http://${this._options.host}:${this._options.httpPort}`;
455
320
  const timeout = customTimeout ?? this._options.timeout;
456
- const response = await this.httpRequest(baseUrl, cmd, params, timeout);
457
- return response;
458
- }
459
- async httpRequest(baseUrl, cmd, params, timeout) {
460
- const headers = {
461
- 'Content-Type': 'application/json',
462
- };
463
- if (this._options.token) {
464
- headers['Authorization'] = `Bearer ${this._options.token}`;
465
- }
466
- // URL-encode queue names to prevent injection
467
- const encodeQueue = (queue) => encodeURIComponent(String(queue));
468
- let url;
469
- let method;
470
- let body;
471
- switch (cmd) {
472
- case 'PUSH':
473
- url = `${baseUrl}/queues/${encodeQueue(params.queue)}/jobs`;
474
- method = 'POST';
475
- body = JSON.stringify({
476
- data: params.data,
477
- priority: params.priority,
478
- delay: params.delay,
479
- ttl: params.ttl,
480
- timeout: params.timeout,
481
- max_attempts: params.max_attempts,
482
- backoff: params.backoff,
483
- unique_key: params.unique_key,
484
- depends_on: params.depends_on,
485
- tags: params.tags,
486
- lifo: params.lifo,
487
- remove_on_complete: params.remove_on_complete,
488
- remove_on_fail: params.remove_on_fail,
489
- stall_timeout: params.stall_timeout,
490
- debounce_id: params.debounce_id,
491
- debounce_ttl: params.debounce_ttl,
492
- job_id: params.job_id,
493
- keep_completed_age: params.keep_completed_age,
494
- keep_completed_count: params.keep_completed_count,
495
- });
496
- break;
497
- case 'PULL':
498
- url = `${baseUrl}/queues/${encodeQueue(params.queue)}/jobs?count=1`;
499
- method = 'GET';
500
- break;
501
- case 'PULLB':
502
- url = `${baseUrl}/queues/${encodeQueue(params.queue)}/jobs?count=${params.count}`;
503
- method = 'GET';
504
- break;
505
- case 'ACK':
506
- url = `${baseUrl}/jobs/${params.id}/ack`;
507
- method = 'POST';
508
- body = JSON.stringify({ result: params.result });
509
- break;
510
- case 'FAIL':
511
- url = `${baseUrl}/jobs/${params.id}/fail`;
512
- method = 'POST';
513
- body = JSON.stringify({ error: params.error });
514
- break;
515
- case 'STATS':
516
- url = `${baseUrl}/stats`;
517
- method = 'GET';
518
- break;
519
- case 'METRICS':
520
- url = `${baseUrl}/metrics`;
521
- method = 'GET';
522
- break;
523
- case 'LISTQUEUES':
524
- url = `${baseUrl}/queues`;
525
- method = 'GET';
526
- break;
527
- default:
528
- throw new Error(`HTTP not supported for command: ${cmd}`);
529
- }
530
- // Create abort controller for timeout
321
+ const headers = (0, request_1.buildHeaders)(this._options.token);
322
+ const req = (0, request_1.buildHttpRequest)(baseUrl, cmd, params);
531
323
  const controller = new AbortController();
532
324
  const timeoutId = setTimeout(() => controller.abort(), timeout);
533
325
  try {
534
- const res = await fetch(url, { method, headers, body, signal: controller.signal });
326
+ const res = await fetch(req.url, { method: req.method, headers, body: req.body, signal: controller.signal });
535
327
  const json = (await res.json());
536
- if (!json.ok) {
537
- throw new Error(json.error ?? 'Unknown error');
538
- }
539
- const data = json.data;
540
- if (cmd === 'PUSH' && data && typeof data === 'object') {
541
- return { ok: true, id: data.id };
542
- }
543
- if ((cmd === 'PULL' || cmd === 'PULLB') && Array.isArray(data)) {
544
- if (data.length === 0) {
545
- return { ok: true, job: null };
546
- }
547
- return cmd === 'PULL'
548
- ? { ok: true, job: data[0] }
549
- : { ok: true, jobs: data };
550
- }
551
- if (cmd === 'STATS' && data && typeof data === 'object') {
552
- return { ok: true, ...data };
553
- }
554
- if (cmd === 'METRICS' && data && typeof data === 'object') {
555
- return { ok: true, ...data };
556
- }
557
- if (cmd === 'LISTQUEUES' && Array.isArray(data)) {
558
- return { ok: true, queues: data };
559
- }
560
- return json;
328
+ return (0, response_1.parseHttpResponse)(cmd, json);
561
329
  }
562
330
  catch (error) {
563
- if (error instanceof Error && error.name === 'AbortError') {
331
+ if (error instanceof Error && error.name === 'AbortError')
564
332
  throw new Error('HTTP request timeout');
565
- }
566
333
  throw error;
567
334
  }
568
335
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/client/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../../src/client/connection.ts"],"names":[],"mappings":"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"}