@libp2p/webrtc 5.2.24-87bc8d4fb → 5.2.24-9a9b11fd4
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 +10 -20
- package/dist/index.min.js +18 -18
- package/dist/index.min.js.map +4 -4
- package/dist/src/constants.d.ts +4 -23
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +4 -23
- package/dist/src/constants.js.map +1 -1
- package/dist/src/index.d.ts +20 -22
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -22
- package/dist/src/index.js.map +1 -1
- package/dist/src/muxer.d.ts +14 -46
- package/dist/src/muxer.d.ts.map +1 -1
- package/dist/src/muxer.js +30 -138
- package/dist/src/muxer.js.map +1 -1
- package/dist/src/private-to-private/initiate-connection.d.ts +2 -3
- package/dist/src/private-to-private/initiate-connection.d.ts.map +1 -1
- package/dist/src/private-to-private/initiate-connection.js +37 -5
- 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 +19 -7
- package/dist/src/private-to-private/signaling-stream-handler.js.map +1 -1
- package/dist/src/private-to-private/transport.d.ts +2 -9
- package/dist/src/private-to-private/transport.d.ts.map +1 -1
- package/dist/src/private-to-private/transport.js +30 -15
- package/dist/src/private-to-private/transport.js.map +1 -1
- package/dist/src/private-to-private/util.d.ts +3 -2
- package/dist/src/private-to-private/util.d.ts.map +1 -1
- package/dist/src/private-to-private/util.js +26 -14
- 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 +21 -15
- package/dist/src/private-to-public/listener.js.map +1 -1
- package/dist/src/private-to-public/transport.d.ts +0 -8
- package/dist/src/private-to-public/transport.d.ts.map +1 -1
- package/dist/src/private-to-public/transport.js +3 -2
- 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 +17 -14
- 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 +13 -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 +25 -13
- 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/rtcpeerconnection-to-conn.d.ts +12 -0
- package/dist/src/rtcpeerconnection-to-conn.d.ts.map +1 -0
- package/dist/src/rtcpeerconnection-to-conn.js +46 -0
- package/dist/src/rtcpeerconnection-to-conn.js.map +1 -0
- package/dist/src/stream.d.ts +14 -26
- package/dist/src/stream.d.ts.map +1 -1
- package/dist/src/stream.js +134 -204
- package/dist/src/stream.js.map +1 -1
- package/dist/src/util.d.ts +3 -1
- package/dist/src/util.d.ts.map +1 -1
- package/dist/src/util.js +19 -0
- 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 +26 -29
- package/src/constants.ts +5 -28
- package/src/index.ts +21 -22
- package/src/muxer.ts +39 -169
- package/src/private-to-private/initiate-connection.ts +46 -8
- package/src/private-to-private/signaling-stream-handler.ts +23 -10
- package/src/private-to-private/transport.ts +33 -25
- package/src/private-to-private/util.ts +33 -16
- package/src/private-to-public/listener.ts +22 -15
- package/src/private-to-public/transport.ts +3 -12
- package/src/private-to-public/utils/connect.ts +18 -15
- package/src/private-to-public/utils/get-rtcpeerconnection.ts +16 -4
- package/src/private-to-public/utils/sdp.ts +29 -13
- package/src/private-to-public/utils/stun-listener.ts +1 -1
- package/src/rtcpeerconnection-to-conn.ts +66 -0
- package/src/stream.ts +153 -237
- package/src/util.ts +22 -1
- package/src/webrtc/index.ts +1 -1
- package/dist/src/maconn.d.ts +0 -58
- package/dist/src/maconn.d.ts.map +0 -1
- package/dist/src/maconn.js +0 -56
- package/dist/src/maconn.js.map +0 -1
- package/src/maconn.ts +0 -101
@@ -0,0 +1,46 @@
|
|
1
|
+
import { AbstractMultiaddrConnection } from '@libp2p/utils';
|
2
|
+
class RTCPeerConnectionMultiaddrConnection extends AbstractMultiaddrConnection {
|
3
|
+
peerConnection;
|
4
|
+
constructor(init) {
|
5
|
+
super(init);
|
6
|
+
this.peerConnection = init.peerConnection;
|
7
|
+
const initialState = init.peerConnection.connectionState;
|
8
|
+
this.peerConnection.onconnectionstatechange = () => {
|
9
|
+
this.log.trace('peer connection state change %s initial state %s', this.peerConnection.connectionState, initialState);
|
10
|
+
if (this.peerConnection.connectionState === 'disconnected' || this.peerConnection.connectionState === 'failed' || this.peerConnection.connectionState === 'closed') {
|
11
|
+
// nothing else to do but close the connection
|
12
|
+
this.onTransportClosed();
|
13
|
+
// only necessary with node-datachannel
|
14
|
+
// https://github.com/murat-dogan/node-datachannel/issues/366#issuecomment-3228453155
|
15
|
+
this.peerConnection.close();
|
16
|
+
}
|
17
|
+
};
|
18
|
+
}
|
19
|
+
sendData(data) {
|
20
|
+
return {
|
21
|
+
sentBytes: data.byteLength,
|
22
|
+
canSendMore: true
|
23
|
+
};
|
24
|
+
}
|
25
|
+
async sendClose(options) {
|
26
|
+
this.peerConnection.close();
|
27
|
+
options?.signal?.throwIfAborted();
|
28
|
+
}
|
29
|
+
sendReset() {
|
30
|
+
this.peerConnection.close();
|
31
|
+
}
|
32
|
+
sendPause() {
|
33
|
+
// TODO: readable backpressure?
|
34
|
+
}
|
35
|
+
sendResume() {
|
36
|
+
// TODO: readable backpressure?
|
37
|
+
}
|
38
|
+
}
|
39
|
+
/**
|
40
|
+
* Convert a RTCPeerConnection into a MultiaddrConnection
|
41
|
+
* https://github.com/libp2p/interface-transport#multiaddrconnection
|
42
|
+
*/
|
43
|
+
export const toMultiaddrConnection = (init) => {
|
44
|
+
return new RTCPeerConnectionMultiaddrConnection(init);
|
45
|
+
};
|
46
|
+
//# sourceMappingURL=rtcpeerconnection-to-conn.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"rtcpeerconnection-to-conn.js","sourceRoot":"","sources":["../../src/rtcpeerconnection-to-conn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAA;AAU3D,MAAM,oCAAqC,SAAQ,2BAA2B;IACpE,cAAc,CAAmB;IAEzC,YAAa,IAA8C;QACzD,KAAK,CAAC,IAAI,CAAC,CAAA;QAEX,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAA;QAEzC,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAA;QAExD,IAAI,CAAC,cAAc,CAAC,uBAAuB,GAAG,GAAG,EAAE;YACjD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,kDAAkD,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,YAAY,CAAC,CAAA;YAErH,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;gBACnK,8CAA8C;gBAC9C,IAAI,CAAC,iBAAiB,EAAE,CAAA;gBAExB,uCAAuC;gBACvC,qFAAqF;gBACrF,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;YAC7B,CAAC;QACH,CAAC,CAAA;IACH,CAAC;IAED,QAAQ,CAAE,IAAoB;QAC5B,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,UAAU;YAC1B,WAAW,EAAE,IAAI;SAClB,CAAA;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAE,OAAsB;QACrC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;QAC3B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,CAAA;IACnC,CAAC;IAED,SAAS;QACP,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAA;IAC7B,CAAC;IAED,SAAS;QACP,+BAA+B;IACjC,CAAC;IAED,UAAU;QACR,+BAA+B;IACjC,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAA8C,EAAuB,EAAE;IAC3G,OAAO,IAAI,oCAAoC,CAAC,IAAI,CAAC,CAAA;AACvD,CAAC,CAAA"}
|
package/dist/src/stream.d.ts
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
import { AbstractStream } from '@libp2p/utils
|
1
|
+
import { AbstractStream } from '@libp2p/utils';
|
2
2
|
import { Uint8ArrayList } from 'uint8arraylist';
|
3
3
|
import type { DataChannelOptions } from './index.js';
|
4
|
-
import type { AbortOptions,
|
5
|
-
import type { AbstractStreamInit } from '@libp2p/utils
|
4
|
+
import type { AbortOptions, MessageStreamDirection, Logger } from '@libp2p/interface';
|
5
|
+
import type { AbstractStreamInit, SendResult } from '@libp2p/utils';
|
6
6
|
export interface WebRTCStreamInit extends AbstractStreamInit, DataChannelOptions {
|
7
7
|
/**
|
8
8
|
* The network channel used for bidirectional peer-to-peer transfers of
|
@@ -24,30 +24,22 @@ export declare class WebRTCStream extends AbstractStream {
|
|
24
24
|
*/
|
25
25
|
private readonly incomingData;
|
26
26
|
private readonly maxBufferedAmount;
|
27
|
-
private
|
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;
|
27
|
+
private receivedFinAck?;
|
28
|
+
private finAckTimeout;
|
39
29
|
constructor(init: WebRTCStreamInit);
|
40
30
|
sendNewStream(): void;
|
41
|
-
_sendMessage(data: Uint8ArrayList
|
42
|
-
sendData(data: Uint8ArrayList):
|
43
|
-
sendReset():
|
44
|
-
sendCloseWrite(options
|
45
|
-
sendCloseRead(): Promise<void>;
|
31
|
+
_sendMessage(data: Uint8ArrayList): void;
|
32
|
+
sendData(data: Uint8ArrayList): SendResult;
|
33
|
+
sendReset(err: Error): void;
|
34
|
+
sendCloseWrite(options?: AbortOptions): Promise<void>;
|
35
|
+
sendCloseRead(options?: AbortOptions): Promise<void>;
|
46
36
|
/**
|
47
37
|
* Handle incoming
|
48
38
|
*/
|
49
39
|
private processIncomingProtobuf;
|
50
40
|
private _sendFlag;
|
41
|
+
sendPause(): void;
|
42
|
+
sendResume(): void;
|
51
43
|
}
|
52
44
|
export interface WebRTCStreamOptions extends DataChannelOptions {
|
53
45
|
/**
|
@@ -60,11 +52,7 @@ export interface WebRTCStreamOptions extends DataChannelOptions {
|
|
60
52
|
/**
|
61
53
|
* The stream direction
|
62
54
|
*/
|
63
|
-
direction:
|
64
|
-
/**
|
65
|
-
* A callback invoked when the channel ends
|
66
|
-
*/
|
67
|
-
onEnd?(err?: Error | undefined): void;
|
55
|
+
direction: MessageStreamDirection;
|
68
56
|
/**
|
69
57
|
* The logger to create a scope from
|
70
58
|
*/
|
@@ -73,7 +61,7 @@ export interface WebRTCStreamOptions extends DataChannelOptions {
|
|
73
61
|
* If true the underlying datachannel is being used to perform the noise
|
74
62
|
* handshake during connection establishment
|
75
63
|
*/
|
76
|
-
|
64
|
+
isHandshake?: boolean;
|
77
65
|
}
|
78
66
|
export declare function createStream(options: WebRTCStreamOptions): WebRTCStream;
|
79
67
|
//# 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,eAAe,CAAA;AAK9C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAI/C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAGnE,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;IACnD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IAC1C,OAAO,CAAC,cAAc,CAAC,CAA4B;IACnD,OAAO,CAAC,aAAa,CAAQ;gBAEhB,IAAI,EAAE,gBAAgB;IAsFnC,aAAa,IAAK,IAAI;IAItB,YAAY,CAAE,IAAI,EAAE,cAAc,GAAG,IAAI;IAqBzC,QAAQ,CAAE,IAAI,EAAE,cAAc,GAAG,UAAU;IAsC3C,SAAS,CAAE,GAAG,EAAE,KAAK,GAAG,IAAI;IAUtB,cAAc,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtD,aAAa,CAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3D;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAmC/B,OAAO,CAAC,SAAS;IAwBjB,SAAS,IAAK,IAAI;IAIlB,UAAU,IAAK,IAAI;CAGpB;AAED,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB;IAC7D;;;;;OAKG;IACH,OAAO,EAAE,cAAc,CAAA;IAEvB;;OAEG;IACH,SAAS,EAAE,sBAAsB,CAAA;IAEjC;;OAEG;IACH,GAAG,EAAE,MAAM,CAAA;IAEX;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,wBAAgB,YAAY,CAAE,OAAO,EAAE,mBAAmB,GAAG,YAAY,CASxE"}
|
package/dist/src/stream.js
CHANGED
@@ -1,15 +1,13 @@
|
|
1
|
-
import {
|
2
|
-
import { AbstractStream } from '@libp2p/utils
|
3
|
-
import { anySignal } from 'any-signal';
|
1
|
+
import { StreamResetError, StreamStateError } from '@libp2p/interface';
|
2
|
+
import { AbstractStream } from '@libp2p/utils';
|
4
3
|
import * as lengthPrefixed from 'it-length-prefixed';
|
5
4
|
import { pushable } from 'it-pushable';
|
6
|
-
import
|
7
|
-
import pTimeout from 'p-timeout';
|
8
|
-
import { raceEvent } from 'race-event';
|
5
|
+
import { pEvent } from 'p-event';
|
9
6
|
import { raceSignal } from 'race-signal';
|
10
7
|
import { Uint8ArrayList } from 'uint8arraylist';
|
11
|
-
import {
|
8
|
+
import { DEFAULT_FIN_ACK_TIMEOUT, MAX_BUFFERED_AMOUNT, MAX_MESSAGE_SIZE, PROTOBUF_OVERHEAD } from './constants.js';
|
12
9
|
import { Message } from './private-to-public/pb/message.js';
|
10
|
+
import { isFirefox } from './util.js';
|
13
11
|
export class WebRTCStream extends AbstractStream {
|
14
12
|
/**
|
15
13
|
* The data channel used to send and receive data
|
@@ -21,266 +19,191 @@ export class WebRTCStream extends AbstractStream {
|
|
21
19
|
*/
|
22
20
|
incomingData;
|
23
21
|
maxBufferedAmount;
|
24
|
-
|
25
|
-
/**
|
26
|
-
* The maximum size of a message in bytes
|
27
|
-
*/
|
28
|
-
maxMessageSize;
|
29
|
-
/**
|
30
|
-
* When this promise is resolved, the remote has sent us a FIN flag
|
31
|
-
*/
|
32
|
-
receiveFinAck;
|
22
|
+
receivedFinAck;
|
33
23
|
finAckTimeout;
|
34
|
-
openTimeout;
|
35
|
-
closeController;
|
36
24
|
constructor(init) {
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
void Promise.resolve(async () => {
|
42
|
-
if (this.timeline.abort != null || this.timeline.reset !== null) {
|
43
|
-
return;
|
44
|
-
}
|
45
|
-
// wait for FIN_ACK if we haven't received it already
|
46
|
-
try {
|
47
|
-
await pTimeout(this.receiveFinAck.promise, {
|
48
|
-
milliseconds: this.finAckTimeout
|
49
|
-
});
|
50
|
-
}
|
51
|
-
catch (err) {
|
52
|
-
this.log.error('error receiving FIN_ACK', err);
|
53
|
-
}
|
54
|
-
})
|
55
|
-
.then(() => {
|
56
|
-
// stop processing incoming messages
|
57
|
-
this.incomingData.end();
|
58
|
-
// final cleanup
|
59
|
-
originalOnEnd?.(err);
|
60
|
-
})
|
61
|
-
.catch(err => {
|
62
|
-
this.log.error('error ending stream', err);
|
63
|
-
})
|
64
|
-
.finally(() => {
|
65
|
-
this.channel.close();
|
66
|
-
});
|
67
|
-
};
|
68
|
-
super(init);
|
25
|
+
super({
|
26
|
+
...init,
|
27
|
+
maxMessageSize: (init.maxMessageSize ?? MAX_MESSAGE_SIZE) - PROTOBUF_OVERHEAD
|
28
|
+
});
|
69
29
|
this.channel = init.channel;
|
70
30
|
this.channel.binaryType = 'arraybuffer';
|
71
31
|
this.incomingData = pushable();
|
72
|
-
this.bufferedAmountLowEventTimeout = init.bufferedAmountLowEventTimeout ?? BUFFERED_AMOUNT_LOW_TIMEOUT;
|
73
32
|
this.maxBufferedAmount = init.maxBufferedAmount ?? MAX_BUFFERED_AMOUNT;
|
74
|
-
this.
|
75
|
-
this.receiveFinAck = pDefer();
|
76
|
-
this.finAckTimeout = init.closeTimeout ?? FIN_ACK_TIMEOUT;
|
77
|
-
this.openTimeout = init.openTimeout ?? OPEN_TIMEOUT;
|
78
|
-
this.closeController = new AbortController();
|
79
|
-
// set up initial state
|
80
|
-
switch (this.channel.readyState) {
|
81
|
-
case 'open':
|
82
|
-
this.timeline.open = new Date().getTime();
|
83
|
-
break;
|
84
|
-
case 'closed':
|
85
|
-
case 'closing':
|
86
|
-
if (this.timeline.close === undefined || this.timeline.close === 0) {
|
87
|
-
this.timeline.close = Date.now();
|
88
|
-
}
|
89
|
-
break;
|
90
|
-
case 'connecting':
|
91
|
-
// noop
|
92
|
-
break;
|
93
|
-
default:
|
94
|
-
this.log.error('unknown datachannel state %s', this.channel.readyState);
|
95
|
-
throw new StreamStateError('Unknown datachannel state');
|
96
|
-
}
|
33
|
+
this.finAckTimeout = init.finAckTimeout ?? DEFAULT_FIN_ACK_TIMEOUT;
|
97
34
|
// handle RTCDataChannel events
|
98
|
-
this.channel.
|
99
|
-
this.
|
100
|
-
|
101
|
-
|
102
|
-
this.log.trace('received onclose event');
|
103
|
-
// stop any in-progress writes
|
104
|
-
this.closeController.abort();
|
105
|
-
// if the channel has closed we'll never receive a FIN_ACK so resolve the
|
106
|
-
// promise so we don't try to wait later
|
107
|
-
this.receiveFinAck.resolve();
|
108
|
-
void this.close().catch(err => {
|
109
|
-
this.log.error('error closing stream after channel closed', err);
|
110
|
-
});
|
35
|
+
this.channel.onclose = () => {
|
36
|
+
this.log.trace('received datachannel close event');
|
37
|
+
this.onRemoteCloseWrite();
|
38
|
+
this.onTransportClosed();
|
111
39
|
};
|
112
40
|
this.channel.onerror = (evt) => {
|
113
|
-
this.log.trace('received onerror event');
|
114
|
-
// stop any in-progress writes
|
115
|
-
this.closeController.abort();
|
116
41
|
const err = evt.error;
|
42
|
+
this.log.trace('received datachannel error event - %e', err);
|
117
43
|
this.abort(err);
|
118
44
|
};
|
119
45
|
this.channel.onmessage = async (event) => {
|
46
|
+
this.log('incoming message %d bytes', event.data.byteLength);
|
120
47
|
const { data } = event;
|
121
48
|
if (data === null || data.byteLength === 0) {
|
122
49
|
return;
|
123
50
|
}
|
124
51
|
this.incomingData.push(new Uint8Array(data, 0, data.byteLength));
|
125
52
|
};
|
126
|
-
|
53
|
+
// dispatch drain event when the buffered amount drops to zero
|
54
|
+
this.channel.bufferedAmountLowThreshold = 0;
|
55
|
+
this.channel.onbufferedamountlow = () => {
|
56
|
+
if (this.writableNeedsDrain) {
|
57
|
+
this.safeDispatchEvent('drain');
|
58
|
+
}
|
59
|
+
};
|
60
|
+
if (this.channel.readyState !== 'open') {
|
61
|
+
this.log('channel ready state is "%s" and not "open", waiting for "open" event before sending data', this.channel.readyState);
|
62
|
+
pEvent(this.channel, 'open', {
|
63
|
+
rejectionEvents: [
|
64
|
+
'close',
|
65
|
+
'error'
|
66
|
+
]
|
67
|
+
})
|
68
|
+
.then(() => {
|
69
|
+
this.log('channel ready state is now "%s", dispatching drain', this.channel.readyState);
|
70
|
+
this.safeDispatchEvent('drain');
|
71
|
+
})
|
72
|
+
.catch(err => {
|
73
|
+
this.abort(err.error ?? err);
|
74
|
+
});
|
75
|
+
}
|
127
76
|
// pipe framed protobuf messages through a length prefixed decoder, and
|
128
77
|
// surface data from the `Message.message` field through a source.
|
129
78
|
Promise.resolve().then(async () => {
|
130
79
|
for await (const buf of lengthPrefixed.decode(this.incomingData)) {
|
131
|
-
|
132
|
-
if (message != null) {
|
133
|
-
self.sourcePush(new Uint8ArrayList(message));
|
134
|
-
}
|
80
|
+
this.processIncomingProtobuf(buf);
|
135
81
|
}
|
136
82
|
})
|
137
83
|
.catch(err => {
|
138
84
|
this.log.error('error processing incoming data channel messages', err);
|
139
85
|
});
|
86
|
+
// close when both writable ends are closed or an error occurs
|
87
|
+
const cleanUpDatachannelOnClose = () => {
|
88
|
+
if (this.channel.readyState === 'open') {
|
89
|
+
this.log.trace('stream closed, closing underlying datachannel');
|
90
|
+
this.channel.close();
|
91
|
+
}
|
92
|
+
};
|
93
|
+
this.addEventListener('close', cleanUpDatachannelOnClose);
|
140
94
|
}
|
141
95
|
sendNewStream() {
|
142
96
|
// opening new streams is handled by WebRTC so this is a noop
|
143
97
|
}
|
144
|
-
|
145
|
-
if (this.channel.readyState === 'closed' || this.channel.readyState === 'closing') {
|
146
|
-
throw new StreamStateError(`Invalid datachannel state - ${this.channel.readyState}`);
|
147
|
-
}
|
98
|
+
_sendMessage(data) {
|
148
99
|
if (this.channel.readyState !== 'open') {
|
149
|
-
|
150
|
-
const signal = anySignal([
|
151
|
-
this.closeController.signal,
|
152
|
-
timeout
|
153
|
-
]);
|
154
|
-
try {
|
155
|
-
this.log('channel state is "%s" and not "open", waiting for "open" event before sending data', this.channel.readyState);
|
156
|
-
await raceEvent(this.channel, 'open', signal);
|
157
|
-
}
|
158
|
-
finally {
|
159
|
-
signal.clear();
|
160
|
-
}
|
161
|
-
this.log('channel state is now "%s", sending data', this.channel.readyState);
|
162
|
-
}
|
163
|
-
if (checkBuffer && this.channel.bufferedAmount > this.maxBufferedAmount) {
|
164
|
-
const timeout = AbortSignal.timeout(this.bufferedAmountLowEventTimeout);
|
165
|
-
const signal = anySignal([
|
166
|
-
this.closeController.signal,
|
167
|
-
timeout
|
168
|
-
]);
|
169
|
-
try {
|
170
|
-
this.log('channel buffer is %d, wait for "bufferedamountlow" event', this.channel.bufferedAmount);
|
171
|
-
await raceEvent(this.channel, 'bufferedamountlow', signal);
|
172
|
-
}
|
173
|
-
catch (err) {
|
174
|
-
if (timeout.aborted) {
|
175
|
-
throw new TimeoutError(`Timed out waiting for DataChannel buffer to clear after ${this.bufferedAmountLowEventTimeout}ms`);
|
176
|
-
}
|
177
|
-
throw err;
|
178
|
-
}
|
179
|
-
finally {
|
180
|
-
signal.clear();
|
181
|
-
}
|
100
|
+
throw new StreamStateError(`Invalid datachannel state - ${this.channel.readyState}`);
|
182
101
|
}
|
183
|
-
|
184
|
-
|
185
|
-
//
|
102
|
+
this.log.trace('sending message, channel state "%s"', this.channel.readyState);
|
103
|
+
if (isFirefox) {
|
104
|
+
// TODO: firefox can deliver small messages out of order - remove once a
|
105
|
+
// browser with https://bugzilla.mozilla.org/show_bug.cgi?id=1983831 is
|
106
|
+
// available in playwright-test
|
186
107
|
this.channel.send(data.subarray());
|
108
|
+
return;
|
187
109
|
}
|
188
|
-
|
189
|
-
|
110
|
+
// send message without copying data
|
111
|
+
for (const buf of data) {
|
112
|
+
this.channel.send(buf);
|
190
113
|
}
|
191
114
|
}
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
115
|
+
sendData(data) {
|
116
|
+
if (this.channel.readyState !== 'open') {
|
117
|
+
return {
|
118
|
+
sentBytes: 0,
|
119
|
+
canSendMore: false
|
120
|
+
};
|
121
|
+
}
|
122
|
+
// TODO: firefox can deliver small messages out of order - remove once a
|
123
|
+
// browser with https://bugzilla.mozilla.org/show_bug.cgi?id=1983831 is
|
124
|
+
// available in playwright-test
|
125
|
+
// ----
|
126
|
+
// this is also necessary to work with rust-libp2p 0.54 though 0.53 seems ok
|
127
|
+
this._sendMessage(lengthPrefixed.encode.single(Message.encode({
|
128
|
+
message: data.subarray()
|
129
|
+
})));
|
130
|
+
/*
|
131
|
+
// TODO: enable this when FF and rust-libp2p are not broken
|
132
|
+
// send message without copying data
|
133
|
+
for (const message of data) {
|
134
|
+
this._sendMessage(
|
135
|
+
lengthPrefixed.encode.single(Message.encode({
|
136
|
+
message
|
137
|
+
}))
|
138
|
+
)
|
139
|
+
}
|
140
|
+
}
|
141
|
+
*/
|
142
|
+
return {
|
143
|
+
sentBytes: data.byteLength,
|
144
|
+
canSendMore: this.channel.bufferedAmount < this.maxBufferedAmount
|
145
|
+
};
|
207
146
|
}
|
208
|
-
|
147
|
+
sendReset(err) {
|
209
148
|
try {
|
210
|
-
|
149
|
+
this.log.error('sending reset - %e', err);
|
150
|
+
this._sendFlag(Message.Flag.RESET);
|
151
|
+
this.receivedFinAck?.reject(err);
|
211
152
|
}
|
212
153
|
catch (err) {
|
213
154
|
this.log.error('failed to send reset - %e', err);
|
214
155
|
}
|
215
|
-
finally {
|
216
|
-
this.channel.close();
|
217
|
-
}
|
218
156
|
}
|
219
157
|
async sendCloseWrite(options) {
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
errorMessage: 'sending close-write was aborted before FIN_ACK was received',
|
230
|
-
errorName: 'FinAckNotReceivedError'
|
158
|
+
this._sendFlag(Message.Flag.FIN);
|
159
|
+
options?.signal?.throwIfAborted();
|
160
|
+
this.receivedFinAck = Promise.withResolvers();
|
161
|
+
await Promise.any([
|
162
|
+
raceSignal(this.receivedFinAck.promise, options?.signal),
|
163
|
+
new Promise(resolve => {
|
164
|
+
AbortSignal.timeout(this.finAckTimeout)
|
165
|
+
.addEventListener('abort', () => {
|
166
|
+
resolve();
|
231
167
|
});
|
232
|
-
}
|
233
|
-
|
234
|
-
this.log.error('failed to await FIN_ACK', err);
|
235
|
-
}
|
236
|
-
}
|
237
|
-
else {
|
238
|
-
this.log.trace('sending FIN failed, not awaiting FIN_ACK');
|
239
|
-
}
|
240
|
-
// if we've attempted to receive a FIN_ACK, do not try again
|
241
|
-
this.receiveFinAck.resolve();
|
168
|
+
})
|
169
|
+
]);
|
242
170
|
}
|
243
|
-
async sendCloseRead() {
|
244
|
-
|
245
|
-
|
246
|
-
}
|
247
|
-
await this._sendFlag(Message.Flag.STOP_SENDING);
|
171
|
+
async sendCloseRead(options) {
|
172
|
+
this._sendFlag(Message.Flag.STOP_SENDING);
|
173
|
+
options?.signal?.throwIfAborted();
|
248
174
|
}
|
249
175
|
/**
|
250
176
|
* Handle incoming
|
251
177
|
*/
|
252
178
|
processIncomingProtobuf(buffer) {
|
253
179
|
const message = Message.decode(buffer);
|
180
|
+
// ignore data messages if we've closed the readable end already
|
181
|
+
if (message.message != null && (this.readStatus === 'readable' || this.readStatus === 'paused')) {
|
182
|
+
this.onData(new Uint8ArrayList(message.message));
|
183
|
+
}
|
254
184
|
if (message.flag !== undefined) {
|
255
185
|
this.log.trace('incoming flag %s, write status "%s", read status "%s"', message.flag, this.writeStatus, this.readStatus);
|
256
186
|
if (message.flag === Message.Flag.FIN) {
|
257
|
-
//
|
258
|
-
this.
|
259
|
-
this.
|
260
|
-
void this._sendFlag(Message.Flag.FIN_ACK)
|
261
|
-
.catch(err => {
|
262
|
-
this.log.error('error sending FIN_ACK immediately', err);
|
263
|
-
});
|
187
|
+
// we should expect no more data from the remote, stop reading
|
188
|
+
this._sendFlag(Message.Flag.FIN_ACK);
|
189
|
+
this.onRemoteCloseWrite();
|
264
190
|
}
|
265
191
|
if (message.flag === Message.Flag.RESET) {
|
266
|
-
//
|
267
|
-
this.reset
|
192
|
+
// stop reading and writing to the stream immediately
|
193
|
+
this.receivedFinAck?.reject(new StreamResetError('The stream was reset'));
|
194
|
+
this.onRemoteReset();
|
268
195
|
}
|
269
196
|
if (message.flag === Message.Flag.STOP_SENDING) {
|
270
|
-
//
|
271
|
-
this.
|
197
|
+
// the remote has stopped reading
|
198
|
+
this.onRemoteCloseRead();
|
272
199
|
}
|
273
200
|
if (message.flag === Message.Flag.FIN_ACK) {
|
274
|
-
|
275
|
-
this.
|
201
|
+
// remote received our FIN
|
202
|
+
this.receivedFinAck?.resolve();
|
276
203
|
}
|
277
204
|
}
|
278
|
-
// ignore data messages if we've closed the readable end already
|
279
|
-
if (this.readStatus === 'ready') {
|
280
|
-
return message.message;
|
281
|
-
}
|
282
205
|
}
|
283
|
-
|
206
|
+
_sendFlag(flag) {
|
284
207
|
if (this.channel.readyState !== 'open') {
|
285
208
|
// flags can be sent while we or the remote are closing the datachannel so
|
286
209
|
// if the channel isn't open, don't try to send it but return false to let
|
@@ -292,7 +215,7 @@ export class WebRTCStream extends AbstractStream {
|
|
292
215
|
const messageBuf = Message.encode({ flag });
|
293
216
|
const prefixedBuf = lengthPrefixed.encode.single(messageBuf);
|
294
217
|
try {
|
295
|
-
|
218
|
+
this._sendMessage(prefixedBuf);
|
296
219
|
return true;
|
297
220
|
}
|
298
221
|
catch (err) {
|
@@ -300,13 +223,20 @@ export class WebRTCStream extends AbstractStream {
|
|
300
223
|
}
|
301
224
|
return false;
|
302
225
|
}
|
226
|
+
sendPause() {
|
227
|
+
// TODO: read backpressure?
|
228
|
+
}
|
229
|
+
sendResume() {
|
230
|
+
// TODO: read backpressure?
|
231
|
+
}
|
303
232
|
}
|
304
233
|
export function createStream(options) {
|
305
|
-
const { channel, direction,
|
234
|
+
const { channel, direction, isHandshake } = options;
|
306
235
|
return new WebRTCStream({
|
307
236
|
...options,
|
308
237
|
id: `${channel.id}`,
|
309
|
-
log: options.log.newScope(`${
|
238
|
+
log: options.log.newScope(`${isHandshake === true ? 'handshake' : direction}:${channel.id}`),
|
239
|
+
protocol: ''
|
310
240
|
});
|
311
241
|
}
|
312
242
|
//# sourceMappingURL=stream.js.map
|
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
@@ -1,8 +1,10 @@
|
|
1
|
-
import type { PeerConnection } from '@ipshipyard/node-datachannel';
|
2
1
|
import type { LoggerOptions } from '@libp2p/interface';
|
2
|
+
import type { Duplex } from 'it-stream-types';
|
3
|
+
import type { PeerConnection } from 'node-datachannel';
|
3
4
|
export declare const isFirefox: boolean;
|
4
5
|
export declare const nopSource: () => AsyncGenerator<Uint8Array, any, unknown>;
|
5
6
|
export declare const nopSink: (_: any) => Promise<void>;
|
7
|
+
export declare function inertDuplex(): Duplex<any, any, any>;
|
6
8
|
export declare function drainAndClose(channel: RTCDataChannel, direction: string, drainTimeout: number | undefined, options: LoggerOptions): void;
|
7
9
|
export interface AbortPromiseOptions {
|
8
10
|
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,
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,MAAM,EAAU,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAGtD,eAAO,MAAM,SAAS,SAAoD,CAAA;AAE1E,eAAO,MAAM,SAAS,QAA4B,cAAc,CAAC,UAAU,EAAE,GAAG,EAAE,OAAO,CAAI,CAAA;AAE7F,eAAO,MAAM,OAAO,GAAU,GAAG,GAAG,KAAG,OAAO,CAAC,IAAI,CAAO,CAAA;AAG1D,wBAAgB,WAAW,IAAK,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAiBpD;AAED,wBAAgB,aAAa,CAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAA6B,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,GAAI,MAAK,MAAW,KAAG,MAE3C,CAAA"}
|