@dxos/network-manager 0.6.13-main.ed424a1 → 0.6.13
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/lib/browser/{chunk-MKIVP7G3.mjs → chunk-XYSYUN63.mjs} +1064 -1248
- package/dist/lib/browser/chunk-XYSYUN63.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +19 -10
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +32 -22
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node/{chunk-D6P7ACEM.cjs → chunk-4YAYC7WN.cjs} +1207 -1264
- package/dist/lib/node/chunk-4YAYC7WN.cjs.map +7 -0
- package/dist/lib/node/index.cjs +37 -27
- package/dist/lib/node/index.cjs.map +2 -2
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +34 -24
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/types/src/network-manager.d.ts +1 -2
- package/dist/types/src/network-manager.d.ts.map +1 -1
- package/dist/types/src/signal/ice.d.ts.map +1 -1
- package/dist/types/src/signal/integration.test.d.ts +2 -0
- package/dist/types/src/signal/integration.test.d.ts.map +1 -0
- package/dist/types/src/signal/swarm-messenger.test.d.ts +2 -0
- package/dist/types/src/signal/swarm-messenger.test.d.ts.map +1 -0
- package/dist/types/src/swarm/connection.d.ts.map +1 -1
- package/dist/types/src/swarm/swarm.d.ts +1 -1
- package/dist/types/src/testing/test-builder.d.ts +2 -2
- package/dist/types/src/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/testing/test-wire-protocol.d.ts +2 -1
- package/dist/types/src/testing/test-wire-protocol.d.ts.map +1 -1
- package/dist/types/src/tests/basic-test-suite.d.ts.map +1 -1
- package/dist/types/src/tests/property-test-suite.d.ts.map +1 -1
- package/dist/types/src/tests/tcp-transport.test.d.ts +2 -0
- package/dist/types/src/tests/tcp-transport.test.d.ts.map +1 -0
- package/dist/types/src/tests/utils.d.ts.map +1 -1
- package/dist/types/src/transport/index.d.ts +5 -1
- package/dist/types/src/transport/index.d.ts.map +1 -1
- package/dist/types/src/transport/libdatachannel-transport.d.ts +42 -0
- package/dist/types/src/transport/libdatachannel-transport.d.ts.map +1 -0
- package/dist/types/src/transport/libdatachannel-transport.test.d.ts +2 -0
- package/dist/types/src/transport/libdatachannel-transport.test.d.ts.map +1 -0
- package/dist/types/src/transport/memory-transport.d.ts +2 -2
- package/dist/types/src/transport/memory-transport.d.ts.map +1 -1
- package/dist/types/src/transport/memory-transport.test.d.ts +2 -0
- package/dist/types/src/transport/memory-transport.test.d.ts.map +1 -0
- package/dist/types/src/transport/simplepeer-simple-peer.d.ts +2 -0
- package/dist/types/src/transport/simplepeer-simple-peer.d.ts.map +1 -0
- package/dist/types/src/transport/simplepeer-transport-proxy-test.d.ts +2 -0
- package/dist/types/src/transport/simplepeer-transport-proxy-test.d.ts.map +1 -0
- package/dist/types/src/transport/{webrtc/rtc-transport-proxy.d.ts → simplepeer-transport-proxy.d.ts} +12 -10
- package/dist/types/src/transport/simplepeer-transport-proxy.d.ts.map +1 -0
- package/dist/types/src/transport/{webrtc/rtc-transport-service.d.ts → simplepeer-transport-service.d.ts} +7 -9
- package/dist/types/src/transport/simplepeer-transport-service.d.ts.map +1 -0
- package/dist/types/src/transport/simplepeer-transport.d.ts +36 -0
- package/dist/types/src/transport/simplepeer-transport.d.ts.map +1 -0
- package/dist/types/src/transport/simplepeer-transport.test.d.ts +2 -0
- package/dist/types/src/transport/simplepeer-transport.test.d.ts.map +1 -0
- package/dist/types/src/transport/{tcp/tcp-transport.browser.d.ts → tcp-transport.browser.d.ts} +3 -3
- package/dist/types/src/transport/tcp-transport.browser.d.ts.map +1 -0
- package/dist/types/src/transport/{tcp/tcp-transport.d.ts → tcp-transport.d.ts} +3 -3
- package/dist/types/src/transport/tcp-transport.d.ts.map +1 -0
- package/dist/types/src/transport/transport.d.ts +6 -7
- package/dist/types/src/transport/transport.d.ts.map +1 -1
- package/dist/types/src/transport/webrtc.d.ts +6 -0
- package/dist/types/src/transport/webrtc.d.ts.map +1 -0
- package/package.json +30 -55
- package/src/globals.d.ts +7 -0
- package/src/network-manager.ts +13 -5
- package/src/signal/ice.test.ts +3 -1
- package/src/signal/ice.ts +1 -6
- package/src/signal/{integration.node.test.ts → integration.test.ts} +15 -9
- package/src/signal/{swarm-messenger.node.test.ts → swarm-messenger.test.ts} +23 -13
- package/src/swarm/connection-limiter.test.ts +6 -3
- package/src/swarm/connection.test.ts +38 -63
- package/src/swarm/connection.ts +5 -5
- package/src/swarm/swarm.test.ts +12 -10
- package/src/swarm/swarm.ts +1 -1
- package/src/testing/test-builder.ts +29 -13
- package/src/testing/test-wire-protocol.ts +4 -1
- package/src/tests/basic-test-suite.ts +33 -34
- package/src/tests/memory-transport.test.ts +42 -40
- package/src/tests/property-test-suite.ts +22 -21
- package/src/tests/tcp-transport.test.ts +67 -0
- package/src/tests/utils.ts +2 -3
- package/src/tests/webrtc-transport.test.ts +9 -9
- package/src/transport/index.ts +5 -1
- package/src/transport/libdatachannel-transport.test.ts +100 -0
- package/src/transport/libdatachannel-transport.ts +376 -0
- package/src/transport/memory-transport.test.ts +74 -0
- package/src/transport/memory-transport.ts +0 -2
- package/src/transport/simplepeer-simple-peer.ts +26 -0
- package/src/transport/simplepeer-transport-proxy-test.ts +181 -0
- package/src/transport/simplepeer-transport-proxy.ts +246 -0
- package/src/transport/simplepeer-transport-service.ts +160 -0
- package/src/transport/simplepeer-transport.test.ts +61 -0
- package/src/transport/simplepeer-transport.ts +250 -0
- package/src/transport/{tcp/tcp-transport.browser.ts → tcp-transport.browser.ts} +3 -7
- package/src/transport/{tcp/tcp-transport.ts → tcp-transport.ts} +1 -3
- package/src/transport/transport.ts +7 -8
- package/src/transport/webrtc.ts +15 -0
- package/src/typings.d.ts +2 -8
- package/dist/lib/browser/chunk-GW3YM55A.mjs +0 -14
- package/dist/lib/browser/chunk-GW3YM55A.mjs.map +0 -7
- package/dist/lib/browser/chunk-MKIVP7G3.mjs.map +0 -7
- package/dist/lib/browser/transport/tcp/index.mjs +0 -39
- package/dist/lib/browser/transport/tcp/index.mjs.map +0 -7
- package/dist/lib/node/chunk-D6P7ACEM.cjs.map +0 -7
- package/dist/lib/node/transport/tcp/index.cjs +0 -191
- package/dist/lib/node/transport/tcp/index.cjs.map +0 -7
- package/dist/lib/node-esm/chunk-22DA2US6.mjs +0 -4373
- package/dist/lib/node-esm/chunk-22DA2US6.mjs.map +0 -7
- package/dist/lib/node-esm/index.mjs +0 -50
- package/dist/lib/node-esm/index.mjs.map +0 -7
- package/dist/lib/node-esm/meta.json +0 -1
- package/dist/lib/node-esm/testing/index.mjs +0 -279
- package/dist/lib/node-esm/testing/index.mjs.map +0 -7
- package/dist/lib/node-esm/transport/tcp/index.mjs +0 -159
- package/dist/lib/node-esm/transport/tcp/index.mjs.map +0 -7
- package/dist/types/src/signal/integration.node.test.d.ts +0 -2
- package/dist/types/src/signal/integration.node.test.d.ts.map +0 -1
- package/dist/types/src/signal/swarm-messenger.node.test.d.ts +0 -2
- package/dist/types/src/signal/swarm-messenger.node.test.d.ts.map +0 -1
- package/dist/types/src/tests/tcp-transport.node.test.d.ts +0 -2
- package/dist/types/src/tests/tcp-transport.node.test.d.ts.map +0 -1
- package/dist/types/src/transport/tcp/index.d.ts +0 -2
- package/dist/types/src/transport/tcp/index.d.ts.map +0 -1
- package/dist/types/src/transport/tcp/tcp-transport.browser.d.ts.map +0 -1
- package/dist/types/src/transport/tcp/tcp-transport.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc/index.d.ts +0 -4
- package/dist/types/src/transport/webrtc/index.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc/rtc-connection-factory.d.ts +0 -14
- package/dist/types/src/transport/webrtc/rtc-connection-factory.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc/rtc-peer-connection.d.ts +0 -68
- package/dist/types/src/transport/webrtc/rtc-peer-connection.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc/rtc-transport-channel.d.ts +0 -33
- package/dist/types/src/transport/webrtc/rtc-transport-channel.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc/rtc-transport-channel.test.d.ts +0 -2
- package/dist/types/src/transport/webrtc/rtc-transport-channel.test.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc/rtc-transport-factory.d.ts +0 -4
- package/dist/types/src/transport/webrtc/rtc-transport-factory.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc/rtc-transport-proxy.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc/rtc-transport-proxy.test.d.ts +0 -2
- package/dist/types/src/transport/webrtc/rtc-transport-proxy.test.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc/rtc-transport-service.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc/rtc-transport-stats.d.ts +0 -4
- package/dist/types/src/transport/webrtc/rtc-transport-stats.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc/rtc-transport.test.d.ts +0 -2
- package/dist/types/src/transport/webrtc/rtc-transport.test.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc/test-utils.d.ts +0 -5
- package/dist/types/src/transport/webrtc/test-utils.d.ts.map +0 -1
- package/dist/types/src/transport/webrtc/utils.d.ts +0 -3
- package/dist/types/src/transport/webrtc/utils.d.ts.map +0 -1
- package/src/tests/tcp-transport.node.test.ts +0 -65
- package/src/transport/tcp/index.ts +0 -5
- package/src/transport/webrtc/index.ts +0 -7
- package/src/transport/webrtc/rtc-connection-factory.ts +0 -82
- package/src/transport/webrtc/rtc-peer-connection.ts +0 -472
- package/src/transport/webrtc/rtc-transport-channel.test.ts +0 -176
- package/src/transport/webrtc/rtc-transport-channel.ts +0 -195
- package/src/transport/webrtc/rtc-transport-factory.ts +0 -28
- package/src/transport/webrtc/rtc-transport-proxy.test.ts +0 -413
- package/src/transport/webrtc/rtc-transport-proxy.ts +0 -264
- package/src/transport/webrtc/rtc-transport-service.ts +0 -192
- package/src/transport/webrtc/rtc-transport-stats.ts +0 -67
- package/src/transport/webrtc/rtc-transport.test.ts +0 -198
- package/src/transport/webrtc/test-utils.ts +0 -22
- package/src/transport/webrtc/utils.ts +0 -36
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"swarm-messenger.node.test.d.ts","sourceRoot":"","sources":["../../../../src/signal/swarm-messenger.node.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tcp-transport.node.test.d.ts","sourceRoot":"","sources":["../../../../src/tests/tcp-transport.node.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/transport/tcp/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tcp-transport.browser.d.ts","sourceRoot":"","sources":["../../../../../src/transport/tcp/tcp-transport.browser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAE1F,eAAO,MAAM,mBAAmB,EAAE,gBAEjC,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAC5C,SAAgB,MAAM,cAAqB;IAC3C,SAAgB,SAAS,cAAqB;IAC9C,SAAgB,MAAM,cAAqB;IAE3C,IAAI,MAAM,YAET;IAEK,IAAI;IAIJ,KAAK;IAIL,QAAQ;IAIR,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAInC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;CAGpC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tcp-transport.d.ts","sourceRoot":"","sources":["../../../../../src/transport/tcp/tcp-transport.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAEpE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAEjH,eAAO,MAAM,mBAAmB,EAAE,gBAEjC,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAa,YAAW,SAAS;IAWhC,OAAO,CAAC,QAAQ,CAAC,OAAO;IAVpC,OAAO,CAAC,OAAO,CAAC,CAAqB;IACrC,OAAO,CAAC,OAAO,CAAC,CAAqB;IAErC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IAExB,SAAgB,MAAM,cAAqB;IAC3C,SAAgB,SAAS,cAAqB;IAC9C,SAAgB,MAAM,cAAqB;gBAEd,OAAO,EAAE,gBAAgB;IAEtD,IAAI,MAAM,YAET;IAEK,IAAI;IAwCJ,KAAK;IAQL,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM;IAW5B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAU7B,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IASzC,OAAO,CAAC,aAAa;CAoBtB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/transport/webrtc/index.ts"],"names":[],"mappings":"AAIA,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export type ConnectionInfo = {
|
|
2
|
-
initiator: boolean;
|
|
3
|
-
};
|
|
4
|
-
export interface RtcConnectionFactory {
|
|
5
|
-
initialize(): Promise<void>;
|
|
6
|
-
onConnectionDestroyed(): Promise<void>;
|
|
7
|
-
createConnection(config: RTCConfiguration): Promise<RTCPeerConnection>;
|
|
8
|
-
initConnection(connection: RTCPeerConnection, info: ConnectionInfo): Promise<void>;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Create platform-specific connection factory.
|
|
12
|
-
*/
|
|
13
|
-
export declare const getRtcConnectionFactory: () => RtcConnectionFactory;
|
|
14
|
-
//# sourceMappingURL=rtc-connection-factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rtc-connection-factory.d.ts","sourceRoot":"","sources":["../../../../../src/transport/webrtc/rtc-connection-factory.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvE,cAAc,CAAC,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpF;AA2DD;;GAEG;AACH,eAAO,MAAM,uBAAuB,QAAO,oBAI1C,CAAC"}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { type Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';
|
|
2
|
-
import { type RtcConnectionFactory } from './rtc-connection-factory';
|
|
3
|
-
import { RtcTransportChannel } from './rtc-transport-channel';
|
|
4
|
-
import type { IceProvider } from '../../signal';
|
|
5
|
-
import { type TransportOptions } from '../transport';
|
|
6
|
-
export type RtcPeerChannelFactoryOptions = {
|
|
7
|
-
ownPeerKey: string;
|
|
8
|
-
remotePeerKey: string;
|
|
9
|
-
/**
|
|
10
|
-
* Sends signal message to remote peer.
|
|
11
|
-
*/
|
|
12
|
-
sendSignal: (signal: Signal) => Promise<void>;
|
|
13
|
-
webrtcConfig?: RTCConfiguration;
|
|
14
|
-
iceProvider?: IceProvider;
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* A factory for rtc Transport implementations for a particular peer.
|
|
18
|
-
* Contains WebRTC connection establishment logic.
|
|
19
|
-
* When the first Transport is opened a connection is established and kept until all the transports are closed.
|
|
20
|
-
*/
|
|
21
|
-
export declare class RtcPeerConnection {
|
|
22
|
-
private readonly _factory;
|
|
23
|
-
private readonly _options;
|
|
24
|
-
private readonly _channelCreatedCallbacks;
|
|
25
|
-
private readonly _transportChannels;
|
|
26
|
-
private readonly _dataChannels;
|
|
27
|
-
private readonly _readyForCandidates;
|
|
28
|
-
private readonly _offerProcessingMutex;
|
|
29
|
-
/**
|
|
30
|
-
* Can't use peer.connection.initiator, because if two connections to the same peer are created in
|
|
31
|
-
* different swarms, we might be the initiator of the first one, but not of the other one.
|
|
32
|
-
* Use a stable peer keypair property (key ordering) to decide who's acting as the initiator of
|
|
33
|
-
* transport connection establishment and data channel creation.
|
|
34
|
-
*/
|
|
35
|
-
private readonly _initiator;
|
|
36
|
-
private _connection?;
|
|
37
|
-
constructor(_factory: RtcConnectionFactory, _options: RtcPeerChannelFactoryOptions);
|
|
38
|
-
get transportChannelCount(): number;
|
|
39
|
-
get currentConnection(): RTCPeerConnection | undefined;
|
|
40
|
-
createDataChannel(topic: string): Promise<RTCDataChannel>;
|
|
41
|
-
createTransportChannel(options: TransportOptions): RtcTransportChannel;
|
|
42
|
-
private _openConnection;
|
|
43
|
-
private _lockAndAbort;
|
|
44
|
-
private _abortConnection;
|
|
45
|
-
private _lockAndCloseConnection;
|
|
46
|
-
onSignal(signal: Signal): Promise<void>;
|
|
47
|
-
private _processIceCandidate;
|
|
48
|
-
private _onSessionNegotiated;
|
|
49
|
-
private _onConnectionCallbackAfterClose;
|
|
50
|
-
private _safeCloseConnection;
|
|
51
|
-
private _loadConnectionConfig;
|
|
52
|
-
private _sendIceCandidate;
|
|
53
|
-
private _sendDescription;
|
|
54
|
-
protected get _connectionInfo(): {
|
|
55
|
-
ts: number;
|
|
56
|
-
remotePeerKey: string;
|
|
57
|
-
channels: string[];
|
|
58
|
-
config: RTCConfiguration | undefined;
|
|
59
|
-
connectionState?: RTCPeerConnectionState | undefined;
|
|
60
|
-
iceConnectionState?: RTCIceConnectionState | undefined;
|
|
61
|
-
iceGatheringState?: RTCIceGatheringState | undefined;
|
|
62
|
-
signalingState?: RTCSignalingState | undefined;
|
|
63
|
-
remoteDescription?: RTCSessionDescription | null | undefined;
|
|
64
|
-
localDescription?: RTCSessionDescription | null | undefined;
|
|
65
|
-
};
|
|
66
|
-
private get _loggerContext();
|
|
67
|
-
}
|
|
68
|
-
//# sourceMappingURL=rtc-peer-connection.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rtc-peer-connection.d.ts","sourceRoot":"","sources":["../../../../../src/transport/webrtc/rtc-peer-connection.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAGpE,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,MAAM,4BAA4B,GAAG;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAG9C,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,qBACa,iBAAiB;IAsB1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IArB3B,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAA6C;IAEtF,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA0C;IAC7E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqC;IAEnE,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAiB;IAErD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAe;IAErD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAU;IAErC,OAAO,CAAC,WAAW,CAAC,CAAoB;gBAGrB,QAAQ,EAAE,oBAAoB,EAC9B,QAAQ,EAAE,4BAA4B;IAKzD,IAAW,qBAAqB,WAE/B;IAED,IAAW,iBAAiB,IAAI,iBAAiB,GAAG,SAAS,CAE5D;IAEY,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAwB/D,sBAAsB,CAAC,OAAO,EAAE,gBAAgB,GAAG,mBAAmB;YAa/D,eAAe;IA6H7B,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,uBAAuB;IASlB,QAAQ,CAAC,MAAM,EAAE,MAAM;YAiEtB,oBAAoB;IAalC,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,+BAA+B;IAQvC,OAAO,CAAC,oBAAoB;YAmBd,qBAAqB;YAarB,iBAAiB;YAoBjB,gBAAgB;IAW9B,SAAS,KAAK,eAAe;;;;;;;;;;;MAgB5B;IAGD,OAAO,KAAK,cAAc,GAOzB;CACF"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Event as AsyncEvent } from '@dxos/async';
|
|
2
|
-
import { Resource } from '@dxos/context';
|
|
3
|
-
import { ErrorStream } from '@dxos/debug';
|
|
4
|
-
import { type Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';
|
|
5
|
-
import { type RtcPeerConnection } from './rtc-peer-connection';
|
|
6
|
-
import { type Transport, type TransportOptions, type TransportStats } from '../transport';
|
|
7
|
-
/**
|
|
8
|
-
* A WebRTC connection data channel.
|
|
9
|
-
* Manages a WebRTC connection to a remote peer using an abstract signalling mechanism.
|
|
10
|
-
*/
|
|
11
|
-
export declare class RtcTransportChannel extends Resource implements Transport {
|
|
12
|
-
private readonly _connection;
|
|
13
|
-
private readonly _options;
|
|
14
|
-
readonly closed: AsyncEvent<void>;
|
|
15
|
-
readonly connected: AsyncEvent<void>;
|
|
16
|
-
readonly errors: ErrorStream;
|
|
17
|
-
private _channel;
|
|
18
|
-
private _stream;
|
|
19
|
-
private _streamDataFlushedCallback;
|
|
20
|
-
private _isChannelCreationInProgress;
|
|
21
|
-
constructor(_connection: RtcPeerConnection, _options: TransportOptions);
|
|
22
|
-
get isRtcChannelCreationInProgress(): boolean;
|
|
23
|
-
onConnectionError(error: Error): void;
|
|
24
|
-
protected _open(): Promise<void>;
|
|
25
|
-
protected _close(): Promise<void>;
|
|
26
|
-
private _initChannel;
|
|
27
|
-
private _handleChannelWrite;
|
|
28
|
-
private _safeCloseChannel;
|
|
29
|
-
onSignal(signal: Signal): Promise<void>;
|
|
30
|
-
getDetails(): Promise<string>;
|
|
31
|
-
getStats(): Promise<TransportStats>;
|
|
32
|
-
}
|
|
33
|
-
//# sourceMappingURL=rtc-transport-channel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rtc-transport-channel.d.ts","sourceRoot":"","sources":["../../../../../src/transport/webrtc/rtc-transport-channel.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAEpE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAO1F;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,QAAS,YAAW,SAAS;IAWlE,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAX3B,SAAgB,MAAM,mBAAoB;IAC1C,SAAgB,SAAS,mBAAoB;IAC7C,SAAgB,MAAM,cAAqB;IAE3C,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,0BAA0B,CAA6C;IAC/E,OAAO,CAAC,4BAA4B,CAAS;gBAG1B,WAAW,EAAE,iBAAiB,EAC9B,QAAQ,EAAE,gBAAgB;IAK7C,IAAW,8BAA8B,YAExC;IAEM,iBAAiB,CAAC,KAAK,EAAE,KAAK;cAMZ,KAAK;cAuBL,MAAM;IAW/B,OAAO,CAAC,YAAY;YAsDN,mBAAmB;IA+BjC,OAAO,CAAC,iBAAiB;IAQlB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;CAG1C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rtc-transport-channel.test.d.ts","sourceRoot":"","sources":["../../../../../src/transport/webrtc/rtc-transport-channel.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { IceProvider } from '../../signal';
|
|
2
|
-
import type { TransportFactory } from '../transport';
|
|
3
|
-
export declare const createRtcTransportFactory: (webrtcConfig?: RTCConfiguration, iceProvider?: IceProvider) => TransportFactory;
|
|
4
|
-
//# sourceMappingURL=rtc-transport-factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rtc-transport-factory.d.ts","sourceRoot":"","sources":["../../../../../src/transport/webrtc/rtc-transport-factory.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,eAAO,MAAM,yBAAyB,kBACrB,gBAAgB,gBACjB,WAAW,KACxB,gBAeF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rtc-transport-proxy.d.ts","sourceRoot":"","sources":["../../../../../src/transport/webrtc/rtc-transport-proxy.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAgB,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK1C,OAAO,EAAoB,KAAK,aAAa,EAAmB,MAAM,wCAAwC,CAAC;AAC/G,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAGpE,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAMjH,MAAM,MAAM,wBAAwB,GAAG,gBAAgB,GAAG;IACxD,aAAa,EAAE,aAAa,CAAC;CAC9B,CAAC;AAEF,qBAAa,iBAAkB,SAAQ,QAAS,YAAW,SAAS;IAStD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IARrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAE/C,QAAQ,CAAC,MAAM,cAAe;IAC9B,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,MAAM,cAAqB;IAEpC,OAAO,CAAC,cAAc,CAAkC;gBAE3B,QAAQ,EAAE,wBAAwB;cAItC,KAAK;cAiFL,MAAM;IAiBzB,QAAQ,CAAC,MAAM,EAAE,MAAM;YAMf,iBAAiB;IAkB/B,OAAO,CAAC,WAAW;YASL,aAAa;IAWrB,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAY7B,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC;IAezC,OAAO,CAAC,YAAY;IAQpB;;OAEG;IACH,UAAU;CAIX;AAED,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,YAAY,CAAgC;IAEpD;;;OAGG;IACH,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI;IAQhE,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS;CAOtD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rtc-transport-proxy.test.d.ts","sourceRoot":"","sources":["../../../../../src/transport/webrtc/rtc-transport-proxy.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rtc-transport-service.d.ts","sourceRoot":"","sources":["../../../../../src/transport/webrtc/rtc-transport-service.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9C,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAEhB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,aAAa,EACnB,MAAM,wCAAwC,CAAC;AAIhD,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AASrE,qBAAa,mBAAoB,YAAW,aAAa;IAMrD,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IALpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6D;gBAG3F,YAAY,CAAC,EAAE,gBAAgB,EAC/B,WAAW,CAAC,EAAE,WAAW,EACR,iBAAiB,GAAE,gBAAuE;IAGtG,iBAAiB;IAIxB,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC;IAqE/C,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAO7D,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAOjE,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC;IAO3D,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAY1D,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,YAAY;YAUvB,mBAAmB;CAmBlC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { TransportStats } from '../transport';
|
|
2
|
-
export declare const describeSelectedRemoteCandidate: (connection?: RTCPeerConnection) => Promise<string>;
|
|
3
|
-
export declare const createRtcTransportStats: (connection: RTCPeerConnection | undefined, topic: string) => Promise<TransportStats>;
|
|
4
|
-
//# sourceMappingURL=rtc-transport-stats.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rtc-transport-stats.d.ts","sourceRoot":"","sources":["../../../../../src/transport/webrtc/rtc-transport-stats.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,eAAO,MAAM,+BAA+B,gBAAuB,iBAAiB,KAAG,OAAO,CAAC,MAAM,CAYpG,CAAC;AAEF,eAAO,MAAM,uBAAuB,eACtB,iBAAiB,GAAG,SAAS,SAClC,MAAM,KACZ,OAAO,CAAC,cAAc,CAmBxB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rtc-transport.test.d.ts","sourceRoot":"","sources":["../../../../../src/transport/webrtc/rtc-transport.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../../src/transport/webrtc/test-utils.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9C,eAAO,MAAM,mBAAmB,YAAa,SAAS;;CAWrD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../../src/transport/webrtc/utils.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,aAAc,MAAM,YAAY,MAAM,WAAgD,CAAC;AAEvH,eAAO,MAAM,WAAW,SAAU,MAAM,QAAQ,MAAM,YAOrD,CAAC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2021 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { randomBytes } from 'node:crypto';
|
|
6
|
-
import { describe, test } from 'vitest';
|
|
7
|
-
|
|
8
|
-
import { PublicKey } from '@dxos/keys';
|
|
9
|
-
import { range } from '@dxos/util';
|
|
10
|
-
|
|
11
|
-
import { basicTestSuite } from './basic-test-suite';
|
|
12
|
-
import { exchangeMessages, joinSwarm, leaveSwarm, openAndCloseAfterTest } from './utils';
|
|
13
|
-
import { TestBuilder } from '../testing';
|
|
14
|
-
import { FullyConnectedTopology } from '../topology';
|
|
15
|
-
import { TransportKind } from '../transport';
|
|
16
|
-
|
|
17
|
-
describe('Tcp transport', () => {
|
|
18
|
-
const testBuilder = new TestBuilder({
|
|
19
|
-
transport: TransportKind.TCP,
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
basicTestSuite(testBuilder);
|
|
23
|
-
|
|
24
|
-
test.skip('load', { timeout: 1_000_000 }, async () => {
|
|
25
|
-
const NUM_PAIRS = 100;
|
|
26
|
-
const NUM_ROUNDS = 10_000;
|
|
27
|
-
const PACKET_SIZE = 1_000;
|
|
28
|
-
|
|
29
|
-
const pairs = await Promise.all(
|
|
30
|
-
range(NUM_PAIRS).map(async () => {
|
|
31
|
-
const peer1 = testBuilder.createPeer();
|
|
32
|
-
const peer2 = testBuilder.createPeer();
|
|
33
|
-
await openAndCloseAfterTest([peer1, peer2]);
|
|
34
|
-
|
|
35
|
-
const topic = PublicKey.random();
|
|
36
|
-
const [swarm1, swarm2] = await joinSwarm([peer1, peer2], topic, () => new FullyConnectedTopology());
|
|
37
|
-
|
|
38
|
-
return {
|
|
39
|
-
peer1,
|
|
40
|
-
peer2,
|
|
41
|
-
topic,
|
|
42
|
-
swarm1,
|
|
43
|
-
swarm2,
|
|
44
|
-
};
|
|
45
|
-
}),
|
|
46
|
-
);
|
|
47
|
-
|
|
48
|
-
const message = randomBytes(PACKET_SIZE / 2).toString('hex');
|
|
49
|
-
|
|
50
|
-
for (let i = 0; i < NUM_ROUNDS; i++) {
|
|
51
|
-
// console.log(`Round ${i}/${NUM_ROUNDS}`);
|
|
52
|
-
await Promise.all(
|
|
53
|
-
pairs.map(async ({ swarm1, swarm2 }) => {
|
|
54
|
-
await exchangeMessages(swarm1, swarm2, message);
|
|
55
|
-
}),
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
await Promise.all(
|
|
60
|
-
pairs.map(async ({ peer1, peer2, topic }) => {
|
|
61
|
-
await leaveSwarm([peer1, peer2], topic);
|
|
62
|
-
}),
|
|
63
|
-
);
|
|
64
|
-
});
|
|
65
|
-
});
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2024 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import { Mutex } from '@dxos/async';
|
|
6
|
-
|
|
7
|
-
export type ConnectionInfo = {
|
|
8
|
-
initiator: boolean;
|
|
9
|
-
};
|
|
10
|
-
|
|
11
|
-
export interface RtcConnectionFactory {
|
|
12
|
-
initialize(): Promise<void>;
|
|
13
|
-
onConnectionDestroyed(): Promise<void>;
|
|
14
|
-
createConnection(config: RTCConfiguration): Promise<RTCPeerConnection>;
|
|
15
|
-
initConnection(connection: RTCPeerConnection, info: ConnectionInfo): Promise<void>;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Use built-in browser RTCPeerConnection.
|
|
20
|
-
*/
|
|
21
|
-
class BrowserRtcConnectionFactory implements RtcConnectionFactory {
|
|
22
|
-
async initialize() {}
|
|
23
|
-
async onConnectionDestroyed() {}
|
|
24
|
-
|
|
25
|
-
async createConnection(config: RTCConfiguration) {
|
|
26
|
-
return new RTCPeerConnection(config);
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
async initConnection(connection: RTCPeerConnection, info: ConnectionInfo): Promise<void> {}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Use `node-datachannel` polyfill.
|
|
34
|
-
* https://github.com/paullouisageneau/libdatachannel
|
|
35
|
-
*/
|
|
36
|
-
class NodeRtcConnectionFactory implements RtcConnectionFactory {
|
|
37
|
-
private static _createdConnections = 0;
|
|
38
|
-
private static _cleanupMutex = new Mutex();
|
|
39
|
-
|
|
40
|
-
// This should be inside the function to avoid triggering `eval` in the global scope.
|
|
41
|
-
// eslint-disable-next-line no-new-func
|
|
42
|
-
|
|
43
|
-
// TODO(burdon): Do imports here?
|
|
44
|
-
async initialize() {}
|
|
45
|
-
async onConnectionDestroyed() {
|
|
46
|
-
return NodeRtcConnectionFactory._cleanupMutex.executeSynchronized(async () => {
|
|
47
|
-
if (--NodeRtcConnectionFactory._createdConnections === 0) {
|
|
48
|
-
(await import('#node-datachannel')).cleanup();
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
async createConnection(config: RTCConfiguration) {
|
|
54
|
-
return NodeRtcConnectionFactory._cleanupMutex.executeSynchronized(async () => {
|
|
55
|
-
const { RTCPeerConnection } = await import('#node-datachannel/polyfill');
|
|
56
|
-
NodeRtcConnectionFactory._createdConnections++;
|
|
57
|
-
return new RTCPeerConnection(config);
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
async initConnection(connection: RTCPeerConnection, info: ConnectionInfo): Promise<void> {
|
|
62
|
-
// Initiator peer is responsible for data-channel creation. This triggers the callback in browsers.
|
|
63
|
-
// In node-datachannel/polyfill createOffer() / setLocalDescription(offer) are no-ops, the process
|
|
64
|
-
// is handled by c++ implementation when a data-channel gets created.
|
|
65
|
-
// By calling the method here we'll start waiting for an offer promise that'll resolve on data-channel creation
|
|
66
|
-
// at which point we'll need to send an SDP to a remote peer.
|
|
67
|
-
// https://github.com/murat-dogan/node-datachannel/blob/master/polyfill/RTCPeerConnection.js#L452C1-L459C6
|
|
68
|
-
//
|
|
69
|
-
if (info.initiator) {
|
|
70
|
-
connection.onnegotiationneeded?.(null as any);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Create platform-specific connection factory.
|
|
77
|
-
*/
|
|
78
|
-
export const getRtcConnectionFactory = (): RtcConnectionFactory => {
|
|
79
|
-
return typeof (globalThis as any).RTCPeerConnection === 'undefined'
|
|
80
|
-
? new NodeRtcConnectionFactory()
|
|
81
|
-
: new BrowserRtcConnectionFactory();
|
|
82
|
-
};
|