@procwire/transport 0.1.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -4
- package/dist/channel/builder.d.ts +23 -0
- package/dist/channel/builder.d.ts.map +1 -1
- package/dist/channel/builder.js +46 -0
- package/dist/channel/builder.js.map +1 -1
- package/dist/channel/index.d.ts +1 -1
- package/dist/channel/index.d.ts.map +1 -1
- package/dist/channel/index.js +1 -1
- package/dist/channel/index.js.map +1 -1
- package/dist/channel/quickstart.d.ts.map +1 -1
- package/dist/channel/quickstart.js +16 -10
- package/dist/channel/quickstart.js.map +1 -1
- package/dist/channel/request-channel.d.ts +10 -1
- package/dist/channel/request-channel.d.ts.map +1 -1
- package/dist/channel/request-channel.js +161 -35
- package/dist/channel/request-channel.js.map +1 -1
- package/dist/channel/types.d.ts +135 -7
- package/dist/channel/types.d.ts.map +1 -1
- package/dist/framing/length-prefixed.d.ts +5 -1
- package/dist/framing/length-prefixed.d.ts.map +1 -1
- package/dist/framing/length-prefixed.js +94 -15
- package/dist/framing/length-prefixed.js.map +1 -1
- package/dist/framing/line-delimited.d.ts +4 -1
- package/dist/framing/line-delimited.d.ts.map +1 -1
- package/dist/framing/line-delimited.js +89 -23
- package/dist/framing/line-delimited.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/process/handle.d.ts.map +1 -1
- package/dist/process/handle.js.map +1 -1
- package/dist/process/manager.d.ts +16 -0
- package/dist/process/manager.d.ts.map +1 -1
- package/dist/process/manager.js +140 -81
- package/dist/process/manager.js.map +1 -1
- package/dist/process/types.d.ts +110 -1
- package/dist/process/types.d.ts.map +1 -1
- package/dist/protocol/jsonrpc.d.ts.map +1 -1
- package/dist/protocol/jsonrpc.js.map +1 -1
- package/dist/protocol/simple.d.ts.map +1 -1
- package/dist/protocol/simple.js.map +1 -1
- package/dist/serialization/json.d.ts.map +1 -1
- package/dist/serialization/json.js.map +1 -1
- package/dist/transport/socket-server.d.ts.map +1 -1
- package/dist/transport/socket-server.js.map +1 -1
- package/dist/transport/socket-transport.d.ts +11 -13
- package/dist/transport/socket-transport.d.ts.map +1 -1
- package/dist/transport/socket-transport.js +57 -26
- package/dist/transport/socket-transport.js.map +1 -1
- package/dist/transport/stdio-transport.d.ts +12 -19
- package/dist/transport/stdio-transport.d.ts.map +1 -1
- package/dist/transport/stdio-transport.js +54 -33
- package/dist/transport/stdio-transport.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/metrics.d.ts +6 -0
- package/dist/utils/metrics.d.ts.map +1 -0
- package/dist/utils/metrics.js +2 -0
- package/dist/utils/metrics.js.map +1 -0
- package/dist/utils/pipe-path.d.ts +8 -2
- package/dist/utils/pipe-path.d.ts.map +1 -1
- package/dist/utils/pipe-path.js +27 -4
- package/dist/utils/pipe-path.js.map +1 -1
- package/dist/utils/platform.d.ts.map +1 -1
- package/dist/utils/platform.js +1 -1
- package/dist/utils/platform.js.map +1 -1
- package/package.json +6 -5
|
@@ -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
|
*/
|
|
@@ -79,22 +110,46 @@ export class RequestChannel {
|
|
|
79
110
|
responseAccessor;
|
|
80
111
|
middleware;
|
|
81
112
|
maxInboundFrames;
|
|
113
|
+
bufferEarlyNotifications;
|
|
114
|
+
metrics;
|
|
115
|
+
pendingPool;
|
|
116
|
+
onMiddlewareError;
|
|
82
117
|
events = new EventEmitter();
|
|
83
118
|
pendingRequests = new Map();
|
|
84
119
|
requestHandlers = [];
|
|
85
120
|
notificationHandlers = [];
|
|
121
|
+
bufferedNotifications = [];
|
|
86
122
|
transportDataUnsubscribe;
|
|
87
123
|
transportErrorUnsubscribe;
|
|
88
124
|
_isConnected = false;
|
|
89
|
-
inboundFrameCount = 0;
|
|
90
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
|
+
}
|
|
91
139
|
this.transport = options.transport;
|
|
92
140
|
this.framing = options.framing;
|
|
93
141
|
this.serialization = options.serialization;
|
|
94
142
|
this.protocol = options.protocol;
|
|
95
143
|
this.defaultTimeout = options.timeout !== undefined ? options.timeout : 30000;
|
|
96
144
|
this.middleware = options.middleware !== undefined ? options.middleware : [];
|
|
97
|
-
this.maxInboundFrames =
|
|
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;
|
|
98
153
|
// Auto-detect response accessor if not provided
|
|
99
154
|
this.responseAccessor =
|
|
100
155
|
options.responseAccessor !== undefined
|
|
@@ -111,11 +166,8 @@ export class RequestChannel {
|
|
|
111
166
|
if (this._isConnected) {
|
|
112
167
|
return;
|
|
113
168
|
}
|
|
114
|
-
//
|
|
115
|
-
|
|
116
|
-
await this.transport.connect();
|
|
117
|
-
}
|
|
118
|
-
// Subscribe to transport events
|
|
169
|
+
// Subscribe to transport events BEFORE connecting to avoid race conditions
|
|
170
|
+
// where the child process might emit data before we're listening
|
|
119
171
|
this.transportDataUnsubscribe = this.transport.onData((chunk) => {
|
|
120
172
|
this.handleChunk(chunk).catch((error) => {
|
|
121
173
|
this.emitError(toError(error));
|
|
@@ -124,6 +176,25 @@ export class RequestChannel {
|
|
|
124
176
|
this.transportErrorUnsubscribe = this.transport.on("error", (error) => {
|
|
125
177
|
this.emitError(error);
|
|
126
178
|
});
|
|
179
|
+
// Connect transport if not already connected (e.g., server-accepted connections)
|
|
180
|
+
if (this.transport.state !== "connected") {
|
|
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
|
+
}
|
|
197
|
+
}
|
|
127
198
|
this._isConnected = true;
|
|
128
199
|
this.events.emit("start", undefined);
|
|
129
200
|
}
|
|
@@ -147,8 +218,9 @@ export class RequestChannel {
|
|
|
147
218
|
// Reject all pending requests
|
|
148
219
|
const channelClosedError = new Error("Channel closed");
|
|
149
220
|
for (const pending of this.pendingRequests.values()) {
|
|
150
|
-
pending.timeoutSignal
|
|
221
|
+
pending.timeoutSignal?.cancel();
|
|
151
222
|
pending.reject(channelClosedError);
|
|
223
|
+
this.releasePendingRequest(pending);
|
|
152
224
|
}
|
|
153
225
|
this.pendingRequests.clear();
|
|
154
226
|
// Reset framing state
|
|
@@ -170,25 +242,33 @@ export class RequestChannel {
|
|
|
170
242
|
if (id === undefined) {
|
|
171
243
|
throw new ProtocolError("Failed to extract request ID from created request");
|
|
172
244
|
}
|
|
245
|
+
this.metrics?.incrementCounter("channel.request", 1, { method });
|
|
173
246
|
// Call middleware
|
|
174
247
|
await this.runMiddlewareHook("onOutgoingRequest", request);
|
|
248
|
+
const pending = this.acquirePendingRequest();
|
|
249
|
+
pending.startTime = Date.now();
|
|
250
|
+
pending.method = method;
|
|
175
251
|
// Setup pending request promise
|
|
176
252
|
const resultPromise = new Promise((resolve, reject) => {
|
|
177
253
|
const effectiveTimeout = timeout ?? this.defaultTimeout;
|
|
178
254
|
const timeoutSignal = createTimeoutSignal(effectiveTimeout);
|
|
179
255
|
// Store pending request
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
});
|
|
256
|
+
pending.resolve = resolve;
|
|
257
|
+
pending.reject = reject;
|
|
258
|
+
pending.timeoutSignal = timeoutSignal;
|
|
259
|
+
this.pendingRequests.set(id, pending);
|
|
185
260
|
// Race between response and timeout
|
|
186
261
|
timeoutSignal.promise.catch((error) => {
|
|
187
262
|
// Timeout occurred
|
|
188
|
-
const
|
|
189
|
-
if (
|
|
263
|
+
const activePending = this.pendingRequests.get(id);
|
|
264
|
+
if (activePending) {
|
|
190
265
|
this.pendingRequests.delete(id);
|
|
191
|
-
|
|
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);
|
|
192
272
|
}
|
|
193
273
|
});
|
|
194
274
|
});
|
|
@@ -201,10 +281,11 @@ export class RequestChannel {
|
|
|
201
281
|
}
|
|
202
282
|
catch (error) {
|
|
203
283
|
// Write failed, clean up pending request
|
|
204
|
-
const
|
|
205
|
-
if (
|
|
206
|
-
|
|
284
|
+
const activePending = this.pendingRequests.get(id);
|
|
285
|
+
if (activePending) {
|
|
286
|
+
activePending.timeoutSignal?.cancel();
|
|
207
287
|
this.pendingRequests.delete(id);
|
|
288
|
+
this.releasePendingRequest(activePending);
|
|
208
289
|
}
|
|
209
290
|
throw error;
|
|
210
291
|
}
|
|
@@ -241,9 +322,20 @@ export class RequestChannel {
|
|
|
241
322
|
}
|
|
242
323
|
/**
|
|
243
324
|
* Registers handler for incoming notifications.
|
|
325
|
+
* If notifications were buffered before this handler was registered,
|
|
326
|
+
* they will be delivered immediately.
|
|
244
327
|
*/
|
|
245
328
|
onNotification(handler) {
|
|
246
329
|
this.notificationHandlers.push(handler);
|
|
330
|
+
// Deliver any buffered notifications to the new handler
|
|
331
|
+
for (const notification of this.bufferedNotifications) {
|
|
332
|
+
try {
|
|
333
|
+
handler(notification);
|
|
334
|
+
}
|
|
335
|
+
catch (error) {
|
|
336
|
+
this.emitError(toError(error));
|
|
337
|
+
}
|
|
338
|
+
}
|
|
247
339
|
return () => {
|
|
248
340
|
const index = this.notificationHandlers.indexOf(handler);
|
|
249
341
|
if (index !== -1) {
|
|
@@ -269,18 +361,21 @@ export class RequestChannel {
|
|
|
269
361
|
this.emitError(toError(error));
|
|
270
362
|
return;
|
|
271
363
|
}
|
|
272
|
-
// Check max inbound frames limit
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
this.inboundFrameCount -= frames.length;
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
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;
|
|
281
370
|
}
|
|
282
371
|
// Process each frame
|
|
283
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
|
+
}
|
|
284
379
|
try {
|
|
285
380
|
await this.processFrame(frame);
|
|
286
381
|
}
|
|
@@ -289,10 +384,6 @@ export class RequestChannel {
|
|
|
289
384
|
this.emitError(toError(error));
|
|
290
385
|
}
|
|
291
386
|
}
|
|
292
|
-
// Reset counter after processing batch
|
|
293
|
-
if (this.maxInboundFrames !== undefined) {
|
|
294
|
-
this.inboundFrameCount = 0;
|
|
295
|
-
}
|
|
296
387
|
}
|
|
297
388
|
/**
|
|
298
389
|
* Processes a single frame.
|
|
@@ -340,16 +431,19 @@ export class RequestChannel {
|
|
|
340
431
|
}
|
|
341
432
|
// Remove from pending
|
|
342
433
|
this.pendingRequests.delete(id);
|
|
343
|
-
pending.timeoutSignal
|
|
434
|
+
pending.timeoutSignal?.cancel();
|
|
344
435
|
// Check if error response
|
|
345
436
|
if (this.responseAccessor.isErrorResponse(response)) {
|
|
346
437
|
const error = this.responseAccessor.getError(response);
|
|
438
|
+
this.recordRequestLatency(pending, "error");
|
|
347
439
|
pending.reject(new ProtocolError("Request failed", error));
|
|
348
440
|
}
|
|
349
441
|
else {
|
|
350
442
|
const result = this.responseAccessor.getResult(response);
|
|
443
|
+
this.recordRequestLatency(pending, "success");
|
|
351
444
|
pending.resolve(result);
|
|
352
445
|
}
|
|
446
|
+
this.releasePendingRequest(pending);
|
|
353
447
|
}
|
|
354
448
|
/**
|
|
355
449
|
* Handles incoming request message.
|
|
@@ -403,6 +497,16 @@ export class RequestChannel {
|
|
|
403
497
|
* Handles incoming notification message.
|
|
404
498
|
*/
|
|
405
499
|
async handleNotification(notification) {
|
|
500
|
+
// If no handlers registered yet, buffer the notification for later delivery
|
|
501
|
+
if (this.notificationHandlers.length === 0) {
|
|
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();
|
|
506
|
+
}
|
|
507
|
+
this.bufferedNotifications.push(notification);
|
|
508
|
+
return;
|
|
509
|
+
}
|
|
406
510
|
// Call all notification handlers
|
|
407
511
|
for (const handler of this.notificationHandlers) {
|
|
408
512
|
try {
|
|
@@ -460,16 +564,38 @@ export class RequestChannel {
|
|
|
460
564
|
await typedFn.call(mw, data);
|
|
461
565
|
}
|
|
462
566
|
catch (error) {
|
|
463
|
-
//
|
|
464
|
-
|
|
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
|
+
}
|
|
465
572
|
}
|
|
466
573
|
}
|
|
467
574
|
}
|
|
468
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
|
+
}
|
|
469
594
|
/**
|
|
470
595
|
* Emits error event.
|
|
471
596
|
*/
|
|
472
597
|
emitError(error) {
|
|
598
|
+
this.metrics?.incrementCounter("channel.error", 1, { type: error.name });
|
|
473
599
|
this.events.emit("error", error);
|
|
474
600
|
}
|
|
475
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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"}
|
package/dist/channel/types.d.ts
CHANGED
|
@@ -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,10 +118,33 @@ 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
|
*/
|
|
123
128
|
maxInboundFrames?: number;
|
|
129
|
+
/**
|
|
130
|
+
* Buffer early notifications received before handlers are registered.
|
|
131
|
+
* Useful when child processes send notifications immediately after spawn.
|
|
132
|
+
* Default: 10
|
|
133
|
+
*/
|
|
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;
|
|
124
148
|
}
|
|
125
149
|
/**
|
|
126
150
|
* High-level communication channel combining all layers.
|
|
@@ -129,6 +153,33 @@ export interface ChannelOptions<TReq = unknown, TRes = unknown, TNotif = unknown
|
|
|
129
153
|
* @template TReq - Request data type (wire format)
|
|
130
154
|
* @template TRes - Response data type (wire format)
|
|
131
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
|
|
132
183
|
*/
|
|
133
184
|
export interface Channel<TReq = unknown, TRes = unknown, TNotif = unknown> {
|
|
134
185
|
/**
|
|
@@ -136,42 +187,119 @@ export interface Channel<TReq = unknown, TRes = unknown, TNotif = unknown> {
|
|
|
136
187
|
*/
|
|
137
188
|
readonly isConnected: boolean;
|
|
138
189
|
/**
|
|
139
|
-
* 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
|
+
* ```
|
|
140
199
|
*/
|
|
141
200
|
start(): Promise<void>;
|
|
142
201
|
/**
|
|
143
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
|
+
* ```
|
|
144
210
|
*/
|
|
145
211
|
close(): Promise<void>;
|
|
146
212
|
/**
|
|
147
213
|
* Sends a request and waits for response.
|
|
148
|
-
*
|
|
149
|
-
* @param
|
|
150
|
-
* @param
|
|
214
|
+
*
|
|
215
|
+
* @param method - Method name to call
|
|
216
|
+
* @param params - Optional parameters to pass
|
|
217
|
+
* @param timeout - Optional timeout override in milliseconds
|
|
151
218
|
* @returns Promise resolving to response result
|
|
219
|
+
*
|
|
152
220
|
* @throws {TimeoutError} if request times out
|
|
153
|
-
* @throws {ProtocolError} if response
|
|
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
|
|
154
234
|
*/
|
|
155
235
|
request(method: string, params?: unknown, timeout?: number): Promise<unknown>;
|
|
156
236
|
/**
|
|
157
237
|
* Sends a notification (fire-and-forget, no response expected).
|
|
238
|
+
*
|
|
158
239
|
* @param method - Method name
|
|
159
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
|
|
160
250
|
*/
|
|
161
251
|
notify(method: string, params?: unknown): Promise<void>;
|
|
162
252
|
/**
|
|
163
253
|
* Registers handler for incoming requests.
|
|
164
|
-
*
|
|
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
|
+
* ```
|
|
165
270
|
*/
|
|
166
271
|
onRequest(handler: RequestHandler<TReq, TRes>): Unsubscribe;
|
|
167
272
|
/**
|
|
168
273
|
* Registers handler for incoming notifications.
|
|
169
|
-
*
|
|
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
|
+
* ```
|
|
170
284
|
*/
|
|
171
285
|
onNotification(handler: NotificationHandler<TNotif>): Unsubscribe;
|
|
172
286
|
/**
|
|
173
287
|
* Subscribes to channel events.
|
|
288
|
+
*
|
|
289
|
+
* @param event - Event name ('start', 'close', 'error')
|
|
290
|
+
* @param handler - Event handler function
|
|
174
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
|
+
* ```
|
|
175
303
|
*/
|
|
176
304
|
on<K extends keyof ChannelEvents>(event: K, handler: (data: ChannelEvents[K]) => void): Unsubscribe;
|
|
177
305
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/channel/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
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
|
|
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,
|
|
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"}
|