@libp2p/webrtc 5.2.4 → 5.2.5-0555339ba
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 +7 -7
- package/dist/src/constants.d.ts +58 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +77 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/index.d.ts +8 -6
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/muxer.d.ts.map +1 -1
- package/dist/src/muxer.js +3 -3
- package/dist/src/muxer.js.map +1 -1
- package/dist/src/private-to-private/initiate-connection.d.ts.map +1 -1
- package/dist/src/private-to-private/initiate-connection.js +3 -2
- package/dist/src/private-to-private/initiate-connection.js.map +1 -1
- package/dist/src/private-to-private/listener.d.ts +4 -1
- package/dist/src/private-to-private/listener.d.ts.map +1 -1
- package/dist/src/private-to-private/listener.js +14 -2
- package/dist/src/private-to-private/listener.js.map +1 -1
- package/dist/src/private-to-private/transport.d.ts +12 -3
- package/dist/src/private-to-private/transport.d.ts.map +1 -1
- package/dist/src/private-to-private/transport.js +5 -7
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.d.ts.map +1 -1
- package/dist/src/private-to-public/utils/get-rtcpeerconnection.js +1 -2
- 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 +1 -2
- package/dist/src/private-to-public/utils/sdp.js.map +1 -1
- package/dist/src/stream.d.ts +0 -33
- package/dist/src/stream.d.ts.map +1 -1
- package/dist/src/stream.js +1 -51
- package/dist/src/stream.js.map +1 -1
- package/dist/src/util.d.ts +0 -1
- package/dist/src/util.d.ts.map +1 -1
- package/dist/src/util.js +1 -2
- package/dist/src/util.js.map +1 -1
- package/package.json +8 -8
- package/src/constants.ts +91 -0
- package/src/index.ts +9 -6
- package/src/muxer.ts +3 -4
- package/src/private-to-private/initiate-connection.ts +3 -2
- package/src/private-to-private/listener.ts +20 -3
- package/src/private-to-private/transport.ts +18 -10
- package/src/private-to-public/utils/get-rtcpeerconnection.ts +1 -2
- package/src/private-to-public/utils/sdp.ts +1 -2
- package/src/stream.ts +1 -60
- package/src/util.ts +1 -3
- package/dist/typedoc-urls.json +0 -14
@@ -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"}
|
@@ -4,9 +4,8 @@ import { base64url } from 'multiformats/bases/base64';
|
|
4
4
|
import { bases, digest } from 'multiformats/basics';
|
5
5
|
import * as Digest from 'multiformats/hashes/digest';
|
6
6
|
import { sha256 } from 'multiformats/hashes/sha2';
|
7
|
-
import { CODEC_CERTHASH } from '../../constants.js';
|
7
|
+
import { CODEC_CERTHASH, MAX_MESSAGE_SIZE } from '../../constants.js';
|
8
8
|
import { InvalidFingerprintError, UnsupportedHashAlgorithmError } from '../../error.js';
|
9
|
-
import { MAX_MESSAGE_SIZE } from '../../stream.js';
|
10
9
|
/**
|
11
10
|
* Get base2 | identity decoders
|
12
11
|
*/
|
@@ -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,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,KAAK,MAAM,MAAM,4BAA4B,CAAA;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;
|
1
|
+
{"version":3,"file":"sdp.js","sourceRoot":"","sources":["../../../../src/private-to-public/utils/sdp.ts"],"names":[],"mappings":"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"}
|
package/dist/src/stream.d.ts
CHANGED
@@ -13,39 +13,6 @@ export interface WebRTCStreamInit extends AbstractStreamInit, DataChannelOptions
|
|
13
13
|
channel: RTCDataChannel;
|
14
14
|
logger: ComponentLogger;
|
15
15
|
}
|
16
|
-
/**
|
17
|
-
* How much can be buffered to the DataChannel at once
|
18
|
-
*/
|
19
|
-
export declare const MAX_BUFFERED_AMOUNT: number;
|
20
|
-
/**
|
21
|
-
* How long time we wait for the 'bufferedamountlow' event to be emitted
|
22
|
-
*/
|
23
|
-
export declare const BUFFERED_AMOUNT_LOW_TIMEOUT: number;
|
24
|
-
/**
|
25
|
-
* Max message size that can be sent to the DataChannel. In browsers this is
|
26
|
-
* 256KiB but go-libp2p and rust-libp2p only support 16KiB at the time of
|
27
|
-
* writing.
|
28
|
-
*
|
29
|
-
* @see https://blog.mozilla.org/webrtc/large-data-channel-messages/
|
30
|
-
* @see https://issues.webrtc.org/issues/40644524
|
31
|
-
*/
|
32
|
-
export declare const MAX_MESSAGE_SIZE: number;
|
33
|
-
/**
|
34
|
-
* The protobuf message overhead includes the maximum amount of all bytes in the
|
35
|
-
* protobuf that aren't message field bytes
|
36
|
-
*/
|
37
|
-
export declare const PROTOBUF_OVERHEAD: number;
|
38
|
-
/**
|
39
|
-
* When closing streams we send a FIN then wait for the remote to
|
40
|
-
* reply with a FIN_ACK. If that does not happen within this timeout
|
41
|
-
* we close the stream anyway.
|
42
|
-
*/
|
43
|
-
export declare const FIN_ACK_TIMEOUT = 5000;
|
44
|
-
/**
|
45
|
-
* When sending data messages, if the channel is not in the "open" state, wait
|
46
|
-
* this long for the "open" event to fire.
|
47
|
-
*/
|
48
|
-
export declare const OPEN_TIMEOUT = 5000;
|
49
16
|
export declare class WebRTCStream extends AbstractStream {
|
50
17
|
/**
|
51
18
|
* The data channel used to send and receive data
|
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,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAQvF,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAG/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAGjF,MAAM,WAAW,gBAAiB,SAAQ,kBAAkB,EAAE,kBAAkB;IAC9E;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB,MAAM,EAAE,eAAe,CAAA;CACxB;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;IA6HnC,aAAa,IAAK,IAAI;IAIhB,YAAY,CAAE,IAAI,EAAE,cAAc,EAAE,WAAW,GAAE,OAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAmD/E,QAAQ,CAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB9C,SAAS,IAAK,OAAO,CAAC,IAAI,CAAC;IAQ3B,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,MAAM,EAAE,eAAe,CAAA;CACxB;AAED,wBAAgB,YAAY,CAAE,OAAO,EAAE,mBAAmB,GAAG,YAAY,CAQxE"}
|
package/dist/src/stream.js
CHANGED
@@ -7,59 +7,9 @@ import pDefer from 'p-defer';
|
|
7
7
|
import pTimeout from 'p-timeout';
|
8
8
|
import { raceEvent } from 'race-event';
|
9
9
|
import { raceSignal } from 'race-signal';
|
10
|
-
import { encodingLength } from 'uint8-varint';
|
11
10
|
import { Uint8ArrayList } from 'uint8arraylist';
|
11
|
+
import { BUFFERED_AMOUNT_LOW_TIMEOUT, FIN_ACK_TIMEOUT, MAX_BUFFERED_AMOUNT, MAX_MESSAGE_SIZE, OPEN_TIMEOUT, PROTOBUF_OVERHEAD } from './constants.js';
|
12
12
|
import { Message } from './private-to-public/pb/message.js';
|
13
|
-
/**
|
14
|
-
* How much can be buffered to the DataChannel at once
|
15
|
-
*/
|
16
|
-
export const MAX_BUFFERED_AMOUNT = 2 * 1024 * 1024;
|
17
|
-
/**
|
18
|
-
* How long time we wait for the 'bufferedamountlow' event to be emitted
|
19
|
-
*/
|
20
|
-
export const BUFFERED_AMOUNT_LOW_TIMEOUT = 30 * 1000;
|
21
|
-
/**
|
22
|
-
* Max message size that can be sent to the DataChannel. In browsers this is
|
23
|
-
* 256KiB but go-libp2p and rust-libp2p only support 16KiB at the time of
|
24
|
-
* writing.
|
25
|
-
*
|
26
|
-
* @see https://blog.mozilla.org/webrtc/large-data-channel-messages/
|
27
|
-
* @see https://issues.webrtc.org/issues/40644524
|
28
|
-
*/
|
29
|
-
export const MAX_MESSAGE_SIZE = 16 * 1024;
|
30
|
-
/**
|
31
|
-
* max protobuf overhead:
|
32
|
-
*
|
33
|
-
* ```
|
34
|
-
* [message-length][flag-field-id+type][flag-field-length][flag-field][message-field-id+type][message-field-length][message-field]
|
35
|
-
* ```
|
36
|
-
*/
|
37
|
-
function calculateProtobufOverhead(maxMessageSize = MAX_MESSAGE_SIZE) {
|
38
|
-
// these have a fixed size
|
39
|
-
const messageLength = encodingLength(maxMessageSize - encodingLength(maxMessageSize));
|
40
|
-
const flagField = 1 + encodingLength(Object.keys(Message.Flag).length - 1); // id+type/value
|
41
|
-
const messageFieldIdType = 1; // id+type
|
42
|
-
const available = maxMessageSize - messageLength - flagField - messageFieldIdType;
|
43
|
-
// let message-length/message-data fill the rest of the message
|
44
|
-
const messageFieldLengthLength = encodingLength(available);
|
45
|
-
return messageLength + flagField + messageFieldIdType + messageFieldLengthLength;
|
46
|
-
}
|
47
|
-
/**
|
48
|
-
* The protobuf message overhead includes the maximum amount of all bytes in the
|
49
|
-
* protobuf that aren't message field bytes
|
50
|
-
*/
|
51
|
-
export const PROTOBUF_OVERHEAD = calculateProtobufOverhead();
|
52
|
-
/**
|
53
|
-
* When closing streams we send a FIN then wait for the remote to
|
54
|
-
* reply with a FIN_ACK. If that does not happen within this timeout
|
55
|
-
* we close the stream anyway.
|
56
|
-
*/
|
57
|
-
export const FIN_ACK_TIMEOUT = 5000;
|
58
|
-
/**
|
59
|
-
* When sending data messages, if the channel is not in the "open" state, wait
|
60
|
-
* this long for the "open" event to fire.
|
61
|
-
*/
|
62
|
-
export const OPEN_TIMEOUT = 5000;
|
63
13
|
export class WebRTCStream extends AbstractStream {
|
64
14
|
/**
|
65
15
|
* The data channel used to send and receive data
|
package/dist/src/stream.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/stream.ts"],"names":[],"mappings":"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"}
|
package/dist/src/util.d.ts
CHANGED
@@ -4,7 +4,6 @@ import type { LoggerOptions } from '@libp2p/interface';
|
|
4
4
|
export declare const isFirefox: boolean;
|
5
5
|
export declare const nopSource: () => AsyncGenerator<Uint8Array, any, unknown>;
|
6
6
|
export declare const nopSink: (_: any) => Promise<void>;
|
7
|
-
export declare const DATA_CHANNEL_DRAIN_TIMEOUT: number;
|
8
7
|
export declare function drainAndClose(channel: RTCDataChannel, direction: string, drainTimeout: number | undefined, options: LoggerOptions): void;
|
9
8
|
export interface AbortPromiseOptions {
|
10
9
|
signal?: AbortSignal;
|
package/dist/src/util.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGtD,eAAO,MAAM,SAAS,SAAoD,CAAA;AAE1E,eAAO,MAAM,SAAS,QAA4B,eAAe,UAAU,EAAE,GAAG,EAAE,OAAO,CAAI,CAAA;AAE7F,eAAO,MAAM,OAAO,MAAa,GAAG,KAAG,QAAQ,IAAI,CAAO,CAAA;AAE1D,
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAGtD,eAAO,MAAM,SAAS,SAAoD,CAAA;AAE1E,eAAO,MAAM,SAAS,QAA4B,eAAe,UAAU,EAAE,GAAG,EAAE,OAAO,CAAI,CAAA;AAE7F,eAAO,MAAM,OAAO,MAAa,GAAG,KAAG,QAAQ,IAAI,CAAO,CAAA;AAE1D,wBAAgB,aAAa,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,oBAAqC,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CA8C1J;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,wBAAgB,gBAAgB,CAAE,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,cAAc,CAEjE;AAED,wBAAsB,mBAAmB,CAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CActJ;AAED,eAAO,MAAM,QAAQ,SAAS,MAAM,KAAQ,MAE3C,CAAA"}
|
package/dist/src/util.js
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
import { detect } from 'detect-browser';
|
2
2
|
import pDefer from 'p-defer';
|
3
3
|
import pTimeout from 'p-timeout';
|
4
|
-
import { DEFAULT_ICE_SERVERS, UFRAG_ALPHABET, UFRAG_PREFIX } from './constants.js';
|
4
|
+
import { DATA_CHANNEL_DRAIN_TIMEOUT, DEFAULT_ICE_SERVERS, UFRAG_ALPHABET, UFRAG_PREFIX } from './constants.js';
|
5
5
|
const browser = detect();
|
6
6
|
export const isFirefox = ((browser != null) && browser.name === 'firefox');
|
7
7
|
export const nopSource = async function* nop() { };
|
8
8
|
export const nopSink = async (_) => { };
|
9
|
-
export const DATA_CHANNEL_DRAIN_TIMEOUT = 30 * 1000;
|
10
9
|
export function drainAndClose(channel, direction, drainTimeout = DATA_CHANNEL_DRAIN_TIMEOUT, options) {
|
11
10
|
if (channel.readyState !== 'open') {
|
12
11
|
return;
|
package/dist/src/util.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,QAAQ,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@libp2p/webrtc",
|
3
|
-
"version": "5.2.
|
3
|
+
"version": "5.2.5-0555339ba",
|
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",
|
@@ -54,10 +54,10 @@
|
|
54
54
|
"@chainsafe/is-ip": "^2.0.2",
|
55
55
|
"@chainsafe/libp2p-noise": "^16.0.0",
|
56
56
|
"@ipshipyard/node-datachannel": "^0.26.4",
|
57
|
-
"@libp2p/interface": "
|
58
|
-
"@libp2p/interface-internal": "
|
59
|
-
"@libp2p/peer-id": "
|
60
|
-
"@libp2p/utils": "
|
57
|
+
"@libp2p/interface": "2.6.1-0555339ba",
|
58
|
+
"@libp2p/interface-internal": "2.3.5-0555339ba",
|
59
|
+
"@libp2p/peer-id": "5.0.14-0555339ba",
|
60
|
+
"@libp2p/utils": "6.5.5-0555339ba",
|
61
61
|
"@multiformats/multiaddr": "^12.4.0",
|
62
62
|
"@multiformats/multiaddr-matcher": "^1.6.0",
|
63
63
|
"@peculiar/webcrypto": "^1.5.0",
|
@@ -83,9 +83,9 @@
|
|
83
83
|
"uint8arrays": "^5.1.0"
|
84
84
|
},
|
85
85
|
"devDependencies": {
|
86
|
-
"@libp2p/crypto": "
|
87
|
-
"@libp2p/interface-compliance-tests": "
|
88
|
-
"@libp2p/logger": "
|
86
|
+
"@libp2p/crypto": "5.0.13-0555339ba",
|
87
|
+
"@libp2p/interface-compliance-tests": "6.3.6-0555339ba",
|
88
|
+
"@libp2p/logger": "5.1.10-0555339ba",
|
89
89
|
"@types/sinon": "^17.0.3",
|
90
90
|
"aegir": "^45.1.1",
|
91
91
|
"delay": "^6.0.0",
|
package/src/constants.ts
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
import { encodingLength } from 'uint8-varint'
|
2
|
+
import { Message } from './private-to-public/pb/message.js'
|
3
|
+
|
1
4
|
/**
|
2
5
|
* STUN servers help clients discover their own public IPs.
|
3
6
|
*
|
@@ -13,9 +16,97 @@ export const DEFAULT_ICE_SERVERS = [
|
|
13
16
|
'stun:stun.services.mozilla.com:3478'
|
14
17
|
]
|
15
18
|
|
19
|
+
/**
|
20
|
+
* Characters that can be present in a ufrag
|
21
|
+
*/
|
16
22
|
export const UFRAG_ALPHABET = Array.from('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890')
|
17
23
|
|
24
|
+
/**
|
25
|
+
* Used to detect the version of the WebRTC Direct connection protocol in use
|
26
|
+
*/
|
18
27
|
export const UFRAG_PREFIX = 'libp2p+webrtc+v1/'
|
19
28
|
|
29
|
+
/**
|
30
|
+
* The multicodec code for webrtc-direct tuples
|
31
|
+
*/
|
20
32
|
export const CODEC_WEBRTC_DIRECT = 0x0118
|
33
|
+
|
34
|
+
/**
|
35
|
+
* The multicodec code for certhash tuples
|
36
|
+
*/
|
21
37
|
export const CODEC_CERTHASH = 0x01d2
|
38
|
+
|
39
|
+
/**
|
40
|
+
* How much can be buffered to the DataChannel at once
|
41
|
+
*/
|
42
|
+
export const MAX_BUFFERED_AMOUNT = 2 * 1024 * 1024
|
43
|
+
|
44
|
+
/**
|
45
|
+
* How long time we wait for the 'bufferedamountlow' event to be emitted
|
46
|
+
*/
|
47
|
+
export const BUFFERED_AMOUNT_LOW_TIMEOUT = 30 * 1000
|
48
|
+
|
49
|
+
/**
|
50
|
+
* Max message size that can be sent to the DataChannel. In browsers this is
|
51
|
+
* 256KiB but go-libp2p and rust-libp2p only support 16KiB at the time of
|
52
|
+
* writing.
|
53
|
+
*
|
54
|
+
* @see https://blog.mozilla.org/webrtc/large-data-channel-messages/
|
55
|
+
* @see https://issues.webrtc.org/issues/40644524
|
56
|
+
*/
|
57
|
+
export const MAX_MESSAGE_SIZE = 16 * 1024
|
58
|
+
|
59
|
+
/**
|
60
|
+
* max protobuf overhead:
|
61
|
+
*
|
62
|
+
* ```
|
63
|
+
* [message-length][flag-field-id+type][flag-field-length][flag-field][message-field-id+type][message-field-length][message-field]
|
64
|
+
* ```
|
65
|
+
*/
|
66
|
+
function calculateProtobufOverhead (maxMessageSize = MAX_MESSAGE_SIZE): number {
|
67
|
+
// these have a fixed size
|
68
|
+
const messageLength = encodingLength(maxMessageSize - encodingLength(maxMessageSize))
|
69
|
+
const flagField = 1 + encodingLength(Object.keys(Message.Flag).length - 1) // id+type/value
|
70
|
+
const messageFieldIdType = 1 // id+type
|
71
|
+
const available = maxMessageSize - messageLength - flagField - messageFieldIdType
|
72
|
+
|
73
|
+
// let message-length/message-data fill the rest of the message
|
74
|
+
const messageFieldLengthLength = encodingLength(available)
|
75
|
+
|
76
|
+
return messageLength + flagField + messageFieldIdType + messageFieldLengthLength
|
77
|
+
}
|
78
|
+
|
79
|
+
/**
|
80
|
+
* The protobuf message overhead includes the maximum amount of all bytes in the
|
81
|
+
* protobuf that aren't message field bytes
|
82
|
+
*/
|
83
|
+
export const PROTOBUF_OVERHEAD = calculateProtobufOverhead()
|
84
|
+
|
85
|
+
/**
|
86
|
+
* When closing streams we send a FIN then wait for the remote to
|
87
|
+
* reply with a FIN_ACK. If that does not happen within this timeout
|
88
|
+
* we close the stream anyway.
|
89
|
+
*/
|
90
|
+
export const FIN_ACK_TIMEOUT = 5_000
|
91
|
+
|
92
|
+
/**
|
93
|
+
* When sending data messages, if the channel is not in the "open" state, wait
|
94
|
+
* this long for the "open" event to fire.
|
95
|
+
*/
|
96
|
+
export const OPEN_TIMEOUT = 5_000
|
97
|
+
|
98
|
+
/**
|
99
|
+
* When closing a stream, we wait for `bufferedAmount` to become 0 before
|
100
|
+
* closing the underlying RTCDataChannel - this controls how long we wait in ms
|
101
|
+
*/
|
102
|
+
export const DATA_CHANNEL_DRAIN_TIMEOUT = 30_1000
|
103
|
+
|
104
|
+
/**
|
105
|
+
* Set as the 'negotiated' muxer protocol name
|
106
|
+
*/
|
107
|
+
export const MUXER_PROTOCOL = '/webrtc'
|
108
|
+
|
109
|
+
/**
|
110
|
+
* The protocol used for the signalling stream protocol
|
111
|
+
*/
|
112
|
+
export const SIGNALING_PROTOCOL = '/webrtc-signaling/0.0.1'
|
package/src/index.ts
CHANGED
@@ -215,9 +215,9 @@ import type { Transport } from '@libp2p/interface'
|
|
215
215
|
|
216
216
|
export interface DataChannelOptions {
|
217
217
|
/**
|
218
|
-
* The maximum message size
|
218
|
+
* The maximum message size to be sent over the channel in bytes
|
219
219
|
*
|
220
|
-
* @default
|
220
|
+
* @default 16_384
|
221
221
|
*/
|
222
222
|
maxMessageSize?: number
|
223
223
|
|
@@ -225,7 +225,7 @@ export interface DataChannelOptions {
|
|
225
225
|
* If the channel's `bufferedAmount` grows over this amount in bytes, wait
|
226
226
|
* for it to drain before sending more data
|
227
227
|
*
|
228
|
-
* @default
|
228
|
+
* @default 16_777_216
|
229
229
|
*/
|
230
230
|
maxBufferedAmount?: number
|
231
231
|
|
@@ -234,7 +234,7 @@ export interface DataChannelOptions {
|
|
234
234
|
* the `bufferedAmountLow` event fires - this controls how long we wait for
|
235
235
|
* that event in ms
|
236
236
|
*
|
237
|
-
* @default
|
237
|
+
* @default 30_000
|
238
238
|
*/
|
239
239
|
bufferedAmountLowEventTimeout?: number
|
240
240
|
|
@@ -243,7 +243,7 @@ export interface DataChannelOptions {
|
|
243
243
|
* closing the underlying RTCDataChannel - this controls how long we wait
|
244
244
|
* in ms
|
245
245
|
*
|
246
|
-
* @default
|
246
|
+
* @default 30_000
|
247
247
|
*/
|
248
248
|
drainTimeout?: number
|
249
249
|
|
@@ -252,13 +252,15 @@ export interface DataChannelOptions {
|
|
252
252
|
* for a FIN_ACK reply before closing the underlying RTCDataChannel - this
|
253
253
|
* controls how long we wait for the acknowledgement in ms
|
254
254
|
*
|
255
|
-
* @default
|
255
|
+
* @default 5_000
|
256
256
|
*/
|
257
257
|
closeTimeout?: number
|
258
258
|
|
259
259
|
/**
|
260
260
|
* When sending the first data message, if the channel is not in the "open"
|
261
261
|
* state, wait this long for the "open" event to fire.
|
262
|
+
*
|
263
|
+
* @default 5_000
|
262
264
|
*/
|
263
265
|
openTimeout?: number
|
264
266
|
}
|
@@ -271,6 +273,7 @@ export interface TransportCertificate {
|
|
271
273
|
* The private key for the certificate in PEM format
|
272
274
|
*/
|
273
275
|
privateKey: string
|
276
|
+
|
274
277
|
/**
|
275
278
|
* PEM format certificate
|
276
279
|
*/
|
package/src/muxer.ts
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
import { MUXER_PROTOCOL } from './constants.js'
|
1
2
|
import { createStream } from './stream.js'
|
2
3
|
import { drainAndClose, nopSink, nopSource } from './util.js'
|
3
4
|
import type { DataChannelOptions } from './index.js'
|
@@ -7,8 +8,6 @@ import type { AbortOptions } from '@multiformats/multiaddr'
|
|
7
8
|
import type { Source, Sink } from 'it-stream-types'
|
8
9
|
import type { Uint8ArrayList } from 'uint8arraylist'
|
9
10
|
|
10
|
-
const PROTOCOL = '/webrtc'
|
11
|
-
|
12
11
|
export interface DataChannelMuxerFactoryInit {
|
13
12
|
/**
|
14
13
|
* WebRTC Peer Connection
|
@@ -55,7 +54,7 @@ export class DataChannelMuxerFactory implements StreamMuxerFactory {
|
|
55
54
|
this.components = components
|
56
55
|
this.peerConnection = init.peerConnection
|
57
56
|
this.metrics = init.metrics
|
58
|
-
this.protocol = init.protocol ??
|
57
|
+
this.protocol = init.protocol ?? MUXER_PROTOCOL
|
59
58
|
this.dataChannelOptions = init.dataChannelOptions ?? {}
|
60
59
|
this.log = components.logger.forComponent('libp2p:webrtc:muxerfactory')
|
61
60
|
|
@@ -135,7 +134,7 @@ export class DataChannelMuxer implements StreamMuxer {
|
|
135
134
|
this.logger = components.logger
|
136
135
|
this.streams = init.streams.map(s => s.stream)
|
137
136
|
this.peerConnection = init.peerConnection
|
138
|
-
this.protocol = init.protocol ??
|
137
|
+
this.protocol = init.protocol ?? MUXER_PROTOCOL
|
139
138
|
this.metrics = init.metrics
|
140
139
|
this.dataChannelOptions = init.dataChannelOptions ?? {}
|
141
140
|
|
@@ -2,11 +2,12 @@ import { InvalidParametersError } from '@libp2p/interface'
|
|
2
2
|
import { peerIdFromString } from '@libp2p/peer-id'
|
3
3
|
import { pbStream } from 'it-protobuf-stream'
|
4
4
|
import { CustomProgressEvent } from 'progress-events'
|
5
|
+
import { SIGNALING_PROTOCOL } from '../constants.js'
|
5
6
|
import { SDPHandshakeFailedError } from '../error.js'
|
6
7
|
import { DataChannelMuxerFactory } from '../muxer.js'
|
7
8
|
import { RTCPeerConnection, RTCSessionDescription } from '../webrtc/index.js'
|
8
9
|
import { Message } from './pb/message.js'
|
9
|
-
import {
|
10
|
+
import { splitAddr, type WebRTCDialEvents, type WebRTCTransportMetrics } from './transport.js'
|
10
11
|
import { readCandidatesUntilConnected } from './util.js'
|
11
12
|
import type { DataChannelOptions } from '../index.js'
|
12
13
|
import type { LoggerOptions, Connection, ComponentLogger, IncomingStreamData } from '@libp2p/interface'
|
@@ -71,7 +72,7 @@ export async function initiateConnection ({ rtcConfiguration, dataChannel, signa
|
|
71
72
|
try {
|
72
73
|
onProgress?.(new CustomProgressEvent('webrtc:open-signaling-stream'))
|
73
74
|
|
74
|
-
const stream = await connection.newStream(
|
75
|
+
const stream = await connection.newStream(SIGNALING_PROTOCOL, {
|
75
76
|
signal,
|
76
77
|
runOnLimitedConnection: true
|
77
78
|
})
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import { TypedEventEmitter } from '@libp2p/interface'
|
2
2
|
import { P2P } from '@multiformats/multiaddr-matcher'
|
3
3
|
import { fmt, literal } from '@multiformats/multiaddr-matcher/utils'
|
4
|
-
import type { PeerId, ListenerEvents, Listener } from '@libp2p/interface'
|
4
|
+
import type { PeerId, ListenerEvents, Listener, Libp2pEvents, TypedEventTarget } from '@libp2p/interface'
|
5
5
|
import type { TransportManager } from '@libp2p/interface-internal'
|
6
6
|
import type { Multiaddr } from '@multiformats/multiaddr'
|
7
7
|
|
@@ -10,6 +10,7 @@ const Circuit = fmt(P2P.matchers[0], literal('p2p-circuit'))
|
|
10
10
|
export interface WebRTCPeerListenerComponents {
|
11
11
|
peerId: PeerId
|
12
12
|
transportManager: TransportManager
|
13
|
+
events: TypedEventTarget<Libp2pEvents>
|
13
14
|
}
|
14
15
|
|
15
16
|
export interface WebRTCPeerListenerInit {
|
@@ -19,18 +20,32 @@ export interface WebRTCPeerListenerInit {
|
|
19
20
|
export class WebRTCPeerListener extends TypedEventEmitter<ListenerEvents> implements Listener {
|
20
21
|
private readonly transportManager: TransportManager
|
21
22
|
private readonly shutdownController: AbortController
|
23
|
+
private readonly events: TypedEventTarget<Libp2pEvents>
|
22
24
|
|
23
25
|
constructor (components: WebRTCPeerListenerComponents, init: WebRTCPeerListenerInit) {
|
24
26
|
super()
|
25
27
|
|
26
28
|
this.transportManager = components.transportManager
|
29
|
+
this.events = components.events
|
27
30
|
this.shutdownController = init.shutdownController
|
31
|
+
|
32
|
+
this.onTransportListening = this.onTransportListening.bind(this)
|
28
33
|
}
|
29
34
|
|
30
35
|
async listen (): Promise<void> {
|
31
|
-
|
36
|
+
this.events.addEventListener('transport:listening', this.onTransportListening)
|
37
|
+
}
|
38
|
+
|
39
|
+
onTransportListening (event: CustomEvent<Listener>): void {
|
40
|
+
const circuitAddresses = event.detail.getAddrs()
|
41
|
+
.filter(ma => Circuit.exactMatch(ma))
|
42
|
+
.map(ma => {
|
43
|
+
return ma.encapsulate('/webrtc')
|
44
|
+
})
|
45
|
+
|
46
|
+
if (circuitAddresses.length > 0) {
|
32
47
|
this.safeDispatchEvent('listening')
|
33
|
-
}
|
48
|
+
}
|
34
49
|
}
|
35
50
|
|
36
51
|
getAddrs (): Multiaddr[] {
|
@@ -51,6 +66,8 @@ export class WebRTCPeerListener extends TypedEventEmitter<ListenerEvents> implem
|
|
51
66
|
}
|
52
67
|
|
53
68
|
async close (): Promise<void> {
|
69
|
+
this.events.removeEventListener('transport:listening', this.onTransportListening)
|
70
|
+
|
54
71
|
this.shutdownController.abort()
|
55
72
|
queueMicrotask(() => {
|
56
73
|
this.safeDispatchEvent('close')
|