@procwire/transport 0.1.3 → 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 (142) hide show
  1. package/README.md +130 -4
  2. package/dist/channel/builder.d.ts +17 -0
  3. package/dist/channel/builder.d.ts.map +1 -1
  4. package/dist/channel/builder.js +34 -0
  5. package/dist/channel/builder.js.map +1 -1
  6. package/dist/channel/index.d.ts +1 -1
  7. package/dist/channel/index.d.ts.map +1 -1
  8. package/dist/channel/index.js +1 -1
  9. package/dist/channel/index.js.map +1 -1
  10. package/dist/channel/quickstart.d.ts.map +1 -1
  11. package/dist/channel/quickstart.js +16 -10
  12. package/dist/channel/quickstart.js.map +1 -1
  13. package/dist/channel/request-channel.d.ts +6 -1
  14. package/dist/channel/request-channel.d.ts.map +1 -1
  15. package/dist/channel/request-channel.js +138 -34
  16. package/dist/channel/request-channel.js.map +1 -1
  17. package/dist/channel/types.d.ts +129 -7
  18. package/dist/channel/types.d.ts.map +1 -1
  19. package/dist/framing/length-prefixed.d.ts +5 -1
  20. package/dist/framing/length-prefixed.d.ts.map +1 -1
  21. package/dist/framing/length-prefixed.js +94 -15
  22. package/dist/framing/length-prefixed.js.map +1 -1
  23. package/dist/framing/line-delimited.d.ts +4 -1
  24. package/dist/framing/line-delimited.d.ts.map +1 -1
  25. package/dist/framing/line-delimited.js +89 -23
  26. package/dist/framing/line-delimited.js.map +1 -1
  27. package/dist/heartbeat/constants.d.ts +12 -0
  28. package/dist/heartbeat/constants.d.ts.map +1 -0
  29. package/dist/heartbeat/constants.js +17 -0
  30. package/dist/heartbeat/constants.js.map +1 -0
  31. package/dist/heartbeat/index.d.ts +10 -0
  32. package/dist/heartbeat/index.d.ts.map +1 -0
  33. package/dist/heartbeat/index.js +10 -0
  34. package/dist/heartbeat/index.js.map +1 -0
  35. package/dist/heartbeat/manager.d.ts +107 -0
  36. package/dist/heartbeat/manager.d.ts.map +1 -0
  37. package/dist/heartbeat/manager.js +252 -0
  38. package/dist/heartbeat/manager.js.map +1 -0
  39. package/dist/heartbeat/types.d.ts +99 -0
  40. package/dist/heartbeat/types.d.ts.map +1 -0
  41. package/dist/heartbeat/types.js +8 -0
  42. package/dist/heartbeat/types.js.map +1 -0
  43. package/dist/index.d.ts +4 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +5 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/process/handle.d.ts.map +1 -1
  48. package/dist/process/handle.js.map +1 -1
  49. package/dist/process/manager.d.ts +16 -0
  50. package/dist/process/manager.d.ts.map +1 -1
  51. package/dist/process/manager.js +133 -82
  52. package/dist/process/manager.js.map +1 -1
  53. package/dist/process/types.d.ts +110 -1
  54. package/dist/process/types.d.ts.map +1 -1
  55. package/dist/protocol/index.d.ts +2 -0
  56. package/dist/protocol/index.d.ts.map +1 -1
  57. package/dist/protocol/index.js +3 -0
  58. package/dist/protocol/index.js.map +1 -1
  59. package/dist/protocol/jsonrpc.d.ts.map +1 -1
  60. package/dist/protocol/jsonrpc.js.map +1 -1
  61. package/dist/protocol/reserved-methods.d.ts +90 -0
  62. package/dist/protocol/reserved-methods.d.ts.map +1 -0
  63. package/dist/protocol/reserved-methods.js +99 -0
  64. package/dist/protocol/reserved-methods.js.map +1 -0
  65. package/dist/protocol/reserved-types.d.ts +231 -0
  66. package/dist/protocol/reserved-types.d.ts.map +1 -0
  67. package/dist/protocol/reserved-types.js +10 -0
  68. package/dist/protocol/reserved-types.js.map +1 -0
  69. package/dist/protocol/simple.d.ts.map +1 -1
  70. package/dist/protocol/simple.js.map +1 -1
  71. package/dist/reconnect/constants.d.ts +12 -0
  72. package/dist/reconnect/constants.d.ts.map +1 -0
  73. package/dist/reconnect/constants.js +21 -0
  74. package/dist/reconnect/constants.js.map +1 -0
  75. package/dist/reconnect/index.d.ts +10 -0
  76. package/dist/reconnect/index.d.ts.map +1 -0
  77. package/dist/reconnect/index.js +10 -0
  78. package/dist/reconnect/index.js.map +1 -0
  79. package/dist/reconnect/manager.d.ts +110 -0
  80. package/dist/reconnect/manager.d.ts.map +1 -0
  81. package/dist/reconnect/manager.js +264 -0
  82. package/dist/reconnect/manager.js.map +1 -0
  83. package/dist/reconnect/types.d.ts +137 -0
  84. package/dist/reconnect/types.d.ts.map +1 -0
  85. package/dist/reconnect/types.js +8 -0
  86. package/dist/reconnect/types.js.map +1 -0
  87. package/dist/resilience/handle.d.ts +112 -0
  88. package/dist/resilience/handle.d.ts.map +1 -0
  89. package/dist/resilience/handle.js +371 -0
  90. package/dist/resilience/handle.js.map +1 -0
  91. package/dist/resilience/index.d.ts +9 -0
  92. package/dist/resilience/index.d.ts.map +1 -0
  93. package/dist/resilience/index.js +9 -0
  94. package/dist/resilience/index.js.map +1 -0
  95. package/dist/resilience/types.d.ts +191 -0
  96. package/dist/resilience/types.d.ts.map +1 -0
  97. package/dist/resilience/types.js +8 -0
  98. package/dist/resilience/types.js.map +1 -0
  99. package/dist/serialization/json.d.ts.map +1 -1
  100. package/dist/serialization/json.js.map +1 -1
  101. package/dist/shutdown/constants.d.ts +12 -0
  102. package/dist/shutdown/constants.d.ts.map +1 -0
  103. package/dist/shutdown/constants.js +15 -0
  104. package/dist/shutdown/constants.js.map +1 -0
  105. package/dist/shutdown/index.d.ts +10 -0
  106. package/dist/shutdown/index.d.ts.map +1 -0
  107. package/dist/shutdown/index.js +10 -0
  108. package/dist/shutdown/index.js.map +1 -0
  109. package/dist/shutdown/manager.d.ts +102 -0
  110. package/dist/shutdown/manager.d.ts.map +1 -0
  111. package/dist/shutdown/manager.js +252 -0
  112. package/dist/shutdown/manager.js.map +1 -0
  113. package/dist/shutdown/types.d.ts +133 -0
  114. package/dist/shutdown/types.d.ts.map +1 -0
  115. package/dist/shutdown/types.js +8 -0
  116. package/dist/shutdown/types.js.map +1 -0
  117. package/dist/transport/socket-server.d.ts.map +1 -1
  118. package/dist/transport/socket-server.js.map +1 -1
  119. package/dist/transport/socket-transport.d.ts +11 -13
  120. package/dist/transport/socket-transport.d.ts.map +1 -1
  121. package/dist/transport/socket-transport.js +57 -26
  122. package/dist/transport/socket-transport.js.map +1 -1
  123. package/dist/transport/stdio-transport.d.ts +12 -19
  124. package/dist/transport/stdio-transport.d.ts.map +1 -1
  125. package/dist/transport/stdio-transport.js +54 -33
  126. package/dist/transport/stdio-transport.js.map +1 -1
  127. package/dist/utils/index.d.ts +1 -0
  128. package/dist/utils/index.d.ts.map +1 -1
  129. package/dist/utils/index.js +1 -0
  130. package/dist/utils/index.js.map +1 -1
  131. package/dist/utils/metrics.d.ts +6 -0
  132. package/dist/utils/metrics.d.ts.map +1 -0
  133. package/dist/utils/metrics.js +2 -0
  134. package/dist/utils/metrics.js.map +1 -0
  135. package/dist/utils/pipe-path.d.ts +8 -2
  136. package/dist/utils/pipe-path.d.ts.map +1 -1
  137. package/dist/utils/pipe-path.js +27 -4
  138. package/dist/utils/pipe-path.js.map +1 -1
  139. package/dist/utils/platform.d.ts.map +1 -1
  140. package/dist/utils/platform.js +1 -1
  141. package/dist/utils/platform.js.map +1 -1
  142. package/package.json +1 -1
