@dxos/network-manager 0.1.56-next.a63ce79 → 0.1.56
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-5TRIVLI6.mjs → chunk-BYYPWP6O.mjs} +105 -89
- package/dist/lib/browser/chunk-BYYPWP6O.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 +19 -9
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/lib/node/index.cjs +104 -88
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs +120 -94
- 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/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/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.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/signal/swarm-messenger.ts +2 -2
- package/src/swarm/connection-limiter.ts +1 -1
- package/src/swarm/connection.ts +12 -3
- package/src/swarm/peer.ts +8 -6
- package/src/swarm/swarm.ts +5 -5
- 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/transport/webrtc-transport-proxy.ts +4 -4
- package/src/transport/webrtc-transport.ts +20 -6
- package/dist/lib/browser/chunk-5TRIVLI6.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"}
|
|
@@ -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":"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;
|
|
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;AAI3C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvC,eAAO,MAAM,qCAAqC,
|
|
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":"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;
|
|
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":"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;
|
|
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":"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;
|
|
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"}
|
|
@@ -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;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;
|
|
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"}
|
|
@@ -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":";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;IACnB,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;
|
|
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
|
|
3
|
+
"version": "0.1.56",
|
|
4
4
|
"description": "Network Manager",
|
|
5
5
|
"homepage": "https://dxos.org",
|
|
6
6
|
"bugs": "https://github.com/dxos/dxos/issues",
|
|
@@ -25,22 +25,22 @@
|
|
|
25
25
|
"simple-peer": "9.11.1",
|
|
26
26
|
"ws": "^7.4.4",
|
|
27
27
|
"xor-distance": "^2.0.0",
|
|
28
|
-
"@dxos/async": "0.1.56
|
|
29
|
-
"@dxos/codec-protobuf": "0.1.56
|
|
30
|
-
"@dxos/context": "0.1.56
|
|
31
|
-
"@dxos/credentials": "0.1.56
|
|
32
|
-
"@dxos/crypto": "0.1.56
|
|
33
|
-
"@dxos/debug": "0.1.56
|
|
34
|
-
"@dxos/errors": "0.1.56
|
|
35
|
-
"@dxos/invariant": "0.1.56
|
|
36
|
-
"@dxos/keys": "0.1.56
|
|
37
|
-
"@dxos/log": "0.1.56
|
|
38
|
-
"@dxos/messaging": "0.1.56
|
|
39
|
-
"@dxos/node-std": "0.1.56
|
|
40
|
-
"@dxos/protocols": "0.1.56
|
|
41
|
-
"@dxos/rpc": "0.1.56
|
|
42
|
-
"@dxos/teleport": "0.1.56
|
|
43
|
-
"@dxos/util": "0.1.56
|
|
28
|
+
"@dxos/async": "0.1.56",
|
|
29
|
+
"@dxos/codec-protobuf": "0.1.56",
|
|
30
|
+
"@dxos/context": "0.1.56",
|
|
31
|
+
"@dxos/credentials": "0.1.56",
|
|
32
|
+
"@dxos/crypto": "0.1.56",
|
|
33
|
+
"@dxos/debug": "0.1.56",
|
|
34
|
+
"@dxos/errors": "0.1.56",
|
|
35
|
+
"@dxos/invariant": "0.1.56",
|
|
36
|
+
"@dxos/keys": "0.1.56",
|
|
37
|
+
"@dxos/log": "0.1.56",
|
|
38
|
+
"@dxos/messaging": "0.1.56",
|
|
39
|
+
"@dxos/node-std": "0.1.56",
|
|
40
|
+
"@dxos/protocols": "0.1.56",
|
|
41
|
+
"@dxos/rpc": "0.1.56",
|
|
42
|
+
"@dxos/teleport": "0.1.56",
|
|
43
|
+
"@dxos/util": "0.1.56"
|
|
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
|
|
53
|
+
"@dxos/signal": "0.1.56"
|
|
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,
|
|
@@ -31,9 +31,9 @@ const SwarmMessage = schema.getCodecForType('dxos.mesh.swarm.SwarmMessage');
|
|
|
31
31
|
*/
|
|
32
32
|
export class SwarmMessenger implements SignalMessenger {
|
|
33
33
|
private readonly _ctx = new Context();
|
|
34
|
-
private readonly _onSignal: (message: SignalMessage) => Promise<void>;
|
|
35
|
-
private readonly _sendMessage: (msg: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;
|
|
36
34
|
|
|
35
|
+
private readonly _sendMessage: (msg: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;
|
|
36
|
+
private readonly _onSignal: (message: SignalMessage) => Promise<void>;
|
|
37
37
|
private readonly _onOffer: (message: OfferMessage) => Promise<Answer>;
|
|
38
38
|
private readonly _topic: PublicKey;
|
|
39
39
|
|
|
@@ -10,7 +10,7 @@ import { PublicKey } from '@dxos/keys';
|
|
|
10
10
|
import { log } from '@dxos/log';
|
|
11
11
|
import { ComplexMap } from '@dxos/util';
|
|
12
12
|
|
|
13
|
-
export const MAX_CONCURRENT_INITIATING_CONNECTIONS =
|
|
13
|
+
export const MAX_CONCURRENT_INITIATING_CONNECTIONS = 10;
|
|
14
14
|
|
|
15
15
|
export type ConnectionLimiterOptions = {
|
|
16
16
|
maxConcurrentInitConnections?: number;
|
package/src/swarm/connection.ts
CHANGED
|
@@ -67,6 +67,7 @@ export class Connection {
|
|
|
67
67
|
|
|
68
68
|
private _state: ConnectionState = ConnectionState.INITIAL;
|
|
69
69
|
private _transport: Transport | undefined;
|
|
70
|
+
closeReason?: string;
|
|
70
71
|
|
|
71
72
|
private _incomingSignalBuffer: Signal[] = [];
|
|
72
73
|
private _outgoingSignalBuffer: Signal[] = [];
|
|
@@ -157,6 +158,9 @@ export class Connection {
|
|
|
157
158
|
});
|
|
158
159
|
|
|
159
160
|
this._transport.errors.handle((err) => {
|
|
161
|
+
if (!this.closeReason) {
|
|
162
|
+
this.closeReason = err?.message;
|
|
163
|
+
}
|
|
160
164
|
if (this._state !== ConnectionState.CLOSED && this._state !== ConnectionState.CLOSING) {
|
|
161
165
|
this.errors.raise(err);
|
|
162
166
|
}
|
|
@@ -173,7 +177,10 @@ export class Connection {
|
|
|
173
177
|
}
|
|
174
178
|
|
|
175
179
|
@synchronized
|
|
176
|
-
async close() {
|
|
180
|
+
async close(err?: Error) {
|
|
181
|
+
if (!this.closeReason) {
|
|
182
|
+
this.closeReason = err?.message;
|
|
183
|
+
}
|
|
177
184
|
if (this._state === ConnectionState.CLOSED) {
|
|
178
185
|
return;
|
|
179
186
|
}
|
|
@@ -212,8 +219,10 @@ export class Connection {
|
|
|
212
219
|
}
|
|
213
220
|
|
|
214
221
|
try {
|
|
215
|
-
|
|
216
|
-
|
|
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
|
+
}
|
|
217
226
|
|
|
218
227
|
const signals = [...this._outgoingSignalBuffer];
|
|
219
228
|
this._outgoingSignalBuffer.length = 0;
|
package/src/swarm/peer.ts
CHANGED
|
@@ -81,6 +81,8 @@ export class Peer {
|
|
|
81
81
|
public advertizing = false;
|
|
82
82
|
|
|
83
83
|
public initiating = false;
|
|
84
|
+
|
|
85
|
+
// TODO(burdon): Convert to map?
|
|
84
86
|
constructor(
|
|
85
87
|
public readonly id: PublicKey,
|
|
86
88
|
public readonly topic: PublicKey,
|
|
@@ -112,7 +114,7 @@ export class Peer {
|
|
|
112
114
|
|
|
113
115
|
if (this.connection) {
|
|
114
116
|
// Close our connection and accept remote peer's connection.
|
|
115
|
-
await this.closeConnection();
|
|
117
|
+
await this.closeConnection(new Error('Connection displaced by remote initiator.'));
|
|
116
118
|
}
|
|
117
119
|
} else {
|
|
118
120
|
// Continue with our origination attempt, the remote peer will close it's connection and accept ours.
|
|
@@ -135,7 +137,7 @@ export class Peer {
|
|
|
135
137
|
}
|
|
136
138
|
|
|
137
139
|
// Calls `onStateChange` with CLOSED state.
|
|
138
|
-
await this.closeConnection();
|
|
140
|
+
await this.closeConnection(err);
|
|
139
141
|
}
|
|
140
142
|
|
|
141
143
|
return { accept: true };
|
|
@@ -181,7 +183,7 @@ export class Peer {
|
|
|
181
183
|
} catch (err: any) {
|
|
182
184
|
log('initiation error', { err, topic: this.topic, peerId: this.localPeerId, remoteId: this.id });
|
|
183
185
|
// Calls `onStateChange` with CLOSED state.
|
|
184
|
-
await this.closeConnection();
|
|
186
|
+
await this.closeConnection(err);
|
|
185
187
|
throw err;
|
|
186
188
|
} finally {
|
|
187
189
|
this.initiating = false;
|
|
@@ -285,7 +287,7 @@ export class Peer {
|
|
|
285
287
|
});
|
|
286
288
|
|
|
287
289
|
// Calls `onStateChange` with CLOSED state.
|
|
288
|
-
void this.closeConnection();
|
|
290
|
+
void this.closeConnection(err);
|
|
289
291
|
});
|
|
290
292
|
|
|
291
293
|
this.connection = connection;
|
|
@@ -293,7 +295,7 @@ export class Peer {
|
|
|
293
295
|
return connection;
|
|
294
296
|
}
|
|
295
297
|
|
|
296
|
-
async closeConnection() {
|
|
298
|
+
async closeConnection(err?: Error) {
|
|
297
299
|
if (!this.connection) {
|
|
298
300
|
return;
|
|
299
301
|
}
|
|
@@ -302,7 +304,7 @@ export class Peer {
|
|
|
302
304
|
|
|
303
305
|
// Triggers `onStateChange` callback which will clean up the connection.
|
|
304
306
|
// Won't throw.
|
|
305
|
-
await connection.close();
|
|
307
|
+
await connection.close(err);
|
|
306
308
|
|
|
307
309
|
log('closed', { peerId: this.id, sessionId: connection.sessionId });
|
|
308
310
|
}
|
package/src/swarm/swarm.ts
CHANGED
|
@@ -34,17 +34,17 @@ const getClassName = (obj: any) => Object.getPrototypeOf(obj).constructor.name;
|
|
|
34
34
|
* Routes signal events and maintains swarm topology.
|
|
35
35
|
*/
|
|
36
36
|
export class Swarm {
|
|
37
|
-
/**
|
|
38
|
-
* @internal
|
|
39
|
-
*/
|
|
40
|
-
readonly _peers = new ComplexMap<PublicKey, Peer>(PublicKey.hash);
|
|
41
|
-
|
|
42
37
|
private readonly _swarmMessenger: SwarmMessenger;
|
|
43
38
|
|
|
44
39
|
private _ctx = new Context();
|
|
45
40
|
|
|
46
41
|
private _listeningHandle?: ListeningHandle = undefined;
|
|
47
42
|
|
|
43
|
+
/**
|
|
44
|
+
* @internal
|
|
45
|
+
*/
|
|
46
|
+
readonly _peers = new ComplexMap<PublicKey, Peer>(PublicKey.hash);
|
|
47
|
+
|
|
48
48
|
/**
|
|
49
49
|
* Unique id of the swarm, local to the current peer, generated when swarm is joined.
|
|
50
50
|
*/
|
|
@@ -24,7 +24,7 @@ import {
|
|
|
24
24
|
WebRTCTransportProxyFactory,
|
|
25
25
|
WebRTCTransportService,
|
|
26
26
|
} from '../transport';
|
|
27
|
-
import { TestWireProtocol } from './test-wire-protocol';
|
|
27
|
+
import { TestWireProtocol, type TestTeleportExtensionFactory } from './test-wire-protocol';
|
|
28
28
|
|
|
29
29
|
// Signal server will be started by the setup script.
|
|
30
30
|
const port = process.env.SIGNAL_PORT ?? 4000;
|
|
@@ -152,13 +152,13 @@ export class TestPeer {
|
|
|
152
152
|
return swarm;
|
|
153
153
|
}
|
|
154
154
|
|
|
155
|
-
createSwarm(topic: PublicKey): TestSwarmConnection {
|
|
155
|
+
createSwarm(topic: PublicKey, extensionFactory: TestTeleportExtensionFactory = () => []): TestSwarmConnection {
|
|
156
156
|
// TODO(burdon): Multiple.
|
|
157
157
|
// if (this._swarms.get(topic)) {
|
|
158
158
|
// throw new Error(`Swarm already exists for topic: ${topic.truncate()}`);
|
|
159
159
|
// }
|
|
160
160
|
|
|
161
|
-
const swarm = new TestSwarmConnection(this, topic);
|
|
161
|
+
const swarm = new TestSwarmConnection(this, topic, extensionFactory);
|
|
162
162
|
this._swarms.set(topic, swarm);
|
|
163
163
|
return swarm;
|
|
164
164
|
}
|
|
@@ -176,10 +176,14 @@ export class TestPeer {
|
|
|
176
176
|
export class TestSwarmConnection {
|
|
177
177
|
protocol: TestWireProtocol;
|
|
178
178
|
|
|
179
|
-
constructor(
|
|
179
|
+
constructor(
|
|
180
|
+
readonly peer: TestPeer,
|
|
181
|
+
readonly topic: PublicKey,
|
|
182
|
+
readonly extensionFactory: TestTeleportExtensionFactory,
|
|
183
|
+
) {
|
|
180
184
|
// TODO(burdon): Configure plugins.
|
|
181
185
|
// TODO(burdon): Prevent reuse?
|
|
182
|
-
this.protocol = new TestWireProtocol(this.peer.peerId);
|
|
186
|
+
this.protocol = new TestWireProtocol(this.peer.peerId, this.extensionFactory);
|
|
183
187
|
}
|
|
184
188
|
|
|
185
189
|
// TODO(burdon): Need to create new plugin instance per swarm?
|
|
@@ -5,11 +5,19 @@
|
|
|
5
5
|
import { asyncTimeout, Event } from '@dxos/async';
|
|
6
6
|
import { PublicKey } from '@dxos/keys';
|
|
7
7
|
import { log } from '@dxos/log';
|
|
8
|
-
import { TestExtension, TestExtensionWithStreams
|
|
8
|
+
import { TestExtension, TestExtensionWithStreams } from '@dxos/teleport';
|
|
9
|
+
import type { TestStreamStats, TeleportExtension } from '@dxos/teleport';
|
|
9
10
|
import { ComplexMap } from '@dxos/util';
|
|
10
11
|
|
|
11
12
|
import { createTeleportProtocolFactory } from '../wire-protocol';
|
|
12
13
|
|
|
14
|
+
export type TestTeleportExtension = {
|
|
15
|
+
name: string;
|
|
16
|
+
extension: TeleportExtension;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
export type TestTeleportExtensionFactory = () => TestTeleportExtension[];
|
|
20
|
+
|
|
13
21
|
export class TestWireProtocol {
|
|
14
22
|
public readonly connections = new ComplexMap<PublicKey, TestExtension>(PublicKey.hash);
|
|
15
23
|
public readonly streamConnections = new ComplexMap<PublicKey, TestExtensionWithStreams>(PublicKey.hash);
|
|
@@ -17,7 +25,14 @@ export class TestWireProtocol {
|
|
|
17
25
|
public readonly connected = new Event<PublicKey>();
|
|
18
26
|
public readonly disconnected = new Event<PublicKey>();
|
|
19
27
|
|
|
20
|
-
|
|
28
|
+
public readonly otherConnections = new ComplexMap<{ remotePeerId: PublicKey; extension: string }, TeleportExtension>(
|
|
29
|
+
({ remotePeerId, extension }) => remotePeerId.toHex() + extension,
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
constructor(
|
|
33
|
+
public readonly peerId: PublicKey,
|
|
34
|
+
private readonly _extensionFactory: TestTeleportExtensionFactory = () => [],
|
|
35
|
+
) {}
|
|
21
36
|
|
|
22
37
|
readonly factory = createTeleportProtocolFactory(async (teleport) => {
|
|
23
38
|
log('create', { remotePeerId: teleport.remotePeerId });
|
|
@@ -38,6 +53,11 @@ export class TestWireProtocol {
|
|
|
38
53
|
});
|
|
39
54
|
this.streamConnections.set(teleport.remotePeerId, streamExtension);
|
|
40
55
|
teleport.addExtension('test-stream', streamExtension);
|
|
56
|
+
|
|
57
|
+
for (const { name, extension } of this._extensionFactory()) {
|
|
58
|
+
this.otherConnections.set({ remotePeerId: teleport.remotePeerId, extension: name }, extension);
|
|
59
|
+
teleport.addExtension(name, extension);
|
|
60
|
+
}
|
|
41
61
|
});
|
|
42
62
|
|
|
43
63
|
async waitForConnection(peerId: PublicKey) {
|
|
@@ -45,7 +45,7 @@ describe('Memory transport', () => {
|
|
|
45
45
|
const message = randomBytes(PACKET_SIZE / 2).toString('hex');
|
|
46
46
|
|
|
47
47
|
for (let i = 0; i < NUM_ROUNDS; i++) {
|
|
48
|
-
console.log(`Round ${i}/${NUM_ROUNDS}`);
|
|
48
|
+
// console.log(`Round ${i}/${NUM_ROUNDS}`);
|
|
49
49
|
await Promise.all(
|
|
50
50
|
pairs.map(async ({ swarm1, swarm2 }) => {
|
|
51
51
|
await exchangeMessages(swarm1, swarm2, message);
|
|
@@ -21,6 +21,7 @@ export type WebRTCTransportProxyParams = {
|
|
|
21
21
|
initiator: boolean;
|
|
22
22
|
stream: NodeJS.ReadWriteStream;
|
|
23
23
|
bridgeService: BridgeService;
|
|
24
|
+
// TODO(burdon): Rename onSignal.
|
|
24
25
|
sendSignal: (signal: Signal) => Promise<void>;
|
|
25
26
|
};
|
|
26
27
|
|
|
@@ -29,11 +30,10 @@ export class WebRTCTransportProxy implements Transport {
|
|
|
29
30
|
private readonly _ctx = new Context();
|
|
30
31
|
|
|
31
32
|
readonly closed = new Event();
|
|
32
|
-
private _closed = false;
|
|
33
33
|
readonly connected = new Event();
|
|
34
|
-
|
|
35
34
|
readonly errors = new ErrorStream();
|
|
36
35
|
|
|
36
|
+
private _closed = false;
|
|
37
37
|
private _serviceStream!: Stream<BridgeEvent>;
|
|
38
38
|
|
|
39
39
|
// prettier-ignore
|
|
@@ -118,7 +118,7 @@ export class WebRTCTransportProxy implements Transport {
|
|
|
118
118
|
return;
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
this._serviceStream.close();
|
|
121
|
+
await this._serviceStream.close();
|
|
122
122
|
|
|
123
123
|
try {
|
|
124
124
|
await this._params.bridgeService.close({ proxyId: this._proxyId });
|
|
@@ -135,7 +135,7 @@ export class WebRTCTransportProxy implements Transport {
|
|
|
135
135
|
*/
|
|
136
136
|
// TODO(burdon): Option on close method.
|
|
137
137
|
forceClose() {
|
|
138
|
-
this._serviceStream.close();
|
|
138
|
+
void this._serviceStream.close();
|
|
139
139
|
this.closed.emit();
|
|
140
140
|
this._closed = true;
|
|
141
141
|
}
|