@libp2p/webrtc 4.0.34 → 4.1.0-3b9cbf7d8
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.min.js +10 -10
- package/dist/src/private-to-private/initiate-connection.d.ts +9 -4
- package/dist/src/private-to-private/initiate-connection.d.ts.map +1 -1
- package/dist/src/private-to-private/initiate-connection.js +17 -6
- package/dist/src/private-to-private/initiate-connection.js.map +1 -1
- package/dist/src/private-to-private/transport.d.ts +6 -3
- package/dist/src/private-to-private/transport.d.ts.map +1 -1
- package/dist/src/private-to-private/transport.js +24 -18
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-private/util.d.ts.map +1 -1
- package/dist/src/private-to-private/util.js +4 -2
- package/dist/src/private-to-private/util.js.map +1 -1
- package/dist/src/private-to-public/transport.d.ts +6 -9
- package/dist/src/private-to-public/transport.d.ts.map +1 -1
- package/dist/src/private-to-public/transport.js +10 -10
- package/dist/src/private-to-public/transport.js.map +1 -1
- package/package.json +13 -12
- package/src/private-to-private/initiate-connection.ts +22 -8
- package/src/private-to-private/transport.ts +31 -23
- package/src/private-to-private/util.ts +5 -2
- package/src/private-to-public/transport.ts +15 -12
- package/dist/typedoc-urls.json +0 -8
@@ -1,7 +1,8 @@
|
|
1
|
-
import {
|
1
|
+
import { DataChannelMuxerFactory } from '../muxer.js';
|
2
|
+
import { RTCPeerConnection } from '../webrtc/index.js';
|
2
3
|
import { type WebRTCTransportMetrics } from './transport.js';
|
3
4
|
import type { DataChannelOptions } from '../index.js';
|
4
|
-
import type { LoggerOptions } from '@libp2p/interface';
|
5
|
+
import type { LoggerOptions, ComponentLogger } from '@libp2p/interface';
|
5
6
|
import type { ConnectionManager, IncomingStreamData, TransportManager } from '@libp2p/interface-internal';
|
6
7
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
7
8
|
export interface IncomingStreamOpts extends IncomingStreamData {
|
@@ -10,15 +11,19 @@ export interface IncomingStreamOpts extends IncomingStreamData {
|
|
10
11
|
signal: AbortSignal;
|
11
12
|
}
|
12
13
|
export interface ConnectOptions extends LoggerOptions {
|
13
|
-
|
14
|
+
rtcConfiguration?: RTCConfiguration;
|
15
|
+
dataChannel?: DataChannelOptions;
|
14
16
|
multiaddr: Multiaddr;
|
15
17
|
connectionManager: ConnectionManager;
|
16
18
|
transportManager: TransportManager;
|
17
19
|
dataChannelOptions?: Partial<DataChannelOptions>;
|
18
20
|
signal?: AbortSignal;
|
19
21
|
metrics?: WebRTCTransportMetrics;
|
22
|
+
logger: ComponentLogger;
|
20
23
|
}
|
21
|
-
export declare function initiateConnection({
|
24
|
+
export declare function initiateConnection({ rtcConfiguration, dataChannel, signal, metrics, multiaddr: ma, connectionManager, transportManager, log, logger }: ConnectOptions): Promise<{
|
22
25
|
remoteAddress: Multiaddr;
|
26
|
+
peerConnection: RTCPeerConnection;
|
27
|
+
muxerFactory: DataChannelMuxerFactory;
|
23
28
|
}>;
|
24
29
|
//# sourceMappingURL=initiate-connection.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"initiate-connection.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"initiate-connection.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAyB,MAAM,oBAAoB,CAAA;AAE7E,OAAO,EAAiC,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AAE3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAc,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AACzG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAExD,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChD,MAAM,EAAE,WAAW,CAAA;CACpB;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IACnC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAChC,SAAS,EAAE,SAAS,CAAA;IACpB,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,kBAAkB,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAA;IAChD,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,sBAAsB,CAAA;IAChC,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,wBAAsB,kBAAkB,CAAE,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC;IAAE,aAAa,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,iBAAiB,CAAC;IAAC,YAAY,EAAE,uBAAuB,CAAA;CAAE,CAAC,CA8J9R"}
|
@@ -1,11 +1,12 @@
|
|
1
1
|
import { CodeError } from '@libp2p/interface';
|
2
2
|
import { peerIdFromString } from '@libp2p/peer-id';
|
3
3
|
import { pbStream } from 'it-protobuf-stream';
|
4
|
-
import {
|
4
|
+
import { DataChannelMuxerFactory } from '../muxer.js';
|
5
|
+
import { RTCPeerConnection, RTCSessionDescription } from '../webrtc/index.js';
|
5
6
|
import { Message } from './pb/message.js';
|
6
7
|
import { SIGNALING_PROTO_ID, splitAddr } from './transport.js';
|
7
8
|
import { readCandidatesUntilConnected } from './util.js';
|
8
|
-
export async function initiateConnection({
|
9
|
+
export async function initiateConnection({ rtcConfiguration, dataChannel, signal, metrics, multiaddr: ma, connectionManager, transportManager, log, logger }) {
|
9
10
|
const { baseAddr } = splitAddr(ma);
|
10
11
|
metrics?.dialerEvents.increment({ open: true });
|
11
12
|
log.trace('dialing base address: %a', baseAddr);
|
@@ -36,6 +37,13 @@ export async function initiateConnection({ peerConnection, signal, metrics, mult
|
|
36
37
|
runOnTransientConnection: true
|
37
38
|
});
|
38
39
|
const messageStream = pbStream(stream).pb(Message);
|
40
|
+
const peerConnection = new RTCPeerConnection(rtcConfiguration);
|
41
|
+
const muxerFactory = new DataChannelMuxerFactory({
|
42
|
+
logger
|
43
|
+
}, {
|
44
|
+
peerConnection,
|
45
|
+
dataChannelOptions: dataChannel
|
46
|
+
});
|
39
47
|
try {
|
40
48
|
// we create the channel so that the RTCPeerConnection has a component for
|
41
49
|
// which to collect candidates. The label is not relevant to connection
|
@@ -48,7 +56,7 @@ export async function initiateConnection({ peerConnection, signal, metrics, mult
|
|
48
56
|
// be a valid candidate object
|
49
57
|
// see - https://www.w3.org/TR/webrtc/#rtcpeerconnectioniceevent
|
50
58
|
const data = JSON.stringify(candidate?.toJSON() ?? null);
|
51
|
-
log.trace('initiator sending ICE candidate %
|
59
|
+
log.trace('initiator sending ICE candidate %o', candidate);
|
52
60
|
void messageStream.write({
|
53
61
|
type: Message.Type.ICE_CANDIDATE,
|
54
62
|
data
|
@@ -98,16 +106,19 @@ export async function initiateConnection({ peerConnection, signal, metrics, mult
|
|
98
106
|
});
|
99
107
|
log.trace('initiator connected, closing init channel');
|
100
108
|
channel.close();
|
101
|
-
log.trace('
|
102
|
-
await
|
109
|
+
log.trace('closing signalling channel');
|
110
|
+
await stream.close({
|
103
111
|
signal
|
104
112
|
});
|
105
113
|
log.trace('initiator connected to remote address %s', ma);
|
106
114
|
return {
|
107
|
-
remoteAddress: ma
|
115
|
+
remoteAddress: ma,
|
116
|
+
peerConnection,
|
117
|
+
muxerFactory
|
108
118
|
};
|
109
119
|
}
|
110
120
|
catch (err) {
|
121
|
+
log.error('outgoing signalling error', err);
|
111
122
|
peerConnection.close();
|
112
123
|
stream.abort(err);
|
113
124
|
throw err;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"initiate-connection.js","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,
|
1
|
+
{"version":3,"file":"initiate-connection.js","sourceRoot":"","sources":["../../../src/private-to-private/initiate-connection.ts"],"names":[],"mappings":"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"}
|
@@ -1,10 +1,11 @@
|
|
1
|
+
import { serviceCapabilities, serviceDependencies } from '@libp2p/interface';
|
1
2
|
import { type CreateListenerOptions, type DialOptions, transportSymbol, type Transport, type Listener, type Upgrader, type ComponentLogger, type Connection, type PeerId, type CounterGroup, type Metrics, type Startable } from '@libp2p/interface';
|
2
3
|
import { type Multiaddr } from '@multiformats/multiaddr';
|
3
4
|
import type { DataChannelOptions } from '../index.js';
|
4
5
|
import type { IncomingStreamData, Registrar, ConnectionManager, TransportManager } from '@libp2p/interface-internal';
|
5
6
|
export declare const SIGNALING_PROTO_ID = "/webrtc-signaling/0.0.1";
|
6
7
|
export interface WebRTCTransportInit {
|
7
|
-
rtcConfiguration?: RTCConfiguration;
|
8
|
+
rtcConfiguration?: RTCConfiguration | (() => RTCConfiguration | Promise<RTCConfiguration>);
|
8
9
|
dataChannel?: DataChannelOptions;
|
9
10
|
/**
|
10
11
|
* Inbound connections must complete the upgrade within this many ms
|
@@ -33,12 +34,14 @@ export declare class WebRTCTransport implements Transport, Startable {
|
|
33
34
|
private readonly metrics?;
|
34
35
|
private readonly shutdownController;
|
35
36
|
constructor(components: WebRTCTransportComponents, init?: WebRTCTransportInit);
|
37
|
+
readonly [transportSymbol] = true;
|
38
|
+
readonly [Symbol.toStringTag] = "@libp2p/webrtc";
|
39
|
+
readonly [serviceCapabilities]: string[];
|
40
|
+
readonly [serviceDependencies]: string[];
|
36
41
|
isStarted(): boolean;
|
37
42
|
start(): Promise<void>;
|
38
43
|
stop(): Promise<void>;
|
39
44
|
createListener(options: CreateListenerOptions): Listener;
|
40
|
-
readonly [Symbol.toStringTag] = "@libp2p/webrtc";
|
41
|
-
readonly [transportSymbol] = true;
|
42
45
|
/**
|
43
46
|
* Filter check for all Multiaddrs that this transport can listen on
|
44
47
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"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"}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { CodeError, setMaxListeners } from '@libp2p/interface';
|
1
|
+
import { CodeError, serviceCapabilities, serviceDependencies, setMaxListeners } from '@libp2p/interface';
|
2
2
|
import { transportSymbol } from '@libp2p/interface';
|
3
3
|
import { peerIdFromString } from '@libp2p/peer-id';
|
4
4
|
import { multiaddr } from '@multiformats/multiaddr';
|
@@ -40,6 +40,15 @@ export class WebRTCTransport {
|
|
40
40
|
};
|
41
41
|
}
|
42
42
|
}
|
43
|
+
[transportSymbol] = true;
|
44
|
+
[Symbol.toStringTag] = '@libp2p/webrtc';
|
45
|
+
[serviceCapabilities] = [
|
46
|
+
'@libp2p/transport'
|
47
|
+
];
|
48
|
+
[serviceDependencies] = [
|
49
|
+
'@libp2p/identify',
|
50
|
+
'@libp2p/circuit-relay-v2-transport'
|
51
|
+
];
|
43
52
|
isStarted() {
|
44
53
|
return this._started;
|
45
54
|
}
|
@@ -60,8 +69,6 @@ export class WebRTCTransport {
|
|
60
69
|
shutdownController: this.shutdownController
|
61
70
|
});
|
62
71
|
}
|
63
|
-
[Symbol.toStringTag] = '@libp2p/webrtc';
|
64
|
-
[transportSymbol] = true;
|
65
72
|
/**
|
66
73
|
* Filter check for all Multiaddrs that this transport can listen on
|
67
74
|
*/
|
@@ -83,19 +90,16 @@ export class WebRTCTransport {
|
|
83
90
|
*/
|
84
91
|
async dial(ma, options) {
|
85
92
|
this.log.trace('dialing address: %a', ma);
|
86
|
-
const peerConnection =
|
87
|
-
|
88
|
-
|
89
|
-
dataChannelOptions: this.init.dataChannel
|
90
|
-
});
|
91
|
-
const { remoteAddress } = await initiateConnection({
|
92
|
-
peerConnection,
|
93
|
+
const { remoteAddress, peerConnection, muxerFactory } = await initiateConnection({
|
94
|
+
rtcConfiguration: typeof this.init.rtcConfiguration === 'function' ? await this.init.rtcConfiguration() : this.init.rtcConfiguration,
|
95
|
+
dataChannel: this.init.dataChannel,
|
93
96
|
multiaddr: ma,
|
94
97
|
dataChannelOptions: this.init.dataChannel,
|
95
98
|
signal: options.signal,
|
96
99
|
connectionManager: this.components.connectionManager,
|
97
100
|
transportManager: this.components.transportManager,
|
98
|
-
log: this.log
|
101
|
+
log: this.log,
|
102
|
+
logger: this.components.logger
|
99
103
|
});
|
100
104
|
const webRTCConn = new WebRTCMultiaddrConnection(this.components, {
|
101
105
|
peerConnection,
|
@@ -114,7 +118,7 @@ export class WebRTCTransport {
|
|
114
118
|
}
|
115
119
|
async _onProtocol({ connection, stream }) {
|
116
120
|
const signal = AbortSignal.timeout(this.init.inboundConnectionTimeout ?? INBOUND_CONNECTION_TIMEOUT);
|
117
|
-
const peerConnection = new RTCPeerConnection(this.init.rtcConfiguration);
|
121
|
+
const peerConnection = new RTCPeerConnection(typeof this.init.rtcConfiguration === 'function' ? await this.init.rtcConfiguration() : this.init.rtcConfiguration);
|
118
122
|
const muxerFactory = new DataChannelMuxerFactory(this.components, {
|
119
123
|
peerConnection,
|
120
124
|
dataChannelOptions: this.init.dataChannel
|
@@ -127,25 +131,27 @@ export class WebRTCTransport {
|
|
127
131
|
signal,
|
128
132
|
log: this.log
|
129
133
|
});
|
134
|
+
// close the stream if SDP messages have been exchanged successfully
|
135
|
+
await stream.close({
|
136
|
+
signal
|
137
|
+
});
|
130
138
|
const webRTCConn = new WebRTCMultiaddrConnection(this.components, {
|
131
139
|
peerConnection,
|
132
140
|
timeline: { open: (new Date()).getTime() },
|
133
141
|
remoteAddr: remoteAddress,
|
134
142
|
metrics: this.metrics?.listenerEvents
|
135
143
|
});
|
136
|
-
// close the connection on shut down
|
137
|
-
this._closeOnShutdown(peerConnection, webRTCConn);
|
138
144
|
await this.components.upgrader.upgradeInbound(webRTCConn, {
|
139
145
|
skipEncryption: true,
|
140
146
|
skipProtection: true,
|
141
147
|
muxerFactory
|
142
148
|
});
|
143
|
-
// close the
|
144
|
-
|
145
|
-
signal
|
146
|
-
});
|
149
|
+
// close the connection on shut down
|
150
|
+
this._closeOnShutdown(peerConnection, webRTCConn);
|
147
151
|
}
|
148
152
|
catch (err) {
|
153
|
+
this.log.error('incoming signalling error', err);
|
154
|
+
peerConnection.close();
|
149
155
|
stream.abort(err);
|
150
156
|
throw err;
|
151
157
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-private/transport.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGrE,MAAM,WAAW,qBAAsB,SAAQ,YAAY,EAAE,aAAa;IACxE,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,eAAO,MAAM,4BAA4B,OAAc,iBAAiB,UAAU,cAAc,OAAO,EAAE,MAAM,CAAC,WAAW,qBAAqB,KAAG,QAAQ,IAAI,
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAGrE,MAAM,WAAW,qBAAsB,SAAQ,YAAY,EAAE,aAAa;IACxE,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,eAAO,MAAM,4BAA4B,OAAc,iBAAiB,UAAU,cAAc,OAAO,EAAE,MAAM,CAAC,WAAW,qBAAqB,KAAG,QAAQ,IAAI,CAuD9J,CAAA"}
|
@@ -14,10 +14,12 @@ export const readCandidatesUntilConnected = async (pc, stream, options) => {
|
|
14
14
|
connectedPromise.promise,
|
15
15
|
stream.read({
|
16
16
|
signal: options.signal
|
17
|
-
})
|
17
|
+
}).catch(() => { })
|
18
18
|
]);
|
19
19
|
// stream ended or we became connected
|
20
20
|
if (message == null) {
|
21
|
+
// throw if we timed out
|
22
|
+
options.signal?.throwIfAborted();
|
21
23
|
break;
|
22
24
|
}
|
23
25
|
if (message.type !== Message.Type.ICE_CANDIDATE) {
|
@@ -32,7 +34,7 @@ export const readCandidatesUntilConnected = async (pc, stream, options) => {
|
|
32
34
|
continue;
|
33
35
|
}
|
34
36
|
const candidate = new RTCIceCandidate(candidateInit);
|
35
|
-
options.log.trace('%s received new ICE candidate', options.direction,
|
37
|
+
options.log.trace('%s received new ICE candidate %o', options.direction, candidateInit);
|
36
38
|
try {
|
37
39
|
await pc.addIceCandidate(candidate);
|
38
40
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AASzC,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,EAAE,EAAqB,EAAE,MAAsC,EAAE,OAA8B,EAAiB,EAAE;IACjK,IAAI,CAAC;QACH,MAAM,gBAAgB,GAA0B,MAAM,EAAE,CAAA;QACxD,kBAAkB,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAA;QAExC,2EAA2E;QAC3E,OAAO,IAAI,EAAE,CAAC;YACZ,qDAAqD;YACrD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBACjC,gBAAgB,CAAC,OAAO;gBACxB,MAAM,CAAC,IAAI,CAAC;oBACV,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC;
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/private-to-private/util.ts"],"names":[],"mappings":"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"}
|
@@ -1,6 +1,7 @@
|
|
1
|
-
import {
|
1
|
+
import { transportSymbol, serviceCapabilities } from '@libp2p/interface';
|
2
2
|
import type { WebRTCDialOptions } from './options.js';
|
3
3
|
import type { DataChannelOptions } from '../index.js';
|
4
|
+
import type { CreateListenerOptions, Transport, Listener, ComponentLogger, Connection, CounterGroup, Metrics, PeerId } from '@libp2p/interface';
|
4
5
|
import type { Multiaddr } from '@multiformats/multiaddr';
|
5
6
|
/**
|
6
7
|
* Created by converting the hexadecimal protocol code to an integer.
|
@@ -26,6 +27,7 @@ export interface WebRTCMetrics {
|
|
26
27
|
dialerEvents: CounterGroup;
|
27
28
|
}
|
28
29
|
export interface WebRTCTransportDirectInit {
|
30
|
+
rtcConfiguration?: RTCConfiguration | (() => RTCConfiguration | Promise<RTCConfiguration>);
|
29
31
|
dataChannel?: DataChannelOptions;
|
30
32
|
}
|
31
33
|
export declare class WebRTCDirectTransport implements Transport {
|
@@ -34,6 +36,9 @@ export declare class WebRTCDirectTransport implements Transport {
|
|
34
36
|
private readonly components;
|
35
37
|
private readonly init;
|
36
38
|
constructor(components: WebRTCDirectTransportComponents, init?: WebRTCTransportDirectInit);
|
39
|
+
readonly [transportSymbol] = true;
|
40
|
+
readonly [Symbol.toStringTag] = "@libp2p/webrtc-direct";
|
41
|
+
readonly [serviceCapabilities]: string[];
|
37
42
|
/**
|
38
43
|
* Dial a given multiaddr
|
39
44
|
*/
|
@@ -50,14 +55,6 @@ export declare class WebRTCDirectTransport implements Transport {
|
|
50
55
|
* Filter check for all Multiaddrs that this transport can dial
|
51
56
|
*/
|
52
57
|
dialFilter(multiaddrs: Multiaddr[]): Multiaddr[];
|
53
|
-
/**
|
54
|
-
* Implement toString() for WebRTCTransport
|
55
|
-
*/
|
56
|
-
readonly [Symbol.toStringTag] = "@libp2p/webrtc-direct";
|
57
|
-
/**
|
58
|
-
* Symbol.for('@libp2p/transport')
|
59
|
-
*/
|
60
|
-
readonly [transportSymbol] = true;
|
61
58
|
/**
|
62
59
|
* Connect to a peer using a multiaddr
|
63
60
|
*/
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAA;AAexE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAU,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACvJ,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAOxD;;;;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;IACjB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,YAAY,CAAA;CAC3B;AAED,MAAM,WAAW,yBAAyB;IACxC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAC1F,WAAW,CAAC,EAAE,kBAAkB,CAAA;CACjC;AAED,qBAAa,qBAAsB,YAAW,SAAS;IACrD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,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;IAc9F,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAO;IAEjC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,2BAA0B;IAEvD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED;;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,YAAY,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAInD;;OAEG;IACH,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAIjD;;OAEG;IACG,QAAQ,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC;IAyJ/E;;;OAGG;IACH,OAAO,CAAC,qBAAqB;CAoB9B"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { noise } from '@chainsafe/libp2p-noise';
|
2
|
-
import { transportSymbol } from '@libp2p/interface';
|
2
|
+
import { transportSymbol, serviceCapabilities } from '@libp2p/interface';
|
3
3
|
import * as p from '@libp2p/peer-id';
|
4
4
|
import { protocols } from '@multiformats/multiaddr';
|
5
5
|
import { WebRTCDirect } from '@multiformats/multiaddr-matcher';
|
@@ -48,6 +48,11 @@ export class WebRTCDirectTransport {
|
|
48
48
|
};
|
49
49
|
}
|
50
50
|
}
|
51
|
+
[transportSymbol] = true;
|
52
|
+
[Symbol.toStringTag] = '@libp2p/webrtc-direct';
|
53
|
+
[serviceCapabilities] = [
|
54
|
+
'@libp2p/transport'
|
55
|
+
];
|
51
56
|
/**
|
52
57
|
* Dial a given multiaddr
|
53
58
|
*/
|
@@ -74,14 +79,6 @@ export class WebRTCDirectTransport {
|
|
74
79
|
dialFilter(multiaddrs) {
|
75
80
|
return this.listenFilter(multiaddrs);
|
76
81
|
}
|
77
|
-
/**
|
78
|
-
* Implement toString() for WebRTCTransport
|
79
|
-
*/
|
80
|
-
[Symbol.toStringTag] = '@libp2p/webrtc-direct';
|
81
|
-
/**
|
82
|
-
* Symbol.for('@libp2p/transport')
|
83
|
-
*/
|
84
|
-
[transportSymbol] = true;
|
85
82
|
/**
|
86
83
|
* Connect to a peer using a multiaddr
|
87
84
|
*/
|
@@ -103,7 +100,10 @@ export class WebRTCDirectTransport {
|
|
103
100
|
namedCurve: 'P-256',
|
104
101
|
hash: sdp.toSupportedHashFunction(remoteCerthash.name)
|
105
102
|
});
|
106
|
-
const peerConnection = new RTCPeerConnection({
|
103
|
+
const peerConnection = new RTCPeerConnection({
|
104
|
+
...(typeof this.init.rtcConfiguration === 'function' ? await this.init.rtcConfiguration() : this.init.rtcConfiguration ?? {}),
|
105
|
+
certificates: [certificate]
|
106
|
+
});
|
107
107
|
try {
|
108
108
|
// create data channel for running the noise handshake. Once the data channel is opened,
|
109
109
|
// the remote will initiate the noise handshake. This is used to confirm the identity of
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../../src/private-to-public/transport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAC/C,OAAO,
|
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": "4.0
|
3
|
+
"version": "4.1.0-3b9cbf7d8",
|
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/main/packages/transport-webrtc#readme",
|
@@ -51,10 +51,10 @@
|
|
51
51
|
},
|
52
52
|
"dependencies": {
|
53
53
|
"@chainsafe/libp2p-noise": "^15.0.0",
|
54
|
-
"@libp2p/interface": "
|
55
|
-
"@libp2p/interface-internal": "
|
56
|
-
"@libp2p/peer-id": "
|
57
|
-
"@libp2p/utils": "
|
54
|
+
"@libp2p/interface": "1.5.0-3b9cbf7d8",
|
55
|
+
"@libp2p/interface-internal": "1.2.4-3b9cbf7d8",
|
56
|
+
"@libp2p/peer-id": "4.1.4-3b9cbf7d8",
|
57
|
+
"@libp2p/utils": "5.4.4-3b9cbf7d8",
|
58
58
|
"@multiformats/mafmt": "^12.1.6",
|
59
59
|
"@multiformats/multiaddr": "^12.2.3",
|
60
60
|
"@multiformats/multiaddr-matcher": "^1.2.1",
|
@@ -65,7 +65,7 @@
|
|
65
65
|
"it-stream-types": "^2.0.1",
|
66
66
|
"multiformats": "^13.1.0",
|
67
67
|
"multihashes": "^4.0.3",
|
68
|
-
"node-datachannel": "^0.
|
68
|
+
"node-datachannel": "^0.10.0",
|
69
69
|
"p-defer": "^4.0.1",
|
70
70
|
"p-event": "^6.0.1",
|
71
71
|
"p-timeout": "^6.1.2",
|
@@ -77,11 +77,12 @@
|
|
77
77
|
},
|
78
78
|
"devDependencies": {
|
79
79
|
"@chainsafe/libp2p-yamux": "^6.0.2",
|
80
|
-
"@libp2p/circuit-relay-v2": "
|
81
|
-
"@libp2p/
|
82
|
-
"@libp2p/
|
83
|
-
"@libp2p/
|
84
|
-
"@libp2p/
|
80
|
+
"@libp2p/circuit-relay-v2": "1.1.0-3b9cbf7d8",
|
81
|
+
"@libp2p/identify": "2.1.0-3b9cbf7d8",
|
82
|
+
"@libp2p/interface-compliance-tests": "5.4.7-3b9cbf7d8",
|
83
|
+
"@libp2p/logger": "4.0.15-3b9cbf7d8",
|
84
|
+
"@libp2p/peer-id-factory": "4.1.4-3b9cbf7d8",
|
85
|
+
"@libp2p/websockets": "8.1.0-3b9cbf7d8",
|
85
86
|
"@types/sinon": "^17.0.3",
|
86
87
|
"aegir": "^43.0.1",
|
87
88
|
"delay": "^6.0.0",
|
@@ -91,7 +92,7 @@
|
|
91
92
|
"it-pair": "^2.0.6",
|
92
93
|
"it-pipe": "^3.0.1",
|
93
94
|
"it-to-buffer": "^4.0.7",
|
94
|
-
"libp2p": "
|
95
|
+
"libp2p": "1.7.0-3b9cbf7d8",
|
95
96
|
"p-retry": "^6.2.0",
|
96
97
|
"protons": "^7.5.0",
|
97
98
|
"sinon": "^18.0.0",
|
@@ -1,12 +1,13 @@
|
|
1
1
|
import { CodeError } from '@libp2p/interface'
|
2
2
|
import { peerIdFromString } from '@libp2p/peer-id'
|
3
3
|
import { pbStream } from 'it-protobuf-stream'
|
4
|
-
import {
|
4
|
+
import { DataChannelMuxerFactory } from '../muxer.js'
|
5
|
+
import { RTCPeerConnection, RTCSessionDescription } from '../webrtc/index.js'
|
5
6
|
import { Message } from './pb/message.js'
|
6
7
|
import { SIGNALING_PROTO_ID, splitAddr, type WebRTCTransportMetrics } from './transport.js'
|
7
8
|
import { readCandidatesUntilConnected } from './util.js'
|
8
9
|
import type { DataChannelOptions } from '../index.js'
|
9
|
-
import type { LoggerOptions, Connection } from '@libp2p/interface'
|
10
|
+
import type { LoggerOptions, Connection, ComponentLogger } from '@libp2p/interface'
|
10
11
|
import type { ConnectionManager, IncomingStreamData, TransportManager } from '@libp2p/interface-internal'
|
11
12
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
12
13
|
|
@@ -17,16 +18,18 @@ export interface IncomingStreamOpts extends IncomingStreamData {
|
|
17
18
|
}
|
18
19
|
|
19
20
|
export interface ConnectOptions extends LoggerOptions {
|
20
|
-
|
21
|
+
rtcConfiguration?: RTCConfiguration
|
22
|
+
dataChannel?: DataChannelOptions
|
21
23
|
multiaddr: Multiaddr
|
22
24
|
connectionManager: ConnectionManager
|
23
25
|
transportManager: TransportManager
|
24
26
|
dataChannelOptions?: Partial<DataChannelOptions>
|
25
27
|
signal?: AbortSignal
|
26
28
|
metrics?: WebRTCTransportMetrics
|
29
|
+
logger: ComponentLogger
|
27
30
|
}
|
28
31
|
|
29
|
-
export async function initiateConnection ({
|
32
|
+
export async function initiateConnection ({ rtcConfiguration, dataChannel, signal, metrics, multiaddr: ma, connectionManager, transportManager, log, logger }: ConnectOptions): Promise<{ remoteAddress: Multiaddr, peerConnection: RTCPeerConnection, muxerFactory: DataChannelMuxerFactory }> {
|
30
33
|
const { baseAddr } = splitAddr(ma)
|
31
34
|
|
32
35
|
metrics?.dialerEvents.increment({ open: true })
|
@@ -64,6 +67,13 @@ export async function initiateConnection ({ peerConnection, signal, metrics, mul
|
|
64
67
|
})
|
65
68
|
|
66
69
|
const messageStream = pbStream(stream).pb(Message)
|
70
|
+
const peerConnection = new RTCPeerConnection(rtcConfiguration)
|
71
|
+
const muxerFactory = new DataChannelMuxerFactory({
|
72
|
+
logger
|
73
|
+
}, {
|
74
|
+
peerConnection,
|
75
|
+
dataChannelOptions: dataChannel
|
76
|
+
})
|
67
77
|
|
68
78
|
try {
|
69
79
|
// we create the channel so that the RTCPeerConnection has a component for
|
@@ -79,7 +89,7 @@ export async function initiateConnection ({ peerConnection, signal, metrics, mul
|
|
79
89
|
// see - https://www.w3.org/TR/webrtc/#rtcpeerconnectioniceevent
|
80
90
|
const data = JSON.stringify(candidate?.toJSON() ?? null)
|
81
91
|
|
82
|
-
log.trace('initiator sending ICE candidate %
|
92
|
+
log.trace('initiator sending ICE candidate %o', candidate)
|
83
93
|
|
84
94
|
void messageStream.write({
|
85
95
|
type: Message.Type.ICE_CANDIDATE,
|
@@ -142,17 +152,21 @@ export async function initiateConnection ({ peerConnection, signal, metrics, mul
|
|
142
152
|
log.trace('initiator connected, closing init channel')
|
143
153
|
channel.close()
|
144
154
|
|
145
|
-
log.trace('
|
146
|
-
await
|
155
|
+
log.trace('closing signalling channel')
|
156
|
+
await stream.close({
|
147
157
|
signal
|
148
158
|
})
|
149
159
|
|
150
160
|
log.trace('initiator connected to remote address %s', ma)
|
151
161
|
|
152
162
|
return {
|
153
|
-
remoteAddress: ma
|
163
|
+
remoteAddress: ma,
|
164
|
+
peerConnection,
|
165
|
+
muxerFactory
|
154
166
|
}
|
155
167
|
} catch (err: any) {
|
168
|
+
log.error('outgoing signalling error', err)
|
169
|
+
|
156
170
|
peerConnection.close()
|
157
171
|
stream.abort(err)
|
158
172
|
throw err
|