@@ -1,6 +1,37 @@
1
1
  import { EventEmitter } from "../utils/events.js";
2
2
  import { ProtocolError, toError, SerializationError } from "../utils/errors.js";
3
3
  import { createTimeoutSignal } from "../utils/time.js";
4
+ const noop = () => { };
5
+ function createPendingRequest() {
6
+ return {
7
+ resolve: noop,
8
+ reject: noop,
9
+ timeoutSignal: null,
10
+ startTime: 0,
11
+ method: "",
12
+ };
13
+ }
14
+ class PendingRequestPool {
15
+ pool = [];
16
+ maxSize;
17
+ constructor(maxSize = 100) {
18
+ this.maxSize = maxSize;
19
+ }
20
+ acquire() {
21
+ return this.pool.pop() ?? createPendingRequest();
22
+ }
23
+ release(pending) {
24
+ pending.timeoutSignal?.cancel();
25
+ pending.resolve = noop;
26
+ pending.reject = noop;
27
+ pending.timeoutSignal = null;
28
+ pending.startTime = 0;
29
+ pending.method = "";
30
+ if (this.pool.length < this.maxSize) {
31
+ this.pool.push(pending);
32
+ }
33
+ }
34
+ }
4
35
  /**
5
36
  * JSON-RPC response accessor implementation.
6
37
  */
