flashq 0.3.2 → 0.3.4

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 CHANGED
@@ -5,6 +5,8 @@
5
5
  [![GitHub stars](https://img.shields.io/github/stars/egeominotti/flashq)](https://github.com/egeominotti/flashq)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
7
 
8
+ **[Website](https://flashq.dev)** · **[Documentation](https://flashq.dev/docs/)** · **[GitHub](https://github.com/egeominotti/flashq)**
9
+
8
10
  > **High-performance job queue with BullMQ-compatible API. No Redis required.**
9
11
 
10
12
  flashQ is a drop-in replacement for BullMQ that runs on a single Rust binary. It's designed for AI/ML workloads with support for 10MB payloads, job dependencies, and 300K+ jobs/sec throughput.
@@ -447,6 +449,13 @@ Key differences:
447
449
  - `connection` option replaced with `host`/`port`
448
450
  - Some advanced BullMQ features may have different behavior
449
451
 
452
+ ## Resources
453
+
454
+ - **Website:** [flashq.dev](https://flashq.dev)
455
+ - **Documentation:** [flashq.dev/docs](https://flashq.dev/docs/)
456
+ - **GitHub:** [github.com/egeominotti/flashq](https://github.com/egeominotti/flashq)
457
+ - **npm:** [npmjs.com/package/flashq](https://www.npmjs.com/package/flashq)
458
+
450
459
  ## License
451
460
 
452
461
  MIT
@@ -1,11 +1,8 @@
1
1
  import { EventEmitter } from 'events';
2
2
  import type { ClientOptions } from '../types';
3
3
  import { Logger } from '../utils/logger';
4
- export declare const MAX_JOB_DATA_SIZE: number;
5
- export declare const MAX_BATCH_SIZE = 1000;
6
- export declare function validateQueueName(queue: string): void;
7
- export declare function validateJobDataSize(data: unknown): void;
8
- type ConnectionState = 'disconnected' | 'connecting' | 'connected' | 'reconnecting' | 'closed';
4
+ import type { ConnectionState } from './reconnect';
5
+ export { MAX_JOB_DATA_SIZE, MAX_BATCH_SIZE, validateQueueName, validateJobDataSize, } from './validation';
9
6
  /** Client options with required fields except hooks */
10
7
  type ResolvedClientOptions = Required<Omit<ClientOptions, 'hooks'>> & {
11
8
  hooks?: ClientOptions['hooks'];
@@ -17,8 +14,7 @@ export declare class FlashQConnection extends EventEmitter {
17
14
  private connectionState;
18
15
  private authenticated;
19
16
  private pendingRequests;
20
- private bufferChunks;
21
- private bufferRemainder;
17
+ private jsonBuffer;
22
18
  private binaryBuffer;
23
19
  private reconnectAttempts;
24
20
  private reconnectTimer;
@@ -33,14 +29,62 @@ export declare class FlashQConnection extends EventEmitter {
33
29
  constructor(options?: ClientOptions);
34
30
  /** @deprecated Use logger.debug() instead */
35
31
  protected debug(message: string, data?: unknown): void;
36
- /** Call connection hook */
32
+ /**
33
+ * Invokes the connection hook if configured.
34
+ *
35
+ * Creates a ConnectionHookContext and calls the onConnection hook
36
+ * with the appropriate event type. Hook errors are caught and logged
37
+ * to prevent breaking the main flow.
38
+ *
39
+ * @param event - The connection event type
40
+ * @param error - Error object for error events
41
+ * @param attempt - Reconnection attempt number
42
+ */
37
43
  private callConnectionHook;
38
44
  get options(): ResolvedClientOptions;
39
45
  connect(): Promise<void>;
46
+ /**
47
+ * Schedules a reconnection attempt with exponential backoff.
48
+ *
49
+ * Calculates delay using: min(initialDelay * 2^attempt, maxDelay) + jitter
50
+ * Jitter is 0-30% of base delay to prevent thundering herd.
51
+ *
52
+ * Emits 'reconnecting' before attempt and 'reconnected' on success.
53
+ * On failure, recursively schedules next attempt until max reached.
54
+ */
40
55
  private scheduleReconnect;
56
+ /**
57
+ * Sets up event handlers on the TCP socket.
58
+ *
59
+ * Handlers:
60
+ * - 'data': Routes to JSON or binary buffer processor based on protocol
61
+ * - 'close': Triggers disconnect event and schedules reconnection
62
+ * - 'error': Emits error event and calls connection hook
63
+ */
41
64
  private setupSocketHandlers;
65
+ /**
66
+ * Processes the JSON text buffer to extract complete responses.
67
+ *
68
+ * Delegates to JsonBufferHandler for line extraction, then parses
69
+ * each complete line as JSON and passes to handleResponse.
70
+ */
42
71
  private processBuffer;
72
+ /**
73
+ * Processes the binary buffer to extract MessagePack frames.
74
+ *
75
+ * Delegates to BinaryBufferHandler for frame extraction and decoding,
76
+ * then passes each decoded object to handleResponse.
77
+ */
43
78
  private processBinaryBuffer;
79
+ /**
80
+ * Handles a parsed response from the server.
81
+ *
82
+ * Matches response.reqId to pending request, clears timeout,
83
+ * and resolves/rejects the promise. Server errors are parsed
84
+ * into typed FlashQError subclasses.
85
+ *
86
+ * @param response - Parsed response object with reqId
87
+ */
44
88
  private handleResponse;
45
89
  close(): Promise<void>;
46
90
  /** Get number of queued requests */
@@ -50,12 +94,72 @@ export declare class FlashQConnection extends EventEmitter {
50
94
  ping(): Promise<boolean>;
51
95
  auth(token: string): Promise<void>;
52
96
  send<T>(command: Record<string, unknown>, customTimeout?: number): Promise<T>;
97
+ /**
98
+ * Internal send implementation without retry wrapper.
99
+ *
100
+ * Routes to queueRequest if disconnecting with queue enabled,
101
+ * waits for reconnection if in progress, then delegates to
102
+ * sendTcp or sendHttp based on protocol configuration.
103
+ *
104
+ * @param command - Command object to send
105
+ * @param customTimeout - Optional timeout override
106
+ * @returns Promise resolving to response
107
+ */
53
108
  private doSend;
109
+ /**
110
+ * Waits for an in-progress reconnection to complete.
111
+ *
112
+ * Listens for 'reconnected' or 'reconnect_failed' events.
113
+ * Times out after options.timeout milliseconds.
114
+ *
115
+ * @returns Promise that resolves when reconnected
116
+ * @throws ConnectionError on timeout or reconnection failure
117
+ */
54
118
  private waitForReconnection;
119
+ /**
120
+ * Queues a request for later execution after reconnection.
121
+ *
122
+ * Used when queueOnDisconnect is enabled and connection is lost.
123
+ * Requests are stored and replayed in order when reconnected.
124
+ *
125
+ * @param command - Command to queue
126
+ * @param customTimeout - Optional timeout for when request is eventually sent
127
+ * @returns Promise that resolves when request completes after reconnection
128
+ * @throws ConnectionError if queue is full
129
+ */
55
130
  private queueRequest;
131
+ /**
132
+ * Processes all queued requests after successful reconnection.
133
+ *
134
+ * Sends each queued request in order, resolving or rejecting
135
+ * the original promises. Clears the queue before processing
136
+ * to handle any new requests that may be queued during replay.
137
+ */
56
138
  private processRequestQueue;
139
+ /**
140
+ * Sends a command over the TCP socket.
141
+ *
142
+ * Handles request ID generation, optional compression,
143
+ * timeout management, and protocol serialization (JSON or MessagePack).
144
+ *
145
+ * @param command - Command object to send
146
+ * @param customTimeout - Optional timeout override in milliseconds
147
+ * @returns Promise resolving to typed response
148
+ * @throws ConnectionError if not connected
149
+ * @throws TimeoutError if request times out
150
+ */
57
151
  private sendTcp;
152
+ /**
153
+ * Sends a command via HTTP REST API.
154
+ *
155
+ * Converts the command to appropriate HTTP method and URL,
156
+ * handles authentication headers, and parses the JSON response.
157
+ *
158
+ * @param command - Command object to convert to HTTP request
159
+ * @param customTimeout - Optional timeout override in milliseconds
160
+ * @returns Promise resolving to typed response
161
+ * @throws TimeoutError if request times out
162
+ */
58
163
  private sendHttp;
59
164
  }
60
- export {};
61
165
  //# sourceMappingURL=connection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/client/connection.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,KAAK,EAAE,aAAa,EAA4B,MAAM,UAAU,CAAC;AAWxE,OAAO,EAAE,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AAKxD,eAAO,MAAM,iBAAiB,QAAc,CAAC;AAC7C,eAAO,MAAM,cAAc,OAAO,CAAC;AAKnC,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAUrD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAQvD;AAeD,KAAK,eAAe,GAAG,cAAc,GAAG,YAAY,GAAG,WAAW,GAAG,cAAc,GAAG,QAAQ,CAAC;AAS/F,uDAAuD;AACvD,KAAK,qBAAqB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG;IACpE,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,SAAS,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IAC1C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,YAAY,CAA2B;IAC/C,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAEjB;IACF,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,OAAO,GAAE,aAAkB;IA2DvC,6CAA6C;IAC7C,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAItD,2BAA2B;IAC3B,OAAO,CAAC,kBAAkB;IAiB1B,IAAI,OAAO,IAAI,qBAAqB,CAEnC;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmE9B,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,cAAc;IAuBhB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwB5B,oCAAoC;IACpC,qBAAqB,IAAI,MAAM;IAI/B,WAAW,IAAI,OAAO;IAGtB,kBAAkB,IAAI,eAAe;IAI/B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IASxB,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;YAqBrE,MAAM;YAeN,mBAAmB;IAsBjC,OAAO,CAAC,YAAY;YAiBN,mBAAmB;YAenB,OAAO;YA6EP,QAAQ;CA0BvB"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../src/client/connection.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,aAAa,EAA4B,MAAM,UAAU,CAAC;AAKxE,OAAO,EAAE,MAAM,EAAiB,MAAM,iBAAiB,CAAC;AASxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAoBtB,uDAAuD;AACvD,KAAK,qBAAqB,GAAG,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,GAAG;IACpE,KAAK,CAAC,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,SAAS,CAAC,QAAQ,EAAE,qBAAqB,CAAC;IAC1C,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,eAAe,CAAmC;IAC1D,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAEjB;IACF,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,oBAAoB,CAAS;gBAEzB,OAAO,GAAE,aAAkB;IA2DvC,6CAA6C;IAC7C,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI;IAItD;;;;;;;;;;OAUG;IACH,OAAO,CAAC,kBAAkB;IAiB1B,IAAI,OAAO,IAAI,qBAAqB,CAEnC;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmE9B;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAqCzB;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IA2B3B;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAerB;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAc3B;;;;;;;;OAQG;IACH,OAAO,CAAC,cAAc;IAuBhB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B5B,oCAAoC;IACpC,qBAAqB,IAAI,MAAM;IAI/B,WAAW,IAAI,OAAO;IAGtB,kBAAkB,IAAI,eAAe;IAI/B,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IASxB,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;IAqBnF;;;;;;;;;;OAUG;YACW,MAAM;IAepB;;;;;;;;OAQG;YACW,mBAAmB;IAsBjC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,YAAY;IAiBpB;;;;;;OAMG;YACW,mBAAmB;IAejC;;;;;;;;;;;OAWG;YACW,OAAO;IA6ErB;;;;;;;;;;OAUG;YACW,QAAQ;CA0BvB"}
@@ -33,43 +33,39 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.FlashQConnection = exports.MAX_BATCH_SIZE = exports.MAX_JOB_DATA_SIZE = void 0;
37
- exports.validateQueueName = validateQueueName;
38
- exports.validateJobDataSize = validateJobDataSize;
36
+ exports.FlashQConnection = exports.validateJobDataSize = exports.validateQueueName = exports.MAX_BATCH_SIZE = exports.MAX_JOB_DATA_SIZE = void 0;
39
37
  /**
40
38
  * Connection management for FlashQ client.
39
+ *
40
+ * This module provides the core connection layer that handles:
41
+ * - TCP socket connections with auto-reconnect
42
+ * - HTTP fallback for environments without raw socket support
43
+ * - Binary (MessagePack) and JSON protocol support
44
+ * - Request queueing during disconnection
45
+ * - Compression for large payloads
46
+ *
47
+ * @module client/connection
41
48
  */
42
49
  const net = __importStar(require("net"));
43
50
  const zlib = __importStar(require("zlib"));
44
51
  const util_1 = require("util");
45
52
  const events_1 = require("events");
46
- const msgpack_1 = require("@msgpack/msgpack");
47
53
  const request_1 = require("./http/request");
48
54
  const response_1 = require("./http/response");
49
55
  const errors_1 = require("../errors");
50
56
  const retry_1 = require("../utils/retry");
51
57
  const logger_1 = require("../utils/logger");
52
58
  const hooks_1 = require("../hooks");
59
+ const msgpack_1 = require("@msgpack/msgpack");
60
+ const tcp_1 = require("./tcp");
61
+ // Re-export validation utilities for backward compatibility
62
+ var validation_1 = require("./validation");
63
+ Object.defineProperty(exports, "MAX_JOB_DATA_SIZE", { enumerable: true, get: function () { return validation_1.MAX_JOB_DATA_SIZE; } });
64
+ Object.defineProperty(exports, "MAX_BATCH_SIZE", { enumerable: true, get: function () { return validation_1.MAX_BATCH_SIZE; } });
65
+ Object.defineProperty(exports, "validateQueueName", { enumerable: true, get: function () { return validation_1.validateQueueName; } });
66
+ Object.defineProperty(exports, "validateJobDataSize", { enumerable: true, get: function () { return validation_1.validateJobDataSize; } });
53
67
  const gzip = (0, util_1.promisify)(zlib.gzip);
54
- exports.MAX_JOB_DATA_SIZE = 1024 * 1024;
55
- exports.MAX_BATCH_SIZE = 1000;
56
- const QUEUE_NAME_REGEX = /^[a-zA-Z0-9_.-]{1,256}$/;
57
- let requestIdCounter = 0;
58
- const generateReqId = () => `r${++requestIdCounter}`;
59
- function validateQueueName(queue) {
60
- if (!queue || typeof queue !== 'string') {
61
- throw new errors_1.ValidationError('Queue name is required', 'queue');
62
- }
63
- if (!QUEUE_NAME_REGEX.test(queue)) {
64
- throw new errors_1.ValidationError(`Invalid queue name: "${queue}". Must be alphanumeric, _, -, . (1-256 chars)`, 'queue');
65
- }
66
- }
67
- function validateJobDataSize(data) {
68
- const size = JSON.stringify(data).length;
69
- if (size > exports.MAX_JOB_DATA_SIZE) {
70
- throw new errors_1.ValidationError(`Job data size (${size} bytes) exceeds max (${exports.MAX_JOB_DATA_SIZE} bytes)`, 'data');
71
- }
72
- }
68
+ /** Default retry configuration */
73
69
  const DEFAULT_RETRY_CONFIG = {
74
70
  enabled: false,
75
71
  maxRetries: 3,
@@ -83,9 +79,8 @@ class FlashQConnection extends events_1.EventEmitter {
83
79
  connectionState = 'disconnected';
84
80
  authenticated = false;
85
81
  pendingRequests = new Map();
86
- bufferChunks = [];
87
- bufferRemainder = '';
88
- binaryBuffer = Buffer.alloc(0);
82
+ jsonBuffer = new tcp_1.JsonBufferHandler();
83
+ binaryBuffer = new tcp_1.BinaryBufferHandler();
89
84
  reconnectAttempts = 0;
90
85
  reconnectTimer = null;
91
86
  manualClose = false;
@@ -155,7 +150,17 @@ class FlashQConnection extends events_1.EventEmitter {
155
150
  debug(message, data) {
156
151
  this.logger.debug(message, data);
157
152
  }
158
- /** Call connection hook */
153
+ /**
154
+ * Invokes the connection hook if configured.
155
+ *
156
+ * Creates a ConnectionHookContext and calls the onConnection hook
157
+ * with the appropriate event type. Hook errors are caught and logged
158
+ * to prevent breaking the main flow.
159
+ *
160
+ * @param event - The connection event type
161
+ * @param error - Error object for error events
162
+ * @param attempt - Reconnection attempt number
163
+ */
159
164
  callConnectionHook(event, error, attempt) {
160
165
  const hooks = this._options.hooks;
161
166
  if (!hooks?.onConnection)
@@ -236,6 +241,15 @@ class FlashQConnection extends events_1.EventEmitter {
236
241
  });
237
242
  });
238
243
  }
244
+ /**
245
+ * Schedules a reconnection attempt with exponential backoff.
246
+ *
247
+ * Calculates delay using: min(initialDelay * 2^attempt, maxDelay) + jitter
248
+ * Jitter is 0-30% of base delay to prevent thundering herd.
249
+ *
250
+ * Emits 'reconnecting' before attempt and 'reconnected' on success.
251
+ * On failure, recursively schedules next attempt until max reached.
252
+ */
239
253
  scheduleReconnect() {
240
254
  if (this.manualClose || !this._options.autoReconnect)
241
255
  return;
@@ -266,16 +280,24 @@ class FlashQConnection extends events_1.EventEmitter {
266
280
  }
267
281
  }, delay);
268
282
  }
283
+ /**
284
+ * Sets up event handlers on the TCP socket.
285
+ *
286
+ * Handlers:
287
+ * - 'data': Routes to JSON or binary buffer processor based on protocol
288
+ * - 'close': Triggers disconnect event and schedules reconnection
289
+ * - 'error': Emits error event and calls connection hook
290
+ */
269
291
  setupSocketHandlers() {
270
292
  if (!this.socket)
271
293
  return;
272
294
  this.socket.on('data', (data) => {
273
295
  if (this._options.useBinary) {
274
- this.binaryBuffer = Buffer.concat([this.binaryBuffer, data]);
296
+ this.binaryBuffer.append(data);
275
297
  this.processBinaryBuffer();
276
298
  }
277
299
  else {
278
- this.bufferChunks.push(data.toString());
300
+ this.jsonBuffer.append(data);
279
301
  this.processBuffer();
280
302
  }
281
303
  });
@@ -294,15 +316,15 @@ class FlashQConnection extends events_1.EventEmitter {
294
316
  this.callConnectionHook('error', err);
295
317
  });
296
318
  }
319
+ /**
320
+ * Processes the JSON text buffer to extract complete responses.
321
+ *
322
+ * Delegates to JsonBufferHandler for line extraction, then parses
323
+ * each complete line as JSON and passes to handleResponse.
324
+ */
297
325
  processBuffer() {
298
- // Join chunks only when processing (more efficient than += on each chunk)
299
- const fullBuffer = this.bufferRemainder + this.bufferChunks.join('');
300
- this.bufferChunks.length = 0; // Clear array without reallocating
301
- const lines = fullBuffer.split('\n');
302
- this.bufferRemainder = lines.pop() ?? '';
326
+ const lines = this.jsonBuffer.extractLines();
303
327
  for (const line of lines) {
304
- if (!line.trim())
305
- continue;
306
328
  try {
307
329
  this.handleResponse(JSON.parse(line));
308
330
  }
@@ -315,24 +337,35 @@ class FlashQConnection extends events_1.EventEmitter {
315
337
  }
316
338
  }
317
339
  }
340
+ /**
341
+ * Processes the binary buffer to extract MessagePack frames.
342
+ *
343
+ * Delegates to BinaryBufferHandler for frame extraction and decoding,
344
+ * then passes each decoded object to handleResponse.
345
+ */
318
346
  processBinaryBuffer() {
319
- while (this.binaryBuffer.length >= 4) {
320
- const len = this.binaryBuffer.readUInt32BE(0);
321
- if (this.binaryBuffer.length < 4 + len)
322
- break;
323
- const frameData = this.binaryBuffer.subarray(4, 4 + len);
324
- this.binaryBuffer = this.binaryBuffer.subarray(4 + len);
325
- try {
326
- this.handleResponse((0, msgpack_1.decode)(frameData));
327
- }
328
- catch (err) {
329
- this.debug('Failed to decode binary response', {
330
- error: err instanceof Error ? err.message : err,
331
- });
332
- this.emit('parse_error', err, frameData);
347
+ try {
348
+ const frames = this.binaryBuffer.extractFrames();
349
+ for (const frame of frames) {
350
+ this.handleResponse(frame);
333
351
  }
334
352
  }
353
+ catch (err) {
354
+ this.debug('Failed to decode binary response', {
355
+ error: err instanceof Error ? err.message : err,
356
+ });
357
+ this.emit('parse_error', err);
358
+ }
335
359
  }
360
+ /**
361
+ * Handles a parsed response from the server.
362
+ *
363
+ * Matches response.reqId to pending request, clears timeout,
364
+ * and resolves/rejects the promise. Server errors are parsed
365
+ * into typed FlashQError subclasses.
366
+ *
367
+ * @param response - Parsed response object with reqId
368
+ */
336
369
  handleResponse(response) {
337
370
  if (!response.reqId) {
338
371
  this.logger.warn('Received response without reqId', response);
@@ -372,6 +405,9 @@ class FlashQConnection extends events_1.EventEmitter {
372
405
  req.reject(new errors_1.ConnectionError('Connection closed', 'CONNECTION_CLOSED'));
373
406
  }
374
407
  this.requestQueue = [];
408
+ // Reset buffers
409
+ this.jsonBuffer.reset();
410
+ this.binaryBuffer.reset();
375
411
  if (this.socket) {
376
412
  this.socket.destroy();
377
413
  this.socket = null;
@@ -423,6 +459,17 @@ class FlashQConnection extends events_1.EventEmitter {
423
459
  }
424
460
  return this.doSend(command, customTimeout);
425
461
  }
462
+ /**
463
+ * Internal send implementation without retry wrapper.
464
+ *
465
+ * Routes to queueRequest if disconnecting with queue enabled,
466
+ * waits for reconnection if in progress, then delegates to
467
+ * sendTcp or sendHttp based on protocol configuration.
468
+ *
469
+ * @param command - Command object to send
470
+ * @param customTimeout - Optional timeout override
471
+ * @returns Promise resolving to response
472
+ */
426
473
  async doSend(command, customTimeout) {
427
474
  // Queue request if disconnected and queueOnDisconnect is enabled
428
475
  if (this.queueOnDisconnect && this.connectionState === 'reconnecting') {
@@ -437,6 +484,15 @@ class FlashQConnection extends events_1.EventEmitter {
437
484
  ? this.sendHttp(command, customTimeout)
438
485
  : this.sendTcp(command, customTimeout);
439
486
  }
487
+ /**
488
+ * Waits for an in-progress reconnection to complete.
489
+ *
490
+ * Listens for 'reconnected' or 'reconnect_failed' events.
491
+ * Times out after options.timeout milliseconds.
492
+ *
493
+ * @returns Promise that resolves when reconnected
494
+ * @throws ConnectionError on timeout or reconnection failure
495
+ */
440
496
  async waitForReconnection() {
441
497
  return new Promise((resolve, reject) => {
442
498
  const timeout = setTimeout(() => {
@@ -458,6 +514,17 @@ class FlashQConnection extends events_1.EventEmitter {
458
514
  this.once('reconnect_failed', onFailed);
459
515
  });
460
516
  }
517
+ /**
518
+ * Queues a request for later execution after reconnection.
519
+ *
520
+ * Used when queueOnDisconnect is enabled and connection is lost.
521
+ * Requests are stored and replayed in order when reconnected.
522
+ *
523
+ * @param command - Command to queue
524
+ * @param customTimeout - Optional timeout for when request is eventually sent
525
+ * @returns Promise that resolves when request completes after reconnection
526
+ * @throws ConnectionError if queue is full
527
+ */
461
528
  queueRequest(command, customTimeout) {
462
529
  if (this.requestQueue.length >= this.maxQueuedRequests) {
463
530
  return Promise.reject(new errors_1.ConnectionError(`Request queue full (max: ${this.maxQueuedRequests})`, 'QUEUE_FULL'));
@@ -472,6 +539,13 @@ class FlashQConnection extends events_1.EventEmitter {
472
539
  });
473
540
  });
474
541
  }
542
+ /**
543
+ * Processes all queued requests after successful reconnection.
544
+ *
545
+ * Sends each queued request in order, resolving or rejecting
546
+ * the original promises. Clears the queue before processing
547
+ * to handle any new requests that may be queued during replay.
548
+ */
475
549
  async processRequestQueue() {
476
550
  if (this.requestQueue.length === 0)
477
551
  return;
@@ -488,11 +562,23 @@ class FlashQConnection extends events_1.EventEmitter {
488
562
  }
489
563
  }
490
564
  }
565
+ /**
566
+ * Sends a command over the TCP socket.
567
+ *
568
+ * Handles request ID generation, optional compression,
569
+ * timeout management, and protocol serialization (JSON or MessagePack).
570
+ *
571
+ * @param command - Command object to send
572
+ * @param customTimeout - Optional timeout override in milliseconds
573
+ * @returns Promise resolving to typed response
574
+ * @throws ConnectionError if not connected
575
+ * @throws TimeoutError if request times out
576
+ */
491
577
  async sendTcp(command, customTimeout) {
492
578
  if (!this.socket || this.connectionState !== 'connected') {
493
579
  throw new errors_1.ConnectionError('Not connected', 'NOT_CONNECTED');
494
580
  }
495
- const reqId = generateReqId();
581
+ const reqId = (0, tcp_1.generateRequestId)();
496
582
  const timeoutMs = customTimeout ?? this._options.timeout;
497
583
  // Set request ID for logger correlation if tracking is enabled
498
584
  if (this.trackRequestIds) {
@@ -560,6 +646,17 @@ class FlashQConnection extends events_1.EventEmitter {
560
646
  this.logger.trace('Command sent', { reqId });
561
647
  });
562
648
  }
649
+ /**
650
+ * Sends a command via HTTP REST API.
651
+ *
652
+ * Converts the command to appropriate HTTP method and URL,
653
+ * handles authentication headers, and parses the JSON response.
654
+ *
655
+ * @param command - Command object to convert to HTTP request
656
+ * @param customTimeout - Optional timeout override in milliseconds
657
+ * @returns Promise resolving to typed response
658
+ * @throws TimeoutError if request times out
659
+ */
563
660
  async sendHttp(command, customTimeout) {
564
661
  const { cmd, ...params } = command;
565
662
  const baseUrl = `http://${this._options.host}:${this._options.httpPort}`;
@@ -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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"}