@libp2p/webrtc 4.0.34 → 4.1.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/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 +12 -11
- 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
|
@@ -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":"AAAA,OAAO,EAAa,mBAAmB,EAAE,mBAAmB,EAAmB,MAAM,mBAAmB,CAAA;AACxG,OAAO,EAAE,KAAK,qBAAqB,EAAE,KAAK,WAAW,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAe,KAAK,UAAU,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAEjQ,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AASnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAIpH,eAAO,MAAM,kBAAkB,4BAA4B,CAAA;AAG3D,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAA;IAC1F,WAAW,CAAC,EAAE,kBAAkB,CAAA;IAEhC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC;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,iBAAiB,EAAE,iBAAiB,CAAA;IACpC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,YAAY,CAAA;IAC1B,cAAc,EAAE,YAAY,CAAA;CAC7B;AAED,qBAAa,eAAgB,YAAW,SAAS,EAAE,SAAS;IAOxD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAPvB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAiB;gBAGjC,UAAU,EAAE,yBAAyB,EACrC,IAAI,GAAE,mBAAwB;IAoBjD,QAAQ,CAAC,CAAC,eAAe,CAAC,QAAO;IAEjC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,oBAAmB;IAEhD,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAEvC;IAED,QAAQ,CAAC,CAAC,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAGvC;IAED,SAAS,IAAK,OAAO;IAIf,KAAK,IAAK,OAAO,CAAC,IAAI,CAAC;IASvB,IAAI,IAAK,OAAO,CAAC,IAAI,CAAC;IAK5B,cAAc,CAAE,OAAO,EAAE,qBAAqB,GAAG,QAAQ;IAMzD;;OAEG;IACH,YAAY,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAInD;;OAEG;IACH,UAAU,CAAE,UAAU,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE;IAW3C,IAAI,CAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAkC/D,WAAW,CAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8C7E,OAAO,CAAC,gBAAgB;CAezB;AAED,wBAAgB,SAAS,CAAE,EAAE,EAAE,SAAS,GAAG;IAAE,QAAQ,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA4BjF"}
|
|
@@ -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",
|
|
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": "^1.
|
|
55
|
-
"@libp2p/interface-internal": "^1.2.
|
|
56
|
-
"@libp2p/peer-id": "^4.1.
|
|
57
|
-
"@libp2p/utils": "^5.4.
|
|
54
|
+
"@libp2p/interface": "^1.5.0",
|
|
55
|
+
"@libp2p/interface-internal": "^1.2.4",
|
|
56
|
+
"@libp2p/peer-id": "^4.1.4",
|
|
57
|
+
"@libp2p/utils": "^5.4.4",
|
|
58
58
|
"@multiformats/mafmt": "^12.1.6",
|
|
59
59
|
"@multiformats/multiaddr": "^12.2.3",
|
|
60
60
|
"@multiformats/multiaddr-matcher": "^1.2.1",
|
|
@@ -77,11 +77,12 @@
|
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
79
|
"@chainsafe/libp2p-yamux": "^6.0.2",
|
|
80
|
-
"@libp2p/circuit-relay-v2": "^1.0
|
|
81
|
-
"@libp2p/
|
|
82
|
-
"@libp2p/
|
|
83
|
-
"@libp2p/
|
|
84
|
-
"@libp2p/
|
|
80
|
+
"@libp2p/circuit-relay-v2": "^1.1.0",
|
|
81
|
+
"@libp2p/identify": "^2.1.0",
|
|
82
|
+
"@libp2p/interface-compliance-tests": "^5.4.7",
|
|
83
|
+
"@libp2p/logger": "^4.0.15",
|
|
84
|
+
"@libp2p/peer-id-factory": "^4.1.4",
|
|
85
|
+
"@libp2p/websockets": "^8.1.0",
|
|
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": "^1.
|
|
95
|
+
"libp2p": "^1.7.0",
|
|
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
|