@libp2p/webrtc 5.2.24-6059227cb → 5.2.24-87bc8d4fb
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 +20 -10
- package/dist/index.min.js +18 -18
- package/dist/index.min.js.map +4 -4
- package/dist/src/constants.d.ts +23 -4
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +23 -4
- package/dist/src/constants.js.map +1 -1
- package/dist/src/index.d.ts +22 -20
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +22 -12
- package/dist/src/index.js.map +1 -1
- package/dist/src/maconn.d.ts +58 -0
- package/dist/src/maconn.d.ts.map +1 -0
- package/dist/src/maconn.js +56 -0
- package/dist/src/maconn.js.map +1 -0
- package/dist/src/muxer.d.ts +46 -14
- package/dist/src/muxer.d.ts.map +1 -1
- package/dist/src/muxer.js +138 -30
- package/dist/src/muxer.js.map +1 -1
- package/dist/src/private-to-private/initiate-connection.d.ts +3 -2
- package/dist/src/private-to-private/initiate-connection.d.ts.map +1 -1
- package/dist/src/private-to-private/initiate-connection.js +5 -37
- package/dist/src/private-to-private/initiate-connection.js.map +1 -1
- package/dist/src/private-to-private/signaling-stream-handler.d.ts +4 -4
- package/dist/src/private-to-private/signaling-stream-handler.d.ts.map +1 -1
- package/dist/src/private-to-private/signaling-stream-handler.js +7 -19
- package/dist/src/private-to-private/signaling-stream-handler.js.map +1 -1
- package/dist/src/private-to-private/transport.d.ts +9 -2
- package/dist/src/private-to-private/transport.d.ts.map +1 -1
- package/dist/src/private-to-private/transport.js +15 -30
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-private/util.d.ts +2 -3
- package/dist/src/private-to-private/util.d.ts.map +1 -1
- package/dist/src/private-to-private/util.js +14 -26
- package/dist/src/private-to-private/util.js.map +1 -1
- package/dist/src/private-to-public/listener.d.ts.map +1 -1
- package/dist/src/private-to-public/listener.js +15 -21
- package/dist/src/private-to-public/listener.js.map +1 -1
- package/dist/src/private-to-public/transport.d.ts +8 -0
- package/dist/src/private-to-public/transport.d.ts.map +1 -1
- package/dist/src/private-to-public/transport.js +2 -3
- package/dist/src/private-to-public/transport.js.map +1 -1
- package/dist/src/private-to-public/utils/connect.d.ts +1 -1
- package/dist/src/private-to-public/utils/connect.d.ts.map +1 -1
- package/dist/src/private-to-public/utils/connect.js +14 -17
- package/dist/src/private-to-public/utils/connect.js.map +1 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.d.ts +4 -4
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.d.ts.map +1 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.js +2 -13
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.js.map +1 -1
- package/dist/src/private-to-public/utils/sdp.d.ts.map +1 -1
- package/dist/src/private-to-public/utils/sdp.js +13 -25
- package/dist/src/private-to-public/utils/sdp.js.map +1 -1
- package/dist/src/private-to-public/utils/stun-listener.js +1 -1
- package/dist/src/private-to-public/utils/stun-listener.js.map +1 -1
- package/dist/src/stream.d.ts +26 -14
- package/dist/src/stream.d.ts.map +1 -1
- package/dist/src/stream.js +204 -134
- package/dist/src/stream.js.map +1 -1
- package/dist/src/util.d.ts +1 -3
- package/dist/src/util.d.ts.map +1 -1
- package/dist/src/util.js +0 -19
- package/dist/src/util.js.map +1 -1
- package/dist/src/webrtc/index.d.ts +1 -1
- package/dist/src/webrtc/index.d.ts.map +1 -1
- package/dist/src/webrtc/index.js +1 -1
- package/dist/src/webrtc/index.js.map +1 -1
- package/package.json +29 -26
- package/src/constants.ts +28 -5
- package/src/index.ts +22 -21
- package/src/maconn.ts +101 -0
- package/src/muxer.ts +169 -39
- package/src/private-to-private/initiate-connection.ts +8 -46
- package/src/private-to-private/signaling-stream-handler.ts +10 -23
- package/src/private-to-private/transport.ts +25 -33
- package/src/private-to-private/util.ts +16 -33
- package/src/private-to-public/listener.ts +15 -22
- package/src/private-to-public/transport.ts +12 -3
- package/src/private-to-public/utils/connect.ts +15 -18
- package/src/private-to-public/utils/get-rtcpeerconnection.ts +4 -16
- package/src/private-to-public/utils/sdp.ts +13 -29
- package/src/private-to-public/utils/stun-listener.ts +1 -1
- package/src/stream.ts +237 -153
- package/src/util.ts +1 -22
- package/src/webrtc/index.ts +1 -1
- package/dist/src/rtcpeerconnection-to-conn.d.ts +0 -12
- package/dist/src/rtcpeerconnection-to-conn.d.ts.map +0 -1
- package/dist/src/rtcpeerconnection-to-conn.js +0 -46
- package/dist/src/rtcpeerconnection-to-conn.js.map +0 -1
- package/src/rtcpeerconnection-to-conn.ts +0 -66
@@ -1,8 +1,8 @@
|
|
1
|
-
import { noise } from '@libp2p
|
2
|
-
import {
|
1
|
+
import { noise } from '@chainsafe/libp2p-noise';
|
2
|
+
import { raceEvent } from 'race-event';
|
3
3
|
import { WebRTCTransportError } from '../../error.js';
|
4
|
+
import { WebRTCMultiaddrConnection } from '../../maconn.js';
|
4
5
|
import { DataChannelMuxerFactory } from '../../muxer.js';
|
5
|
-
import { toMultiaddrConnection } from "../../rtcpeerconnection-to-conn.js";
|
6
6
|
import { createStream } from '../../stream.js';
|
7
7
|
import { isFirefox } from '../../util.js';
|
8
8
|
import { generateNoisePrologue } from './generate-noise-prologue.js';
|
@@ -48,7 +48,7 @@ export async function connect(peerConnection, ufrag, options) {
|
|
48
48
|
}
|
49
49
|
if (handshakeDataChannel.readyState !== 'open') {
|
50
50
|
options.log.trace('%s wait for handshake channel to open, starting status %s', options.role, handshakeDataChannel.readyState);
|
51
|
-
await
|
51
|
+
await raceEvent(handshakeDataChannel, 'open', options.signal);
|
52
52
|
}
|
53
53
|
options.log.trace('%s handshake channel opened', options.role);
|
54
54
|
if (options.role === 'server') {
|
@@ -74,18 +74,19 @@ export async function connect(peerConnection, ufrag, options) {
|
|
74
74
|
const handshakeStream = createStream({
|
75
75
|
channel: handshakeDataChannel,
|
76
76
|
direction: 'outbound',
|
77
|
-
|
77
|
+
handshake: true,
|
78
78
|
log: options.log,
|
79
79
|
...(options.dataChannel ?? {})
|
80
80
|
});
|
81
81
|
// Creating the connection before completion of the noise
|
82
82
|
// handshake ensures that the stream opening callback is set up
|
83
|
-
const maConn =
|
83
|
+
const maConn = new WebRTCMultiaddrConnection(options, {
|
84
84
|
peerConnection,
|
85
85
|
remoteAddr: options.remoteAddr,
|
86
|
-
|
87
|
-
|
88
|
-
|
86
|
+
timeline: {
|
87
|
+
open: Date.now()
|
88
|
+
},
|
89
|
+
metrics: options.events
|
89
90
|
});
|
90
91
|
peerConnection.addEventListener(CONNECTION_STATE_CHANGE_EVENT, () => {
|
91
92
|
switch (peerConnection.connectionState) {
|
@@ -103,8 +104,7 @@ export async function connect(peerConnection, ufrag, options) {
|
|
103
104
|
});
|
104
105
|
// Track opened peer connection
|
105
106
|
options.events?.increment({ peer_connection: true });
|
106
|
-
const muxerFactory = new DataChannelMuxerFactory({
|
107
|
-
// @ts-expect-error https://github.com/murat-dogan/node-datachannel/pull/370
|
107
|
+
const muxerFactory = new DataChannelMuxerFactory(options, {
|
108
108
|
peerConnection,
|
109
109
|
metrics: options.events,
|
110
110
|
dataChannelOptions: options.dataChannel
|
@@ -114,8 +114,8 @@ export async function connect(peerConnection, ufrag, options) {
|
|
114
114
|
// handshake. Therefore, we need to secure an inbound noise connection
|
115
115
|
// from the server.
|
116
116
|
options.log.trace('%s secure inbound', options.role);
|
117
|
-
|
118
|
-
remotePeer: options.
|
117
|
+
await connectionEncrypter.secureInbound(handshakeStream, {
|
118
|
+
remotePeer: options.remotePeerId,
|
119
119
|
signal: options.signal,
|
120
120
|
skipStreamMuxerNegotiation: true
|
121
121
|
});
|
@@ -123,7 +123,6 @@ export async function connect(peerConnection, ufrag, options) {
|
|
123
123
|
return await options.upgrader.upgradeOutbound(maConn, {
|
124
124
|
skipProtection: true,
|
125
125
|
skipEncryption: true,
|
126
|
-
remotePeer: result.remotePeer,
|
127
126
|
muxerFactory,
|
128
127
|
signal: options.signal
|
129
128
|
});
|
@@ -133,7 +132,7 @@ export async function connect(peerConnection, ufrag, options) {
|
|
133
132
|
// the client.
|
134
133
|
options.log.trace('%s secure outbound', options.role);
|
135
134
|
const result = await connectionEncrypter.secureOutbound(handshakeStream, {
|
136
|
-
remotePeer: options.
|
135
|
+
remotePeer: options.remotePeerId,
|
137
136
|
signal: options.signal,
|
138
137
|
skipStreamMuxerNegotiation: true
|
139
138
|
});
|
@@ -142,14 +141,12 @@ export async function connect(peerConnection, ufrag, options) {
|
|
142
141
|
await options.upgrader.upgradeInbound(maConn, {
|
143
142
|
skipProtection: true,
|
144
143
|
skipEncryption: true,
|
145
|
-
remotePeer: result.remotePeer,
|
146
144
|
muxerFactory,
|
147
145
|
signal: options.signal
|
148
146
|
});
|
149
147
|
}
|
150
148
|
catch (err) {
|
151
149
|
handshakeDataChannel.close();
|
152
|
-
peerConnection.close();
|
153
150
|
throw err;
|
154
151
|
}
|
155
152
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"connect.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/connect.ts"],"names":[],"mappings":"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"}
|
@@ -1,13 +1,13 @@
|
|
1
|
-
import { PeerConnection } from 'node-datachannel';
|
2
|
-
import { RTCPeerConnection } from 'node-datachannel/polyfill';
|
1
|
+
import { PeerConnection } from '@ipshipyard/node-datachannel';
|
2
|
+
import { RTCPeerConnection } from '@ipshipyard/node-datachannel/polyfill';
|
3
3
|
import type { TransportCertificate } from '../../index.js';
|
4
|
-
import type { CertificateFingerprint } from 'node-datachannel';
|
4
|
+
import type { CertificateFingerprint } from '@ipshipyard/node-datachannel';
|
5
5
|
interface DirectRTCPeerConnectionInit extends RTCConfiguration {
|
6
6
|
ufrag: string;
|
7
7
|
peerConnection: PeerConnection;
|
8
8
|
}
|
9
9
|
export declare class DirectRTCPeerConnection extends RTCPeerConnection {
|
10
|
-
private peerConnection;
|
10
|
+
private readonly peerConnection;
|
11
11
|
private readonly ufrag;
|
12
12
|
constructor(init: DirectRTCPeerConnectionInit);
|
13
13
|
createOffer(): Promise<globalThis.RTCSessionDescriptionInit | any>;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"get-rtcpeerconnection.d.ts","sourceRoot":"","sources":["../../../../src/private-to-public/utils/get-rtcpeerconnection.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"get-rtcpeerconnection.d.ts","sourceRoot":"","sources":["../../../../src/private-to-public/utils/get-rtcpeerconnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AAIzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AAI1E,UAAU,2BAA4B,SAAQ,gBAAgB;IAC5D,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,cAAc,CAAA;CAC/B;AAED,qBAAa,uBAAwB,SAAQ,iBAAiB;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAEjB,IAAI,EAAE,2BAA2B;IAOxC,WAAW,IAAK,OAAO,CAAC,UAAU,CAAC,yBAAyB,GAAG,GAAG,CAAC;IAYnE,YAAY,IAAK,OAAO,CAAC,UAAU,CAAC,yBAAyB,GAAG,GAAG,CAAC;IAY1E,iBAAiB,IAAK,sBAAsB;CAO7C;AAkBD,wBAAsB,6BAA6B,CAAE,IAAI,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA+B/P"}
|
@@ -1,6 +1,6 @@
|
|
1
|
+
import { PeerConnection } from '@ipshipyard/node-datachannel';
|
2
|
+
import { RTCPeerConnection } from '@ipshipyard/node-datachannel/polyfill';
|
1
3
|
import { Crypto } from '@peculiar/webcrypto';
|
2
|
-
import { PeerConnection } from 'node-datachannel';
|
3
|
-
import { RTCPeerConnection } from 'node-datachannel/polyfill';
|
4
4
|
import { DEFAULT_ICE_SERVERS, MAX_MESSAGE_SIZE } from '../../constants.js';
|
5
5
|
import { generateTransportCertificate } from './generate-certificates.js';
|
6
6
|
const crypto = new Crypto();
|
@@ -11,17 +11,6 @@ export class DirectRTCPeerConnection extends RTCPeerConnection {
|
|
11
11
|
super(init);
|
12
12
|
this.peerConnection = init.peerConnection;
|
13
13
|
this.ufrag = init.ufrag;
|
14
|
-
// make sure C++ peer connection is garbage collected
|
15
|
-
// https://github.com/murat-dogan/node-datachannel/issues/366#issuecomment-3228453155
|
16
|
-
this.addEventListener('connectionstatechange', () => {
|
17
|
-
switch (this.connectionState) {
|
18
|
-
case 'closed':
|
19
|
-
this.peerConnection.close();
|
20
|
-
break;
|
21
|
-
default:
|
22
|
-
break;
|
23
|
-
}
|
24
|
-
});
|
25
14
|
}
|
26
15
|
async createOffer() {
|
27
16
|
// have to set ufrag before creating offer
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"get-rtcpeerconnection.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/get-rtcpeerconnection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"get-rtcpeerconnection.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/get-rtcpeerconnection.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sdp.d.ts","sourceRoot":"","sources":["../../../../src/private-to-public/utils/sdp.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"sdp.d.ts","sourceRoot":"","sources":["../../../../src/private-to-public/utils/sdp.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAEpE;;GAEG;AAEH,eAAO,MAAM,gBAAgB,EAAE,GAAwE,CAAA;AAGvG,wBAAgB,qBAAqB,CAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAOlF;AAGD,wBAAgB,QAAQ,CAAE,EAAE,EAAE,SAAS,GAAG,MAAM,CAS/C;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAE,QAAQ,EAAE,MAAM,GAAG,eAAe,CAEjE;AAED,wBAAgB,qBAAqB,CAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAS/D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAE,EAAE,EAAE,SAAS,GAAG,MAAM,CAWrD;AAED,wBAAgB,cAAc,CAAE,WAAW,EAAE,MAAM,GAAG,SAAS,CAM9D;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAE,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAWtF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,yBAAyB,CA0BlG;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,yBAAyB,CAwBjG;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,MAAM,GAAG,yBAAyB,CAWhG"}
|
@@ -1,11 +1,10 @@
|
|
1
1
|
import { InvalidParametersError } from '@libp2p/interface';
|
2
|
-
import {
|
3
|
-
import { CODE_CERTHASH, multiaddr } from '@multiformats/multiaddr';
|
2
|
+
import { multiaddr } from '@multiformats/multiaddr';
|
4
3
|
import { base64url } from 'multiformats/bases/base64';
|
5
4
|
import { bases, digest } from 'multiformats/basics';
|
6
5
|
import * as Digest from 'multiformats/hashes/digest';
|
7
6
|
import { sha256 } from 'multiformats/hashes/sha2';
|
8
|
-
import { MAX_MESSAGE_SIZE } from '../../constants.js';
|
7
|
+
import { CODEC_CERTHASH, MAX_MESSAGE_SIZE } from '../../constants.js';
|
9
8
|
import { InvalidFingerprintError, UnsupportedHashAlgorithmError } from '../../error.js';
|
10
9
|
/**
|
11
10
|
* Get base2 | identity decoders
|
@@ -22,8 +21,8 @@ export function getFingerprintFromSdp(sdp) {
|
|
22
21
|
}
|
23
22
|
// Extract the certhash from a multiaddr
|
24
23
|
export function certhash(ma) {
|
25
|
-
const
|
26
|
-
const certhash =
|
24
|
+
const tups = ma.stringTuples();
|
25
|
+
const certhash = tups.filter((tup) => tup[0] === CODEC_CERTHASH).map((tup) => tup[1])[0];
|
27
26
|
if (certhash === undefined || certhash === '') {
|
28
27
|
throw new InvalidParametersError(`Couldn't find a certhash component of multiaddr: ${ma.toString()}`);
|
29
28
|
}
|
@@ -83,18 +82,15 @@ export function toSupportedHashFunction(code) {
|
|
83
82
|
* ice-lite mode and DTLS active mode.
|
84
83
|
*/
|
85
84
|
export function serverAnswerFromMultiaddr(ma, ufrag) {
|
86
|
-
const { host, port,
|
87
|
-
if (type !== 'ip4' && type !== 'ip6') {
|
88
|
-
throw new InvalidParametersError(`Multiaddr ${ma} was not an IPv4 or IPv6 address`);
|
89
|
-
}
|
85
|
+
const { host, port, family } = ma.toOptions();
|
90
86
|
const fingerprint = ma2Fingerprint(ma);
|
91
87
|
const sdp = `v=0
|
92
|
-
o=- 0 0 IN IP${
|
88
|
+
o=- 0 0 IN IP${family} ${host}
|
93
89
|
s=-
|
94
90
|
t=0 0
|
95
91
|
a=ice-lite
|
96
92
|
m=application ${port} UDP/DTLS/SCTP webrtc-datachannel
|
97
|
-
c=IN IP${
|
93
|
+
c=IN IP${family} ${host}
|
98
94
|
a=mid:0
|
99
95
|
a=ice-options:ice2
|
100
96
|
a=ice-ufrag:${ufrag}
|
@@ -115,14 +111,11 @@ a=end-of-candidates
|
|
115
111
|
* Create an offer SDP message from a multiaddr
|
116
112
|
*/
|
117
113
|
export function clientOfferFromMultiAddr(ma, ufrag) {
|
118
|
-
const { host, port,
|
119
|
-
if (type !== 'ip4' && type !== 'ip6') {
|
120
|
-
throw new InvalidParametersError(`Multiaddr ${ma} was not an IPv4 or IPv6 address`);
|
121
|
-
}
|
114
|
+
const { host, port, family } = ma.toOptions();
|
122
115
|
const sdp = `v=0
|
123
|
-
o=- 0 0 IN IP${
|
116
|
+
o=- 0 0 IN IP${family} ${host}
|
124
117
|
s=-
|
125
|
-
c=IN IP${
|
118
|
+
c=IN IP${family} ${host}
|
126
119
|
t=0 0
|
127
120
|
a=ice-options:ice2,trickle
|
128
121
|
m=application ${port} UDP/DTLS/SCTP webrtc-datachannel
|
@@ -149,14 +142,9 @@ export function munge(desc, ufrag) {
|
|
149
142
|
throw new InvalidParametersError("Can't munge a missing SDP");
|
150
143
|
}
|
151
144
|
const lineBreak = desc.sdp.includes('\r\n') ? '\r\n' : '\n';
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
.replace(/\na=ice-pwd:[^\n]*\n/, '\na=ice-pwd:' + ufrag + lineBreak);
|
156
|
-
}
|
157
|
-
catch {
|
158
|
-
// fails under Node.js
|
159
|
-
}
|
145
|
+
desc.sdp = desc.sdp
|
146
|
+
.replace(/\na=ice-ufrag:[^\n]*\n/, '\na=ice-ufrag:' + ufrag + lineBreak)
|
147
|
+
.replace(/\na=ice-pwd:[^\n]*\n/, '\na=ice-pwd:' + ufrag + lineBreak);
|
160
148
|
return desc;
|
161
149
|
}
|
162
150
|
//# sourceMappingURL=sdp.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"sdp.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/sdp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"sdp.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/sdp.ts"],"names":[],"mappings":"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"}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { isIPv4 } from '@chainsafe/is-ip';
|
2
|
-
import { IceUdpMuxListener } from 'node-datachannel';
|
2
|
+
import { IceUdpMuxListener } from '@ipshipyard/node-datachannel';
|
3
3
|
export async function stunListener(host, port, log, cb) {
|
4
4
|
const listener = new IceUdpMuxListener(port, host);
|
5
5
|
listener.onUnhandledStunRequest(request => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"stun-listener.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/stun-listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"stun-listener.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/stun-listener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAahE,MAAM,CAAC,KAAK,UAAU,YAAY,CAAE,IAAY,EAAE,IAAY,EAAE,GAAW,EAAE,EAAY;IACvF,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAClD,QAAQ,CAAC,sBAAsB,CAAC,OAAO,CAAC,EAAE;QACxC,IAAI,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAC1B,OAAM;QACR,CAAC;QAED,GAAG,CAAC,KAAK,CAAC,oCAAoC,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAA;QAE1F,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,QAAQ,CAAC,IAAI,EAAE,CAAA;QACjB,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;gBACtC,IAAI;aACL,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
package/dist/src/stream.d.ts
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
import { AbstractStream } from '@libp2p/utils';
|
1
|
+
import { AbstractStream } from '@libp2p/utils/abstract-stream';
|
2
2
|
import { Uint8ArrayList } from 'uint8arraylist';
|
3
3
|
import type { DataChannelOptions } from './index.js';
|
4
|
-
import type { AbortOptions,
|
5
|
-
import type { AbstractStreamInit
|
4
|
+
import type { AbortOptions, Direction, Logger } from '@libp2p/interface';
|
5
|
+
import type { AbstractStreamInit } from '@libp2p/utils/abstract-stream';
|
6
6
|
export interface WebRTCStreamInit extends AbstractStreamInit, DataChannelOptions {
|
7
7
|
/**
|
8
8
|
* The network channel used for bidirectional peer-to-peer transfers of
|
@@ -24,22 +24,30 @@ export declare class WebRTCStream extends AbstractStream {
|
|
24
24
|
*/
|
25
25
|
private readonly incomingData;
|
26
26
|
private readonly maxBufferedAmount;
|
27
|
-
private
|
28
|
-
|
27
|
+
private readonly bufferedAmountLowEventTimeout;
|
28
|
+
/**
|
29
|
+
* The maximum size of a message in bytes
|
30
|
+
*/
|
31
|
+
private readonly maxMessageSize;
|
32
|
+
/**
|
33
|
+
* When this promise is resolved, the remote has sent us a FIN flag
|
34
|
+
*/
|
35
|
+
private readonly receiveFinAck;
|
36
|
+
private readonly finAckTimeout;
|
37
|
+
private readonly openTimeout;
|
38
|
+
private readonly closeController;
|
29
39
|
constructor(init: WebRTCStreamInit);
|
30
40
|
sendNewStream(): void;
|
31
|
-
_sendMessage(data: Uint8ArrayList): void
|
32
|
-
sendData(data: Uint8ArrayList):
|
33
|
-
sendReset(
|
34
|
-
sendCloseWrite(options
|
35
|
-
sendCloseRead(
|
41
|
+
_sendMessage(data: Uint8ArrayList, checkBuffer?: boolean): Promise<void>;
|
42
|
+
sendData(data: Uint8ArrayList): Promise<void>;
|
43
|
+
sendReset(): Promise<void>;
|
44
|
+
sendCloseWrite(options: AbortOptions): Promise<void>;
|
45
|
+
sendCloseRead(): Promise<void>;
|
36
46
|
/**
|
37
47
|
* Handle incoming
|
38
48
|
*/
|
39
49
|
private processIncomingProtobuf;
|
40
50
|
private _sendFlag;
|
41
|
-
sendPause(): void;
|
42
|
-
sendResume(): void;
|
43
51
|
}
|
44
52
|
export interface WebRTCStreamOptions extends DataChannelOptions {
|
45
53
|
/**
|
@@ -52,7 +60,11 @@ export interface WebRTCStreamOptions extends DataChannelOptions {
|
|
52
60
|
/**
|
53
61
|
* The stream direction
|
54
62
|
*/
|
55
|
-
direction:
|
63
|
+
direction: Direction;
|
64
|
+
/**
|
65
|
+
* A callback invoked when the channel ends
|
66
|
+
*/
|
67
|
+
onEnd?(err?: Error | undefined): void;
|
56
68
|
/**
|
57
69
|
* The logger to create a scope from
|
58
70
|
*/
|
@@ -61,7 +73,7 @@ export interface WebRTCStreamOptions extends DataChannelOptions {
|
|
61
73
|
* If true the underlying datachannel is being used to perform the noise
|
62
74
|
* handshake during connection establishment
|
63
75
|
*/
|
64
|
-
|
76
|
+
handshake?: boolean;
|
65
77
|
}
|
66
78
|
export declare function createStream(options: WebRTCStreamOptions): WebRTCStream;
|
67
79
|
//# sourceMappingURL=stream.d.ts.map
|
package/dist/src/stream.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AAQ9D,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAG/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAIvE,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB,EAAE,kBAAkB;IAC9E;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,qBAAa,YAAa,SAAQ,cAAc;IAC9C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IAExC;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IAEnD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAE1C,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAQ;IAEtD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;IAEvC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;gBAEpC,IAAI,EAAE,gBAAgB;IA+HnC,aAAa,IAAK,IAAI;IAIhB,YAAY,CAAE,IAAI,EAAE,cAAc,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAoD/E,QAAQ,CAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB9C,SAAS,IAAK,OAAO,CAAC,IAAI,CAAC;IAU3B,cAAc,CAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BrD,aAAa,IAAK,OAAO,CAAC,IAAI,CAAC;IAQrC;;OAEG;IACH,OAAO,CAAC,uBAAuB;YAuCjB,SAAS;CAuBxB;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB;;OAEG;IACH,SAAS,EAAE,SAAS,CAAA;IAEpB;;OAEG;IACH,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI,CAAA;IAErC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAgB,YAAY,CAAE,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAQxE"}
|