@procwire/transport 1.0.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 (151) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +844 -0
  3. package/dist/channel/builder.d.ts +68 -0
  4. package/dist/channel/builder.d.ts.map +1 -0
  5. package/dist/channel/builder.js +120 -0
  6. package/dist/channel/builder.js.map +1 -0
  7. package/dist/channel/index.d.ts +6 -0
  8. package/dist/channel/index.d.ts.map +1 -0
  9. package/dist/channel/index.js +6 -0
  10. package/dist/channel/index.js.map +1 -0
  11. package/dist/channel/quickstart.d.ts +94 -0
  12. package/dist/channel/quickstart.d.ts.map +1 -0
  13. package/dist/channel/quickstart.js +104 -0
  14. package/dist/channel/quickstart.js.map +1 -0
  15. package/dist/channel/request-channel.d.ts +119 -0
  16. package/dist/channel/request-channel.d.ts.map +1 -0
  17. package/dist/channel/request-channel.js +476 -0
  18. package/dist/channel/request-channel.js.map +1 -0
  19. package/dist/channel/types.d.ts +226 -0
  20. package/dist/channel/types.d.ts.map +1 -0
  21. package/dist/channel/types.js +2 -0
  22. package/dist/channel/types.js.map +1 -0
  23. package/dist/framing/index.d.ts +4 -0
  24. package/dist/framing/index.d.ts.map +1 -0
  25. package/dist/framing/index.js +4 -0
  26. package/dist/framing/index.js.map +1 -0
  27. package/dist/framing/length-prefixed.d.ts +55 -0
  28. package/dist/framing/length-prefixed.d.ts.map +1 -0
  29. package/dist/framing/length-prefixed.js +102 -0
  30. package/dist/framing/length-prefixed.js.map +1 -0
  31. package/dist/framing/line-delimited.d.ts +61 -0
  32. package/dist/framing/line-delimited.d.ts.map +1 -0
  33. package/dist/framing/line-delimited.js +94 -0
  34. package/dist/framing/line-delimited.js.map +1 -0
  35. package/dist/framing/types.d.ts +35 -0
  36. package/dist/framing/types.d.ts.map +1 -0
  37. package/dist/framing/types.js +2 -0
  38. package/dist/framing/types.js.map +1 -0
  39. package/dist/index.d.ts +24 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +26 -0
  42. package/dist/index.js.map +1 -0
  43. package/dist/process/handle.d.ts +64 -0
  44. package/dist/process/handle.d.ts.map +1 -0
  45. package/dist/process/handle.js +107 -0
  46. package/dist/process/handle.js.map +1 -0
  47. package/dist/process/index.d.ts +37 -0
  48. package/dist/process/index.d.ts.map +1 -0
  49. package/dist/process/index.js +37 -0
  50. package/dist/process/index.js.map +1 -0
  51. package/dist/process/manager.d.ts +58 -0
  52. package/dist/process/manager.d.ts.map +1 -0
  53. package/dist/process/manager.js +360 -0
  54. package/dist/process/manager.js.map +1 -0
  55. package/dist/process/types.d.ts +322 -0
  56. package/dist/process/types.d.ts.map +1 -0
  57. package/dist/process/types.js +2 -0
  58. package/dist/process/types.js.map +1 -0
  59. package/dist/protocol/index.d.ts +4 -0
  60. package/dist/protocol/index.d.ts.map +1 -0
  61. package/dist/protocol/index.js +6 -0
  62. package/dist/protocol/index.js.map +1 -0
  63. package/dist/protocol/jsonrpc.d.ts +146 -0
  64. package/dist/protocol/jsonrpc.d.ts.map +1 -0
  65. package/dist/protocol/jsonrpc.js +288 -0
  66. package/dist/protocol/jsonrpc.js.map +1 -0
  67. package/dist/protocol/simple.d.ts +139 -0
  68. package/dist/protocol/simple.d.ts.map +1 -0
  69. package/dist/protocol/simple.js +297 -0
  70. package/dist/protocol/simple.js.map +1 -0
  71. package/dist/protocol/types.d.ts +117 -0
  72. package/dist/protocol/types.d.ts.map +1 -0
  73. package/dist/protocol/types.js +2 -0
  74. package/dist/protocol/types.js.map +1 -0
  75. package/dist/serialization/index.d.ts +5 -0
  76. package/dist/serialization/index.d.ts.map +1 -0
  77. package/dist/serialization/index.js +5 -0
  78. package/dist/serialization/index.js.map +1 -0
  79. package/dist/serialization/json.d.ts +66 -0
  80. package/dist/serialization/json.d.ts.map +1 -0
  81. package/dist/serialization/json.js +66 -0
  82. package/dist/serialization/json.js.map +1 -0
  83. package/dist/serialization/raw.d.ts +38 -0
  84. package/dist/serialization/raw.d.ts.map +1 -0
  85. package/dist/serialization/raw.js +41 -0
  86. package/dist/serialization/raw.js.map +1 -0
  87. package/dist/serialization/registry.d.ts +91 -0
  88. package/dist/serialization/registry.d.ts.map +1 -0
  89. package/dist/serialization/registry.js +119 -0
  90. package/dist/serialization/registry.js.map +1 -0
  91. package/dist/serialization/types.d.ts +27 -0
  92. package/dist/serialization/types.d.ts.map +1 -0
  93. package/dist/serialization/types.js +2 -0
  94. package/dist/serialization/types.js.map +1 -0
  95. package/dist/transport/factory.d.ts +139 -0
  96. package/dist/transport/factory.d.ts.map +1 -0
  97. package/dist/transport/factory.js +162 -0
  98. package/dist/transport/factory.js.map +1 -0
  99. package/dist/transport/index.d.ts +6 -0
  100. package/dist/transport/index.d.ts.map +1 -0
  101. package/dist/transport/index.js +9 -0
  102. package/dist/transport/index.js.map +1 -0
  103. package/dist/transport/socket-server.d.ts +48 -0
  104. package/dist/transport/socket-server.d.ts.map +1 -0
  105. package/dist/transport/socket-server.js +215 -0
  106. package/dist/transport/socket-server.js.map +1 -0
  107. package/dist/transport/socket-transport.d.ts +67 -0
  108. package/dist/transport/socket-transport.d.ts.map +1 -0
  109. package/dist/transport/socket-transport.js +193 -0
  110. package/dist/transport/socket-transport.js.map +1 -0
  111. package/dist/transport/stdio-transport.d.ts +94 -0
  112. package/dist/transport/stdio-transport.d.ts.map +1 -0
  113. package/dist/transport/stdio-transport.js +234 -0
  114. package/dist/transport/stdio-transport.js.map +1 -0
  115. package/dist/transport/types.d.ts +131 -0
  116. package/dist/transport/types.d.ts.map +1 -0
  117. package/dist/transport/types.js +2 -0
  118. package/dist/transport/types.js.map +1 -0
  119. package/dist/utils/assert.d.ts +16 -0
  120. package/dist/utils/assert.d.ts.map +1 -0
  121. package/dist/utils/assert.js +31 -0
  122. package/dist/utils/assert.js.map +1 -0
  123. package/dist/utils/disposables.d.ts +38 -0
  124. package/dist/utils/disposables.d.ts.map +1 -0
  125. package/dist/utils/disposables.js +59 -0
  126. package/dist/utils/disposables.js.map +1 -0
  127. package/dist/utils/errors.d.ts +43 -0
  128. package/dist/utils/errors.d.ts.map +1 -0
  129. package/dist/utils/errors.js +69 -0
  130. package/dist/utils/errors.js.map +1 -0
  131. package/dist/utils/events.d.ts +58 -0
  132. package/dist/utils/events.d.ts.map +1 -0
  133. package/dist/utils/events.js +95 -0
  134. package/dist/utils/events.js.map +1 -0
  135. package/dist/utils/index.d.ts +8 -0
  136. package/dist/utils/index.d.ts.map +1 -0
  137. package/dist/utils/index.js +8 -0
  138. package/dist/utils/index.js.map +1 -0
  139. package/dist/utils/pipe-path.d.ts +48 -0
  140. package/dist/utils/pipe-path.d.ts.map +1 -0
  141. package/dist/utils/pipe-path.js +89 -0
  142. package/dist/utils/pipe-path.js.map +1 -0
  143. package/dist/utils/platform.d.ts +16 -0
  144. package/dist/utils/platform.d.ts.map +1 -0
  145. package/dist/utils/platform.js +22 -0
  146. package/dist/utils/platform.js.map +1 -0
  147. package/dist/utils/time.d.ts +38 -0
  148. package/dist/utils/time.d.ts.map +1 -0
  149. package/dist/utils/time.js +55 -0
  150. package/dist/utils/time.js.map +1 -0
  151. package/package.json +85 -0
