@libp2p/webrtc 3.1.11 → 3.2.0-72319fe6
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 +13 -13
- package/dist/src/private-to-private/transport.d.ts +7 -0
- package/dist/src/private-to-private/transport.d.ts.map +1 -1
- package/dist/src/private-to-private/transport.js +22 -8
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-public/transport.d.ts.map +1 -1
- package/dist/src/private-to-public/transport.js +4 -11
- package/dist/src/private-to-public/transport.js.map +1 -1
- package/package.json +10 -9
- package/src/private-to-private/transport.ts +29 -8
- package/src/private-to-public/transport.ts +4 -12
- package/dist/typedoc-urls.json +0 -6
|
@@ -3,6 +3,7 @@ import { type Multiaddr } from '@multiformats/multiaddr';
|
|
|
3
3
|
import type { DataChannelOpts } from '../stream.js';
|
|
4
4
|
import type { Connection } from '@libp2p/interface/connection';
|
|
5
5
|
import type { PeerId } from '@libp2p/interface/peer-id';
|
|
6
|
+
import type { CounterGroup, Metrics } from '@libp2p/interface/src/metrics/index.js';
|
|
6
7
|
import type { Startable } from '@libp2p/interface/startable';
|
|
7
8
|
import type { IncomingStreamData, Registrar } from '@libp2p/interface-internal/registrar';
|
|
8
9
|
import type { TransportManager } from '@libp2p/interface-internal/transport-manager';
|
|
@@ -15,11 +16,17 @@ export interface WebRTCTransportComponents {
|
|
|
15
16
|
registrar: Registrar;
|
|
16
17
|
upgrader: Upgrader;
|
|
17
18
|
transportManager: TransportManager;
|
|
19
|
+
metrics?: Metrics;
|
|
20
|
+
}
|
|
21
|
+
export interface WebRTCTransportMetrics {
|
|
22
|
+
dialerEvents: CounterGroup;
|
|
23
|
+
listenerEvents: CounterGroup;
|
|
18
24
|
}
|
|
19
25
|
export declare class WebRTCTransport implements Transport, Startable {
|
|
20
26
|
private readonly components;
|
|
21
27
|
private readonly init;
|
|
22
28
|
private _started;
|
|
29
|
+
private readonly metrics?;
|
|
23
30
|
constructor(components: WebRTCTransportComponents, init?: WebRTCTransportInit);
|
|
24
31
|
isStarted(): boolean;
|
|
25
32
|
start(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAGhJ,OAAO,EAAa,KAAK,SAAS,
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAGhJ,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAOnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAA;AACnF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,sCAAsC,CAAA;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAQpF,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;CACvC;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,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,YAAY,CAAA;CAC7B;AAED,qBAAa,eAAgB,YAAW,SAAS,EAAE,SAAS;IAKxD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IALvB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAwB;gBAG9B,UAAU,EAAE,yBAAyB,EACrC,IAAI,GAAE,mBAAwB;IAgBjD,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IASvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAM5B,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;IAWvC,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAoD/D,WAAW,CAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;CA2B9E;AAED,wBAAgB,SAAS,CAAE,EAAE,EAAE,SAAS,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA4BjF"}
|
|
@@ -2,7 +2,8 @@ import { CodeError } from '@libp2p/interface/errors';
|
|
|
2
2
|
import { symbol } from '@libp2p/interface/transport';
|
|
3
3
|
import { logger } from '@libp2p/logger';
|
|
4
4
|
import { peerIdFromString } from '@libp2p/peer-id';
|
|
5
|
-
import { multiaddr
|
|
5
|
+
import { multiaddr } from '@multiformats/multiaddr';
|
|
6
|
+
import { WebRTC } from '@multiformats/multiaddr-matcher';
|
|
6
7
|
import { codes } from '../error.js';
|
|
7
8
|
import { WebRTCMultiaddrConnection } from '../maconn.js';
|
|
8
9
|
import { cleanup } from '../webrtc/index.js';
|
|
@@ -12,14 +13,26 @@ const log = logger('libp2p:webrtc:peer');
|
|
|
12
13
|
const WEBRTC_TRANSPORT = '/webrtc';
|
|
13
14
|
const CIRCUIT_RELAY_TRANSPORT = '/p2p-circuit';
|
|
14
15
|
const SIGNALING_PROTO_ID = '/webrtc-signaling/0.0.1';
|
|
15
|
-
const WEBRTC_CODE = protocols('webrtc').code;
|
|
16
16
|
export class WebRTCTransport {
|
|
17
17
|
components;
|
|
18
18
|
init;
|
|
19
19
|
_started = false;
|
|
20
|
+
metrics;
|
|
20
21
|
constructor(components, init = {}) {
|
|
21
22
|
this.components = components;
|
|
22
23
|
this.init = init;
|
|
24
|
+
if (components.metrics != null) {
|
|
25
|
+
this.metrics = {
|
|
26
|
+
dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc_dialer_events_total', {
|
|
27
|
+
label: 'event',
|
|
28
|
+
help: 'Total count of WebRTC dialer events by type'
|
|
29
|
+
}),
|
|
30
|
+
listenerEvents: components.metrics.registerCounterGroup('libp2p_webrtc_listener_events_total', {
|
|
31
|
+
label: 'event',
|
|
32
|
+
help: 'Total count of WebRTC listener events by type'
|
|
33
|
+
})
|
|
34
|
+
};
|
|
35
|
+
}
|
|
23
36
|
}
|
|
24
37
|
isStarted() {
|
|
25
38
|
return this._started;
|
|
@@ -43,10 +56,7 @@ export class WebRTCTransport {
|
|
|
43
56
|
[Symbol.toStringTag] = '@libp2p/webrtc';
|
|
44
57
|
[symbol] = true;
|
|
45
58
|
filter(multiaddrs) {
|
|
46
|
-
return multiaddrs.filter(
|
|
47
|
-
const codes = ma.protoCodes();
|
|
48
|
-
return codes.includes(WEBRTC_CODE);
|
|
49
|
-
});
|
|
59
|
+
return multiaddrs.filter(WebRTC.exactMatch);
|
|
50
60
|
}
|
|
51
61
|
/*
|
|
52
62
|
* dial connects to a remote via the circuit relay or any other protocol
|
|
@@ -62,6 +72,7 @@ export class WebRTCTransport {
|
|
|
62
72
|
const controller = new AbortController();
|
|
63
73
|
options.signal = controller.signal;
|
|
64
74
|
}
|
|
75
|
+
this.metrics?.dialerEvents.increment({ open: true });
|
|
65
76
|
const connection = await this.components.transportManager.dial(baseAddr, options);
|
|
66
77
|
const signalingStream = await connection.newStream(SIGNALING_PROTO_ID, {
|
|
67
78
|
...options,
|
|
@@ -77,7 +88,8 @@ export class WebRTCTransport {
|
|
|
77
88
|
const result = await options.upgrader.upgradeOutbound(new WebRTCMultiaddrConnection({
|
|
78
89
|
peerConnection: pc,
|
|
79
90
|
timeline: { open: Date.now() },
|
|
80
|
-
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${peerId.toString()}`)
|
|
91
|
+
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${peerId.toString()}`),
|
|
92
|
+
metrics: this.metrics?.dialerEvents
|
|
81
93
|
}), {
|
|
82
94
|
skipProtection: true,
|
|
83
95
|
skipEncryption: true,
|
|
@@ -88,6 +100,7 @@ export class WebRTCTransport {
|
|
|
88
100
|
return result;
|
|
89
101
|
}
|
|
90
102
|
catch (err) {
|
|
103
|
+
this.metrics?.dialerEvents.increment({ error: true });
|
|
91
104
|
// reset the stream in case of any error
|
|
92
105
|
signalingStream.abort(err);
|
|
93
106
|
throw err;
|
|
@@ -108,7 +121,8 @@ export class WebRTCTransport {
|
|
|
108
121
|
await this.components.upgrader.upgradeInbound(new WebRTCMultiaddrConnection({
|
|
109
122
|
peerConnection: pc,
|
|
110
123
|
timeline: { open: (new Date()).getTime() },
|
|
111
|
-
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${connection.remotePeer.toString()}`)
|
|
124
|
+
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${connection.remotePeer.toString()}`),
|
|
125
|
+
metrics: this.metrics?.listenerEvents
|
|
112
126
|
}), {
|
|
113
127
|
skipEncryption: true,
|
|
114
128
|
skipProtection: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAgD,MAAM,EAAgD,MAAM,6BAA6B,CAAA;AAChJ,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAkB,
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACpD,OAAO,EAAgD,MAAM,EAAgD,MAAM,6BAA6B,CAAA;AAChJ,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAkB,MAAM,yBAAyB,CAAA;AACnE,OAAO,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAA;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AASlD,MAAM,GAAG,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAA;AAExC,MAAM,gBAAgB,GAAG,SAAS,CAAA;AAClC,MAAM,uBAAuB,GAAG,cAAc,CAAA;AAC9C,MAAM,kBAAkB,GAAG,yBAAyB,CAAA;AAoBpD,MAAM,OAAO,eAAe;IAKP;IACA;IALX,QAAQ,GAAG,KAAK,CAAA;IACP,OAAO,CAAyB;IAEjD,YACmB,UAAqC,EACrC,OAA4B,EAAE;QAD9B,eAAU,GAAV,UAAU,CAA2B;QACrC,SAAI,GAAJ,IAAI,CAA0B;QAE/C,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,EAAE;YAC9B,IAAI,CAAC,OAAO,GAAG;gBACb,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,mCAAmC,EAAE;oBACzF,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,6CAA6C;iBACpD,CAAC;gBACF,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,qCAAqC,EAAE;oBAC7F,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,+CAA+C;iBACtD,CAAC;aACH,CAAA;SACF;IACH,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC,IAAwB,EAAE,EAAE;YACtF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,2CAA2C,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;QAClI,CAAC,EAAE;YACD,wBAAwB,EAAE,IAAI;SAC/B,CAAC,CAAA;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;IACtB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAA;QAC5D,OAAO,EAAE,CAAA;QACT,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAA;IACvB,CAAC;IAED,cAAc,CAAE,OAA8B;QAC5C,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAChD,CAAC;IAEQ,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,gBAAgB,CAAA;IAEvC,CAAC,MAAM,CAAC,GAAG,IAAI,CAAA;IAExB,MAAM,CAAE,UAAuB;QAC7B,OAAO,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAC7C,CAAC;IAED;;;;;;MAME;IACF,KAAK,CAAC,IAAI,CAAE,EAAa,EAAE,OAAoB;QAC7C,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAA;QAClC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,EAAE,CAAC,CAAA;QAE1C,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;YAC1B,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;YACxC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAA;SACnC;QAED,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;QACpD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;QACjF,MAAM,eAAe,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,kBAAkB,EAAE;YACrE,GAAG,OAAO;YACV,wBAAwB,EAAE,IAAI;SAC/B,CAAC,CAAA;QAEF,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,kBAAkB,CAAC;gBACnE,MAAM,EAAE,eAAe;gBACvB,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAC5C,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;gBACzC,MAAM,EAAE,OAAO,CAAC,MAAM;aACvB,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,eAAe,CACnD,IAAI,yBAAyB,CAAC;gBAC5B,cAAc,EAAE,EAAE;gBAClB,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE;gBAC9B,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,QAAQ,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC7E,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,YAAY;aACpC,CAAC,EACF;gBACE,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,IAAI;gBACpB,YAAY;aACb,CACF,CAAA;YAED,0DAA0D;YAC1D,MAAM,eAAe,CAAC,KAAK,EAAE,CAAA;YAC7B,OAAO,MAAM,CAAA;SACd;QAAC,OAAO,GAAQ,EAAE;YACjB,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;YACrD,wCAAwC;YACxC,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC1B,MAAM,GAAG,CAAA;SACV;gBAAS;YACR,iCAAiC;YACjC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;SACzB;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAE,EAAE,UAAU,EAAE,MAAM,EAAsB;QAC3D,IAAI;YACF,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,oBAAoB,CAAC;gBACrE,gBAAgB,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAC5C,UAAU;gBACV,MAAM;gBACN,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW;aAC1C,CAAC,CAAA;YAEF,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,yBAAyB,CAAC;gBAC1E,cAAc,EAAE,EAAE;gBAClB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE;gBAC1C,UAAU,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,QAAQ,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC5F,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,cAAc;aACtC,CAAC,EAAE;gBACF,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,IAAI;gBACpB,YAAY;aACb,CAAC,CAAA;SACH;QAAC,OAAO,GAAQ,EAAE;YACjB,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YACjB,MAAM,GAAG,CAAA;SACV;gBAAS;YACR,iCAAiC;YACjC,MAAM,UAAU,CAAC,KAAK,EAAE,CAAA;SACzB;IACH,CAAC;CACF;AAED,MAAM,UAAU,SAAS,CAAE,EAAa;IACtC,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAA;IACzD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,MAAM,IAAI,SAAS,CAAC,8CAA8C,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACjG;IAED,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE;QAC/C,MAAM,IAAI,SAAS,CAAC,mDAAmD,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACtG;IAED,yBAAyB;IACzB,IAAI,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IACpC,MAAM,WAAW,GAAG,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;IAE7C,MAAM,mBAAmB,GAAG,WAAW,CAAC,SAAS,EAAE,CAAA;IACnD,IAAI,mBAAmB,IAAI,IAAI,EAAE;QAC/B,MAAM,IAAI,SAAS,CAAC,iCAAiC,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACpF;IAED,MAAM,iBAAiB,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAA;IACnD,IAAI,iBAAiB,KAAK,SAAS,EAAE;QACnC,MAAM,IAAI,SAAS,CAAC,mBAAmB,EAAE,KAAK,CAAC,qBAAqB,CAAC,CAAA;KACtE;IACD,IAAI,iBAAiB,CAAC,IAAI,KAAK,KAAK,EAAE;QACpC,UAAU,GAAG,UAAU,CAAC,WAAW,CAAC,QAAQ,mBAAmB,EAAE,CAAC,CAAA;KACnE;IAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,CAAA;AAChF,CAAC"}
|
|
@@ -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,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,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,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,6BAA6B,CAAA;AAgB/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;IA6I/E;;;OAGG;IACH,OAAO,CAAC,qBAAqB;CAkB9B"}
|
|
@@ -3,6 +3,7 @@ import { symbol } from '@libp2p/interface/transport';
|
|
|
3
3
|
import { logger } from '@libp2p/logger';
|
|
4
4
|
import * as p from '@libp2p/peer-id';
|
|
5
5
|
import { protocols } from '@multiformats/multiaddr';
|
|
6
|
+
import { WebRTCDirect } from '@multiformats/multiaddr-matcher';
|
|
6
7
|
import * as multihashes from 'multihashes';
|
|
7
8
|
import { concat } from 'uint8arrays/concat';
|
|
8
9
|
import { fromString as uint8arrayFromString } from 'uint8arrays/from-string';
|
|
@@ -40,9 +41,9 @@ export class WebRTCDirectTransport {
|
|
|
40
41
|
this.init = init;
|
|
41
42
|
if (components.metrics != null) {
|
|
42
43
|
this.metrics = {
|
|
43
|
-
dialerEvents: components.metrics.registerCounterGroup('
|
|
44
|
+
dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc-direct_dialer_events_total', {
|
|
44
45
|
label: 'event',
|
|
45
|
-
help: 'Total count of WebRTC dial events by type'
|
|
46
|
+
help: 'Total count of WebRTC-direct dial events by type'
|
|
46
47
|
})
|
|
47
48
|
};
|
|
48
49
|
}
|
|
@@ -65,7 +66,7 @@ export class WebRTCDirectTransport {
|
|
|
65
66
|
* Takes a list of `Multiaddr`s and returns only valid addresses for the transport
|
|
66
67
|
*/
|
|
67
68
|
filter(multiaddrs) {
|
|
68
|
-
return multiaddrs.filter(
|
|
69
|
+
return multiaddrs.filter(WebRTCDirect.exactMatch);
|
|
69
70
|
}
|
|
70
71
|
/**
|
|
71
72
|
* Implement toString() for WebRTCTransport
|
|
@@ -217,12 +218,4 @@ export class WebRTCDirectTransport {
|
|
|
217
218
|
return concat([prefix, local, remote]);
|
|
218
219
|
}
|
|
219
220
|
}
|
|
220
|
-
/**
|
|
221
|
-
* Determine if a given multiaddr contains a WebRTC Code (280),
|
|
222
|
-
* a Certhash Code (466) and a PeerId
|
|
223
|
-
*/
|
|
224
|
-
function validMa(ma) {
|
|
225
|
-
const codes = ma.protoCodes();
|
|
226
|
-
return codes.includes(WEBRTC_CODE) && codes.includes(CERTHASH_CODE) && ma.getPeerId() != null && !codes.includes(protocols('p2p-circuit').code);
|
|
227
|
-
}
|
|
228
221
|
//# sourceMappingURL=transport.js.map
|
|
@@ -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,EAA8B,MAAM,EAAiC,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,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AACtD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAQpC,MAAM,GAAG,GAAG,MAAM,CAAC,yBAAyB,CAAC,CAAA;AAE7C;;GAEG;AACH,MAAM,oBAAoB,GAAG,KAAM,CAAA;AAEnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,WAAW,GAAW,SAAS,CAAC,eAAe,CAAC,CAAC,IAAI,CAAA;AAElE;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAW,SAAS,CAAC,UAAU,CAAC,CAAC,IAAI,CAAA;AAkB/D,MAAM,OAAO,qBAAqB;IACf,OAAO,CAAgB;IACvB,UAAU,CAAiC;IAC3C,IAAI,CAA2B;IAChD,YAAa,UAA2C,EAAE,OAAkC,EAAE;QAC5F,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,UAAU,CAAC,OAAO,IAAI,IAAI,EAAE;YAC9B,IAAI,CAAC,OAAO,GAAG;gBACb,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@libp2p/webrtc",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.2.0-72319fe6",
|
|
4
4
|
"description": "A libp2p transport using WebRTC connections",
|
|
5
5
|
"license": "Apache-2.0 OR MIT",
|
|
6
6
|
"homepage": "https://github.com/libp2p/js-libp2p/tree/master/packages/transport-webrtc#readme",
|
|
@@ -45,12 +45,13 @@
|
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@chainsafe/libp2p-noise": "^13.0.0",
|
|
48
|
-
"@libp2p/interface": "
|
|
49
|
-
"@libp2p/interface-internal": "
|
|
50
|
-
"@libp2p/logger": "
|
|
51
|
-
"@libp2p/peer-id": "
|
|
48
|
+
"@libp2p/interface": "0.1.2-72319fe6",
|
|
49
|
+
"@libp2p/interface-internal": "0.1.5-72319fe6",
|
|
50
|
+
"@libp2p/logger": "3.0.2-72319fe6",
|
|
51
|
+
"@libp2p/peer-id": "3.0.2-72319fe6",
|
|
52
52
|
"@multiformats/mafmt": "^12.1.2",
|
|
53
53
|
"@multiformats/multiaddr": "^12.1.5",
|
|
54
|
+
"@multiformats/multiaddr-matcher": "^1.0.1",
|
|
54
55
|
"abortable-iterator": "^5.0.1",
|
|
55
56
|
"detect-browser": "^5.3.0",
|
|
56
57
|
"it-length-prefixed": "^9.0.1",
|
|
@@ -70,16 +71,16 @@
|
|
|
70
71
|
},
|
|
71
72
|
"devDependencies": {
|
|
72
73
|
"@chainsafe/libp2p-yamux": "^5.0.0",
|
|
73
|
-
"@libp2p/interface-compliance-tests": "
|
|
74
|
-
"@libp2p/peer-id-factory": "
|
|
75
|
-
"@libp2p/websockets": "
|
|
74
|
+
"@libp2p/interface-compliance-tests": "4.0.6-72319fe6",
|
|
75
|
+
"@libp2p/peer-id-factory": "3.0.4-72319fe6",
|
|
76
|
+
"@libp2p/websockets": "7.0.7-72319fe6",
|
|
76
77
|
"@types/sinon": "^10.0.15",
|
|
77
78
|
"aegir": "^40.0.8",
|
|
78
79
|
"delay": "^6.0.0",
|
|
79
80
|
"it-length": "^3.0.2",
|
|
80
81
|
"it-map": "^3.0.3",
|
|
81
82
|
"it-pair": "^2.0.6",
|
|
82
|
-
"libp2p": "
|
|
83
|
+
"libp2p": "0.46.11-72319fe6",
|
|
83
84
|
"protons": "^7.0.2",
|
|
84
85
|
"sinon": "^16.0.0",
|
|
85
86
|
"sinon-ts": "^1.0.0"
|
|
@@ -2,7 +2,8 @@ import { CodeError } from '@libp2p/interface/errors'
|
|
|
2
2
|
import { type CreateListenerOptions, type DialOptions, symbol, type Transport, type Listener, type Upgrader } from '@libp2p/interface/transport'
|
|
3
3
|
import { logger } from '@libp2p/logger'
|
|
4
4
|
import { peerIdFromString } from '@libp2p/peer-id'
|
|
5
|
-
import { multiaddr, type Multiaddr
|
|
5
|
+
import { multiaddr, type Multiaddr } from '@multiformats/multiaddr'
|
|
6
|
+
import { WebRTC } from '@multiformats/multiaddr-matcher'
|
|
6
7
|
import { codes } from '../error.js'
|
|
7
8
|
import { WebRTCMultiaddrConnection } from '../maconn.js'
|
|
8
9
|
import { cleanup } from '../webrtc/index.js'
|
|
@@ -11,6 +12,7 @@ import { WebRTCPeerListener } from './listener.js'
|
|
|
11
12
|
import type { DataChannelOpts } from '../stream.js'
|
|
12
13
|
import type { Connection } from '@libp2p/interface/connection'
|
|
13
14
|
import type { PeerId } from '@libp2p/interface/peer-id'
|
|
15
|
+
import type { CounterGroup, Metrics } from '@libp2p/interface/src/metrics/index.js'
|
|
14
16
|
import type { Startable } from '@libp2p/interface/startable'
|
|
15
17
|
import type { IncomingStreamData, Registrar } from '@libp2p/interface-internal/registrar'
|
|
16
18
|
import type { TransportManager } from '@libp2p/interface-internal/transport-manager'
|
|
@@ -20,7 +22,6 @@ const log = logger('libp2p:webrtc:peer')
|
|
|
20
22
|
const WEBRTC_TRANSPORT = '/webrtc'
|
|
21
23
|
const CIRCUIT_RELAY_TRANSPORT = '/p2p-circuit'
|
|
22
24
|
const SIGNALING_PROTO_ID = '/webrtc-signaling/0.0.1'
|
|
23
|
-
const WEBRTC_CODE = protocols('webrtc').code
|
|
24
25
|
|
|
25
26
|
export interface WebRTCTransportInit {
|
|
26
27
|
rtcConfiguration?: RTCConfiguration
|
|
@@ -32,15 +33,34 @@ export interface WebRTCTransportComponents {
|
|
|
32
33
|
registrar: Registrar
|
|
33
34
|
upgrader: Upgrader
|
|
34
35
|
transportManager: TransportManager
|
|
36
|
+
metrics?: Metrics
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export interface WebRTCTransportMetrics {
|
|
40
|
+
dialerEvents: CounterGroup
|
|
41
|
+
listenerEvents: CounterGroup
|
|
35
42
|
}
|
|
36
43
|
|
|
37
44
|
export class WebRTCTransport implements Transport, Startable {
|
|
38
45
|
private _started = false
|
|
46
|
+
private readonly metrics?: WebRTCTransportMetrics
|
|
39
47
|
|
|
40
48
|
constructor (
|
|
41
49
|
private readonly components: WebRTCTransportComponents,
|
|
42
50
|
private readonly init: WebRTCTransportInit = {}
|
|
43
51
|
) {
|
|
52
|
+
if (components.metrics != null) {
|
|
53
|
+
this.metrics = {
|
|
54
|
+
dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc_dialer_events_total', {
|
|
55
|
+
label: 'event',
|
|
56
|
+
help: 'Total count of WebRTC dialer events by type'
|
|
57
|
+
}),
|
|
58
|
+
listenerEvents: components.metrics.registerCounterGroup('libp2p_webrtc_listener_events_total', {
|
|
59
|
+
label: 'event',
|
|
60
|
+
help: 'Total count of WebRTC listener events by type'
|
|
61
|
+
})
|
|
62
|
+
}
|
|
63
|
+
}
|
|
44
64
|
}
|
|
45
65
|
|
|
46
66
|
isStarted (): boolean {
|
|
@@ -71,10 +91,7 @@ export class WebRTCTransport implements Transport, Startable {
|
|
|
71
91
|
readonly [symbol] = true
|
|
72
92
|
|
|
73
93
|
filter (multiaddrs: Multiaddr[]): Multiaddr[] {
|
|
74
|
-
return multiaddrs.filter(
|
|
75
|
-
const codes = ma.protoCodes()
|
|
76
|
-
return codes.includes(WEBRTC_CODE)
|
|
77
|
-
})
|
|
94
|
+
return multiaddrs.filter(WebRTC.exactMatch)
|
|
78
95
|
}
|
|
79
96
|
|
|
80
97
|
/*
|
|
@@ -93,6 +110,7 @@ export class WebRTCTransport implements Transport, Startable {
|
|
|
93
110
|
options.signal = controller.signal
|
|
94
111
|
}
|
|
95
112
|
|
|
113
|
+
this.metrics?.dialerEvents.increment({ open: true })
|
|
96
114
|
const connection = await this.components.transportManager.dial(baseAddr, options)
|
|
97
115
|
const signalingStream = await connection.newStream(SIGNALING_PROTO_ID, {
|
|
98
116
|
...options,
|
|
@@ -111,7 +129,8 @@ export class WebRTCTransport implements Transport, Startable {
|
|
|
111
129
|
new WebRTCMultiaddrConnection({
|
|
112
130
|
peerConnection: pc,
|
|
113
131
|
timeline: { open: Date.now() },
|
|
114
|
-
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${peerId.toString()}`)
|
|
132
|
+
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${peerId.toString()}`),
|
|
133
|
+
metrics: this.metrics?.dialerEvents
|
|
115
134
|
}),
|
|
116
135
|
{
|
|
117
136
|
skipProtection: true,
|
|
@@ -124,6 +143,7 @@ export class WebRTCTransport implements Transport, Startable {
|
|
|
124
143
|
await signalingStream.close()
|
|
125
144
|
return result
|
|
126
145
|
} catch (err: any) {
|
|
146
|
+
this.metrics?.dialerEvents.increment({ error: true })
|
|
127
147
|
// reset the stream in case of any error
|
|
128
148
|
signalingStream.abort(err)
|
|
129
149
|
throw err
|
|
@@ -145,7 +165,8 @@ export class WebRTCTransport implements Transport, Startable {
|
|
|
145
165
|
await this.components.upgrader.upgradeInbound(new WebRTCMultiaddrConnection({
|
|
146
166
|
peerConnection: pc,
|
|
147
167
|
timeline: { open: (new Date()).getTime() },
|
|
148
|
-
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${connection.remotePeer.toString()}`)
|
|
168
|
+
remoteAddr: multiaddr(remoteAddress).encapsulate(`/p2p/${connection.remotePeer.toString()}`),
|
|
169
|
+
metrics: this.metrics?.listenerEvents
|
|
149
170
|
}), {
|
|
150
171
|
skipEncryption: true,
|
|
151
172
|
skipProtection: true,
|
|
@@ -3,6 +3,7 @@ import { type CreateListenerOptions, symbol, type Transport, type Listener } fro
|
|
|
3
3
|
import { logger } from '@libp2p/logger'
|
|
4
4
|
import * as p from '@libp2p/peer-id'
|
|
5
5
|
import { protocols } from '@multiformats/multiaddr'
|
|
6
|
+
import { WebRTCDirect } from '@multiformats/multiaddr-matcher'
|
|
6
7
|
import * as multihashes from 'multihashes'
|
|
7
8
|
import { concat } from 'uint8arrays/concat'
|
|
8
9
|
import { fromString as uint8arrayFromString } from 'uint8arrays/from-string'
|
|
@@ -67,9 +68,9 @@ export class WebRTCDirectTransport implements Transport {
|
|
|
67
68
|
this.init = init
|
|
68
69
|
if (components.metrics != null) {
|
|
69
70
|
this.metrics = {
|
|
70
|
-
dialerEvents: components.metrics.registerCounterGroup('
|
|
71
|
+
dialerEvents: components.metrics.registerCounterGroup('libp2p_webrtc-direct_dialer_events_total', {
|
|
71
72
|
label: 'event',
|
|
72
|
-
help: 'Total count of WebRTC dial events by type'
|
|
73
|
+
help: 'Total count of WebRTC-direct dial events by type'
|
|
73
74
|
})
|
|
74
75
|
}
|
|
75
76
|
}
|
|
@@ -95,7 +96,7 @@ export class WebRTCDirectTransport implements Transport {
|
|
|
95
96
|
* Takes a list of `Multiaddr`s and returns only valid addresses for the transport
|
|
96
97
|
*/
|
|
97
98
|
filter (multiaddrs: Multiaddr[]): Multiaddr[] {
|
|
98
|
-
return multiaddrs.filter(
|
|
99
|
+
return multiaddrs.filter(WebRTCDirect.exactMatch)
|
|
99
100
|
}
|
|
100
101
|
|
|
101
102
|
/**
|
|
@@ -275,12 +276,3 @@ export class WebRTCDirectTransport implements Transport {
|
|
|
275
276
|
return concat([prefix, local, remote])
|
|
276
277
|
}
|
|
277
278
|
}
|
|
278
|
-
|
|
279
|
-
/**
|
|
280
|
-
* Determine if a given multiaddr contains a WebRTC Code (280),
|
|
281
|
-
* a Certhash Code (466) and a PeerId
|
|
282
|
-
*/
|
|
283
|
-
function validMa (ma: Multiaddr): boolean {
|
|
284
|
-
const codes = ma.protoCodes()
|
|
285
|
-
return codes.includes(WEBRTC_CODE) && codes.includes(CERTHASH_CODE) && ma.getPeerId() != null && !codes.includes(protocols('p2p-circuit').code)
|
|
286
|
-
}
|
package/dist/typedoc-urls.json
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"webRTC": "https://libp2p.github.io/js-libp2p/functions/_libp2p_webrtc.webRTC.html",
|
|
3
|
-
".:webRTC": "https://libp2p.github.io/js-libp2p/functions/_libp2p_webrtc.webRTC.html",
|
|
4
|
-
"webRTCDirect": "https://libp2p.github.io/js-libp2p/functions/_libp2p_webrtc.webRTCDirect.html",
|
|
5
|
-
".:webRTCDirect": "https://libp2p.github.io/js-libp2p/functions/_libp2p_webrtc.webRTCDirect.html"
|
|
6
|
-
}
|