@libp2p/webrtc 1.1.11 → 2.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.
- package/README.md +3 -3
- package/dist/index.min.js +21 -17
- package/dist/src/maconn.d.ts +9 -0
- package/dist/src/maconn.d.ts.map +1 -1
- package/dist/src/maconn.js +10 -0
- package/dist/src/maconn.js.map +1 -1
- package/dist/src/muxer.d.ts +12 -2
- package/dist/src/muxer.d.ts.map +1 -1
- package/dist/src/muxer.js +16 -4
- package/dist/src/muxer.js.map +1 -1
- package/dist/src/peer_transport/handler.d.ts +10 -2
- package/dist/src/peer_transport/handler.d.ts.map +1 -1
- package/dist/src/peer_transport/handler.js +14 -2
- package/dist/src/peer_transport/handler.js.map +1 -1
- package/dist/src/peer_transport/listener.d.ts +6 -7
- package/dist/src/peer_transport/listener.d.ts.map +1 -1
- package/dist/src/peer_transport/listener.js +26 -24
- package/dist/src/peer_transport/listener.js.map +1 -1
- package/dist/src/peer_transport/transport.d.ts +4 -6
- package/dist/src/peer_transport/transport.d.ts.map +1 -1
- package/dist/src/peer_transport/transport.js +21 -20
- package/dist/src/peer_transport/transport.js.map +1 -1
- package/dist/src/peer_transport/util.js +1 -1
- package/dist/src/peer_transport/util.js.map +1 -1
- package/dist/src/stream.js +1 -1
- package/dist/src/stream.js.map +1 -1
- package/dist/src/transport.d.ts +6 -3
- package/dist/src/transport.d.ts.map +1 -1
- package/dist/src/transport.js +22 -12
- package/dist/src/transport.js.map +1 -1
- package/package.json +15 -15
- package/src/maconn.ts +18 -1
- package/src/muxer.ts +23 -4
- package/src/peer_transport/handler.ts +23 -5
- package/src/peer_transport/listener.ts +39 -28
- package/src/peer_transport/transport.ts +29 -24
- package/src/peer_transport/util.ts +1 -1
- package/src/stream.ts +1 -1
- package/src/transport.ts +29 -13
package/dist/src/maconn.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { MultiaddrConnection, MultiaddrConnectionTimeline } from '@libp2p/interface-connection';
|
|
2
|
+
import type { CounterGroup } from '@libp2p/interface-metrics';
|
|
2
3
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
3
4
|
import type { Source, Sink } from 'it-stream-types';
|
|
4
5
|
interface WebRTCMultiaddrConnectionInit {
|
|
@@ -14,6 +15,10 @@ interface WebRTCMultiaddrConnectionInit {
|
|
|
14
15
|
* Holds the relevant events timestamps of the connection
|
|
15
16
|
*/
|
|
16
17
|
timeline: MultiaddrConnectionTimeline;
|
|
18
|
+
/**
|
|
19
|
+
* Optional metrics counter group for this connection
|
|
20
|
+
*/
|
|
21
|
+
metrics?: CounterGroup;
|
|
17
22
|
}
|
|
18
23
|
export declare class WebRTCMultiaddrConnection implements MultiaddrConnection {
|
|
19
24
|
/**
|
|
@@ -28,6 +33,10 @@ export declare class WebRTCMultiaddrConnection implements MultiaddrConnection {
|
|
|
28
33
|
* Holds the lifecycle times of the connection
|
|
29
34
|
*/
|
|
30
35
|
timeline: MultiaddrConnectionTimeline;
|
|
36
|
+
/**
|
|
37
|
+
* Optional metrics counter group for this connection
|
|
38
|
+
*/
|
|
39
|
+
metrics?: CounterGroup;
|
|
31
40
|
/**
|
|
32
41
|
* The stream source, a no-op as the transport natively supports multiplexing
|
|
33
42
|
*/
|
package/dist/src/maconn.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maconn.d.ts","sourceRoot":"","sources":["../../src/maconn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAA;AACpG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAInD,UAAU,6BAA6B;IACrC;;OAEG;IACH,cAAc,EAAE,iBAAiB,CAAA;IAEjC;;OAEG;IACH,UAAU,EAAE,SAAS,CAAA;IAErB;;OAEG;IACH,QAAQ,EAAE,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"maconn.d.ts","sourceRoot":"","sources":["../../src/maconn.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAA;AACpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAInD,UAAU,6BAA6B;IACrC;;OAEG;IACH,cAAc,EAAE,iBAAiB,CAAA;IAEjC;;OAEG;IACH,UAAU,EAAE,SAAS,CAAA;IAErB;;OAEG;IACH,QAAQ,EAAE,2BAA2B,CAAA;IAErC;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB;AAED,qBAAa,yBAA0B,YAAW,mBAAmB;IACnE;;OAEG;IACH,QAAQ,CAAC,cAAc,EAAE,iBAAiB,CAAA;IAE1C;;OAEG;IACH,UAAU,EAAE,SAAS,CAAA;IAErB;;OAEG;IACH,QAAQ,EAAE,2BAA2B,CAAA;IAErC;;OAEG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;IAEtB;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAC,CAAc;IAE9D;;OAEG;IACH,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAU;gBAE1C,IAAI,EAAE,6BAA6B;IAY1C,KAAK,CAAE,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CAUrD"}
|
package/dist/src/maconn.js
CHANGED
|
@@ -14,6 +14,10 @@ export class WebRTCMultiaddrConnection {
|
|
|
14
14
|
* Holds the lifecycle times of the connection
|
|
15
15
|
*/
|
|
16
16
|
timeline;
|
|
17
|
+
/**
|
|
18
|
+
* Optional metrics counter group for this connection
|
|
19
|
+
*/
|
|
20
|
+
metrics;
|
|
17
21
|
/**
|
|
18
22
|
* The stream source, a no-op as the transport natively supports multiplexing
|
|
19
23
|
*/
|
|
@@ -26,6 +30,11 @@ export class WebRTCMultiaddrConnection {
|
|
|
26
30
|
this.remoteAddr = init.remoteAddr;
|
|
27
31
|
this.timeline = init.timeline;
|
|
28
32
|
this.peerConnection = init.peerConnection;
|
|
33
|
+
this.peerConnection.onconnectionstatechange = () => {
|
|
34
|
+
if (this.peerConnection.connectionState === 'closed' || this.peerConnection.connectionState === 'disconnected' || this.peerConnection.connectionState === 'failed') {
|
|
35
|
+
this.timeline.close = Date.now();
|
|
36
|
+
}
|
|
37
|
+
};
|
|
29
38
|
}
|
|
30
39
|
async close(err) {
|
|
31
40
|
if (err !== undefined) {
|
|
@@ -34,6 +43,7 @@ export class WebRTCMultiaddrConnection {
|
|
|
34
43
|
log.trace('closing connection');
|
|
35
44
|
this.timeline.close = Date.now();
|
|
36
45
|
this.peerConnection.close();
|
|
46
|
+
this.metrics?.increment({ close: true });
|
|
37
47
|
}
|
|
38
48
|
}
|
|
39
49
|
//# sourceMappingURL=maconn.js.map
|
package/dist/src/maconn.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maconn.js","sourceRoot":"","sources":["../../src/maconn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"maconn.js","sourceRoot":"","sources":["../../src/maconn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAM9C,MAAM,GAAG,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAA;AAwB9C,MAAM,OAAO,yBAAyB;IACpC;;OAEG;IACM,cAAc,CAAmB;IAE1C;;OAEG;IACH,UAAU,CAAW;IAErB;;OAEG;IACH,QAAQ,CAA6B;IAErC;;OAEG;IACH,OAAO,CAAe;IAEtB;;OAEG;IACH,MAAM,GAA6C,SAAS,EAAE,CAAA;IAE9D;;OAEG;IACH,IAAI,GAA4C,OAAO,CAAA;IAEvD,YAAa,IAAmC;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;QAEzC,IAAI,CAAC,cAAc,CAAC,uBAAuB,GAAG,GAAG,EAAE;YACjD,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,QAAQ,EAAE;gBAClK,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;aACjC;QACH,CAAC,CAAA;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CAAE,GAAuB;QAClC,IAAI,GAAG,KAAK,SAAS,EAAE;YACrB,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;SAC3C;QACD,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;QAE/B,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAChC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAC3B,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,CAAC;CACF"}
|
package/dist/src/muxer.d.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import type { Stream } from '@libp2p/interface-connection';
|
|
2
|
+
import type { CounterGroup } from '@libp2p/interface-metrics';
|
|
2
3
|
import type { StreamMuxer, StreamMuxerFactory, StreamMuxerInit } from '@libp2p/interface-stream-muxer';
|
|
3
4
|
import type { Source, Sink } from 'it-stream-types';
|
|
4
5
|
import type { Uint8ArrayList } from 'uint8arraylist';
|
|
6
|
+
export interface DataChannelMuxerFactoryInit {
|
|
7
|
+
peerConnection: RTCPeerConnection;
|
|
8
|
+
metrics?: CounterGroup;
|
|
9
|
+
}
|
|
5
10
|
export declare class DataChannelMuxerFactory implements StreamMuxerFactory {
|
|
6
11
|
readonly protocol: string;
|
|
7
12
|
/**
|
|
@@ -9,7 +14,8 @@ export declare class DataChannelMuxerFactory implements StreamMuxerFactory {
|
|
|
9
14
|
*/
|
|
10
15
|
private readonly peerConnection;
|
|
11
16
|
private streamBuffer;
|
|
12
|
-
|
|
17
|
+
private readonly metrics?;
|
|
18
|
+
constructor(peerConnection: RTCPeerConnection, metrics?: CounterGroup, protocol?: string);
|
|
13
19
|
createStreamMuxer(init?: StreamMuxerInit | undefined): StreamMuxer;
|
|
14
20
|
}
|
|
15
21
|
/**
|
|
@@ -21,6 +27,10 @@ export declare class DataChannelMuxer implements StreamMuxer {
|
|
|
21
27
|
* WebRTC Peer Connection
|
|
22
28
|
*/
|
|
23
29
|
private readonly peerConnection;
|
|
30
|
+
/**
|
|
31
|
+
* Optional metrics for this data channel muxer
|
|
32
|
+
*/
|
|
33
|
+
private readonly metrics?;
|
|
24
34
|
/**
|
|
25
35
|
* Array of streams in the data channel
|
|
26
36
|
*/
|
|
@@ -41,7 +51,7 @@ export declare class DataChannelMuxer implements StreamMuxer {
|
|
|
41
51
|
* The stream destination, a no-op as the transport natively supports multiplexing
|
|
42
52
|
*/
|
|
43
53
|
sink: Sink<Source<Uint8Array | Uint8ArrayList>, Promise<void>>;
|
|
44
|
-
constructor(peerConnection: RTCPeerConnection, streams: Stream[], protocol?: string, init?: StreamMuxerInit);
|
|
54
|
+
constructor(peerConnection: RTCPeerConnection, streams: Stream[], protocol?: string, init?: StreamMuxerInit, metrics?: CounterGroup);
|
|
45
55
|
newStream(): Stream;
|
|
46
56
|
private wrapStreamEnd;
|
|
47
57
|
}
|
package/dist/src/muxer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAC1D,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;AAEpD,qBAAa,uBAAwB,YAAW,kBAAkB;
|
|
1
|
+
{"version":3,"file":"muxer.d.ts","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAEA,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;AAEpD,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,iBAAiB,CAAA;IACjC,OAAO,CAAC,EAAE,YAAY,CAAA;CACvB;AAED,qBAAa,uBAAwB,YAAW,kBAAkB;IAQQ,QAAQ,CAAC,QAAQ;IAPzF;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;gBAE1B,cAAc,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,YAAY,EAAW,QAAQ,SAAY;IAmBrG,iBAAiB,CAAE,IAAI,CAAC,EAAE,eAAe,GAAG,SAAS,GAAG,WAAW;CAGpE;AAED;;GAEG;AACH,qBAAa,gBAAiB,YAAW,WAAW;IAoCiB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAnC5F;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAElD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAc;IAEvC;;OAEG;IACH,OAAO,EAAE,MAAM,EAAE,CAAK;IAEtB;;OAEG;IACH,IAAI,CAAC,EAAE,eAAe,CAAA;IAEtB;;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;gBAE3D,cAAc,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,EAAE,EAAW,QAAQ,GAAE,MAAkB,EAAE,IAAI,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,EAAE,YAAY;IAiDxJ,SAAS,IAAK,MAAM;IAuBpB,OAAO,CAAC,aAAa;CAStB"}
|
package/dist/src/muxer.js
CHANGED
|
@@ -7,7 +7,8 @@ export class DataChannelMuxerFactory {
|
|
|
7
7
|
*/
|
|
8
8
|
peerConnection;
|
|
9
9
|
streamBuffer = [];
|
|
10
|
-
|
|
10
|
+
metrics;
|
|
11
|
+
constructor(peerConnection, metrics, protocol = '/webrtc') {
|
|
11
12
|
this.protocol = protocol;
|
|
12
13
|
this.peerConnection = peerConnection;
|
|
13
14
|
// store any datachannels opened before upgrade has been completed
|
|
@@ -24,9 +25,10 @@ export class DataChannelMuxerFactory {
|
|
|
24
25
|
});
|
|
25
26
|
this.streamBuffer.push(stream);
|
|
26
27
|
};
|
|
28
|
+
this.metrics = metrics;
|
|
27
29
|
}
|
|
28
30
|
createStreamMuxer(init) {
|
|
29
|
-
return new DataChannelMuxer(this.peerConnection, this.streamBuffer, this.protocol, init);
|
|
31
|
+
return new DataChannelMuxer(this.peerConnection, this.streamBuffer, this.protocol, init, this.metrics);
|
|
30
32
|
}
|
|
31
33
|
}
|
|
32
34
|
/**
|
|
@@ -38,6 +40,10 @@ export class DataChannelMuxer {
|
|
|
38
40
|
* WebRTC Peer Connection
|
|
39
41
|
*/
|
|
40
42
|
peerConnection;
|
|
43
|
+
/**
|
|
44
|
+
* Optional metrics for this data channel muxer
|
|
45
|
+
*/
|
|
46
|
+
metrics;
|
|
41
47
|
/**
|
|
42
48
|
* Array of streams in the data channel
|
|
43
49
|
*/
|
|
@@ -58,7 +64,7 @@ export class DataChannelMuxer {
|
|
|
58
64
|
* The stream destination, a no-op as the transport natively supports multiplexing
|
|
59
65
|
*/
|
|
60
66
|
sink = nopSink;
|
|
61
|
-
constructor(peerConnection, streams, protocol = '/webrtc', init) {
|
|
67
|
+
constructor(peerConnection, streams, protocol = '/webrtc', init, metrics) {
|
|
62
68
|
this.protocol = protocol;
|
|
63
69
|
/**
|
|
64
70
|
* Initialized stream muxer
|
|
@@ -87,6 +93,7 @@ export class DataChannelMuxer {
|
|
|
87
93
|
});
|
|
88
94
|
this.streams.push(stream);
|
|
89
95
|
if ((init?.onIncomingStream) != null) {
|
|
96
|
+
this.metrics?.increment({ incoming_stream: true });
|
|
90
97
|
init.onIncomingStream(stream);
|
|
91
98
|
}
|
|
92
99
|
};
|
|
@@ -105,6 +112,10 @@ export class DataChannelMuxer {
|
|
|
105
112
|
newStream() {
|
|
106
113
|
// The spec says the label SHOULD be an empty string: https://github.com/libp2p/specs/blob/master/webrtc/README.md#rtcdatachannel-label
|
|
107
114
|
const channel = this.peerConnection.createDataChannel('');
|
|
115
|
+
const closeCb = (stream) => {
|
|
116
|
+
this.metrics?.increment({ stream_end: true });
|
|
117
|
+
this.init?.onStreamEnd?.(stream);
|
|
118
|
+
};
|
|
108
119
|
const stream = new WebRTCStream({
|
|
109
120
|
channel,
|
|
110
121
|
stat: {
|
|
@@ -113,9 +124,10 @@ export class DataChannelMuxer {
|
|
|
113
124
|
open: 0
|
|
114
125
|
}
|
|
115
126
|
},
|
|
116
|
-
closeCb: this.wrapStreamEnd(
|
|
127
|
+
closeCb: this.wrapStreamEnd(closeCb)
|
|
117
128
|
});
|
|
118
129
|
this.streams.push(stream);
|
|
130
|
+
this.metrics?.increment({ outgoing_stream: true });
|
|
119
131
|
return stream;
|
|
120
132
|
}
|
|
121
133
|
wrapStreamEnd(onStreamEnd) {
|
package/dist/src/muxer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"muxer.js","sourceRoot":"","sources":["../../src/muxer.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,11 +4,19 @@ import type { StreamMuxerFactory } from '@libp2p/interface-stream-muxer';
|
|
|
4
4
|
export type IncomingStreamOpts = {
|
|
5
5
|
rtcConfiguration?: RTCConfiguration;
|
|
6
6
|
} & IncomingStreamData;
|
|
7
|
-
export declare function handleIncomingStream({ rtcConfiguration, stream: rawStream }: IncomingStreamOpts): Promise<
|
|
7
|
+
export declare function handleIncomingStream({ rtcConfiguration, stream: rawStream }: IncomingStreamOpts): Promise<{
|
|
8
|
+
pc: RTCPeerConnection;
|
|
9
|
+
muxerFactory: StreamMuxerFactory;
|
|
10
|
+
remoteAddress: string;
|
|
11
|
+
}>;
|
|
8
12
|
export interface ConnectOptions {
|
|
9
13
|
stream: Stream;
|
|
10
14
|
signal: AbortSignal;
|
|
11
15
|
rtcConfiguration?: RTCConfiguration;
|
|
12
16
|
}
|
|
13
|
-
export declare function initiateConnection({ rtcConfiguration, signal, stream: rawStream }: ConnectOptions): Promise<
|
|
17
|
+
export declare function initiateConnection({ rtcConfiguration, signal, stream: rawStream }: ConnectOptions): Promise<{
|
|
18
|
+
pc: RTCPeerConnection;
|
|
19
|
+
muxerFactory: StreamMuxerFactory;
|
|
20
|
+
remoteAddress: string;
|
|
21
|
+
}>;
|
|
14
22
|
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/peer_transport/handler.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAMxE,MAAM,MAAM,kBAAkB,GAAG;IAAE,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CAAE,GAAG,kBAAkB,CAAA;AAE7F,wBAAsB,oBAAoB,CAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/peer_transport/handler.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAMxE,MAAM,MAAM,kBAAkB,GAAG;IAAE,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CAAE,GAAG,kBAAkB,CAAA;AAE7F,wBAAsB,oBAAoB,CAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,kBAAkB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAiEpM;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,WAAW,CAAA;IACnB,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CACpC;AAED,wBAAsB,kBAAkB,CAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,kBAAkB,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAmDtM"}
|
|
@@ -56,7 +56,8 @@ export async function handleIncomingStream({ rtcConfiguration, stream: rawStream
|
|
|
56
56
|
answerSentPromise.resolve();
|
|
57
57
|
// wait until candidates are connected
|
|
58
58
|
await readCandidatesUntilConnected(connectedPromise, pc, stream);
|
|
59
|
-
|
|
59
|
+
const remoteAddress = parseRemoteAddress(pc.currentRemoteDescription?.sdp ?? '');
|
|
60
|
+
return { pc, muxerFactory, remoteAddress };
|
|
60
61
|
}
|
|
61
62
|
export async function initiateConnection({ rtcConfiguration, signal, stream: rawStream }) {
|
|
62
63
|
const stream = pbStream(abortableDuplex(rawStream, signal)).pb(pb.Message);
|
|
@@ -100,6 +101,17 @@ export async function initiateConnection({ rtcConfiguration, signal, stream: raw
|
|
|
100
101
|
});
|
|
101
102
|
await readCandidatesUntilConnected(connectedPromise, pc, stream);
|
|
102
103
|
channel.close();
|
|
103
|
-
|
|
104
|
+
const remoteAddress = parseRemoteAddress(pc.currentRemoteDescription?.sdp ?? '');
|
|
105
|
+
return { pc, muxerFactory, remoteAddress };
|
|
106
|
+
}
|
|
107
|
+
function parseRemoteAddress(sdp) {
|
|
108
|
+
// 'a=candidate:1746876089 1 udp 2113937151 0614fbad-b...ocal 54882 typ host generation 0 network-cost 999'
|
|
109
|
+
const candidateLine = sdp.split('\r\n').filter(line => line.startsWith('a=candidate')).pop();
|
|
110
|
+
const candidateParts = candidateLine?.split(' ');
|
|
111
|
+
if (candidateLine == null || candidateParts == null || candidateParts.length < 5) {
|
|
112
|
+
log('could not parse remote address from', candidateLine);
|
|
113
|
+
return '/webrtc';
|
|
114
|
+
}
|
|
115
|
+
return `/dnsaddr/${candidateParts[4]}/${candidateParts[2]}/${candidateParts[3]}/webrtc`;
|
|
104
116
|
}
|
|
105
117
|
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/peer_transport/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,MAAgC,MAAM,SAAS,CAAA;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,MAAM,eAAe,CAAA;AACnC,OAAO,EAAE,4BAA4B,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAA;AAK5E,MAAM,eAAe,GAAG,EAAE,GAAG,IAAI,CAAA;AAEjC,MAAM,GAAG,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;AAIxC,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,SAAS,EAAsB;IACrG,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,CAAA;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IAC1E,MAAM,EAAE,GAAG,IAAI,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;IAClD,MAAM,YAAY,GAAG,IAAI,uBAAuB,CAAC,EAAE,CAAC,CAAA;IAEpD,MAAM,gBAAgB,GAA0B,MAAM,EAAE,CAAA;IACxD,MAAM,iBAAiB,GAA0B,MAAM,EAAE,CAAA;IAEzD,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAA,CAAC,CAAC,CAAA;IACpD,sBAAsB;IACtB,EAAE,CAAC,cAAc,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;QACpC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAC5B,GAAG,EAAE;YACH,MAAM,CAAC,KAAK,CAAC;gBACX,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa;gBACnC,IAAI,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE;aACpE,CAAC,CAAA;QACJ,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;YACN,GAAG,CAAC,KAAK,CAAC,kDAAkD,EAAE,GAAG,CAAC,CAAA;QACpE,CAAC,CACF,CAAA;IACH,CAAC,CAAA;IAED,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAA;IAExC,oBAAoB;IACpB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;IACnC,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,8CAA8C,OAAO,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC,CAAA;KAC9F;IACD,MAAM,KAAK,GAAG,IAAI,qBAAqB,CAAC;QACtC,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,OAAO,CAAC,IAAI;KAClB,CAAC,CAAA;IAEF,MAAM,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC/C,GAAG,CAAC,KAAK,CAAC,wCAAwC,EAAE,GAAG,CAAC,CAAA;QACxD,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;IACpD,CAAC,CAAC,CAAA;IAEF,iCAAiC;IACjC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QACjD,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;QAChD,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;IACF,iCAAiC;IACjC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAA;IAEpE,MAAM,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC/C,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAA;QACvD,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC7B,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,iBAAiB,CAAC,OAAO,EAAE,CAAA;IAE3B,sCAAsC;IACtC,MAAM,4BAA4B,CAAC,gBAAgB,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/peer_transport/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { EventEmitter } from '@libp2p/interfaces/events';
|
|
2
|
-
import {
|
|
2
|
+
import type { Libp2pEvents } from '@libp2p/interface-libp2p';
|
|
3
3
|
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
4
|
-
import type { ListenerEvents,
|
|
4
|
+
import type { ListenerEvents, Listener } from '@libp2p/interface-transport';
|
|
5
|
+
import type { Multiaddr } from '@multiformats/multiaddr';
|
|
5
6
|
export interface ListenerOptions {
|
|
6
7
|
peerId: PeerId;
|
|
7
|
-
|
|
8
|
-
transportManager: TransportManager;
|
|
8
|
+
events: EventEmitter<Libp2pEvents>;
|
|
9
9
|
}
|
|
10
10
|
export declare class WebRTCPeerListener extends EventEmitter<ListenerEvents> implements Listener {
|
|
11
|
-
private readonly
|
|
11
|
+
private readonly peerId;
|
|
12
|
+
private listeners;
|
|
12
13
|
constructor(opts: ListenerOptions);
|
|
13
|
-
private getBaseAddress;
|
|
14
|
-
private listeningAddrs;
|
|
15
14
|
listen(ma: Multiaddr): Promise<void>;
|
|
16
15
|
getAddrs(): Multiaddr[];
|
|
17
16
|
close(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../src/peer_transport/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,
|
|
1
|
+
{"version":3,"file":"listener.d.ts","sourceRoot":"","sources":["../../../src/peer_transport/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AAED,qBAAa,kBAAmB,SAAQ,YAAY,CAAC,cAAc,CAAE,YAAW,QAAQ;IACtF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,SAAS,CAAiB;gBAErB,IAAI,EAAE,eAAe;IAsB5B,MAAM,CAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3C,QAAQ,IAAK,SAAS,EAAE;IAUlB,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;CAG9B"}
|
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
import { EventEmitter } from '@libp2p/interfaces/events';
|
|
2
|
-
import { multiaddr } from '@multiformats/multiaddr';
|
|
3
|
-
import { inappropriateMultiaddr } from '../error.js';
|
|
4
|
-
import { TRANSPORT } from './transport.js';
|
|
5
2
|
export class WebRTCPeerListener extends EventEmitter {
|
|
6
|
-
|
|
3
|
+
peerId;
|
|
4
|
+
listeners = [];
|
|
7
5
|
constructor(opts) {
|
|
8
6
|
super();
|
|
9
|
-
this.
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
7
|
+
this.peerId = opts.peerId;
|
|
8
|
+
opts.events.addEventListener('transport:listening', (event) => {
|
|
9
|
+
const listener = event.detail;
|
|
10
|
+
if (listener === this || this.listeners.includes(listener)) {
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
this.listeners.push(listener);
|
|
14
|
+
});
|
|
15
|
+
opts.events.addEventListener('transport:close', (event) => {
|
|
16
|
+
const listener = event.detail;
|
|
17
|
+
this.listeners = this.listeners.filter(l => l !== listener);
|
|
18
|
+
});
|
|
17
19
|
}
|
|
18
|
-
listeningAddrs = [];
|
|
19
20
|
async listen(ma) {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
this.safeDispatchEvent('listening', {});
|
|
22
|
+
}
|
|
23
|
+
getAddrs() {
|
|
24
|
+
return this.listeners
|
|
25
|
+
.map(l => l.getAddrs()
|
|
26
|
+
.map(ma => {
|
|
27
|
+
return ma.encapsulate(`/webrtc/p2p/${this.peerId}`);
|
|
28
|
+
}))
|
|
29
|
+
.flat();
|
|
30
|
+
}
|
|
31
|
+
async close() {
|
|
32
|
+
this.safeDispatchEvent('close', {});
|
|
29
33
|
}
|
|
30
|
-
getAddrs() { return this.listeningAddrs; }
|
|
31
|
-
async close() { }
|
|
32
34
|
}
|
|
33
35
|
//# sourceMappingURL=listener.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../src/peer_transport/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"listener.js","sourceRoot":"","sources":["../../../src/peer_transport/listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAWxD,MAAM,OAAO,kBAAmB,SAAQ,YAA4B;IACjD,MAAM,CAAQ;IACvB,SAAS,GAAe,EAAE,CAAA;IAElC,YAAa,IAAqB;QAChC,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QAEzB,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,KAAK,EAAE,EAAE;YAC5D,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAA;YAE7B,IAAI,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAC1D,OAAM;aACP;YAED,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC/B,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC,KAAK,EAAE,EAAE;YACxD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAA;YAE7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAE,EAAa;QACzB,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;IACzC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS;aAClB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;aACnB,GAAG,CAAC,EAAE,CAAC,EAAE;YACR,OAAO,EAAE,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;QACrD,CAAC,CAAC,CACH;aACA,IAAI,EAAE,CAAA;IACX,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;IACrC,CAAC;CACF"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import { type CreateListenerOptions, type DialOptions, type Listener, symbol, type Transport, type
|
|
1
|
+
import { type CreateListenerOptions, type DialOptions, type Listener, symbol, type Transport, type Upgrader, type TransportManager } from '@libp2p/interface-transport';
|
|
2
2
|
import { type Multiaddr } from '@multiformats/multiaddr';
|
|
3
3
|
import type { Connection } from '@libp2p/interface-connection';
|
|
4
|
+
import type { Libp2pEvents } from '@libp2p/interface-libp2p';
|
|
4
5
|
import type { PeerId } from '@libp2p/interface-peer-id';
|
|
5
|
-
import type { PeerStore } from '@libp2p/interface-peer-store';
|
|
6
6
|
import type { IncomingStreamData, Registrar } from '@libp2p/interface-registrar';
|
|
7
|
+
import type { EventEmitter } from '@libp2p/interfaces/events';
|
|
7
8
|
import type { Startable } from '@libp2p/interfaces/startable';
|
|
8
|
-
export declare const TRANSPORT = "/webrtc";
|
|
9
|
-
export declare const SIGNALING_PROTO_ID = "/webrtc-signaling/0.0.1";
|
|
10
|
-
export declare const CODE: number;
|
|
11
9
|
export interface WebRTCTransportInit {
|
|
12
10
|
rtcConfiguration?: RTCConfiguration;
|
|
13
11
|
}
|
|
@@ -16,7 +14,7 @@ export interface WebRTCTransportComponents {
|
|
|
16
14
|
registrar: Registrar;
|
|
17
15
|
upgrader: Upgrader;
|
|
18
16
|
transportManager: TransportManager;
|
|
19
|
-
|
|
17
|
+
events: EventEmitter<Libp2pEvents>;
|
|
20
18
|
}
|
|
21
19
|
export declare class WebRTCTransport implements Transport, Startable {
|
|
22
20
|
private readonly components;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/peer_transport/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/peer_transport/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAIvK,OAAO,EAAa,KAAK,SAAS,EAAa,MAAM,yBAAyB,CAAA;AAK9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAA;AAS7D,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;CACpC;AAED,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,SAAS,CAAA;IACpB,QAAQ,EAAE,QAAQ,CAAA;IAClB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,MAAM,EAAE,YAAY,CAAC,YAAY,CAAC,CAAA;CACnC;AAED,qBAAa,eAAgB,YAAW,SAAS,EAAE,SAAS;IAIxD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJvB,OAAO,CAAC,QAAQ,CAAQ;gBAGL,UAAU,EAAE,yBAAyB,EACrC,IAAI,EAAE,mBAAmB;IAI5C,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IAOvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAK5B,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAIzD,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAmB;IAEhD,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAO;IAExB,MAAM,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAO7C,OAAO,CAAC,SAAS;IAqCX,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IA0C/D,WAAW,CAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CAsB9E"}
|
|
@@ -8,9 +8,10 @@ import { WebRTCMultiaddrConnection } from '../maconn.js';
|
|
|
8
8
|
import { initiateConnection, handleIncomingStream } from './handler.js';
|
|
9
9
|
import { WebRTCPeerListener } from './listener.js';
|
|
10
10
|
const log = logger('libp2p:webrtc:peer');
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
const WEBRTC_TRANSPORT = '/webrtc';
|
|
12
|
+
const CIRCUIT_RELAY_TRANSPORT = '/p2p-circuit';
|
|
13
|
+
const SIGNALING_PROTO_ID = '/webrtc-signaling/0.0.1';
|
|
14
|
+
const WEBRTC_CODE = protocols('webrtc').code;
|
|
14
15
|
export class WebRTCTransport {
|
|
15
16
|
components;
|
|
16
17
|
init;
|
|
@@ -40,20 +41,23 @@ export class WebRTCTransport {
|
|
|
40
41
|
filter(multiaddrs) {
|
|
41
42
|
return multiaddrs.filter((ma) => {
|
|
42
43
|
const codes = ma.protoCodes();
|
|
43
|
-
return codes.includes(
|
|
44
|
+
return codes.includes(WEBRTC_CODE);
|
|
44
45
|
});
|
|
45
46
|
}
|
|
46
47
|
splitAddr(ma) {
|
|
47
|
-
const addrs = ma.toString().split(
|
|
48
|
+
const addrs = ma.toString().split(WEBRTC_TRANSPORT);
|
|
48
49
|
if (addrs.length !== 2) {
|
|
49
|
-
throw new CodeError('
|
|
50
|
+
throw new CodeError('webrtc protocol was not present in multiaddr', codes.ERR_INVALID_MULTIADDR);
|
|
51
|
+
}
|
|
52
|
+
if (!addrs[0].includes(CIRCUIT_RELAY_TRANSPORT)) {
|
|
53
|
+
throw new CodeError('p2p-circuit protocol was not present in multiaddr', codes.ERR_INVALID_MULTIADDR);
|
|
50
54
|
}
|
|
51
55
|
// look for remote peerId
|
|
52
56
|
let remoteAddr = multiaddr(addrs[0]);
|
|
53
|
-
const destination = multiaddr(
|
|
57
|
+
const destination = multiaddr(addrs[1]);
|
|
54
58
|
const destinationIdString = destination.getPeerId();
|
|
55
59
|
if (destinationIdString == null) {
|
|
56
|
-
throw new CodeError('
|
|
60
|
+
throw new CodeError('destination peer id was missing', codes.ERR_INVALID_MULTIADDR);
|
|
57
61
|
}
|
|
58
62
|
const lastProtoInRemote = remoteAddr.protos().pop();
|
|
59
63
|
if (lastProtoInRemote === undefined) {
|
|
@@ -78,47 +82,44 @@ export class WebRTCTransport {
|
|
|
78
82
|
const controller = new AbortController();
|
|
79
83
|
options.signal = controller.signal;
|
|
80
84
|
}
|
|
81
|
-
const connection = await this.components.transportManager.dial(baseAddr);
|
|
82
|
-
const
|
|
85
|
+
const connection = await this.components.transportManager.dial(baseAddr, options);
|
|
86
|
+
const signalingStream = await connection.newStream([SIGNALING_PROTO_ID], options);
|
|
83
87
|
try {
|
|
84
|
-
const
|
|
85
|
-
stream:
|
|
88
|
+
const { pc, muxerFactory, remoteAddress } = await initiateConnection({
|
|
89
|
+
stream: signalingStream,
|
|
86
90
|
rtcConfiguration: this.init.rtcConfiguration,
|
|
87
91
|
signal: options.signal
|
|
88
92
|
});
|
|
89
|
-
const webrtcMultiaddr = baseAddr.encapsulate(`${TRANSPORT}/p2p/${peerId.toString()}`);
|
|
90
93
|
const result = await options.upgrader.upgradeOutbound(new WebRTCMultiaddrConnection({
|
|
91
94
|
peerConnection: pc,
|
|
92
95
|
timeline: { open: Date.now() },
|
|
93
|
-
remoteAddr:
|
|
96
|
+
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${peerId.toString()}`)
|
|
94
97
|
}), {
|
|
95
98
|
skipProtection: true,
|
|
96
99
|
skipEncryption: true,
|
|
97
100
|
muxerFactory
|
|
98
101
|
});
|
|
99
102
|
// close the stream if SDP has been exchanged successfully
|
|
100
|
-
|
|
103
|
+
signalingStream.close();
|
|
101
104
|
return result;
|
|
102
105
|
}
|
|
103
106
|
catch (err) {
|
|
104
107
|
// reset the stream in case of any error
|
|
105
|
-
|
|
108
|
+
signalingStream.reset();
|
|
106
109
|
throw err;
|
|
107
110
|
}
|
|
108
111
|
}
|
|
109
112
|
async _onProtocol({ connection, stream }) {
|
|
110
113
|
try {
|
|
111
|
-
const
|
|
114
|
+
const { pc, muxerFactory, remoteAddress } = await handleIncomingStream({
|
|
112
115
|
rtcConfiguration: this.init.rtcConfiguration,
|
|
113
116
|
connection,
|
|
114
117
|
stream
|
|
115
118
|
});
|
|
116
|
-
const remotePeerId = connection.remoteAddr.getPeerId();
|
|
117
|
-
const webrtcMultiaddr = connection.remoteAddr.encapsulate(`${TRANSPORT}/p2p/${remotePeerId}`);
|
|
118
119
|
await this.components.upgrader.upgradeInbound(new WebRTCMultiaddrConnection({
|
|
119
120
|
peerConnection: pc,
|
|
120
121
|
timeline: { open: (new Date()).getTime() },
|
|
121
|
-
remoteAddr:
|
|
122
|
+
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${connection.remotePeer.toString()}`)
|
|
122
123
|
}), {
|
|
123
124
|
skipEncryption: true,
|
|
124
125
|
skipProtection: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/peer_transport/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+D,MAAM,EAAwD,MAAM,6BAA6B,CAAA;AACvK,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAkB,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/peer_transport/transport.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/peer_transport/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,EAAE,MAAM,eAAe,CAAA;AAGnC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAA;AACxB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;AAO1E,MAAM,GAAG,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAA;AAE7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAAE,gBAAuC,EAAE,EAAqB,EAAE,MAAqB,EAAiB,EAAE;IACzJ,OAAO,IAAI,EAAE;QACX,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAChF,mCAAmC;QACnC,IAAI,UAAU,YAAY,MAAM,EAAE;YAChC,MAAM,OAAO,GAAG,UAAU,CAAA;YAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE;gBAClD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;aAChD;YACD,uCAAuC;YACvC,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,EAAE;gBAC/C,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;gBACvC,MAAK;aACN;YAED,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YACzD,IAAI;gBACF,MAAM,EAAE,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;aACxE;YAAC,OAAO,GAAG,EAAE;gBACZ,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;gBAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;aAC1C;SACF;aAAM;YACL,6BAA6B;YAC7B,MAAK;SACN;KACF;IACD,MAAM,gBAAgB,CAAC,OAAO,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,UAAU,kBAAkB,CAAE,EAAqB,EAAE,OAA8B;IACvF,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;QAC/E,GAAG,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAA;QACrE,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE;YAC9D,KAAK,WAAW;gBACd,OAAO,CAAC,OAAO,EAAE,CAAA;gBACjB,MAAK;YACP,KAAK,QAAQ,CAAC;YACd,KAAK,cAAc,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/peer_transport/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,EAAE,MAAM,eAAe,CAAA;AAGnC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAA;AACxB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;AAO1E,MAAM,GAAG,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAA;AAE7C,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAAE,gBAAuC,EAAE,EAAqB,EAAE,MAAqB,EAAiB,EAAE;IACzJ,OAAO,IAAI,EAAE;QACX,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;QAChF,mCAAmC;QACnC,IAAI,UAAU,YAAY,MAAM,EAAE;YAChC,MAAM,OAAO,GAAG,UAAU,CAAA;YAC1B,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE;gBAClD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAA;aAChD;YACD,uCAAuC;YACvC,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE,EAAE;gBAC/C,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;gBACvC,MAAK;aACN;YAED,GAAG,CAAC,KAAK,CAAC,gCAAgC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;YACzD,IAAI;gBACF,MAAM,EAAE,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;aACxE;YAAC,OAAO,GAAG,EAAE;gBACZ,GAAG,CAAC,KAAK,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;gBAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;aAC1C;SACF;aAAM;YACL,6BAA6B;YAC7B,MAAK;SACN;KACF;IACD,MAAM,gBAAgB,CAAC,OAAO,CAAA;AAChC,CAAC,CAAA;AAED,MAAM,UAAU,kBAAkB,CAAE,EAAqB,EAAE,OAA8B;IACvF,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE;QAC/E,GAAG,CAAC,KAAK,CAAC,sCAAsC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAA;QACrE,QAAQ,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,EAAE;YAC9D,KAAK,WAAW;gBACd,OAAO,CAAC,OAAO,EAAE,CAAA;gBACjB,MAAK;YACP,KAAK,QAAQ,CAAC;YACd,KAAK,cAAc,CAAC;YACpB,KAAK,QAAQ;gBACX,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAA;gBACzD,MAAK;YACP;gBACE,MAAK;SACR;IACH,CAAC,CAAA;AACH,CAAC"}
|
package/dist/src/stream.js
CHANGED
|
@@ -189,7 +189,7 @@ export class WebRTCStream {
|
|
|
189
189
|
};
|
|
190
190
|
// pipe framed protobuf messages through a length prefixed decoder, and
|
|
191
191
|
// surface data from the `Message.message` field through a source.
|
|
192
|
-
this._src = pipe(this._innersrc, lengthPrefixed.decode(), (source) => (async function* () {
|
|
192
|
+
this._src = pipe(this._innersrc, (source) => lengthPrefixed.decode(source), (source) => (async function* () {
|
|
193
193
|
for await (const buf of source) {
|
|
194
194
|
const message = self.processIncomingProtobuf(buf.subarray());
|
|
195
195
|
if (message != null) {
|