@@ -0,0 +1,476 @@
1
+ import { EventEmitter } from "../utils/events.js";
2
+ import { ProtocolError, toError, SerializationError } from "../utils/errors.js";
3
+ import { createTimeoutSignal } from "../utils/time.js";
4
+ /**
5
+ * JSON-RPC response accessor implementation.
6
+ */
7
+ export class JsonRpcResponseAccessor {
8
+ getResponseId(message) {
9
+ if (typeof message === "object" &&
10
+ message !== null &&
11
+ "id" in message &&
12
+ (typeof message.id === "string" || typeof message.id === "number")) {
13
+ return message.id;
14
+ }
15
+ return undefined;
16
+ }
17
+ isErrorResponse(message) {
18
+ return typeof message === "object" && message !== null && "error" in message;
19
+ }
20
+ getResult(message) {
21
+ if (typeof message === "object" && message !== null && "result" in message) {
22
+ return message.result;
23
+ }
24
+ return undefined;
25
+ }
26
+ getError(message) {
27
+ if (typeof message === "object" && message !== null && "error" in message) {
28
+ return message.error;
29
+ }
30
+ return undefined;
31
+ }
32
+ }
33
+ /**
34
+ * Simple protocol response accessor implementation.
35
+ */
36
+ export class SimpleResponseAccessor {
37
+ getResponseId(message) {
38
+ if (typeof message === "object" &&
39
+ message !== null &&
40
+ "type" in message &&
41
+ message.type === "response" &&
42
+ "id" in message &&
43
+ (typeof message.id === "string" || typeof message.id === "number")) {
44
+ return message.id;
45
+ }
46
+ return undefined;
47
+ }
48
+ isErrorResponse(message) {
49
+ return typeof message === "object" && message !== null && "error" in message;
50
+ }
51
+ getResult(message) {
52
+ if (typeof message === "object" && message !== null && "result" in message) {
53
+ return message.result;
54
+ }
55
+ return undefined;
56
+ }
57
+ getError(message) {
58
+ if (typeof message === "object" && message !== null && "error" in message) {
59
+ return message.error;
60
+ }
61
+ return undefined;
62
+ }
63
+ }
64
+ /**
65
+ * Request channel implementation.
66
+ * Combines Transport + Framing + Serialization + Protocol layers
67
+ * to provide high-level request/response and notification patterns.
68
+ *
69
+ * @template TReq - Request message type (wire format)
70
+ * @template TRes - Response message type (wire format)
71
+ * @template TNotif - Notification message type (wire format)
72
+ */
73
+ export class RequestChannel {
74
+ transport;
75
+ framing;
76
+ serialization;
77
+ protocol;
78
+ defaultTimeout;
79
+ responseAccessor;
80
+ middleware;
81
+ maxInboundFrames;
82
+ events = new EventEmitter();
83
+ pendingRequests = new Map();
84
+ requestHandlers = [];
85
+ notificationHandlers = [];
86
+ transportDataUnsubscribe;
87
+ transportErrorUnsubscribe;
88
+ _isConnected = false;
89
+ inboundFrameCount = 0;
90
+ constructor(options) {
91
+ this.transport = options.transport;
92
+ this.framing = options.framing;
93
+ this.serialization = options.serialization;
94
+ this.protocol = options.protocol;
95
+ this.defaultTimeout = options.timeout !== undefined ? options.timeout : 30000;
96
+ this.middleware = options.middleware !== undefined ? options.middleware : [];
97
+ this.maxInboundFrames = options.maxInboundFrames !== undefined ? options.maxInboundFrames : undefined;
98
+ // Auto-detect response accessor if not provided
99
+ this.responseAccessor =
100
+ options.responseAccessor !== undefined
101
+ ? options.responseAccessor
102
+ : this.createDefaultAccessor();
103
+ }
104
+ get isConnected() {
105
+ return this._isConnected;
106
+ }
107
+ /**
108
+ * Starts the channel (connects transport and begins message processing).
109
+ */
110
+ async start() {
111
+ if (this._isConnected) {
112
+ return;
113
+ }
114
+ // Connect transport if not already connected (e.g., server-accepted connections)
115
+ if (this.transport.state !== "connected") {
116
+ await this.transport.connect();
117
+ }
118
+ // Subscribe to transport events
119
+ this.transportDataUnsubscribe = this.transport.onData((chunk) => {
120
+ this.handleChunk(chunk).catch((error) => {
121
+ this.emitError(toError(error));
122
+ });
123
+ });
124
+ this.transportErrorUnsubscribe = this.transport.on("error", (error) => {
125
+ this.emitError(error);
126
+ });
127
+ this._isConnected = true;
128
+ this.events.emit("start", undefined);
129
+ }
130
+ /**
131
+ * Closes the channel gracefully.
132
+ */
133
+ async close() {
134
+ if (!this._isConnected) {
135
+ return;
136
+ }
137
+ this._isConnected = false;
138
+ // Unsubscribe from transport
139
+ if (this.transportDataUnsubscribe !== undefined) {
140
+ this.transportDataUnsubscribe();
141
+ this.transportDataUnsubscribe = undefined;
142
+ }
143
+ if (this.transportErrorUnsubscribe !== undefined) {
144
+ this.transportErrorUnsubscribe();
145
+ this.transportErrorUnsubscribe = undefined;
146
+ }
147
+ // Reject all pending requests
148
+ const channelClosedError = new Error("Channel closed");
149
+ for (const pending of this.pendingRequests.values()) {
150
+ pending.timeoutSignal.cancel();
151
+ pending.reject(channelClosedError);
152
+ }
153
+ this.pendingRequests.clear();
154
+ // Reset framing state
155
+ this.framing.reset();
156
+ // Disconnect transport
157
+ await this.transport.disconnect();
158
+ this.events.emit("close", undefined);
159
+ }
160
+ /**
161
+ * Sends a request and waits for response.
162
+ */
163
+ async request(method, params, timeout) {
164
+ if (!this._isConnected) {
165
+ throw new Error("Channel is not connected");
166
+ }
167
+ // Generate request ID and create request message
168
+ const request = this.protocol.createRequest(method, params);
169
+ const id = this.extractRequestId(request);
170
+ if (id === undefined) {
171
+ throw new ProtocolError("Failed to extract request ID from created request");
172
+ }
173
+ // Call middleware
174
+ await this.runMiddlewareHook("onOutgoingRequest", request);
175
+ // Setup pending request promise
176
+ const resultPromise = new Promise((resolve, reject) => {
177
+ const effectiveTimeout = timeout ?? this.defaultTimeout;
178
+ const timeoutSignal = createTimeoutSignal(effectiveTimeout);
179
+ // Store pending request
180
+ this.pendingRequests.set(id, {
181
+ resolve,
182
+ reject,
183
+ timeoutSignal,
184
+ });
185
+ // Race between response and timeout
186
+ timeoutSignal.promise.catch((error) => {
187
+ // Timeout occurred
188
+ const pending = this.pendingRequests.get(id);
189
+ if (pending) {
190
+ this.pendingRequests.delete(id);
191
+ reject(error);
192
+ }
193
+ });
194
+ });
195
+ // Serialize and frame
196
+ const serialized = this.serialization.serialize(request);
197
+ const framed = this.framing.encode(serialized);
198
+ // Write to transport
199
+ try {
200
+ await this.transport.write(framed);
201
+ }
202
+ catch (error) {
203
+ // Write failed, clean up pending request
204
+ const pending = this.pendingRequests.get(id);
205
+ if (pending) {
206
+ pending.timeoutSignal.cancel();
207
+ this.pendingRequests.delete(id);
208
+ }
209
+ throw error;
210
+ }
211
+ return resultPromise;
212
+ }
213
+ /**
214
+ * Sends a notification (fire-and-forget).
215
+ */
216
+ async notify(method, params) {
217
+ if (!this._isConnected) {
218
+ throw new Error("Channel is not connected");
219
+ }
220
+ // Create notification message
221
+ const notification = this.protocol.createNotification(method, params);
222
+ // Call middleware
223
+ await this.runMiddlewareHook("onOutgoingRequest", notification);
224
+ // Serialize and frame
225
+ const serialized = this.serialization.serialize(notification);
226
+ const framed = this.framing.encode(serialized);
227
+ // Write to transport
228
+ await this.transport.write(framed);
229
+ }
230
+ /**
231
+ * Registers handler for incoming requests.
232
+ */
233
+ onRequest(handler) {
234
+ this.requestHandlers.push(handler);
235
+ return () => {
236
+ const index = this.requestHandlers.indexOf(handler);
237
+ if (index !== -1) {
238
+ this.requestHandlers.splice(index, 1);
239
+ }
240
+ };
241
+ }
242
+ /**
243
+ * Registers handler for incoming notifications.
244
+ */
245
+ onNotification(handler) {
246
+ this.notificationHandlers.push(handler);
247
+ return () => {
248
+ const index = this.notificationHandlers.indexOf(handler);
249
+ if (index !== -1) {
250
+ this.notificationHandlers.splice(index, 1);
251
+ }
252
+ };
253
+ }
254
+ /**
255
+ * Subscribes to channel events.
256
+ */
257
+ on(event, handler) {
258
+ return this.events.on(event, handler);
259
+ }
260
+ /**
261
+ * Handles incoming chunk from transport.
262
+ */
263
+ async handleChunk(chunk) {
264
+ let frames;
265
+ try {
266
+ frames = this.framing.decode(chunk);
267
+ }
268
+ catch (error) {
269
+ this.emitError(toError(error));
270
+ return;
271
+ }
272
+ // Check max inbound frames limit
273
+ if (this.maxInboundFrames !== undefined) {
274
+ this.inboundFrameCount += frames.length;
275
+ if (this.inboundFrameCount > this.maxInboundFrames) {
276
+ this.emitError(new Error(`Exceeded max inbound frames: ${this.maxInboundFrames}`));
277
+ // Don't process these frames, but don't crash the channel either
278
+ this.inboundFrameCount -= frames.length;
279
+ return;
280
+ }
281
+ }
282
+ // Process each frame
283
+ for (const frame of frames) {
284
+ try {
285
+ await this.processFrame(frame);
286
+ }
287
+ catch (error) {
288
+ // Emit error but continue processing other frames
289
+ this.emitError(toError(error));
290
+ }
291
+ }
292
+ // Reset counter after processing batch
293
+ if (this.maxInboundFrames !== undefined) {
294
+ this.inboundFrameCount = 0;
295
+ }
296
+ }
297
+ /**
298
+ * Processes a single frame.
299
+ */
300
+ async processFrame(frame) {
301
+ // Deserialize
302
+ let obj;
303
+ try {
304
+ obj = this.serialization.deserialize(frame);
305
+ }
306
+ catch (error) {
307
+ throw new SerializationError("Failed to deserialize frame", error);
308
+ }
309
+ // Parse message
310
+ const parsed = this.protocol.parseMessage(obj);
311
+ if (parsed.kind === "invalid") {
312
+ await this.runMiddlewareHook("onError", new ProtocolError(parsed.error.message));
313
+ this.emitError(new ProtocolError(`Invalid message: ${parsed.error.message}`));
314
+ return;
315
+ }
316
+ if (this.protocol.isResponse(parsed)) {
317
+ await this.handleResponse(parsed.message);
318
+ }
319
+ else if (this.protocol.isRequest(parsed)) {
320
+ await this.handleRequest(parsed.message);
321
+ }
322
+ else if (this.protocol.isNotification(parsed)) {
323
+ await this.handleNotification(parsed.message);
324
+ }
325
+ }
326
+ /**
327
+ * Handles incoming response message.
328
+ */
329
+ async handleResponse(response) {
330
+ await this.runMiddlewareHook("onIncomingResponse", response);
331
+ const id = this.responseAccessor.getResponseId(response);
332
+ if (id === undefined) {
333
+ this.emitError(new ProtocolError("Response missing id"));
334
+ return;
335
+ }
336
+ const pending = this.pendingRequests.get(id);
337
+ if (!pending) {
338
+ // Unsolicited response, ignore
339
+ return;
340
+ }
341
+ // Remove from pending
342
+ this.pendingRequests.delete(id);
343
+ pending.timeoutSignal.cancel();
344
+ // Check if error response
345
+ if (this.responseAccessor.isErrorResponse(response)) {
346
+ const error = this.responseAccessor.getError(response);
347
+ pending.reject(new ProtocolError("Request failed", error));
348
+ }
349
+ else {
350
+ const result = this.responseAccessor.getResult(response);
351
+ pending.resolve(result);
352
+ }
353
+ }
354
+ /**
355
+ * Handles incoming request message.
356
+ */
357
+ async handleRequest(request) {
358
+ await this.runMiddlewareHook("onIncomingRequest", request);
359
+ // Extract request ID (protocol-specific)
360
+ // We need a way to get the ID from the request message
361
+ // This is also protocol-specific, so we need a RequestAccessor similar to ResponseAccessor
362
+ // For now, let's assume the message has an `id` field (common for both jsonrpc and simple)
363
+ const id = this.extractRequestId(request);
364
+ if (id === undefined) {
365
+ this.emitError(new ProtocolError("Request missing id"));
366
+ return;
367
+ }
368
+ // Call all request handlers (FIFO order)
369
+ // Note: Multiple handlers is unusual, but supported per spec
370
+ // Typically, only one handler should be registered
371
+ if (this.requestHandlers.length === 0) {
372
+ // No handler registered, send error response
373
+ const errorResponse = this.protocol.createErrorResponse(id, {
374
+ code: -32601,
375
+ message: "No request handler registered",
376
+ });
377
+ await this.sendResponse(errorResponse);
378
+ return;
379
+ }
380
+ try {
381
+ // Call first handler (or could call all and use last result)
382
+ const handler = this.requestHandlers[0];
383
+ if (handler === undefined) {
384
+ throw new Error("No handler available");
385
+ }
386
+ const result = await handler(request);
387
+ // Create success response
388
+ const response = this.protocol.createResponse(id, result);
389
+ await this.sendResponse(response);
390
+ }
391
+ catch (error) {
392
+ // Create error response
393
+ const err = toError(error);
394
+ const errorResponse = this.protocol.createErrorResponse(id, {
395
+ code: -32603,
396
+ message: err.message,
397
+ data: err,
398
+ });
399
+ await this.sendResponse(errorResponse);
400
+ }
401
+ }
402
+ /**
403
+ * Handles incoming notification message.
404
+ */
405
+ async handleNotification(notification) {
406
+ // Call all notification handlers
407
+ for (const handler of this.notificationHandlers) {
408
+ try {
409
+ handler(notification);
410
+ }
411
+ catch (error) {
412
+ // Log error but don't stop processing other handlers
413
+ this.emitError(toError(error));
414
+ }
415
+ }
416
+ }
417
+ /**
418
+ * Sends a response message.
419
+ */
420
+ async sendResponse(response) {
421
+ await this.runMiddlewareHook("onOutgoingResponse", response);
422
+ const serialized = this.serialization.serialize(response);
423
+ const framed = this.framing.encode(serialized);
424
+ await this.transport.write(framed);
425
+ }
426
+ /**
427
+ * Extracts request ID from request message (protocol-specific).
428
+ */
429
+ extractRequestId(request) {
430
+ if (typeof request === "object" && request !== null && "id" in request) {
431
+ const id = request.id;
432
+ if (typeof id === "string" || typeof id === "number") {
433
+ return id;
434
+ }
435
+ }
436
+ return undefined;
437
+ }
438
+ /**
439
+ * Creates default response accessor based on protocol name.
440
+ */
441
+ createDefaultAccessor() {
442
+ const protocolName = this.protocol.name.toLowerCase();
443
+ if (protocolName === "jsonrpc") {
444
+ return new JsonRpcResponseAccessor();
445
+ }
446
+ if (protocolName === "simple") {
447
+ return new SimpleResponseAccessor();
448
+ }
449
+ throw new Error(`Unknown protocol '${this.protocol.name}'. Please provide a custom responseAccessor.`);
450
+ }
451
+ /**
452
+ * Runs middleware hook for all registered middleware.
453
+ */
454
+ async runMiddlewareHook(hook, data) {
455
+ for (const mw of this.middleware) {
456
+ const fn = mw[hook];
457
+ if (fn !== undefined) {
458
+ const typedFn = fn;
459
+ try {
460
+ await typedFn.call(mw, data);
461
+ }
462
+ catch (error) {
463
+ // Log but don't throw - middleware errors shouldn't break the channel
464
+ console.error(`Error in middleware hook '${hook}':`, error);
465
+ }
466
+ }
467
+ }
468
+ }
469
+ /**
470
+ * Emits error event.
471
+ */
472
+ emitError(error) {
473
+ this.events.emit("error", error);
474
+ }
475
+ }
476
+ //# sourceMappingURL=request-channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-channel.js","sourceRoot":"","sources":["../../src/channel/request-channel.ts"],"names":[],"mappings":"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"}