@@ -80,6 +111,9 @@ export class RequestChannel {
80
111
  middleware;
81
112
  maxInboundFrames;
82
113
  bufferEarlyNotifications;
114
+ metrics;
115
+ pendingPool;
116
+ onMiddlewareError;
83
117
  events = new EventEmitter();
84
118
  pendingRequests = new Map();
85
119
  requestHandlers = [];
@@ -88,16 +122,34 @@ export class RequestChannel {
88
122
  transportDataUnsubscribe;
89
123
  transportErrorUnsubscribe;
90
124
  _isConnected = false;
91
- inboundFrameCount = 0;
92
125
  constructor(options) {
126
+ // Validate options
127
+ if (options.timeout !== undefined && options.timeout <= 0) {
128
+ throw new Error("RequestChannel: timeout must be positive");
129
+ }
130
+ if (options.maxInboundFrames !== undefined && options.maxInboundFrames < 0) {
131
+ throw new Error("RequestChannel: maxInboundFrames cannot be negative");
132
+ }
133
+ if (options.bufferEarlyNotifications !== undefined && options.bufferEarlyNotifications < 0) {
134
+ throw new Error("RequestChannel: bufferEarlyNotifications cannot be negative");
135
+ }
136
+ if (options.pendingRequestPoolSize !== undefined && options.pendingRequestPoolSize < 0) {
137
+ throw new Error("RequestChannel: pendingRequestPoolSize cannot be negative");
138
+ }
93
139
  this.transport = options.transport;
94
140
  this.framing = options.framing;
95
141
  this.serialization = options.serialization;
96
142
  this.protocol = options.protocol;
97
143
  this.defaultTimeout = options.timeout !== undefined ? options.timeout : 30000;
98
144
  this.middleware = options.middleware !== undefined ? options.middleware : [];
99
- this.maxInboundFrames = options.maxInboundFrames !== undefined ? options.maxInboundFrames : undefined;
100
- this.bufferEarlyNotifications = options.bufferEarlyNotifications !== undefined ? options.bufferEarlyNotifications : 10;
145
+ this.maxInboundFrames =
146
+ options.maxInboundFrames !== undefined ? options.maxInboundFrames : undefined;
147
+ this.bufferEarlyNotifications =
148
+ options.bufferEarlyNotifications !== undefined ? options.bufferEarlyNotifications : 10;
149
+ this.metrics = options.metrics;
150
+ const poolSize = options.pendingRequestPoolSize ?? 100;
151
+ this.pendingPool = poolSize > 0 ? new PendingRequestPool(poolSize) : null;
152
+ this.onMiddlewareError = options.onMiddlewareError;
101
153
  // Auto-detect response accessor if not provided
102
154
  this.responseAccessor =
103
155
  options.responseAccessor !== undefined
@@ -126,7 +178,22 @@ export class RequestChannel {
126
178
  });
127
179
  // Connect transport if not already connected (e.g., server-accepted connections)
128
180
  if (this.transport.state !== "connected") {
129
- await this.transport.connect();
181
+ try {
182
+ await this.transport.connect();
183
+ }
184
+ catch (error) {
185
+ // Cleanup subscriptions on connection failure to prevent memory leaks
186
+ // and ensure clean state for potential retry
187
+ if (this.transportDataUnsubscribe !== undefined) {
188
+ this.transportDataUnsubscribe();
189
+ this.transportDataUnsubscribe = undefined;
190
+ }
191
+ if (this.transportErrorUnsubscribe !== undefined) {
192
+ this.transportErrorUnsubscribe();
193
+ this.transportErrorUnsubscribe = undefined;
194
+ }
195
+ throw error;
196
+ }
130
197
  }
131
198
  this._isConnected = true;
132
199
  this.events.emit("start", undefined);
@@ -151,8 +218,9 @@ export class RequestChannel {
151
218
  // Reject all pending requests
152
219
  const channelClosedError = new Error("Channel closed");
153
220
  for (const pending of this.pendingRequests.values()) {
154
- pending.timeoutSignal.cancel();
221
+ pending.timeoutSignal?.cancel();
155
222
  pending.reject(channelClosedError);
223
+ this.releasePendingRequest(pending);
156
224
  }
157
225
  this.pendingRequests.clear();
158
226
  // Reset framing state
@@ -174,25 +242,33 @@ export class RequestChannel {
174
242
  if (id === undefined) {
175
243
  throw new ProtocolError("Failed to extract request ID from created request");
176
244
  }
245
+ this.metrics?.incrementCounter("channel.request", 1, { method });
177
246
  // Call middleware
178
247
  await this.runMiddlewareHook("onOutgoingRequest", request);
248
+ const pending = this.acquirePendingRequest();
249
+ pending.startTime = Date.now();
250
+ pending.method = method;
179
251
  // Setup pending request promise
180
252
  const resultPromise = new Promise((resolve, reject) => {
181
253
  const effectiveTimeout = timeout ?? this.defaultTimeout;
182
254
  const timeoutSignal = createTimeoutSignal(effectiveTimeout);
183
255
  // Store pending request
184
- this.pendingRequests.set(id, {
185
- resolve,
186
- reject,
187
- timeoutSignal,
188
- });
256
+ pending.resolve = resolve;
257
+ pending.reject = reject;
258
+ pending.timeoutSignal = timeoutSignal;
259
+ this.pendingRequests.set(id, pending);
189
260
  // Race between response and timeout
190
261
  timeoutSignal.promise.catch((error) => {
191
262
  // Timeout occurred
192
- const pending = this.pendingRequests.get(id);
193
- if (pending) {
263
+ const activePending = this.pendingRequests.get(id);
264
+ if (activePending) {
194
265
  this.pendingRequests.delete(id);
195
- reject(error);
266
+ this.metrics?.incrementCounter("channel.request_timeout", 1, {
267
+ method: activePending.method,
268
+ });
269
+ this.recordRequestLatency(activePending, "timeout");
270
+ activePending.reject(error);
271
+ this.releasePendingRequest(activePending);
196
272
  }
197
273
  });
198
274
  });
@@ -205,10 +281,11 @@ export class RequestChannel {
205
281
  }
206
282
  catch (error) {
207
283
  // Write failed, clean up pending request
208
- const pending = this.pendingRequests.get(id);
209
- if (pending) {
210
- pending.timeoutSignal.cancel();
284
+ const activePending = this.pendingRequests.get(id);
285
+ if (activePending) {
286
+ activePending.timeoutSignal?.cancel();
211
287
  this.pendingRequests.delete(id);
288
+ this.releasePendingRequest(activePending);
212
289
  }
213
290
  throw error;
214
291
  }
@@ -284,18 +361,21 @@ export class RequestChannel {
284
361
  this.emitError(toError(error));
285
362
  return;
286
363
  }
287
- // Check max inbound frames limit
288
- if (this.maxInboundFrames !== undefined) {
289
- this.inboundFrameCount += frames.length;
290
- if (this.inboundFrameCount > this.maxInboundFrames) {
291
- this.emitError(new Error(`Exceeded max inbound frames: ${this.maxInboundFrames}`));
292
- // Don't process these frames, but don't crash the channel either
293
- this.inboundFrameCount -= frames.length;
294
- return;
295
- }
364
+ // Check max inbound frames limit for this batch BEFORE processing.
365
+ // This is a per-batch limit to prevent flooding, not a lifetime cap.
366
+ if (this.maxInboundFrames !== undefined && frames.length > this.maxInboundFrames) {
367
+ this.emitError(new Error(`Exceeded max inbound frames limit: received ${frames.length} frames in one chunk (limit: ${this.maxInboundFrames}). Closing channel.`));
368
+ await this.close();
369
+ return;
296
370
  }
297
371
  // Process each frame
298
372
  for (const frame of frames) {
373
+ if (this.metrics) {
374
+ this.metrics.incrementCounter("framing.frames", 1, { direction: "inbound" });
375
+ this.metrics.recordHistogram("framing.frame_size_bytes", frame.length, {
376
+ direction: "inbound",
377
+ });
378
+ }
299
379
  try {
300
380
  await this.processFrame(frame);
301
381
  }
@@ -304,10 +384,6 @@ export class RequestChannel {
304
384
  this.emitError(toError(error));
305
385
  }
306
386
  }
307
- // Reset counter after processing batch
308
- if (this.maxInboundFrames !== undefined) {
309
- this.inboundFrameCount = 0;
310
- }
311
387
  }
312
388
  /**
313
389
  * Processes a single frame.
@@ -355,16 +431,19 @@ export class RequestChannel {
355
431
  }
356
432
  // Remove from pending
357
433
  this.pendingRequests.delete(id);
358
- pending.timeoutSignal.cancel();
434
+ pending.timeoutSignal?.cancel();
359
435
  // Check if error response
360
436
  if (this.responseAccessor.isErrorResponse(response)) {
361
437
  const error = this.responseAccessor.getError(response);
438
+ this.recordRequestLatency(pending, "error");
362
439
  pending.reject(new ProtocolError("Request failed", error));
363
440
  }
364
441
  else {
365
442
  const result = this.responseAccessor.getResult(response);
443
+ this.recordRequestLatency(pending, "success");
366
444
  pending.resolve(result);
367
445
  }
446
+ this.releasePendingRequest(pending);
368
447
  }
369
448
  /**
370
449
  * Handles incoming request message.
@@ -420,9 +499,12 @@ export class RequestChannel {
420
499
  async handleNotification(notification) {
421
500
  // If no handlers registered yet, buffer the notification for later delivery
422
501
  if (this.notificationHandlers.length === 0) {
423
- if (this.bufferedNotifications.length < this.bufferEarlyNotifications) {
424
- this.bufferedNotifications.push(notification);
502
+ // Enforce buffer limit using sliding window (keep most recent notifications)
503
+ if (this.bufferedNotifications.length >= this.bufferEarlyNotifications) {
504
+ // Remove oldest notification to make room for new one
505
+ this.bufferedNotifications.shift();
425
506
  }
507
+ this.bufferedNotifications.push(notification);
426
508
  return;
427
509
  }
428
510
  // Call all notification handlers
@@ -482,16 +564,38 @@ export class RequestChannel {
482
564
  await typedFn.call(mw, data);
483
565
  }
484
566
  catch (error) {
485
- // Log but don't throw - middleware errors shouldn't break the channel
486
- console.error(`Error in middleware hook '${hook}':`, error);
567
+ // Middleware errors shouldn't break the channel
568
+ // If callback provided, invoke it; otherwise silently ignore
569
+ if (this.onMiddlewareError) {
570
+ this.onMiddlewareError(hook, toError(error));
571
+ }
487
572
  }
488
573
  }
489
574
  }
490
575
  }
576
+ acquirePendingRequest() {
577
+ return this.pendingPool?.acquire() ?? createPendingRequest();
578
+ }
579
+ releasePendingRequest(pending) {
580
+ if (this.pendingPool) {
581
+ this.pendingPool.release(pending);
582
+ }
583
+ }
584
+ recordRequestLatency(pending, status) {
585
+ if (!this.metrics) {
586
+ return;
587
+ }
588
+ const latencyMs = Date.now() - pending.startTime;
589
+ this.metrics.recordHistogram("channel.request_latency_ms", latencyMs, {
590
+ method: pending.method,
591
+ status,
592
+ });
593
+ }
491
594
  /**
492
595
  * Emits error event.
493
596
  */
494
597
  emitError(error) {
598
+ this.metrics?.incrementCounter("channel.error", 1, { type: error.name });
495
599
  this.events.emit("error", error);
496
600
  }
497
601
  }
@@ -1 +1 @@
1
- {"version":3,"file":"request-channel.js","sourceRoot":"","sources":["../../src/channel/request-channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-channel.js","sourceRoot":"","sources":["../../src/channel/request-channel.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import type { Transport, TransportServer } from "../transport/types.js";
4
4
  import type { FramingCodec } from "../framing/types.js";
5
5
  import type { SerializationCodec } from "../serialization/types.js";
6
6
  import type { Protocol, RequestId, ProtocolDataError } from "../protocol/types.js";
7
+ import type { MetricsCollector } from "../utils/metrics.js";
7
8
  /**
8
9
  * Request handler function.
9
10
  * @template TReq - Request data type
@@ -117,6 +118,10 @@ export interface ChannelOptions<TReq = unknown, TRes = unknown, TNotif = unknown
117
118
  * Middleware hooks for logging, metrics, debugging.
118
119
  */
119
120
  middleware?: ChannelMiddleware[];
121
+ /**
122
+ * Optional metrics collector for channel instrumentation.
123
+ */
124
+ metrics?: MetricsCollector;
120
125
  /**
121
126
  * Maximum number of inbound frames to buffer before backpressure (optional).
122
127
  */
@@ -127,6 +132,19 @@ export interface ChannelOptions<TReq = unknown, TRes = unknown, TNotif = unknown
127
132
  * Default: 10
128
133
  */
129
134
  bufferEarlyNotifications?: number;
135
+ /**
136
+ * Maximum size of pending request pool (0 disables pooling).
137
+ * Default: 100
138
+ */
139
+ pendingRequestPoolSize?: number;
140
+ /**
141
+ * Callback for middleware errors.
142
+ * Called when a middleware hook throws an error.
143
+ * If not provided, errors are silently ignored (not logged).
144
+ * @param hook - Name of the middleware hook that failed
145
+ * @param error - The error that was thrown
146
+ */
147
+ onMiddlewareError?: (hook: string, error: Error) => void;
130
148
  }
131
149
  /**
132
150
  * High-level communication channel combining all layers.
@@ -135,6 +153,33 @@ export interface ChannelOptions<TReq = unknown, TRes = unknown, TNotif = unknown
135
153
  * @template TReq - Request data type (wire format)
136
154
  * @template TRes - Response data type (wire format)
137
155
  * @template TNotif - Notification data type (wire format)
156
+ *
157
+ * @example
158
+ * ```typescript
159
+ * // Create and start a channel
160
+ * const channel = new ChannelBuilder()
161
+ * .withTransport(transport)
162
+ * .withFraming(new LengthPrefixedFraming())
163
+ * .withSerialization(new JsonCodec())
164
+ * .withProtocol(new JsonRpcProtocol())
165
+ * .build();
166
+ *
167
+ * await channel.start();
168
+ *
169
+ * // Send request
170
+ * const result = await channel.request("add", { a: 1, b: 2 });
171
+ *
172
+ * // Handle incoming requests
173
+ * channel.onRequest((req) => {
174
+ * return { result: "processed" };
175
+ * });
176
+ *
177
+ * // Cleanup
178
+ * await channel.close();
179
+ * ```
180
+ *
181
+ * @see {@link ChannelBuilder} for fluent channel construction
182
+ * @see {@link ChannelOptions} for configuration options
138
183
  */
139
184
  export interface Channel<TReq = unknown, TRes = unknown, TNotif = unknown> {
140
185
  /**
@@ -142,42 +187,119 @@ export interface Channel<TReq = unknown, TRes = unknown, TNotif = unknown> {
142
187
  */
143
188
  readonly isConnected: boolean;
144
189
  /**
145
- * Starts the channel (connects transport).
190
+ * Starts the channel (connects transport and begins message processing).
191
+ *
192
+ * @throws {TransportError} if transport connection fails
193
+ *
194
+ * @example
195
+ * ```typescript
196
+ * await channel.start();
197
+ * console.log(channel.isConnected); // true
198
+ * ```
146
199
  */
147
200
  start(): Promise<void>;
148
201
  /**
149
202
  * Closes the channel gracefully.
203
+ * Rejects all pending requests and disconnects the transport.
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * await channel.close();
208
+ * console.log(channel.isConnected); // false
209
+ * ```
150
210
  */
151
211
  close(): Promise<void>;
152
212
  /**
153
213
  * Sends a request and waits for response.
154
- * @param method - Method name
155
- * @param params - Optional parameters
156
- * @param timeout - Optional timeout override (ms)
214
+ *
215
+ * @param method - Method name to call
216
+ * @param params - Optional parameters to pass
217
+ * @param timeout - Optional timeout override in milliseconds
157
218
  * @returns Promise resolving to response result
219
+ *
158
220
  * @throws {TimeoutError} if request times out
159
- * @throws {ProtocolError} if response is an error
221
+ * @throws {ProtocolError} if response contains an error
222
+ * @throws {Error} if channel is not connected
223
+ *
224
+ * @example
225
+ * ```typescript
226
+ * // Basic request
227
+ * const result = await channel.request("add", { a: 1, b: 2 });
228
+ *
229
+ * // With custom timeout
230
+ * const result = await channel.request("slowOperation", {}, 60000);
231
+ * ```
232
+ *
233
+ * @see {@link notify} for fire-and-forget messages
160
234
  */
161
235
  request(method: string, params?: unknown, timeout?: number): Promise<unknown>;
162
236
  /**
163
237
  * Sends a notification (fire-and-forget, no response expected).
238
+ *
164
239
  * @param method - Method name
165
240
  * @param params - Optional parameters
241
+ *
242
+ * @throws {Error} if channel is not connected
243
+ *
244
+ * @example
245
+ * ```typescript
246
+ * await channel.notify("log", { message: "Something happened" });
247
+ * ```
248
+ *
249
+ * @see {@link request} for request/response pattern
166
250
  */
167
251
  notify(method: string, params?: unknown): Promise<void>;
168
252
  /**
169
253
  * Registers handler for incoming requests.
170
- * @returns Unsubscribe function
254
+ *
255
+ * @param handler - Function to handle incoming requests
256
+ * @returns Unsubscribe function to remove the handler
257
+ *
258
+ * @example
259
+ * ```typescript
260
+ * const unsubscribe = channel.onRequest((request) => {
261
+ * if (request.method === "ping") {
262
+ * return { pong: true };
263
+ * }
264
+ * throw new Error("Unknown method");
265
+ * });
266
+ *
267
+ * // Later: remove handler
268
+ * unsubscribe();
269
+ * ```
171
270
  */
172
271
  onRequest(handler: RequestHandler<TReq, TRes>): Unsubscribe;
173
272
  /**
174
273
  * Registers handler for incoming notifications.
175
- * @returns Unsubscribe function
274
+ *
275
+ * @param handler - Function to handle incoming notifications
276
+ * @returns Unsubscribe function to remove the handler
277
+ *
278
+ * @example
279
+ * ```typescript
280
+ * channel.onNotification((notification) => {
281
+ * console.log("Received:", notification);
282
+ * });
283
+ * ```
176
284
  */
177
285
  onNotification(handler: NotificationHandler<TNotif>): Unsubscribe;
178
286
  /**
179
287
  * Subscribes to channel events.
288
+ *
289
+ * @param event - Event name ('start', 'close', 'error')
290
+ * @param handler - Event handler function
180
291
  * @returns Unsubscribe function
292
+ *
293
+ * @example
294
+ * ```typescript
295
+ * channel.on("error", (error) => {
296
+ * console.error("Channel error:", error);
297
+ * });
298
+ *
299
+ * channel.on("close", () => {
300
+ * console.log("Channel closed");
301
+ * });
302
+ * ```
181
303
  */
182
304
  on<K extends keyof ChannelEvents>(event: K, handler: (data: ChannelEvents[K]) => void): Unsubscribe;
183
305
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/channel/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/channel/types.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,8 @@ export interface LengthPrefixedFramingOptions {
27
27
  export declare class LengthPrefixedFraming implements FramingCodec {
28
28
  private static readonly HEADER_SIZE;
29
29
  private readonly maxMessageSize;
30
- private buffer;
30
+ private buffers;
31
+ private totalLength;
31
32
  private expectedLength;
32
33
  constructor(options?: LengthPrefixedFramingOptions);
33
34
  /**
@@ -51,5 +52,8 @@ export declare class LengthPrefixedFraming implements FramingCodec {
51
52
  * Returns current buffer size in bytes.
52
53
  */
53
54
  getBufferSize(): number;
55
+ private peekBytes;
56
+ private takeBytes;
57
+ private consumeBytes;
54
58
  }
55
59
  //# sourceMappingURL=length-prefixed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"length-prefixed.d.ts","sourceRoot":"","sources":["../../src/framing/length-prefixed.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,qBAAsB,YAAW,YAAY;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAK;IAExC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,cAAc,CAAgB;gBAE1B,OAAO,GAAE,4BAAiC;IAMtD;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAM/B;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IA0D/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,aAAa,IAAI,MAAM;CAGxB"}
1
+ {"version":3,"file":"length-prefixed.d.ts","sourceRoot":"","sources":["../../src/framing/length-prefixed.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,qBAAsB,YAAW,YAAY;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAK;IAExC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,OAAO,CAAW;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAgB;gBAE1B,OAAO,GAAE,4BAAiC;IAYtD;;OAEG;IACH,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAM/B;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAgE/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,SAAS;IAoCjB,OAAO,CAAC,YAAY;CAgBrB"}