@libp2p/webrtc 2.0.3 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.min.js +16 -16
- package/dist/src/muxer.d.ts +19 -12
- package/dist/src/muxer.d.ts.map +1 -1
- package/dist/src/muxer.js +54 -69
- package/dist/src/muxer.js.map +1 -1
- package/dist/src/private-to-public/transport.d.ts +1 -1
- package/dist/src/private-to-public/transport.d.ts.map +1 -1
- package/dist/src/private-to-public/transport.js +2 -2
- package/dist/src/private-to-public/transport.js.map +1 -1
- package/dist/src/stream.d.ts +14 -140
- package/dist/src/stream.d.ts.map +1 -1
- package/dist/src/stream.js +110 -308
- package/dist/src/stream.js.map +1 -1
- package/package.json +11 -4
- package/src/muxer.ts +69 -66
- package/src/private-to-public/transport.ts +3 -2
- package/src/stream.ts +141 -377
package/dist/src/muxer.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { DataChannelOpts } from './stream.js';
|
|
2
2
|
import type { Stream } from '@libp2p/interface-connection';
|
|
3
3
|
import type { CounterGroup } from '@libp2p/interface-metrics';
|
|
4
4
|
import type { StreamMuxer, StreamMuxerFactory, StreamMuxerInit } from '@libp2p/interface-stream-muxer';
|
|
@@ -17,31 +17,39 @@ export interface DataChannelMuxerFactoryInit {
|
|
|
17
17
|
* Data channel options
|
|
18
18
|
*/
|
|
19
19
|
dataChannelOptions?: Partial<DataChannelOpts>;
|
|
20
|
+
/**
|
|
21
|
+
* The protocol to use
|
|
22
|
+
*/
|
|
23
|
+
protocol?: string;
|
|
20
24
|
}
|
|
21
25
|
export declare class DataChannelMuxerFactory implements StreamMuxerFactory {
|
|
22
|
-
readonly init: DataChannelMuxerFactoryInit;
|
|
23
26
|
readonly protocol: string;
|
|
24
27
|
/**
|
|
25
28
|
* WebRTC Peer Connection
|
|
26
29
|
*/
|
|
30
|
+
private readonly peerConnection;
|
|
27
31
|
private streamBuffer;
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
private readonly metrics?;
|
|
33
|
+
private readonly dataChannelOptions?;
|
|
34
|
+
constructor(init: DataChannelMuxerFactoryInit);
|
|
35
|
+
createStreamMuxer(init?: StreamMuxerInit): StreamMuxer;
|
|
36
|
+
}
|
|
37
|
+
export interface DataChannelMuxerInit extends DataChannelMuxerFactoryInit, StreamMuxerInit {
|
|
38
|
+
streams: Stream[];
|
|
30
39
|
}
|
|
31
40
|
/**
|
|
32
41
|
* A libp2p data channel stream muxer
|
|
33
42
|
*/
|
|
34
43
|
export declare class DataChannelMuxer implements StreamMuxer {
|
|
35
|
-
readonly
|
|
36
|
-
readonly protocol: string;
|
|
44
|
+
readonly init: DataChannelMuxerInit;
|
|
37
45
|
/**
|
|
38
46
|
* Array of streams in the data channel
|
|
39
47
|
*/
|
|
40
48
|
streams: Stream[];
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
49
|
+
protocol: string;
|
|
50
|
+
private readonly peerConnection;
|
|
51
|
+
private readonly dataChannelOptions?;
|
|
52
|
+
private readonly metrics?;
|
|
45
53
|
/**
|
|
46
54
|
* Close or abort all tracked streams and stop the muxer
|
|
47
55
|
*/
|
|
@@ -54,8 +62,7 @@ export declare class DataChannelMuxer implements StreamMuxer {
|
|
|
54
62
|
* The stream destination, a no-op as the transport natively supports multiplexing
|
|
55
63
|
*/
|
|
56
64
|
sink: Sink<Source<Uint8Array | Uint8ArrayList>, Promise<void>>;
|
|
57
|
-
constructor(
|
|
65
|
+
constructor(init: DataChannelMuxerInit);
|
|
58
66
|
newStream(): Stream;
|
|
59
|
-
private wrapStreamEnd;
|
|
60
67
|
}
|
|
61
68
|
//# sourceMappingURL=muxer.d.ts.map
|
package/dist/src/muxer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AACtG,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAIpD,MAAM,WAAW,2BAA2B;IAC1C;;OAEG;IACH,cAAc,EAAE,iBAAiB,CAAA;IAEjC;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;IAEtB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAE7C;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,qBAAa,uBAAwB,YAAW,kBAAkB;IAChE,SAAgB,QAAQ,EAAE,MAAM,CAAA;IAEhC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAA0B;gBAEjD,IAAI,EAAE,2BAA2B;IAoB9C,iBAAiB,CAAE,IAAI,CAAC,EAAE,eAAe,GAAG,WAAW;CAUxD;AAED,MAAM,WAAW,oBAAqB,SAAQ,2BAA2B,EAAE,eAAe;IACxF,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,WAAW;IA0BrC,QAAQ,CAAC,IAAI,EAAE,oBAAoB;IAzBhD;;OAEG;IACI,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAEvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAiB;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;IAEvC;;OAEG;IACH,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,KAAK,IAAI,CAAY;IAEpD;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAc;IAE9D;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,cAAc,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAU;gBAElD,IAAI,EAAE,oBAAoB;IAqChD,SAAS,IAAK,MAAM;CAkBrB"}
|
package/dist/src/muxer.js
CHANGED
|
@@ -1,49 +1,57 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createStream } from './stream.js';
|
|
2
2
|
import { nopSink, nopSource } from './util.js';
|
|
3
|
+
const PROTOCOL = '/webrtc';
|
|
3
4
|
export class DataChannelMuxerFactory {
|
|
4
|
-
init;
|
|
5
5
|
protocol;
|
|
6
6
|
/**
|
|
7
7
|
* WebRTC Peer Connection
|
|
8
8
|
*/
|
|
9
|
+
peerConnection;
|
|
9
10
|
streamBuffer = [];
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
metrics;
|
|
12
|
+
dataChannelOptions;
|
|
13
|
+
constructor(init) {
|
|
14
|
+
this.peerConnection = init.peerConnection;
|
|
15
|
+
this.metrics = init.metrics;
|
|
16
|
+
this.protocol = init.protocol ?? PROTOCOL;
|
|
17
|
+
this.dataChannelOptions = init.dataChannelOptions;
|
|
13
18
|
// store any datachannels opened before upgrade has been completed
|
|
14
|
-
this.
|
|
15
|
-
const stream =
|
|
19
|
+
this.peerConnection.ondatachannel = ({ channel }) => {
|
|
20
|
+
const stream = createStream({
|
|
16
21
|
channel,
|
|
17
|
-
|
|
18
|
-
direction: 'inbound',
|
|
19
|
-
timeline: { open: 0 }
|
|
20
|
-
},
|
|
22
|
+
direction: 'inbound',
|
|
21
23
|
dataChannelOptions: init.dataChannelOptions,
|
|
22
|
-
|
|
23
|
-
this.streamBuffer = this.streamBuffer.filter(s =>
|
|
24
|
+
onEnd: () => {
|
|
25
|
+
this.streamBuffer = this.streamBuffer.filter(s => s.id !== stream.id);
|
|
24
26
|
}
|
|
25
27
|
});
|
|
26
28
|
this.streamBuffer.push(stream);
|
|
27
29
|
};
|
|
28
30
|
}
|
|
29
31
|
createStreamMuxer(init) {
|
|
30
|
-
return new DataChannelMuxer(
|
|
32
|
+
return new DataChannelMuxer({
|
|
33
|
+
...init,
|
|
34
|
+
peerConnection: this.peerConnection,
|
|
35
|
+
dataChannelOptions: this.dataChannelOptions,
|
|
36
|
+
metrics: this.metrics,
|
|
37
|
+
streams: this.streamBuffer,
|
|
38
|
+
protocol: this.protocol
|
|
39
|
+
});
|
|
31
40
|
}
|
|
32
41
|
}
|
|
33
42
|
/**
|
|
34
43
|
* A libp2p data channel stream muxer
|
|
35
44
|
*/
|
|
36
45
|
export class DataChannelMuxer {
|
|
37
|
-
|
|
38
|
-
protocol;
|
|
46
|
+
init;
|
|
39
47
|
/**
|
|
40
48
|
* Array of streams in the data channel
|
|
41
49
|
*/
|
|
42
|
-
streams
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
50
|
+
streams;
|
|
51
|
+
protocol;
|
|
52
|
+
peerConnection;
|
|
53
|
+
dataChannelOptions;
|
|
54
|
+
metrics;
|
|
47
55
|
/**
|
|
48
56
|
* Close or abort all tracked streams and stop the muxer
|
|
49
57
|
*/
|
|
@@ -56,44 +64,35 @@ export class DataChannelMuxer {
|
|
|
56
64
|
* The stream destination, a no-op as the transport natively supports multiplexing
|
|
57
65
|
*/
|
|
58
66
|
sink = nopSink;
|
|
59
|
-
constructor(
|
|
60
|
-
this.dataChannelMuxer = dataChannelMuxer;
|
|
61
|
-
this.protocol = protocol;
|
|
62
|
-
/**
|
|
63
|
-
* Initialized stream muxer
|
|
64
|
-
*/
|
|
67
|
+
constructor(init) {
|
|
65
68
|
this.init = init;
|
|
69
|
+
this.streams = init.streams;
|
|
70
|
+
this.peerConnection = init.peerConnection;
|
|
71
|
+
this.protocol = init.protocol ?? PROTOCOL;
|
|
72
|
+
this.metrics = init.metrics;
|
|
66
73
|
/**
|
|
67
74
|
* Fired when a data channel has been added to the connection has been
|
|
68
75
|
* added by the remote peer.
|
|
69
76
|
*
|
|
70
77
|
* {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/datachannel_event}
|
|
71
78
|
*/
|
|
72
|
-
this.
|
|
73
|
-
const stream =
|
|
79
|
+
this.peerConnection.ondatachannel = ({ channel }) => {
|
|
80
|
+
const stream = createStream({
|
|
74
81
|
channel,
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
closeCb: this.wrapStreamEnd(init?.onIncomingStream)
|
|
82
|
+
direction: 'inbound',
|
|
83
|
+
dataChannelOptions: this.dataChannelOptions,
|
|
84
|
+
onEnd: () => {
|
|
85
|
+
this.streams = this.streams.filter(s => s.id !== stream.id);
|
|
86
|
+
this.metrics?.increment({ stream_end: true });
|
|
87
|
+
init?.onStreamEnd?.(stream);
|
|
88
|
+
}
|
|
83
89
|
});
|
|
84
90
|
this.streams.push(stream);
|
|
85
91
|
if ((init?.onIncomingStream) != null) {
|
|
86
|
-
this.
|
|
92
|
+
this.metrics?.increment({ incoming_stream: true });
|
|
87
93
|
init.onIncomingStream(stream);
|
|
88
94
|
}
|
|
89
95
|
};
|
|
90
|
-
// wrap open streams with the onStreamEnd callback
|
|
91
|
-
this.streams = streams
|
|
92
|
-
.filter(stream => stream.stat.timeline.close == null)
|
|
93
|
-
.map(stream => {
|
|
94
|
-
stream.closeCb = this.wrapStreamEnd(init?.onStreamEnd);
|
|
95
|
-
return stream;
|
|
96
|
-
});
|
|
97
96
|
const onIncomingStream = init?.onIncomingStream;
|
|
98
97
|
if (onIncomingStream != null) {
|
|
99
98
|
this.streams.forEach(s => { onIncomingStream(s); });
|
|
@@ -101,34 +100,20 @@ export class DataChannelMuxer {
|
|
|
101
100
|
}
|
|
102
101
|
newStream() {
|
|
103
102
|
// The spec says the label SHOULD be an empty string: https://github.com/libp2p/specs/blob/master/webrtc/README.md#rtcdatachannel-label
|
|
104
|
-
const channel = this.
|
|
105
|
-
const
|
|
106
|
-
this.dataChannelMuxer.metrics?.increment({ stream_end: true });
|
|
107
|
-
this.init?.onStreamEnd?.(stream);
|
|
108
|
-
};
|
|
109
|
-
const stream = new WebRTCStream({
|
|
103
|
+
const channel = this.peerConnection.createDataChannel('');
|
|
104
|
+
const stream = createStream({
|
|
110
105
|
channel,
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
closeCb: this.wrapStreamEnd(closeCb)
|
|
106
|
+
direction: 'outbound',
|
|
107
|
+
dataChannelOptions: this.dataChannelOptions,
|
|
108
|
+
onEnd: () => {
|
|
109
|
+
this.streams = this.streams.filter(s => s.id !== stream.id);
|
|
110
|
+
this.metrics?.increment({ stream_end: true });
|
|
111
|
+
this.init?.onStreamEnd?.(stream);
|
|
112
|
+
}
|
|
119
113
|
});
|
|
120
114
|
this.streams.push(stream);
|
|
121
|
-
this.
|
|
115
|
+
this.metrics?.increment({ outgoing_stream: true });
|
|
122
116
|
return stream;
|
|
123
117
|
}
|
|
124
|
-
wrapStreamEnd(onStreamEnd) {
|
|
125
|
-
const self = this;
|
|
126
|
-
return (_stream) => {
|
|
127
|
-
self.streams = self.streams.filter(s => !(_stream instanceof WebRTCStream && (_stream).eq(s)));
|
|
128
|
-
if (onStreamEnd != null) {
|
|
129
|
-
onStreamEnd(_stream);
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
118
|
}
|
|
134
119
|
//# sourceMappingURL=muxer.js.map
|
package/dist/src/muxer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type CreateListenerOptions, type Listener, symbol, type Transport } from '@libp2p/interface-transport';
|
|
2
|
-
import { type DataChannelOpts } from '../stream.js';
|
|
3
2
|
import type { WebRTCDialOptions } from './options.js';
|
|
3
|
+
import type { DataChannelOpts } from '../stream.js';
|
|
4
4
|
import type { Connection } from '@libp2p/interface-connection';
|
|
5
5
|
import type { CounterGroup, Metrics } from '@libp2p/interface-metrics';
|
|
6
6
|
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAc/G,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AASxD;;;;GAIG;AACH,eAAO,MAAM,WAAW,EAAE,MAAwC,CAAA;AAElE;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,MAAmC,CAAA;AAE/D;;GAEG;AACH,MAAM,WAAW,+BAA+B;IAC9C,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CACvC;AAED,qBAAa,qBAAsB,YAAW,SAAS;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiC;IAC5D,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;gBACnC,UAAU,EAAE,+BAA+B,EAAE,IAAI,GAAE,yBAA8B;IAa9F;;OAEG;IACG,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAM3E;;OAEG;IACH,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAIzD;;OAEG;IACH,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAI7C;;OAEG;IACH,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,2BAA0B;IAEvD;;OAEG;IACH,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAO;IAExB;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAwI/E;;;OAGG;IACH,OAAO,CAAC,qBAAqB;CAkB9B"}
|
|
@@ -9,7 +9,7 @@ import { fromString as uint8arrayFromString } from 'uint8arrays/from-string';
|
|
|
9
9
|
import { dataChannelError, inappropriateMultiaddr, unimplemented, invalidArgument } from '../error.js';
|
|
10
10
|
import { WebRTCMultiaddrConnection } from '../maconn.js';
|
|
11
11
|
import { DataChannelMuxerFactory } from '../muxer.js';
|
|
12
|
-
import {
|
|
12
|
+
import { createStream } from '../stream.js';
|
|
13
13
|
import { isFirefox } from '../util.js';
|
|
14
14
|
import * as sdp from './sdp.js';
|
|
15
15
|
import { genUfrag } from './util.js';
|
|
@@ -143,7 +143,7 @@ export class WebRTCDirectTransport {
|
|
|
143
143
|
// Since we use the default crypto interface and do not use a static key or early data,
|
|
144
144
|
// we pass in undefined for these parameters.
|
|
145
145
|
const noise = Noise({ prologueBytes: fingerprintsPrologue })();
|
|
146
|
-
const wrappedChannel =
|
|
146
|
+
const wrappedChannel = createStream({ channel: handshakeDataChannel, direction: 'inbound', dataChannelOptions: this.init.dataChannel });
|
|
147
147
|
const wrappedDuplex = {
|
|
148
148
|
...wrappedChannel,
|
|
149
149
|
sink: wrappedChannel.sink.bind(wrappedChannel),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAA6C,MAAM,EAAkB,MAAM,6BAA6B,CAAA;AAC/G,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,CAAC,MAAM,iBAAiB,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,KAAK,WAAW,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,UAAU,IAAI,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAC5E,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AACtG,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"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"}
|
package/dist/src/stream.d.ts
CHANGED
|
@@ -1,18 +1,11 @@
|
|
|
1
|
-
import { type
|
|
2
|
-
import {
|
|
3
|
-
import { Message } from './pb/message.js';
|
|
4
|
-
import type { Stream, StreamStat, Direction } from '@libp2p/interface-connection';
|
|
5
|
-
import type { Source } from 'it-stream-types';
|
|
6
|
-
/**
|
|
7
|
-
* Constructs a default StreamStat
|
|
8
|
-
*/
|
|
9
|
-
export declare function defaultStat(dir: Direction): StreamStat;
|
|
1
|
+
import { type AbstractStreamInit } from '@libp2p/interface-stream-muxer/stream';
|
|
2
|
+
import type { Direction, Stream } from '@libp2p/interface-connection';
|
|
10
3
|
export interface DataChannelOpts {
|
|
11
4
|
maxMessageSize: number;
|
|
12
5
|
maxBufferedAmount: number;
|
|
13
6
|
bufferedAmountLowEventTimeout: number;
|
|
14
7
|
}
|
|
15
|
-
interface
|
|
8
|
+
export interface WebRTCStreamInit extends AbstractStreamInit {
|
|
16
9
|
/**
|
|
17
10
|
* The network channel used for bidirectional peer-to-peer transfers of
|
|
18
11
|
* arbitrary data
|
|
@@ -20,142 +13,23 @@ interface StreamInitOpts {
|
|
|
20
13
|
* {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel}
|
|
21
14
|
*/
|
|
22
15
|
channel: RTCDataChannel;
|
|
23
|
-
/**
|
|
24
|
-
* User defined stream metadata
|
|
25
|
-
*/
|
|
26
|
-
metadata?: Record<string, any>;
|
|
27
|
-
/**
|
|
28
|
-
* Stats about this stream
|
|
29
|
-
*/
|
|
30
|
-
stat: StreamStat;
|
|
31
|
-
/**
|
|
32
|
-
* Callback to invoke when the stream is closed.
|
|
33
|
-
*/
|
|
34
|
-
closeCb?: (stream: WebRTCStream) => void;
|
|
35
|
-
/**
|
|
36
|
-
* Data channel options
|
|
37
|
-
*/
|
|
38
16
|
dataChannelOptions?: Partial<DataChannelOpts>;
|
|
39
17
|
}
|
|
40
|
-
interface
|
|
18
|
+
export interface WebRTCStreamOptions {
|
|
41
19
|
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*/
|
|
45
|
-
direction: 'inbound' | 'outbound';
|
|
46
|
-
/**
|
|
47
|
-
* Message flag from the protobufs
|
|
20
|
+
* The network channel used for bidirectional peer-to-peer transfers of
|
|
21
|
+
* arbitrary data
|
|
48
22
|
*
|
|
49
|
-
*
|
|
50
|
-
* 1 = STOP_SENDING
|
|
51
|
-
* 2 = RESET
|
|
52
|
-
*/
|
|
53
|
-
flag: Message.Flag;
|
|
54
|
-
}
|
|
55
|
-
export declare enum StreamStates {
|
|
56
|
-
OPEN = 0,
|
|
57
|
-
READ_CLOSED = 1,
|
|
58
|
-
WRITE_CLOSED = 2,
|
|
59
|
-
CLOSED = 3
|
|
60
|
-
}
|
|
61
|
-
declare class StreamState {
|
|
62
|
-
state: StreamStates;
|
|
63
|
-
isWriteClosed(): boolean;
|
|
64
|
-
transition({ direction, flag }: StreamStateInput): [StreamStates, StreamStates];
|
|
65
|
-
}
|
|
66
|
-
export declare class WebRTCStream implements Stream {
|
|
67
|
-
/**
|
|
68
|
-
* Unique identifier for a stream
|
|
69
|
-
*/
|
|
70
|
-
id: string;
|
|
71
|
-
/**
|
|
72
|
-
* Stats about this stream
|
|
73
|
-
*/
|
|
74
|
-
stat: StreamStat;
|
|
75
|
-
/**
|
|
76
|
-
* User defined stream metadata
|
|
77
|
-
*/
|
|
78
|
-
metadata: Record<string, any>;
|
|
79
|
-
/**
|
|
80
|
-
* The data channel used to send and receive data
|
|
81
|
-
*/
|
|
82
|
-
private readonly channel;
|
|
83
|
-
/**
|
|
84
|
-
* The current state of the stream
|
|
85
|
-
*/
|
|
86
|
-
streamState: StreamState;
|
|
87
|
-
/**
|
|
88
|
-
* Data channel options
|
|
89
|
-
*/
|
|
90
|
-
dataChannelOptions: DataChannelOpts;
|
|
91
|
-
/**
|
|
92
|
-
* Read unwrapped protobuf data from the underlying datachannel.
|
|
93
|
-
* _src is exposed to the user via the `source` getter to .
|
|
94
|
-
*/
|
|
95
|
-
private readonly _src;
|
|
96
|
-
/**
|
|
97
|
-
* push data from the underlying datachannel to the length prefix decoder
|
|
98
|
-
* and then the protobuf decoder.
|
|
99
|
-
*/
|
|
100
|
-
private readonly _innersrc;
|
|
101
|
-
/**
|
|
102
|
-
* Deferred promise that resolves when the underlying datachannel is in the
|
|
103
|
-
* open state.
|
|
104
|
-
*/
|
|
105
|
-
opened: DeferredPromise<void>;
|
|
106
|
-
/**
|
|
107
|
-
* sinkCreated is set to true once the sinkFunction is invoked
|
|
108
|
-
*/
|
|
109
|
-
_sinkCalled: boolean;
|
|
110
|
-
/**
|
|
111
|
-
* Triggers a generator which can be used to close the sink.
|
|
112
|
-
*/
|
|
113
|
-
closeWritePromise: DeferredPromise<void>;
|
|
114
|
-
/**
|
|
115
|
-
* Callback to invoke when the stream is closed.
|
|
116
|
-
*/
|
|
117
|
-
closeCb?: (stream: WebRTCStream) => void;
|
|
118
|
-
constructor(opts: StreamInitOpts);
|
|
119
|
-
set source(_src: AsyncGenerator<Uint8ArrayList, any, unknown>);
|
|
120
|
-
get source(): AsyncGenerator<Uint8ArrayList, any, unknown>;
|
|
121
|
-
/**
|
|
122
|
-
* Write data to the remote peer.
|
|
123
|
-
* It takes care of wrapping data in a protobuf and adding the length prefix.
|
|
124
|
-
*/
|
|
125
|
-
sink(src: Source<Uint8ArrayList | Uint8Array>): Promise<void>;
|
|
126
|
-
/**
|
|
127
|
-
* Closable sink implementation
|
|
128
|
-
*/
|
|
129
|
-
private _sink;
|
|
130
|
-
/**
|
|
131
|
-
* Handle incoming
|
|
132
|
-
*/
|
|
133
|
-
processIncomingProtobuf(buffer: Uint8Array): Uint8Array | undefined;
|
|
134
|
-
/**
|
|
135
|
-
* Close a stream for reading and writing
|
|
136
|
-
*/
|
|
137
|
-
close(): void;
|
|
138
|
-
/**
|
|
139
|
-
* Close a stream for reading only
|
|
140
|
-
*/
|
|
141
|
-
closeRead(): void;
|
|
142
|
-
/**
|
|
143
|
-
* Close a stream for writing only
|
|
144
|
-
*/
|
|
145
|
-
closeWrite(): void;
|
|
146
|
-
/**
|
|
147
|
-
* Call when a local error occurs, should close the stream for reading and writing
|
|
23
|
+
* {@link https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel}
|
|
148
24
|
*/
|
|
149
|
-
|
|
25
|
+
channel: RTCDataChannel;
|
|
150
26
|
/**
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
* @see this.closeWrite
|
|
27
|
+
* The stream direction
|
|
154
28
|
*/
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
29
|
+
direction: Direction;
|
|
30
|
+
dataChannelOptions?: Partial<DataChannelOpts>;
|
|
31
|
+
maxMsgSize?: number;
|
|
32
|
+
onEnd?: (err?: Error | undefined) => void;
|
|
159
33
|
}
|
|
160
|
-
export
|
|
34
|
+
export declare function createStream(options: WebRTCStreamOptions): Stream;
|
|
161
35
|
//# sourceMappingURL=stream.d.ts.map
|
package/dist/src/stream.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,uCAAuC,CAAA;AAQ/F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAIrE,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,CAAA;IACtB,iBAAiB,EAAE,MAAM,CAAA;IACzB,6BAA6B,EAAE,MAAM,CAAA;CACtC;AAED,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB;IAC1D;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB,kBAAkB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CAC9C;AAoND,MAAM,WAAW,mBAAmB;IAClC;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAA;IAEpB,kBAAkB,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAE7C,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,KAAK,IAAI,CAAA;CAC1C;AAED,wBAAgB,YAAY,CAAE,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAWlE"}
|