@dxos/network-manager 0.1.56-main.e47dfd1 → 0.1.56-main.e79d64a
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-5R7TDXUU.mjs → chunk-WQ3YXGWP.mjs} +702 -276
- package/dist/lib/browser/chunk-WQ3YXGWP.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +23 -16
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node/index.cjs +700 -274
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +648 -271
- package/dist/lib/node/testing/index.cjs.map +3 -3
- package/dist/types/src/connection-log.d.ts.map +1 -1
- package/dist/types/src/network-manager.d.ts.map +1 -1
- package/dist/types/src/signal/swarm-messenger.d.ts +1 -1
- package/dist/types/src/signal/swarm-messenger.d.ts.map +1 -1
- package/dist/types/src/swarm/connection-limiter.d.ts +1 -1
- package/dist/types/src/swarm/connection-limiter.d.ts.map +1 -1
- package/dist/types/src/swarm/connection.d.ts +2 -1
- package/dist/types/src/swarm/connection.d.ts.map +1 -1
- package/dist/types/src/swarm/peer.d.ts +1 -1
- package/dist/types/src/swarm/peer.d.ts.map +1 -1
- package/dist/types/src/swarm/swarm.d.ts.map +1 -1
- package/dist/types/src/testing/test-builder.d.ts +4 -3
- package/dist/types/src/testing/test-builder.d.ts.map +1 -1
- package/dist/types/src/testing/test-wire-protocol.d.ts +13 -2
- package/dist/types/src/testing/test-wire-protocol.d.ts.map +1 -1
- package/dist/types/src/topology/fully-connected-topology.d.ts.map +1 -1
- package/dist/types/src/topology/star-topology.d.ts.map +1 -1
- package/dist/types/src/transport/memory-transport.d.ts.map +1 -1
- package/dist/types/src/transport/webrtc-transport-proxy.d.ts +1 -1
- package/dist/types/src/transport/webrtc-transport-proxy.d.ts.map +1 -1
- package/dist/types/src/transport/webrtc-transport-service.d.ts.map +1 -1
- package/dist/types/src/transport/webrtc-transport.d.ts +3 -3
- package/dist/types/src/transport/webrtc-transport.d.ts.map +1 -1
- package/package.json +18 -18
- package/src/connection-log.ts +2 -0
- package/src/network-manager.ts +1 -2
- package/src/signal/swarm-messenger.ts +3 -4
- package/src/swarm/connection-limiter.ts +3 -2
- package/src/swarm/connection.ts +29 -6
- package/src/swarm/peer.ts +32 -8
- package/src/swarm/swarm.ts +6 -7
- package/src/testing/test-builder.ts +9 -5
- package/src/testing/test-wire-protocol.ts +22 -2
- package/src/tests/memory-transport.test.ts +1 -1
- package/src/topology/fully-connected-topology.ts +1 -2
- package/src/topology/mmst-topology.ts +1 -1
- package/src/topology/star-topology.ts +1 -2
- package/src/transport/memory-transport.ts +1 -1
- package/src/transport/webrtc-transport-proxy.ts +18 -16
- package/src/transport/webrtc-transport-service.ts +31 -8
- package/src/transport/webrtc-transport.ts +21 -7
- package/dist/lib/browser/chunk-5R7TDXUU.mjs.map +0 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-log.d.ts","sourceRoot":"","sources":["../../../src/connection-log.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAkB,MAAM,2CAA2C,CAAC;AAItF,OAAO,EAAmB,KAAK,EAAE,MAAM,SAAS,CAAC;AAGjD,oBAAY,SAAS;IACnB,wBAAwB,6BAA6B;IACrD,cAAc,mBAAmB;IACjC,+BAA+B,oCAAoC;IACnE,6BAA6B,kCAAkC;IAC/D,kBAAkB,uBAAuB;CAC1C;AAED,qBAAa,aAAa;IACxB;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwD;IAEhF,QAAQ,CAAC,MAAM,cAAe;IAE9B,YAAY,CAAC,OAAO,EAAE,SAAS;IAI/B,IAAI,MAAM,IAAI,SAAS,EAAE,CAExB;IAED,WAAW,CAAC,KAAK,EAAE,KAAK;
|
|
1
|
+
{"version":3,"file":"connection-log.d.ts","sourceRoot":"","sources":["../../../src/connection-log.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,SAAS,EAAkB,MAAM,2CAA2C,CAAC;AAItF,OAAO,EAAmB,KAAK,EAAE,MAAM,SAAS,CAAC;AAGjD,oBAAY,SAAS;IACnB,wBAAwB,6BAA6B;IACrD,cAAc,mBAAmB;IACjC,+BAA+B,oCAAoC;IACnE,6BAA6B,kCAAkC;IAC/D,kBAAkB,uBAAuB;CAC1C;AAED,qBAAa,aAAa;IACxB;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwD;IAEhF,QAAQ,CAAC,MAAM,cAAe;IAE9B,YAAY,CAAC,OAAO,EAAE,SAAS;IAI/B,IAAI,MAAM,IAAI,SAAS,EAAE,CAExB;IAED,WAAW,CAAC,KAAK,EAAE,KAAK;IAoExB,SAAS,CAAC,KAAK,EAAE,KAAK;CAIvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"network-manager.d.ts","sourceRoot":"","sources":["../../../src/network-manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"network-manager.d.ts","sourceRoot":"","sources":["../../../src/network-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAa,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAE3D,OAAO,EAAE,eAAe,EAAE,MAAM,4CAA4C,CAAC;AAG7E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,KAAK,EAAE,WAAW,EAAqB,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAGF,MAAM,MAAM,YAAY,GAAG;IACzB;;OAEG;IACH,KAAK,EAAE,SAAS,CAAC;IAEjB;;OAEG;IACH,MAAM,EAAE,SAAS,CAAC;IAElB;;OAEG;IACH,gBAAgB,EAAE,oBAAoB,CAAC;IAEvC;;OAEG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAEpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,aAAa,EAAE,aAAa,CAAC;IAC7B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAEF;;GAEG;AAEH,qBAAa,cAAc;IAKzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA0D;IAEnF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAoB;IAEvD,OAAO,CAAC,gBAAgB,CAA0B;IAClD,SAAgB,sBAAsB,yBAAgC;IAEtE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAgB;IAEhD,SAAgB,aAAa,cAAqB;IAElD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;gBAE9C,EAAE,gBAAgB,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,qBAAqB;IAoB3E,IAAI,aAAa,8BAEhB;IAED,IAAI,eAAe,oBAElB;IAGD,IAAI,MAAM,gBAET;IAED,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS;IAItD,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,KAAK,GAAG,SAAS;IAIvC,IAAI;IAOJ,KAAK;IAWX;;OAEG;IACG,SAAS,CAAC,EACd,KAAK,EACL,MAAM,EACN,QAAQ,EACR,gBAAgB,EAAE,QAAQ,EAC1B,KAAK,GACN,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC;IA0C1C;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,SAAS;IAuB3B,kBAAkB,CAAC,KAAK,EAAE,eAAe;CA0BhD"}
|
|
@@ -17,8 +17,8 @@ export type SwarmMessengerOptions = {
|
|
|
17
17
|
*/
|
|
18
18
|
export declare class SwarmMessenger implements SignalMessenger {
|
|
19
19
|
private readonly _ctx;
|
|
20
|
-
private readonly _onSignal;
|
|
21
20
|
private readonly _sendMessage;
|
|
21
|
+
private readonly _onSignal;
|
|
22
22
|
private readonly _onOffer;
|
|
23
23
|
private readonly _topic;
|
|
24
24
|
private readonly _offerRecords;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swarm-messenger.d.ts","sourceRoot":"","sources":["../../../../src/signal/swarm-messenger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"swarm-messenger.d.ts","sourceRoot":"","sources":["../../../../src/signal/swarm-messenger.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAG3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,MAAM,EAAgB,MAAM,uCAAuC,CAAC;AAG7E,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAMlF,MAAM,MAAM,qBAAqB,GAAG;IAClC,WAAW,EAAE,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,SAAS,CAAC;QAAC,SAAS,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,GAAG,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClG,OAAO,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,KAAK,EAAE,SAAS,CAAC;CAClB,CAAC;AAIF;;GAEG;AACH,qBAAa,cAAe,YAAW,eAAe;IACpD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IAEtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoF;IACjH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4C;IACtE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6C;IACtE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IAEnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA4E;gBAE9F,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,qBAAqB;IAOtE,cAAc,CAAC,EACnB,MAAM,EACN,SAAS,EACT,OAAO,GACR,EAAE;QACD,MAAM,EAAE,SAAS,CAAC;QAClB,SAAS,EAAE,SAAS,CAAC;QACrB,OAAO,EAAE,GAAG,CAAC;KACd,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BX,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAS7C,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;YAerC,oBAAoB;YA0BpB,eAAe;YAWf,YAAY;YAiCZ,aAAa;CAuB5B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DeferredTask } from '@dxos/async';
|
|
2
2
|
import { PublicKey } from '@dxos/keys';
|
|
3
|
-
export declare const MAX_CONCURRENT_INITIATING_CONNECTIONS =
|
|
3
|
+
export declare const MAX_CONCURRENT_INITIATING_CONNECTIONS = 10;
|
|
4
4
|
export type ConnectionLimiterOptions = {
|
|
5
5
|
maxConcurrentInitConnections?: number;
|
|
6
6
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-limiter.d.ts","sourceRoot":"","sources":["../../../../src/swarm/connection-limiter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"connection-limiter.d.ts","sourceRoot":"","sources":["../../../../src/swarm/connection-limiter.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAI3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,eAAO,MAAM,qCAAqC,KAAK,CAAC;AAExD,MAAM,MAAM,wBAAwB,GAAG;IACrC,4BAA4B,CAAC,EAAE,MAAM,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IAC/C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAE/B;IAEF,sBAAsB,eAMnB;gBAES,EAAE,4BAAoE,EAAE,GAAE,wBAA6B;IAInH;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAarD;;OAEG;IACH,cAAc,CAAC,SAAS,EAAE,SAAS;CASpC"}
|
|
@@ -46,6 +46,7 @@ export declare class Connection {
|
|
|
46
46
|
private readonly _ctx;
|
|
47
47
|
private _state;
|
|
48
48
|
private _transport;
|
|
49
|
+
closeReason?: string;
|
|
49
50
|
private _incomingSignalBuffer;
|
|
50
51
|
private _outgoingSignalBuffer;
|
|
51
52
|
readonly stateChanged: Event<ConnectionState>;
|
|
@@ -62,7 +63,7 @@ export declare class Connection {
|
|
|
62
63
|
* Create an underlying transport and prepares it for the connection.
|
|
63
64
|
*/
|
|
64
65
|
openConnection(): Promise<void>;
|
|
65
|
-
close(): Promise<void>;
|
|
66
|
+
close(err?: Error): Promise<void>;
|
|
66
67
|
private _sendSignal;
|
|
67
68
|
private _flushSignalBuffer;
|
|
68
69
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/swarm/connection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../../../../src/swarm/connection.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,EAAuB,MAAM,aAAa,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAKvC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAahD;;GAEG;AACH,oBAAY,eAAe;IACzB;;;OAGG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,UAAU,eAAe;IAEzB;;OAEG;IACH,SAAS,cAAc;IAEvB;;OAEG;IACH,OAAO,YAAY;IAEnB;;OAEG;IACH,MAAM,WAAW;CAClB;AAED;;;GAGG;AACH,qBAAa,UAAU;aAsBH,KAAK,EAAE,SAAS;aAChB,KAAK,EAAE,SAAS;aAChB,QAAQ,EAAE,SAAS;aACnB,SAAS,EAAE,SAAS;aACpB,SAAS,EAAE,OAAO;IAClC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IA5BpC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IAEtC,OAAO,CAAC,MAAM,CAA4C;IAC1D,OAAO,CAAC,UAAU,CAAwB;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,OAAO,CAAC,qBAAqB,CAAgB;IAC7C,OAAO,CAAC,qBAAqB,CAAgB;IAE7C,QAAQ,CAAC,YAAY,yBAAgC;IACrD,QAAQ,CAAC,MAAM,cAAqB;IAE7B,WAAW,SAA8B;IAEhD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAE7B;IAEH,OAAO,CAAC,gBAAgB,CAA6B;gBAGnC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,SAAS,EAAE,wBAAwB;IAC1C,QAAQ,EAAE,SAAS,EACnB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,OAAO,EACjB,gBAAgB,EAAE,eAAe,EACjC,SAAS,EAAE,YAAY,EACvB,iBAAiB,EAAE,gBAAgB;IAWtD,IAAI,KAAK,oBAER;IAED,IAAI,SAAS,0BAEZ;IAED,IAAI,QAAQ,iBAEX;IAED;;OAEG;IACG,cAAc;IA4Dd,KAAK,CAAC,GAAG,CAAC,EAAE,KAAK;IA+BvB,OAAO,CAAC,WAAW;YAKL,kBAAkB;IAgChC;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,aAAa;IA2B/B,OAAO,CAAC,YAAY;CAMrB"}
|
|
@@ -76,7 +76,7 @@ export declare class Peer {
|
|
|
76
76
|
* Either we're initiating a connection or creating one in response to an offer from the other peer.
|
|
77
77
|
*/
|
|
78
78
|
private _createConnection;
|
|
79
|
-
closeConnection(): Promise<void>;
|
|
79
|
+
closeConnection(err?: Error): Promise<void>;
|
|
80
80
|
onSignal(message: SignalMessage): Promise<void>;
|
|
81
81
|
destroy(): Promise<void>;
|
|
82
82
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../../../src/swarm/peer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../../../src/swarm/peer.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAE/D,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAmB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzD,UAAU,aAAa;IACrB;;OAEG;IACH,WAAW,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAE9C;;OAEG;IACH,WAAW,EAAE,MAAM,IAAI,CAAC;IAExB;;OAEG;IACH,cAAc,EAAE,MAAM,IAAI,CAAC;IAE3B;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB;;OAEG;IACH,UAAU,EAAE,MAAM,IAAI,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEnD;;OAEG;IACH,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAOD;;;GAGG;AACH,qBAAa,IAAI;aAsBG,EAAE,EAAE,SAAS;aACb,KAAK,EAAE,SAAS;aAChB,WAAW,EAAE,SAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU;IA5B7B;;OAEG;IACH,OAAO,CAAC,eAAe,CAAK;IACrB,kBAAkB,UAAQ;IACjC,OAAO,CAAC,mBAAmB,CAAC,CAAS;IAErC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,cAAc,CAAC,CAAU;IAE1B,UAAU,CAAC,EAAE,UAAU,CAAC;IAE/B;;OAEG;IACI,WAAW,UAAS;IAEpB,UAAU,UAAS;gBAIR,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,SAAS,EACrB,gBAAgB,EAAE,eAAe,EACjC,iBAAiB,EAAE,oBAAoB,EACvC,iBAAiB,EAAE,gBAAgB,EACnC,kBAAkB,EAAE,iBAAiB,EACrC,UAAU,EAAE,aAAa;IAG5C;;OAEG;IACG,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAiDrD;;OAEG;IACG,kBAAkB;IAyCxB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAqGnB,eAAe,CAAC,GAAG,CAAC,EAAE,KAAK;IAc3B,QAAQ,CAAC,OAAO,EAAE,aAAa;IAU/B,OAAO;CAOd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../../../src/swarm/swarm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"swarm.d.ts","sourceRoot":"","sources":["../../../../src/swarm/swarm.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAmB,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAG/D,OAAO,EAAkB,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAmB,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAmB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAQzD;;;;GAIG;AACH,qBAAa,KAAK;IA0Cd,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAhDrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAEjD,OAAO,CAAC,IAAI,CAAiB;IAE7B,OAAO,CAAC,gBAAgB,CAAC,CAA8B;IAOvD;;OAEG;IAEH,QAAQ,CAAC,WAAW,SAA8B;IAoBlD,QAAQ,CAAC,MAAM,cAAqB;gBAMjB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,SAAS,EAC9B,SAAS,EAAE,QAAQ,EACV,iBAAiB,EAAE,oBAAoB,EACvC,UAAU,EAAE,SAAS,EACrB,iBAAiB,EAAE,gBAAgB,EACnC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,kBAAkB,EAAE,iBAAiB;IAkBxD,IAAI,WAAW,iBAId;IAED,IACI,SAAS,cAEZ;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,GAAG,SAAS,CAE9B;IAED,IACI,KAAK,IAAI,KAAK,CAEjB;IAEK,IAAI;IAaJ,OAAO;IAWP,WAAW,CAAC,QAAQ,EAAE,QAAQ;IAiBpC,YAAY,CAAC,UAAU,EAAE,UAAU;IA8B7B,OAAO,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAwB/C,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB/C,SAAS;IAOT,QAAQ;IAId,OAAO,CAAC,gBAAgB;YAkDV,YAAY;IAM1B,OAAO,CAAC,mBAAmB;IAuC3B;;OAEG;YACW,mBAAmB;YA0BnB,gBAAgB;CAQ/B"}
|
|
@@ -3,7 +3,7 @@ import { MemorySignalManager, WebsocketSignalManager } from '@dxos/messaging';
|
|
|
3
3
|
import { Runtime } from '@dxos/protocols/proto/dxos/config';
|
|
4
4
|
import { NetworkManager } from '../network-manager';
|
|
5
5
|
import { FullyConnectedTopology } from '../topology';
|
|
6
|
-
import { TestWireProtocol } from './test-wire-protocol';
|
|
6
|
+
import { TestWireProtocol, type TestTeleportExtensionFactory } from './test-wire-protocol';
|
|
7
7
|
export declare const TEST_SIGNAL_HOSTS: Runtime.Services.Signal[];
|
|
8
8
|
export type TestBuilderOptions = {
|
|
9
9
|
signalHosts?: Runtime.Services.Signal[];
|
|
@@ -33,15 +33,16 @@ export declare class TestPeer {
|
|
|
33
33
|
open(): Promise<void>;
|
|
34
34
|
close(): Promise<void>;
|
|
35
35
|
getSwarm(topic: PublicKey): TestSwarmConnection;
|
|
36
|
-
createSwarm(topic: PublicKey): TestSwarmConnection;
|
|
36
|
+
createSwarm(topic: PublicKey, extensionFactory?: TestTeleportExtensionFactory): TestSwarmConnection;
|
|
37
37
|
goOffline(): Promise<void>;
|
|
38
38
|
goOnline(): Promise<void>;
|
|
39
39
|
}
|
|
40
40
|
export declare class TestSwarmConnection {
|
|
41
41
|
readonly peer: TestPeer;
|
|
42
42
|
readonly topic: PublicKey;
|
|
43
|
+
readonly extensionFactory: TestTeleportExtensionFactory;
|
|
43
44
|
protocol: TestWireProtocol;
|
|
44
|
-
constructor(peer: TestPeer, topic: PublicKey);
|
|
45
|
+
constructor(peer: TestPeer, topic: PublicKey, extensionFactory: TestTeleportExtensionFactory);
|
|
45
46
|
join(topology?: FullyConnectedTopology): Promise<this>;
|
|
46
47
|
leave(): Promise<this>;
|
|
47
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-builder.d.ts","sourceRoot":"","sources":["../../../../src/testing/test-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EACL,mBAAmB,EAGnB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAI5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAQrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"test-builder.d.ts","sourceRoot":"","sources":["../../../../src/testing/test-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EACL,mBAAmB,EAGnB,sBAAsB,EACvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAI5D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAQrD,OAAO,EAAE,gBAAgB,EAAE,KAAK,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAI3F,eAAO,MAAM,iBAAiB,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAEtD,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;IACxC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,qBAAa,WAAW;aAGM,OAAO,EAAE,kBAAkB;IAFvD,OAAO,CAAC,cAAc,CAAoC;gBAE9B,OAAO,GAAE,kBAAuB;IAE5D,mBAAmB;IAQnB,UAAU,CAAC,MAAM,GAAE,SAA8B;CAGlD;AAED;;GAEG;AACH,qBAAa,QAAQ;IAgBP,OAAO,CAAC,QAAQ,CAAC,WAAW;aAA+B,MAAM,EAAE,SAAS;IAfxF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkE;IAY1F,OAAO,CAAC,MAAM,CAAC,CAAoB;IACnC,OAAO,CAAC,QAAQ,CAAC,CAAoB;gBAER,WAAW,EAAE,WAAW,EAAkB,MAAM,EAAE,SAAS;IAMxF,oBAAoB;IA6Cd,IAAI;IAMJ,KAAK;IASX,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,mBAAmB;IAS/C,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,gBAAgB,GAAE,4BAAuC,GAAG,mBAAmB;IAWvG,SAAS;IAIT,QAAQ;CAGf;AAGD,qBAAa,mBAAmB;IAI5B,QAAQ,CAAC,IAAI,EAAE,QAAQ;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS;IACzB,QAAQ,CAAC,gBAAgB,EAAE,4BAA4B;IALzD,QAAQ,EAAE,gBAAgB,CAAC;gBAGhB,IAAI,EAAE,QAAQ,EACd,KAAK,EAAE,SAAS,EAChB,gBAAgB,EAAE,4BAA4B;IASnD,IAAI,CAAC,QAAQ,yBAA+B;IAW5C,KAAK;CAIZ"}
|
|
@@ -1,14 +1,25 @@
|
|
|
1
1
|
import { Event } from '@dxos/async';
|
|
2
2
|
import { PublicKey } from '@dxos/keys';
|
|
3
|
-
import { TestExtension, TestExtensionWithStreams
|
|
3
|
+
import { TestExtension, TestExtensionWithStreams } from '@dxos/teleport';
|
|
4
|
+
import type { TestStreamStats, TeleportExtension } from '@dxos/teleport';
|
|
4
5
|
import { ComplexMap } from '@dxos/util';
|
|
6
|
+
export type TestTeleportExtension = {
|
|
7
|
+
name: string;
|
|
8
|
+
extension: TeleportExtension;
|
|
9
|
+
};
|
|
10
|
+
export type TestTeleportExtensionFactory = () => TestTeleportExtension[];
|
|
5
11
|
export declare class TestWireProtocol {
|
|
6
12
|
readonly peerId: PublicKey;
|
|
13
|
+
private readonly _extensionFactory;
|
|
7
14
|
readonly connections: ComplexMap<PublicKey, TestExtension>;
|
|
8
15
|
readonly streamConnections: ComplexMap<PublicKey, TestExtensionWithStreams>;
|
|
9
16
|
readonly connected: Event<PublicKey>;
|
|
10
17
|
readonly disconnected: Event<PublicKey>;
|
|
11
|
-
|
|
18
|
+
readonly otherConnections: ComplexMap<{
|
|
19
|
+
remotePeerId: PublicKey;
|
|
20
|
+
extension: string;
|
|
21
|
+
}, TeleportExtension>;
|
|
22
|
+
constructor(peerId: PublicKey, _extensionFactory?: TestTeleportExtensionFactory);
|
|
12
23
|
readonly factory: import("../wire-protocol").WireProtocolProvider;
|
|
13
24
|
waitForConnection(peerId: PublicKey): Promise<TestExtension>;
|
|
14
25
|
testConnection(peerId: PublicKey, message?: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-wire-protocol.d.ts","sourceRoot":"","sources":["../../../../src/testing/test-wire-protocol.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"test-wire-protocol.d.ts","sourceRoot":"","sources":["../../../../src/testing/test-wire-protocol.ts"],"names":[],"mappings":"AAIA,OAAO,EAAgB,KAAK,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIxC,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,iBAAiB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,MAAM,qBAAqB,EAAE,CAAC;AAEzE,qBAAa,gBAAgB;aAYT,MAAM,EAAE,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAZpC,SAAgB,WAAW,uCAA4D;IACvF,SAAgB,iBAAiB,kDAAuE;IAExG,SAAgB,SAAS,mBAA0B;IACnD,SAAgB,YAAY,mBAA0B;IAEtD,SAAgB,gBAAgB;sBAAkC,SAAS;mBAAa,MAAM;0BAE5F;gBAGgB,MAAM,EAAE,SAAS,EAChB,iBAAiB,GAAE,4BAAuC;IAG7E,QAAQ,CAAC,OAAO,kDAwBb;IAEG,iBAAiB,CAAC,MAAM,EAAE,SAAS;IAanC,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,MAAM;IAKlD,UAAU,CACd,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,kBAAkB,EAAE,MAAM,EAC1B,mBAAmB,EAAE,MAAM,GAC1B,OAAO,CAAC,MAAM,CAAC;IAQZ,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;CAOlF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fully-connected-topology.d.ts","sourceRoot":"","sources":["../../../../src/topology/fully-connected-topology.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fully-connected-topology.d.ts","sourceRoot":"","sources":["../../../../src/topology/fully-connected-topology.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD,qBAAa,sBAAuB,YAAW,QAAQ;IACrD,OAAO,CAAC,WAAW,CAAC,CAAkB;IAEtC,QAAQ;IAIR,IAAI,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI;IAKvC,MAAM,IAAI,IAAI;IASR,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"star-topology.d.ts","sourceRoot":"","sources":["../../../../src/topology/star-topology.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"star-topology.d.ts","sourceRoot":"","sources":["../../../../src/topology/star-topology.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAGvC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEvD,qBAAa,YAAa,YAAW,QAAQ;IAKzC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAJ/B,OAAO,CAAC,WAAW,CAAC,CAAkB;gBAInB,YAAY,EAAE,SAAS;IAG1C,QAAQ;IAIR,IAAI,CAAC,UAAU,EAAE,eAAe,GAAG,IAAI;IAKvC,MAAM,IAAI,IAAI;IAwBR,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC;IAW1C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAG/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/memory-transport.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"memory-transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/memory-transport.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAW,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAG/D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAkB5E,eAAO,MAAM,sBAAsB,EAAE,gBAEpC,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAuBnC,OAAO,CAAC,QAAQ,CAAC,OAAO;IArBpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAA8D;IAElG,SAAgB,MAAM,cAAqB;IAC3C,SAAgB,SAAS,cAAqB;IAC9C,SAAgB,MAAM,cAAqB;IAG3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAElD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAEpD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAE5E,OAAO,CAAC,UAAU,CAAS;IAG3B,OAAO,CAAC,iBAAiB,CAAa;IAEtC,OAAO,CAAC,iBAAiB,CAAC,CAAkB;gBAEf,OAAO,EAAE,gBAAgB;IA4DhD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B9B,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM;CAY3B"}
|
|
@@ -15,9 +15,9 @@ export declare class WebRTCTransportProxy implements Transport {
|
|
|
15
15
|
private readonly _proxyId;
|
|
16
16
|
private readonly _ctx;
|
|
17
17
|
readonly closed: Event<void>;
|
|
18
|
-
private _closed;
|
|
19
18
|
readonly connected: Event<void>;
|
|
20
19
|
readonly errors: ErrorStream;
|
|
20
|
+
private _closed;
|
|
21
21
|
private _serviceStream;
|
|
22
22
|
constructor(_params: WebRTCTransportProxyParams);
|
|
23
23
|
private _handleConnection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webrtc-transport-proxy.d.ts","sourceRoot":"","sources":["../../../../src/transport/webrtc-transport-proxy.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"webrtc-transport-proxy.d.ts","sourceRoot":"","sources":["../../../../src/transport/webrtc-transport-proxy.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI1C,OAAO,EAAgC,aAAa,EAAE,MAAM,wCAAwC,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAG/D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5E,MAAM,MAAM,0BAA0B,GAAG;IACvC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAC/B,aAAa,EAAE,aAAa,CAAC;IAE7B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF,qBAAa,oBAAqB,YAAW,SAAS;IAalD,OAAO,CAAC,QAAQ,CAAC,OAAO;IAZ1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IAEtC,QAAQ,CAAC,MAAM,cAAe;IAC9B,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,MAAM,cAAqB;IAEpC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAuB;gBAI1B,OAAO,EAAE,0BAA0B;YAsCxC,iBAAiB;IAiB/B,OAAO,CAAC,WAAW;YAKL,aAAa;IAI3B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAUtB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkB9B;;OAEG;IAEH,UAAU;CAKX;AAGD,qBAAa,2BAA4B,YAAW,gBAAgB;IAClE,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,YAAY,CAAmC;IAEvD;;;OAGG;IACH,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI;IAShE,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS;CAatD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webrtc-transport-service.d.ts","sourceRoot":"","sources":["../../../../src/transport/webrtc-transport-service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webrtc-transport-service.d.ts","sourceRoot":"","sources":["../../../../src/transport/webrtc-transport-service.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAI9C,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,WAAW,EAEX,YAAY,EACb,MAAM,wCAAwC,CAAC;AAWhD,qBAAa,sBAAuB,YAAW,aAAa;IAKxD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAJjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6D;gBAIrE,aAAa,CAAC,KAAK;IAGtC,IAAI,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC;IA0E/C,UAAU,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7D,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,YAAY;CAMtC"}
|
|
@@ -5,21 +5,21 @@ import { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';
|
|
|
5
5
|
import { Transport, TransportFactory } from './transport';
|
|
6
6
|
export type WebRTCTransportParams = {
|
|
7
7
|
initiator: boolean;
|
|
8
|
-
stream: NodeJS.ReadWriteStream;
|
|
9
8
|
webrtcConfig?: any;
|
|
9
|
+
stream: NodeJS.ReadWriteStream;
|
|
10
10
|
sendSignal: (signal: Signal) => Promise<void>;
|
|
11
11
|
};
|
|
12
12
|
/**
|
|
13
|
-
* Implements
|
|
13
|
+
* Implements WebRTC transport using simple-peer (used by WebTorrent).
|
|
14
14
|
*/
|
|
15
15
|
export declare class WebRTCTransport implements Transport {
|
|
16
16
|
private readonly params;
|
|
17
|
+
private readonly _instanceId;
|
|
17
18
|
private readonly _peer;
|
|
18
19
|
private _closed;
|
|
19
20
|
readonly closed: Event<void>;
|
|
20
21
|
readonly connected: Event<void>;
|
|
21
22
|
readonly errors: ErrorStream;
|
|
22
|
-
private readonly _instanceId;
|
|
23
23
|
constructor(params: WebRTCTransportParams);
|
|
24
24
|
destroy(): Promise<void>;
|
|
25
25
|
signal(signal: Signal): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webrtc-transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/webrtc-transport.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"webrtc-transport.d.ts","sourceRoot":"","sources":["../../../../src/transport/webrtc-transport.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AAKjD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG1D,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,OAAO,CAAC;IAEnB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAE/B,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAMF;;GAEG;AACH,qBAAa,eAAgB,YAAW,SAAS;IASnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IARnC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8B;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IAEnC,OAAO,CAAC,OAAO,CAAS;IACxB,QAAQ,CAAC,MAAM,cAAe;IAC9B,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,MAAM,cAAqB;gBAEP,MAAM,EAAE,qBAAqB;IAuDpD,OAAO;IASb,MAAM,CAAC,MAAM,EAAE,MAAM;YASP,kBAAkB;CAIjC;AAGD,eAAO,MAAM,4BAA4B,kBAAmB,GAAG,KAAG,gBAMhE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dxos/network-manager",
|
|
3
|
-
"version": "0.1.56-main.
|
|
3
|
+
"version": "0.1.56-main.e79d64a",
|
|
4
4
|
"description": "Network Manager",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -23,24 +23,24 @@
|
|
|
23
23
|
"isomorphic-ws": "^4.0.1",
|
|
24
24
|
"nanomessage-rpc": "^3.0.0",
|
|
25
25
|
"simple-peer": "9.11.1",
|
|
26
|
-
"tiny-invariant": "^1.3.1",
|
|
27
26
|
"ws": "^7.4.4",
|
|
28
27
|
"xor-distance": "^2.0.0",
|
|
29
|
-
"@dxos/async": "0.1.56-main.
|
|
30
|
-
"@dxos/codec-protobuf": "0.1.56-main.
|
|
31
|
-
"@dxos/context": "0.1.56-main.
|
|
32
|
-
"@dxos/credentials": "0.1.56-main.
|
|
33
|
-
"@dxos/crypto": "0.1.56-main.
|
|
34
|
-
"@dxos/debug": "0.1.56-main.
|
|
35
|
-
"@dxos/errors": "0.1.56-main.
|
|
36
|
-
"@dxos/
|
|
37
|
-
"@dxos/
|
|
38
|
-
"@dxos/
|
|
39
|
-
"@dxos/
|
|
40
|
-
"@dxos/
|
|
41
|
-
"@dxos/
|
|
42
|
-
"@dxos/
|
|
43
|
-
"@dxos/
|
|
28
|
+
"@dxos/async": "0.1.56-main.e79d64a",
|
|
29
|
+
"@dxos/codec-protobuf": "0.1.56-main.e79d64a",
|
|
30
|
+
"@dxos/context": "0.1.56-main.e79d64a",
|
|
31
|
+
"@dxos/credentials": "0.1.56-main.e79d64a",
|
|
32
|
+
"@dxos/crypto": "0.1.56-main.e79d64a",
|
|
33
|
+
"@dxos/debug": "0.1.56-main.e79d64a",
|
|
34
|
+
"@dxos/errors": "0.1.56-main.e79d64a",
|
|
35
|
+
"@dxos/invariant": "0.1.56-main.e79d64a",
|
|
36
|
+
"@dxos/keys": "0.1.56-main.e79d64a",
|
|
37
|
+
"@dxos/log": "0.1.56-main.e79d64a",
|
|
38
|
+
"@dxos/messaging": "0.1.56-main.e79d64a",
|
|
39
|
+
"@dxos/node-std": "0.1.56-main.e79d64a",
|
|
40
|
+
"@dxos/protocols": "0.1.56-main.e79d64a",
|
|
41
|
+
"@dxos/rpc": "0.1.56-main.e79d64a",
|
|
42
|
+
"@dxos/teleport": "0.1.56-main.e79d64a",
|
|
43
|
+
"@dxos/util": "0.1.56-main.e79d64a"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@swc-node/register": "1.5.4",
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
"earljs": "~0.1.10",
|
|
51
51
|
"fast-check": "~3.3.0",
|
|
52
52
|
"typescript": "^5.0.4",
|
|
53
|
-
"@dxos/signal": "0.1.56-main.
|
|
53
|
+
"@dxos/signal": "0.1.56-main.e79d64a"
|
|
54
54
|
},
|
|
55
55
|
"publishConfig": {
|
|
56
56
|
"access": "public"
|
package/src/connection-log.ts
CHANGED
|
@@ -51,6 +51,7 @@ export class ConnectionLog {
|
|
|
51
51
|
swarm.connectionAdded.on((connection) => {
|
|
52
52
|
const connectionInfo: ConnectionInfo = {
|
|
53
53
|
state: ConnectionState.INITIAL,
|
|
54
|
+
closeReason: connection.closeReason,
|
|
54
55
|
remotePeerId: connection.remoteId,
|
|
55
56
|
sessionId: connection.sessionId,
|
|
56
57
|
transport: connection.transport && Object.getPrototypeOf(connection.transport).constructor.name,
|
|
@@ -62,6 +63,7 @@ export class ConnectionLog {
|
|
|
62
63
|
|
|
63
64
|
connection.stateChanged.on((state) => {
|
|
64
65
|
connectionInfo.state = state;
|
|
66
|
+
connectionInfo.closeReason = connection.closeReason;
|
|
65
67
|
connectionInfo.events!.push({
|
|
66
68
|
type: EventType.CONNECTION_STATE_CHANGED,
|
|
67
69
|
newState: state,
|
package/src/network-manager.ts
CHANGED
|
@@ -2,9 +2,8 @@
|
|
|
2
2
|
// Copyright 2020 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import invariant from 'tiny-invariant';
|
|
6
|
-
|
|
7
5
|
import { Event } from '@dxos/async';
|
|
6
|
+
import { invariant } from '@dxos/invariant';
|
|
8
7
|
import { PublicKey } from '@dxos/keys';
|
|
9
8
|
import { log } from '@dxos/log';
|
|
10
9
|
import { Messenger, SignalManager } from '@dxos/messaging';
|
|
@@ -2,10 +2,9 @@
|
|
|
2
2
|
// Copyright 2020 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import invariant from 'tiny-invariant';
|
|
6
|
-
|
|
7
5
|
import { Any } from '@dxos/codec-protobuf';
|
|
8
6
|
import { Context } from '@dxos/context';
|
|
7
|
+
import { invariant } from '@dxos/invariant';
|
|
9
8
|
import { PublicKey } from '@dxos/keys';
|
|
10
9
|
import { log } from '@dxos/log';
|
|
11
10
|
import { schema } from '@dxos/protocols';
|
|
@@ -32,9 +31,9 @@ const SwarmMessage = schema.getCodecForType('dxos.mesh.swarm.SwarmMessage');
|
|
|
32
31
|
*/
|
|
33
32
|
export class SwarmMessenger implements SignalMessenger {
|
|
34
33
|
private readonly _ctx = new Context();
|
|
35
|
-
private readonly _onSignal: (message: SignalMessage) => Promise<void>;
|
|
36
|
-
private readonly _sendMessage: (msg: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;
|
|
37
34
|
|
|
35
|
+
private readonly _sendMessage: (msg: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;
|
|
36
|
+
private readonly _onSignal: (message: SignalMessage) => Promise<void>;
|
|
38
37
|
private readonly _onOffer: (message: OfferMessage) => Promise<Answer>;
|
|
39
38
|
private readonly _topic: PublicKey;
|
|
40
39
|
|
|
@@ -5,11 +5,12 @@
|
|
|
5
5
|
import { DeferredTask } from '@dxos/async';
|
|
6
6
|
import { Context } from '@dxos/context';
|
|
7
7
|
import { CancelledError } from '@dxos/errors';
|
|
8
|
+
import { invariant } from '@dxos/invariant';
|
|
8
9
|
import { PublicKey } from '@dxos/keys';
|
|
9
|
-
import {
|
|
10
|
+
import { log } from '@dxos/log';
|
|
10
11
|
import { ComplexMap } from '@dxos/util';
|
|
11
12
|
|
|
12
|
-
export const MAX_CONCURRENT_INITIATING_CONNECTIONS =
|
|
13
|
+
export const MAX_CONCURRENT_INITIATING_CONNECTIONS = 10;
|
|
13
14
|
|
|
14
15
|
export type ConnectionLimiterOptions = {
|
|
15
16
|
maxConcurrentInitConnections?: number;
|
package/src/swarm/connection.ts
CHANGED
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
// Copyright 2021 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import invariant from 'tiny-invariant';
|
|
6
|
-
|
|
7
5
|
import { DeferredTask, Event, sleep, synchronized } from '@dxos/async';
|
|
8
6
|
import { Context, cancelWithContext } from '@dxos/context';
|
|
9
7
|
import { ErrorStream } from '@dxos/debug';
|
|
10
8
|
import { CancelledError } from '@dxos/errors';
|
|
9
|
+
import { invariant } from '@dxos/invariant';
|
|
11
10
|
import { PublicKey } from '@dxos/keys';
|
|
12
11
|
import { log } from '@dxos/log';
|
|
13
12
|
import { trace } from '@dxos/protocols';
|
|
@@ -68,6 +67,7 @@ export class Connection {
|
|
|
68
67
|
|
|
69
68
|
private _state: ConnectionState = ConnectionState.INITIAL;
|
|
70
69
|
private _transport: Transport | undefined;
|
|
70
|
+
closeReason?: string;
|
|
71
71
|
|
|
72
72
|
private _incomingSignalBuffer: Signal[] = [];
|
|
73
73
|
private _outgoingSignalBuffer: Signal[] = [];
|
|
@@ -92,7 +92,15 @@ export class Connection {
|
|
|
92
92
|
private readonly _signalMessaging: SignalMessenger,
|
|
93
93
|
private readonly _protocol: WireProtocol,
|
|
94
94
|
private readonly _transportFactory: TransportFactory,
|
|
95
|
-
) {
|
|
95
|
+
) {
|
|
96
|
+
log.trace('dxos.mesh.connection.construct', {
|
|
97
|
+
sessionId: this.sessionId,
|
|
98
|
+
topic: this.topic,
|
|
99
|
+
localPeerId: this.ownId,
|
|
100
|
+
remotePeerId: this.remoteId,
|
|
101
|
+
initiator: this.initiator,
|
|
102
|
+
});
|
|
103
|
+
}
|
|
96
104
|
|
|
97
105
|
get state() {
|
|
98
106
|
return this._state;
|
|
@@ -112,6 +120,13 @@ export class Connection {
|
|
|
112
120
|
async openConnection() {
|
|
113
121
|
invariant(this._state === ConnectionState.INITIAL, 'Invalid state.');
|
|
114
122
|
log.trace('dxos.mesh.connection.open-connection', trace.begin({ id: this._instanceId }));
|
|
123
|
+
log.trace('dxos.mesh.connection.open', {
|
|
124
|
+
sessionId: this.sessionId,
|
|
125
|
+
topic: this.topic,
|
|
126
|
+
localPeerId: this.ownId,
|
|
127
|
+
remotePeerId: this.remoteId,
|
|
128
|
+
initiator: this.initiator,
|
|
129
|
+
});
|
|
115
130
|
|
|
116
131
|
this._changeState(ConnectionState.CONNECTING);
|
|
117
132
|
|
|
@@ -143,6 +158,9 @@ export class Connection {
|
|
|
143
158
|
});
|
|
144
159
|
|
|
145
160
|
this._transport.errors.handle((err) => {
|
|
161
|
+
if (!this.closeReason) {
|
|
162
|
+
this.closeReason = err?.message;
|
|
163
|
+
}
|
|
146
164
|
if (this._state !== ConnectionState.CLOSED && this._state !== ConnectionState.CLOSING) {
|
|
147
165
|
this.errors.raise(err);
|
|
148
166
|
}
|
|
@@ -159,7 +177,10 @@ export class Connection {
|
|
|
159
177
|
}
|
|
160
178
|
|
|
161
179
|
@synchronized
|
|
162
|
-
async close() {
|
|
180
|
+
async close(err?: Error) {
|
|
181
|
+
if (!this.closeReason) {
|
|
182
|
+
this.closeReason = err?.message;
|
|
183
|
+
}
|
|
163
184
|
if (this._state === ConnectionState.CLOSED) {
|
|
164
185
|
return;
|
|
165
186
|
}
|
|
@@ -198,8 +219,10 @@ export class Connection {
|
|
|
198
219
|
}
|
|
199
220
|
|
|
200
221
|
try {
|
|
201
|
-
|
|
202
|
-
|
|
222
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
223
|
+
await cancelWithContext(this._ctx, sleep(this._signallingDelay));
|
|
224
|
+
this._signallingDelay = Math.min(this._signallingDelay * 2, MAX_SIGNALLING_DELAY);
|
|
225
|
+
}
|
|
203
226
|
|
|
204
227
|
const signals = [...this._outgoingSignalBuffer];
|
|
205
228
|
this._outgoingSignalBuffer.length = 0;
|
package/src/swarm/peer.ts
CHANGED
|
@@ -2,11 +2,10 @@
|
|
|
2
2
|
// Copyright 2022 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import invariant from 'tiny-invariant';
|
|
6
|
-
|
|
7
5
|
import { scheduleTask, synchronized } from '@dxos/async';
|
|
8
6
|
import { Context } from '@dxos/context';
|
|
9
7
|
import { CancelledError } from '@dxos/errors';
|
|
8
|
+
import { invariant } from '@dxos/invariant';
|
|
10
9
|
import { PublicKey } from '@dxos/keys';
|
|
11
10
|
import { log } from '@dxos/log';
|
|
12
11
|
import { Answer } from '@dxos/protocols/proto/dxos/mesh/swarm';
|
|
@@ -82,6 +81,8 @@ export class Peer {
|
|
|
82
81
|
public advertizing = false;
|
|
83
82
|
|
|
84
83
|
public initiating = false;
|
|
84
|
+
|
|
85
|
+
// TODO(burdon): Convert to map?
|
|
85
86
|
constructor(
|
|
86
87
|
public readonly id: PublicKey,
|
|
87
88
|
public readonly topic: PublicKey,
|
|
@@ -113,7 +114,7 @@ export class Peer {
|
|
|
113
114
|
|
|
114
115
|
if (this.connection) {
|
|
115
116
|
// Close our connection and accept remote peer's connection.
|
|
116
|
-
await this.closeConnection();
|
|
117
|
+
await this.closeConnection(new Error('Connection displaced by remote initiator.'));
|
|
117
118
|
}
|
|
118
119
|
} else {
|
|
119
120
|
// Continue with our origination attempt, the remote peer will close it's connection and accept ours.
|
|
@@ -136,7 +137,7 @@ export class Peer {
|
|
|
136
137
|
}
|
|
137
138
|
|
|
138
139
|
// Calls `onStateChange` with CLOSED state.
|
|
139
|
-
await this.closeConnection();
|
|
140
|
+
await this.closeConnection(err);
|
|
140
141
|
}
|
|
141
142
|
|
|
142
143
|
return { accept: true };
|
|
@@ -182,7 +183,7 @@ export class Peer {
|
|
|
182
183
|
} catch (err: any) {
|
|
183
184
|
log('initiation error', { err, topic: this.topic, peerId: this.localPeerId, remoteId: this.id });
|
|
184
185
|
// Calls `onStateChange` with CLOSED state.
|
|
185
|
-
await this.closeConnection();
|
|
186
|
+
await this.closeConnection(err);
|
|
186
187
|
throw err;
|
|
187
188
|
} finally {
|
|
188
189
|
this.initiating = false;
|
|
@@ -227,6 +228,13 @@ export class Peer {
|
|
|
227
228
|
this._callbacks.onConnected();
|
|
228
229
|
|
|
229
230
|
this._connectionLimiter.doneConnecting(sessionId);
|
|
231
|
+
log.trace('dxos.mesh.connection.connected', {
|
|
232
|
+
topic: this.topic,
|
|
233
|
+
localPeerId: this.localPeerId,
|
|
234
|
+
remotePeerId: this.id,
|
|
235
|
+
sessionId,
|
|
236
|
+
initiator,
|
|
237
|
+
});
|
|
230
238
|
break;
|
|
231
239
|
}
|
|
232
240
|
|
|
@@ -234,6 +242,14 @@ export class Peer {
|
|
|
234
242
|
log('connection closed', { topic: this.topic, peerId: this.localPeerId, remoteId: this.id, initiator });
|
|
235
243
|
invariant(this.connection === connection, 'Connection mismatch (race condition).');
|
|
236
244
|
|
|
245
|
+
log.trace('dxos.mesh.connection.closed', {
|
|
246
|
+
topic: this.topic,
|
|
247
|
+
localPeerId: this.localPeerId,
|
|
248
|
+
remotePeerId: this.id,
|
|
249
|
+
sessionId,
|
|
250
|
+
initiator,
|
|
251
|
+
});
|
|
252
|
+
|
|
237
253
|
if (this._lastConnectionTime && this._lastConnectionTime + CONNECTION_COUNTS_STABLE_AFTER < Date.now()) {
|
|
238
254
|
// If we're closing the connection, and it has been connected for a while, reset the backoff.
|
|
239
255
|
this._availableAfter = 0;
|
|
@@ -261,9 +277,17 @@ export class Peer {
|
|
|
261
277
|
});
|
|
262
278
|
connection.errors.handle((err) => {
|
|
263
279
|
log.warn('connection error', { topic: this.topic, peerId: this.localPeerId, remoteId: this.id, initiator, err });
|
|
280
|
+
log.trace('dxos.mesh.connection.error', {
|
|
281
|
+
topic: this.topic,
|
|
282
|
+
localPeerId: this.localPeerId,
|
|
283
|
+
remotePeerId: this.id,
|
|
284
|
+
sessionId,
|
|
285
|
+
initiator,
|
|
286
|
+
err,
|
|
287
|
+
});
|
|
264
288
|
|
|
265
289
|
// Calls `onStateChange` with CLOSED state.
|
|
266
|
-
void this.closeConnection();
|
|
290
|
+
void this.closeConnection(err);
|
|
267
291
|
});
|
|
268
292
|
|
|
269
293
|
this.connection = connection;
|
|
@@ -271,7 +295,7 @@ export class Peer {
|
|
|
271
295
|
return connection;
|
|
272
296
|
}
|
|
273
297
|
|
|
274
|
-
async closeConnection() {
|
|
298
|
+
async closeConnection(err?: Error) {
|
|
275
299
|
if (!this.connection) {
|
|
276
300
|
return;
|
|
277
301
|
}
|
|
@@ -280,7 +304,7 @@ export class Peer {
|
|
|
280
304
|
|
|
281
305
|
// Triggers `onStateChange` callback which will clean up the connection.
|
|
282
306
|
// Won't throw.
|
|
283
|
-
await connection.close();
|
|
307
|
+
await connection.close(err);
|
|
284
308
|
|
|
285
309
|
log('closed', { peerId: this.id, sessionId: connection.sessionId });
|
|
286
310
|
}
|