@procwire/transport 0.1.3 → 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 +17 -0
- package/dist/channel/builder.d.ts.map +1 -1
- package/dist/channel/builder.js +34 -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 +6 -1
- package/dist/channel/request-channel.d.ts.map +1 -1
- package/dist/channel/request-channel.js +138 -34
- package/dist/channel/request-channel.js.map +1 -1
- package/dist/channel/types.d.ts +129 -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/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 +132 -82
- 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 +1 -1
package/README.md
CHANGED
|
@@ -15,6 +15,7 @@ Build production-grade IPC channels with full control over every layer: transpor
|
|
|
15
15
|
- **Pluggable serialization** - JSON, MessagePack, Protobuf, Arrow, custom
|
|
16
16
|
- **Protocol agnostic** - JSON-RPC 2.0, custom protocols
|
|
17
17
|
- **ProcessManager** - Managed child processes with restart policies
|
|
18
|
+
- **Metrics hooks** - Optional instrumentation for requests, framing, and transports
|
|
18
19
|
|
|
19
20
|
## Installation
|
|
20
21
|
|
|
@@ -254,11 +255,13 @@ const framing = new LineDelimitedFraming({
|
|
|
254
255
|
```
|
|
255
256
|
|
|
256
257
|
**Best for**:
|
|
258
|
+
|
|
257
259
|
- Text protocols (JSON-RPC over stdio)
|
|
258
260
|
- Human-readable debugging
|
|
259
261
|
- Simple implementations
|
|
260
262
|
|
|
261
263
|
**Not suitable for**:
|
|
264
|
+
|
|
262
265
|
- Binary data with embedded newlines
|
|
263
266
|
- Very large messages (>1MB)
|
|
264
267
|
|
|
@@ -275,6 +278,7 @@ const framing = new LengthPrefixedFraming({
|
|
|
275
278
|
```
|
|
276
279
|
|
|
277
280
|
**Best for**:
|
|
281
|
+
|
|
278
282
|
- Binary protocols (MessagePack, Protobuf)
|
|
279
283
|
- Large messages
|
|
280
284
|
- High throughput
|
|
@@ -358,18 +362,21 @@ const protocol = new JsonRpcProtocol();
|
|
|
358
362
|
```
|
|
359
363
|
|
|
360
364
|
**Request**:
|
|
365
|
+
|
|
361
366
|
```json
|
|
362
|
-
{"jsonrpc":"2.0","id":1,"method":"add","params":{"a":2,"b":3}}
|
|
367
|
+
{ "jsonrpc": "2.0", "id": 1, "method": "add", "params": { "a": 2, "b": 3 } }
|
|
363
368
|
```
|
|
364
369
|
|
|
365
370
|
**Response**:
|
|
371
|
+
|
|
366
372
|
```json
|
|
367
|
-
{"jsonrpc":"2.0","id":1,"result":5}
|
|
373
|
+
{ "jsonrpc": "2.0", "id": 1, "result": 5 }
|
|
368
374
|
```
|
|
369
375
|
|
|
370
376
|
**Notification** (no response):
|
|
377
|
+
|
|
371
378
|
```json
|
|
372
|
-
{"jsonrpc":"2.0","method":"log","params":{"message":"Hello"}}
|
|
379
|
+
{ "jsonrpc": "2.0", "method": "log", "params": { "message": "Hello" } }
|
|
373
380
|
```
|
|
374
381
|
|
|
375
382
|
#### SimpleProtocol
|
|
@@ -383,8 +390,9 @@ const protocol = new SimpleProtocol();
|
|
|
383
390
|
```
|
|
384
391
|
|
|
385
392
|
**Message**:
|
|
393
|
+
|
|
386
394
|
```json
|
|
387
|
-
{"method":"add","params":{"a":2,"b":3}}
|
|
395
|
+
{ "method": "add", "params": { "a": 2, "b": 3 } }
|
|
388
396
|
```
|
|
389
397
|
|
|
390
398
|
#### Custom Protocols
|
|
@@ -566,6 +574,109 @@ if (isWindows()) {
|
|
|
566
574
|
const pid = getProcessId();
|
|
567
575
|
```
|
|
568
576
|
|
|
577
|
+
## Metrics
|
|
578
|
+
|
|
579
|
+
Metrics are fully opt-in. Provide a `MetricsCollector` implementation and pass it to
|
|
580
|
+
`ChannelBuilder`, `ProcessManager`, or transport options.
|
|
581
|
+
|
|
582
|
+
Collected events include:
|
|
583
|
+
|
|
584
|
+
- `channel.request` counter with `{ method }`
|
|
585
|
+
- `channel.request_latency_ms` histogram with `{ method, status }`
|
|
586
|
+
- `channel.error` counter with `{ type }`
|
|
587
|
+
- `framing.frames` counter and `framing.frame_size_bytes` histogram with `{ direction }`
|
|
588
|
+
- `transport.connect` and `transport.disconnect` counters with `{ transport }`
|
|
589
|
+
- `transport.error` counter with `{ transport, type }`
|
|
590
|
+
|
|
591
|
+
### Basic wiring
|
|
592
|
+
|
|
593
|
+
```typescript
|
|
594
|
+
import { ChannelBuilder, ProcessManager, type MetricsCollector } from "@procwire/transport";
|
|
595
|
+
|
|
596
|
+
const metrics: MetricsCollector = {
|
|
597
|
+
incrementCounter(name, value = 1, tags) {
|
|
598
|
+
console.log("counter", name, value, tags);
|
|
599
|
+
},
|
|
600
|
+
recordGauge(name, value, tags) {
|
|
601
|
+
console.log("gauge", name, value, tags);
|
|
602
|
+
},
|
|
603
|
+
recordHistogram(name, value, tags) {
|
|
604
|
+
console.log("histogram", name, value, tags);
|
|
605
|
+
},
|
|
606
|
+
};
|
|
607
|
+
|
|
608
|
+
const manager = new ProcessManager({ metrics });
|
|
609
|
+
|
|
610
|
+
const channel = new ChannelBuilder()
|
|
611
|
+
.withTransport(transport)
|
|
612
|
+
.withFraming(framing)
|
|
613
|
+
.withSerialization(serialization)
|
|
614
|
+
.withProtocol(protocol)
|
|
615
|
+
.withMetrics(metrics)
|
|
616
|
+
.build();
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
### Prometheus (prom-client)
|
|
620
|
+
|
|
621
|
+
```typescript
|
|
622
|
+
import { Counter, Histogram } from "prom-client";
|
|
623
|
+
import type { MetricsCollector } from "@procwire/transport";
|
|
624
|
+
|
|
625
|
+
const counters = new Map<string, Counter<string>>();
|
|
626
|
+
const histograms = new Map<string, Histogram<string>>();
|
|
627
|
+
|
|
628
|
+
const metrics: MetricsCollector = {
|
|
629
|
+
incrementCounter(name, value = 1, tags) {
|
|
630
|
+
if (!counters.has(name)) {
|
|
631
|
+
counters.set(
|
|
632
|
+
name,
|
|
633
|
+
new Counter({
|
|
634
|
+
name,
|
|
635
|
+
help: name,
|
|
636
|
+
labelNames: tags ? Object.keys(tags) : [],
|
|
637
|
+
}),
|
|
638
|
+
);
|
|
639
|
+
}
|
|
640
|
+
counters.get(name)!.inc(tags ?? {}, value);
|
|
641
|
+
},
|
|
642
|
+
recordGauge() {},
|
|
643
|
+
recordHistogram(name, value, tags) {
|
|
644
|
+
if (!histograms.has(name)) {
|
|
645
|
+
histograms.set(
|
|
646
|
+
name,
|
|
647
|
+
new Histogram({
|
|
648
|
+
name,
|
|
649
|
+
help: name,
|
|
650
|
+
labelNames: tags ? Object.keys(tags) : [],
|
|
651
|
+
}),
|
|
652
|
+
);
|
|
653
|
+
}
|
|
654
|
+
histograms.get(name)!.observe(tags ?? {}, value);
|
|
655
|
+
},
|
|
656
|
+
};
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
### StatsD (hot-shots)
|
|
660
|
+
|
|
661
|
+
```typescript
|
|
662
|
+
import type { MetricsCollector } from "@procwire/transport";
|
|
663
|
+
import { StatsD } from "hot-shots";
|
|
664
|
+
|
|
665
|
+
const client = new StatsD();
|
|
666
|
+
|
|
667
|
+
const metrics: MetricsCollector = {
|
|
668
|
+
incrementCounter(name, value = 1, tags) {
|
|
669
|
+
client.increment(name, value, tags);
|
|
670
|
+
},
|
|
671
|
+
recordGauge(name, value, tags) {
|
|
672
|
+
client.gauge(name, value, tags);
|
|
673
|
+
},
|
|
674
|
+
recordHistogram(name, value, tags) {
|
|
675
|
+
client.histogram(name, value, tags);
|
|
676
|
+
},
|
|
677
|
+
};
|
|
678
|
+
```
|
|
679
|
+
|
|
569
680
|
## Platform Notes
|
|
570
681
|
|
|
571
682
|
### Windows Named Pipes
|
|
@@ -576,6 +687,7 @@ const pid = getProcessId();
|
|
|
576
687
|
- **Cleanup**: Automatic on server close
|
|
577
688
|
|
|
578
689
|
Example:
|
|
690
|
+
|
|
579
691
|
```typescript
|
|
580
692
|
const path = "\\\\.\\pipe\\my-app-worker-1";
|
|
581
693
|
```
|
|
@@ -588,6 +700,7 @@ const path = "\\\\.\\pipe\\my-app-worker-1";
|
|
|
588
700
|
- **Cleanup**: Manual (remove socket file)
|
|
589
701
|
|
|
590
702
|
Example:
|
|
703
|
+
|
|
591
704
|
```typescript
|
|
592
705
|
const path = "/tmp/my-app-worker-1.sock";
|
|
593
706
|
|
|
@@ -618,12 +731,14 @@ const path = isWindows()
|
|
|
618
731
|
**Symptoms**: `channel.request()` never resolves.
|
|
619
732
|
|
|
620
733
|
**Common causes**:
|
|
734
|
+
|
|
621
735
|
1. **Framing mismatch**: Parent uses line-delimited, child uses length-prefixed
|
|
622
736
|
2. **Codec mismatch**: Parent uses JSON, child uses MessagePack
|
|
623
737
|
3. **Protocol mismatch**: Parent uses JSON-RPC, child uses custom protocol
|
|
624
738
|
4. **Child not responding**: Child crashed or deadlocked
|
|
625
739
|
|
|
626
740
|
**Solutions**:
|
|
741
|
+
|
|
627
742
|
- Verify both sides use identical framing/codec/protocol
|
|
628
743
|
- Check child process stderr for errors
|
|
629
744
|
- Add timeout to requests: `{ timeout: 5000 }`
|
|
@@ -634,11 +749,13 @@ const path = isWindows()
|
|
|
634
749
|
**Symptoms**: `SocketTransport.connect()` fails with ECONNREFUSED.
|
|
635
750
|
|
|
636
751
|
**Common causes**:
|
|
752
|
+
|
|
637
753
|
1. Server not listening yet
|
|
638
754
|
2. Wrong path
|
|
639
755
|
3. Stale socket file (Unix)
|
|
640
756
|
|
|
641
757
|
**Solutions**:
|
|
758
|
+
|
|
642
759
|
```typescript
|
|
643
760
|
// Increase connection timeout
|
|
644
761
|
const transport = new SocketTransport({
|
|
@@ -655,10 +772,12 @@ const server = new SocketServer({ unlinkOnListen: true });
|
|
|
655
772
|
**Symptoms**: Errors about message size or buffer limits.
|
|
656
773
|
|
|
657
774
|
**Common causes**:
|
|
775
|
+
|
|
658
776
|
- Message exceeds `maxMessageSize` (length-prefixed)
|
|
659
777
|
- Line exceeds `maxLineLength` (line-delimited)
|
|
660
778
|
|
|
661
779
|
**Solutions**:
|
|
780
|
+
|
|
662
781
|
```typescript
|
|
663
782
|
// Increase limits
|
|
664
783
|
const framing = new LengthPrefixedFraming({
|
|
@@ -677,11 +796,13 @@ for (const chunk of chunks) {
|
|
|
677
796
|
**Symptoms**: `ProcessManager.spawn()` fails or worker exits immediately.
|
|
678
797
|
|
|
679
798
|
**Common causes**:
|
|
799
|
+
|
|
680
800
|
1. Syntax error in worker code
|
|
681
801
|
2. Missing dependencies
|
|
682
802
|
3. Wrong executable path
|
|
683
803
|
|
|
684
804
|
**Solutions**:
|
|
805
|
+
|
|
685
806
|
- Test worker standalone: `node worker.js`
|
|
686
807
|
- Check stderr: `startupTimeout` should be long enough
|
|
687
808
|
- Verify executable path and args
|
|
@@ -691,11 +812,13 @@ for (const chunk of chunks) {
|
|
|
691
812
|
**Symptoms**: Memory usage grows over time.
|
|
692
813
|
|
|
693
814
|
**Common causes**:
|
|
815
|
+
|
|
694
816
|
- Unclosed channels
|
|
695
817
|
- Unremoved event listeners
|
|
696
818
|
- Buffered data not consumed
|
|
697
819
|
|
|
698
820
|
**Solutions**:
|
|
821
|
+
|
|
699
822
|
```typescript
|
|
700
823
|
// Always close channels
|
|
701
824
|
try {
|
|
@@ -812,6 +935,7 @@ MIT - See [LICENSE](../LICENSE) for details.
|
|
|
812
935
|
## Roadmap
|
|
813
936
|
|
|
814
937
|
### v0.1.0 (Current)
|
|
938
|
+
|
|
815
939
|
- Core transport, framing, serialization, protocol layers
|
|
816
940
|
- Stdio and pipe/socket transports
|
|
817
941
|
- JSON-RPC 2.0 and simple protocols
|
|
@@ -819,6 +943,7 @@ MIT - See [LICENSE](../LICENSE) for details.
|
|
|
819
943
|
- Optional codecs: MessagePack, Protobuf, Arrow
|
|
820
944
|
|
|
821
945
|
### v0.2.0 (Planned)
|
|
946
|
+
|
|
822
947
|
- HTTP/WebSocket transports
|
|
823
948
|
- Streaming support
|
|
824
949
|
- Compression layer (gzip, brotli)
|
|
@@ -826,6 +951,7 @@ MIT - See [LICENSE](../LICENSE) for details.
|
|
|
826
951
|
- Metrics and monitoring
|
|
827
952
|
|
|
828
953
|
### v1.0.0 (Future)
|
|
954
|
+
|
|
829
955
|
- Production-ready stable API
|
|
830
956
|
- Performance optimizations
|
|
831
957
|
- Comprehensive docs and examples
|
|
@@ -3,6 +3,7 @@ import type { FramingCodec } from "../framing/types.js";
|
|
|
3
3
|
import type { SerializationCodec } from "../serialization/types.js";
|
|
4
4
|
import type { Protocol } from "../protocol/types.js";
|
|
5
5
|
import type { ResponseAccessor, ChannelMiddleware, Channel } from "./types.js";
|
|
6
|
+
import type { MetricsCollector } from "../utils/metrics.js";
|
|
6
7
|
/**
|
|
7
8
|
* Fluent API builder for creating channels.
|
|
8
9
|
* Provides ergonomic configuration with validation.
|
|
@@ -26,8 +27,11 @@ export declare class ChannelBuilder<TReq = unknown, TRes = unknown, TNotif = unk
|
|
|
26
27
|
private timeout?;
|
|
27
28
|
private responseAccessor?;
|
|
28
29
|
private middleware;
|
|
30
|
+
private metrics?;
|
|
29
31
|
private maxInboundFrames?;
|
|
30
32
|
private bufferEarlyNotifications?;
|
|
33
|
+
private pendingRequestPoolSize?;
|
|
34
|
+
private middlewareErrorHandler?;
|
|
31
35
|
/**
|
|
32
36
|
* Sets the transport layer.
|
|
33
37
|
*/
|
|
@@ -56,6 +60,10 @@ export declare class ChannelBuilder<TReq = unknown, TRes = unknown, TNotif = unk
|
|
|
56
60
|
* Adds middleware to the channel.
|
|
57
61
|
*/
|
|
58
62
|
withMiddleware(middleware: ChannelMiddleware): this;
|
|
63
|
+
/**
|
|
64
|
+
* Sets the metrics collector for channel instrumentation.
|
|
65
|
+
*/
|
|
66
|
+
withMetrics(metrics: MetricsCollector): this;
|
|
59
67
|
/**
|
|
60
68
|
* Sets the maximum inbound frames limit.
|
|
61
69
|
*/
|
|
@@ -65,6 +73,15 @@ export declare class ChannelBuilder<TReq = unknown, TRes = unknown, TNotif = unk
|
|
|
65
73
|
* Notifications received before handlers are registered will be buffered.
|
|
66
74
|
*/
|
|
67
75
|
withBufferEarlyNotifications(size: number): this;
|
|
76
|
+
/**
|
|
77
|
+
* Sets the pending request pool size (0 disables pooling).
|
|
78
|
+
*/
|
|
79
|
+
withPendingRequestPoolSize(size: number): this;
|
|
80
|
+
/**
|
|
81
|
+
* Sets the middleware error handler.
|
|
82
|
+
* Called when a middleware hook throws an error.
|
|
83
|
+
*/
|
|
84
|
+
withMiddlewareErrorHandler(handler: (hook: string, error: Error) => void): this;
|
|
68
85
|
/**
|
|
69
86
|
* Builds and returns the configured channel.
|
|
70
87
|
* @throws {Error} if required configuration is missing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/channel/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,OAAO,EAAkB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/channel/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,OAAO,EAAkB,MAAM,YAAY,CAAC;AAE/F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D;;;;;;;;;;;;;;GAcG;AACH,qBAAa,cAAc,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO;IAC1E,OAAO,CAAC,SAAS,CAAC,CAAY;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAe;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,CAA+B;IAChD,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,gBAAgB,CAAC,CAAmB;IAC5C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,OAAO,CAAC,CAAmB;IACnC,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAClC,OAAO,CAAC,wBAAwB,CAAC,CAAS;IAC1C,OAAO,CAAC,sBAAsB,CAAC,CAAS;IACxC,OAAO,CAAC,sBAAsB,CAAC,CAAuC;IAEtE;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAKzC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAKxC;;OAEG;IACH,iBAAiB,CAAC,aAAa,EAAE,kBAAkB,GAAG,IAAI;IAK1D;;OAEG;IACH,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAK3E;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKpC;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI;IAKtD;;OAEG;IACH,cAAc,CAAC,UAAU,EAAE,iBAAiB,GAAG,IAAI;IAKnD;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAK5C;;OAEG;IACH,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAKvC;;;OAGG;IACH,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKhD;;OAEG;IACH,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAK9C;;;OAGG;IACH,0BAA0B,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,IAAI;IAK/E;;;OAGG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;CAgDrC"}
|
package/dist/channel/builder.js
CHANGED
|
@@ -22,8 +22,11 @@ export class ChannelBuilder {
|
|
|
22
22
|
timeout;
|
|
23
23
|
responseAccessor;
|
|
24
24
|
middleware = [];
|
|
25
|
+
metrics;
|
|
25
26
|
maxInboundFrames;
|
|
26
27
|
bufferEarlyNotifications;
|
|
28
|
+
pendingRequestPoolSize;
|
|
29
|
+
middlewareErrorHandler;
|
|
27
30
|
/**
|
|
28
31
|
* Sets the transport layer.
|
|
29
32
|
*/
|
|
@@ -73,6 +76,13 @@ export class ChannelBuilder {
|
|
|
73
76
|
this.middleware.push(middleware);
|
|
74
77
|
return this;
|
|
75
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* Sets the metrics collector for channel instrumentation.
|
|
81
|
+
*/
|
|
82
|
+
withMetrics(metrics) {
|
|
83
|
+
this.metrics = metrics;
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
76
86
|
/**
|
|
77
87
|
* Sets the maximum inbound frames limit.
|
|
78
88
|
*/
|
|
@@ -88,6 +98,21 @@ export class ChannelBuilder {
|
|
|
88
98
|
this.bufferEarlyNotifications = size;
|
|
89
99
|
return this;
|
|
90
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Sets the pending request pool size (0 disables pooling).
|
|
103
|
+
*/
|
|
104
|
+
withPendingRequestPoolSize(size) {
|
|
105
|
+
this.pendingRequestPoolSize = size;
|
|
106
|
+
return this;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Sets the middleware error handler.
|
|
110
|
+
* Called when a middleware hook throws an error.
|
|
111
|
+
*/
|
|
112
|
+
withMiddlewareErrorHandler(handler) {
|
|
113
|
+
this.middlewareErrorHandler = handler;
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
91
116
|
/**
|
|
92
117
|
* Builds and returns the configured channel.
|
|
93
118
|
* @throws {Error} if required configuration is missing
|
|
@@ -120,12 +145,21 @@ export class ChannelBuilder {
|
|
|
120
145
|
if (this.middleware.length > 0) {
|
|
121
146
|
options.middleware = this.middleware;
|
|
122
147
|
}
|
|
148
|
+
if (this.metrics !== undefined) {
|
|
149
|
+
options.metrics = this.metrics;
|
|
150
|
+
}
|
|
123
151
|
if (this.maxInboundFrames !== undefined) {
|
|
124
152
|
options.maxInboundFrames = this.maxInboundFrames;
|
|
125
153
|
}
|
|
126
154
|
if (this.bufferEarlyNotifications !== undefined) {
|
|
127
155
|
options.bufferEarlyNotifications = this.bufferEarlyNotifications;
|
|
128
156
|
}
|
|
157
|
+
if (this.pendingRequestPoolSize !== undefined) {
|
|
158
|
+
options.pendingRequestPoolSize = this.pendingRequestPoolSize;
|
|
159
|
+
}
|
|
160
|
+
if (this.middlewareErrorHandler !== undefined) {
|
|
161
|
+
options.onMiddlewareError = this.middlewareErrorHandler;
|
|
162
|
+
}
|
|
129
163
|
return new RequestChannel(options);
|
|
130
164
|
}
|
|
131
165
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/channel/builder.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/channel/builder.ts"],"names":[],"mappings":"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"}
|
package/dist/channel/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { Channel, ChannelEvents, ChannelOptions, ChannelServer, ChannelServerOptions, RequestHandler, NotificationHandler, ResponseAccessor, ChannelMiddleware, } from "./types.js";
|
|
2
|
-
export { RequestChannel, JsonRpcResponseAccessor, SimpleResponseAccessor } from "./request-channel.js";
|
|
2
|
+
export { RequestChannel, JsonRpcResponseAccessor, SimpleResponseAccessor, } from "./request-channel.js";
|
|
3
3
|
export { ChannelBuilder } from "./builder.js";
|
|
4
4
|
export { createStdioChannel, createPipeChannel } from "./quickstart.js";
|
|
5
5
|
export type { StdioChannelOptions, PipeChannelOptions } from "./quickstart.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channel/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,OAAO,EACP,aAAa,EACb,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/channel/index.ts"],"names":[],"mappings":"AACA,YAAY,EACV,OAAO,EACP,aAAa,EACb,cAAc,EACd,aAAa,EACb,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACxE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/channel/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// Implementations
|
|
2
|
-
export { RequestChannel, JsonRpcResponseAccessor, SimpleResponseAccessor } from "./request-channel.js";
|
|
2
|
+
export { RequestChannel, JsonRpcResponseAccessor, SimpleResponseAccessor, } from "./request-channel.js";
|
|
3
3
|
export { ChannelBuilder } from "./builder.js";
|
|
4
4
|
// Quick start helpers
|
|
5
5
|
export { createStdioChannel, createPipeChannel } from "./quickstart.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channel/index.ts"],"names":[],"mappings":"AAaA,kBAAkB;AAClB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/channel/index.ts"],"names":[],"mappings":"AAaA,kBAAkB;AAClB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,sBAAsB;AACtB,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickstart.d.ts","sourceRoot":"","sources":["../../src/channel/quickstart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAQ/E;;GAEG;AACH,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"quickstart.d.ts","sourceRoot":"","sources":["../../src/channel/quickstart.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAQ/E;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,qBAAqB,EAAE,gBAAgB,CAAC;IACxF;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC;IAC9E;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAsB,kBAAkB,CACtC,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAsBlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,OAAO,CAAC,CA4BlB"}
|
|
@@ -37,15 +37,18 @@ export async function createStdioChannel(executablePath, options) {
|
|
|
37
37
|
executablePath,
|
|
38
38
|
...options,
|
|
39
39
|
});
|
|
40
|
-
const
|
|
40
|
+
const builder = new ChannelBuilder()
|
|
41
41
|
.withTransport(transport)
|
|
42
42
|
.withFraming(new LineDelimitedFraming())
|
|
43
43
|
.withSerialization(new JsonCodec())
|
|
44
44
|
.withProtocol(new JsonRpcProtocol())
|
|
45
|
-
.withTimeout(options?.timeout ?? 30000)
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
45
|
+
.withTimeout(options?.timeout ?? 30000);
|
|
46
|
+
if (options?.metrics) {
|
|
47
|
+
builder.withMetrics(options.metrics);
|
|
48
|
+
}
|
|
49
|
+
const builtChannel = builder.build();
|
|
50
|
+
await builtChannel.start();
|
|
51
|
+
return builtChannel;
|
|
49
52
|
}
|
|
50
53
|
/**
|
|
51
54
|
* Creates a ready-to-use pipe/socket channel with sensible defaults.
|
|
@@ -91,14 +94,17 @@ export async function createPipeChannel(path, options) {
|
|
|
91
94
|
const framing = options?.useLineDelimited
|
|
92
95
|
? new LineDelimitedFraming()
|
|
93
96
|
: new LengthPrefixedFraming();
|
|
94
|
-
const
|
|
97
|
+
const builder = new ChannelBuilder()
|
|
95
98
|
.withTransport(transport)
|
|
96
99
|
.withFraming(framing)
|
|
97
100
|
.withSerialization(new JsonCodec())
|
|
98
101
|
.withProtocol(new JsonRpcProtocol())
|
|
99
|
-
.withTimeout(options?.timeout ?? 30000)
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
102
|
+
.withTimeout(options?.timeout ?? 30000);
|
|
103
|
+
if (options?.metrics) {
|
|
104
|
+
builder.withMetrics(options.metrics);
|
|
105
|
+
}
|
|
106
|
+
const builtChannel = builder.build();
|
|
107
|
+
await builtChannel.start();
|
|
108
|
+
return builtChannel;
|
|
103
109
|
}
|
|
104
110
|
//# sourceMappingURL=quickstart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../src/channel/quickstart.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"quickstart.js","sourceRoot":"","sources":["../../src/channel/quickstart.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA8B9C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,cAAsB,EACtB,OAA6B;IAE7B,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,CAAC;QAC7C,cAAc;QACd,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE;SACjC,aAAa,CAAC,SAAS,CAAC;SACxB,WAAW,CAAC,IAAI,oBAAoB,EAAE,CAAC;SACvC,iBAAiB,CAAC,IAAI,SAAS,EAAE,CAAC;SAClC,YAAY,CAAC,IAAI,eAAe,EAAE,CAAC;SACnC,WAAW,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;IAE1C,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAErC,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAE3B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAY,EACZ,OAA4B;IAE5B,MAAM,gBAAgB,GAA2B,EAAE,IAAI,EAAE,CAAC;IAC1D,IAAI,OAAO,EAAE,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC7C,gBAAgB,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IACjE,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAEtE,MAAM,OAAO,GAAG,OAAO,EAAE,gBAAgB;QACvC,CAAC,CAAC,IAAI,oBAAoB,EAAE;QAC5B,CAAC,CAAC,IAAI,qBAAqB,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,IAAI,cAAc,EAAE;SACjC,aAAa,CAAC,SAAS,CAAC;SACxB,WAAW,CAAC,OAAO,CAAC;SACpB,iBAAiB,CAAC,IAAI,SAAS,EAAE,CAAC;SAClC,YAAY,CAAC,IAAI,eAAe,EAAE,CAAC;SACnC,WAAW,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC,CAAC;IAE1C,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAErC,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC;IAE3B,OAAO,YAAY,CAAC;AACtB,CAAC"}
|
|
@@ -38,6 +38,9 @@ export declare class RequestChannel<TReq = unknown, TRes = unknown, TNotif = unk
|
|
|
38
38
|
private readonly middleware;
|
|
39
39
|
private readonly maxInboundFrames;
|
|
40
40
|
private readonly bufferEarlyNotifications;
|
|
41
|
+
private readonly metrics;
|
|
42
|
+
private readonly pendingPool;
|
|
43
|
+
private readonly onMiddlewareError;
|
|
41
44
|
private readonly events;
|
|
42
45
|
private readonly pendingRequests;
|
|
43
46
|
private readonly requestHandlers;
|
|
@@ -46,7 +49,6 @@ export declare class RequestChannel<TReq = unknown, TRes = unknown, TNotif = unk
|
|
|
46
49
|
private transportDataUnsubscribe;
|
|
47
50
|
private transportErrorUnsubscribe;
|
|
48
51
|
private _isConnected;
|
|
49
|
-
private inboundFrameCount;
|
|
50
52
|
constructor(options: ChannelOptions<TReq, TRes, TNotif>);
|
|
51
53
|
get isConnected(): boolean;
|
|
52
54
|
/**
|
|
@@ -115,6 +117,9 @@ export declare class RequestChannel<TReq = unknown, TRes = unknown, TNotif = unk
|
|
|
115
117
|
* Runs middleware hook for all registered middleware.
|
|
116
118
|
*/
|
|
117
119
|
private runMiddlewareHook;
|
|
120
|
+
private acquirePendingRequest;
|
|
121
|
+
private releasePendingRequest;
|
|
122
|
+
private recordRequestLatency;
|
|
118
123
|
/**
|
|
119
124
|
* Emits error event.
|
|
120
125
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-channel.d.ts","sourceRoot":"","sources":["../../src/channel/request-channel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAY,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACnF,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"request-channel.d.ts","sourceRoot":"","sources":["../../src/channel/request-channel.ts"],"names":[],"mappings":"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"}
|