@dxos/network-manager 0.1.8 → 0.1.10

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.
Files changed (153) hide show
  1. package/dist/src/index.d.ts +2 -2
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +2 -2
  4. package/dist/src/index.js.map +1 -1
  5. package/dist/src/network-manager.d.ts +10 -14
  6. package/dist/src/network-manager.d.ts.map +1 -1
  7. package/dist/src/network-manager.js +28 -33
  8. package/dist/src/network-manager.js.map +1 -1
  9. package/dist/src/protocol-factory.d.ts.map +1 -1
  10. package/dist/src/protocol-factory.js +8 -6
  11. package/dist/src/protocol-factory.js.map +1 -1
  12. package/dist/src/signal/index.d.ts +2 -2
  13. package/dist/src/signal/index.d.ts.map +1 -1
  14. package/dist/src/signal/index.js +2 -2
  15. package/dist/src/signal/index.js.map +1 -1
  16. package/dist/src/signal/message-router.d.ts +2 -2
  17. package/dist/src/signal/message-router.js +3 -3
  18. package/dist/src/signal/message-router.js.map +1 -1
  19. package/dist/src/signal/{signal-messaging.d.ts → signal-messenger.d.ts} +2 -2
  20. package/dist/src/signal/{signal-messaging.d.ts.map → signal-messenger.d.ts.map} +1 -1
  21. package/dist/src/signal/{signal-messaging.js → signal-messenger.js} +1 -1
  22. package/dist/src/signal/signal-messenger.js.map +1 -0
  23. package/dist/src/swarm/connection.d.ts +6 -3
  24. package/dist/src/swarm/connection.d.ts.map +1 -1
  25. package/dist/src/swarm/connection.js +28 -15
  26. package/dist/src/swarm/connection.js.map +1 -1
  27. package/dist/src/swarm/peer.d.ts +45 -0
  28. package/dist/src/swarm/peer.d.ts.map +1 -0
  29. package/dist/src/swarm/peer.js +113 -0
  30. package/dist/src/swarm/peer.js.map +1 -0
  31. package/dist/src/swarm/swarm-mapper.d.ts +2 -2
  32. package/dist/src/swarm/swarm-mapper.d.ts.map +1 -1
  33. package/dist/src/swarm/swarm-mapper.js +12 -10
  34. package/dist/src/swarm/swarm-mapper.js.map +1 -1
  35. package/dist/src/swarm/swarm.d.ts +13 -18
  36. package/dist/src/swarm/swarm.d.ts.map +1 -1
  37. package/dist/src/swarm/swarm.js +126 -97
  38. package/dist/src/swarm/swarm.js.map +1 -1
  39. package/dist/src/swarm/swarm.test.js +2 -2
  40. package/dist/src/swarm/swarm.test.js.map +1 -1
  41. package/dist/src/testing/test-builder.d.ts +31 -18
  42. package/dist/src/testing/test-builder.d.ts.map +1 -1
  43. package/dist/src/testing/test-builder.js +120 -48
  44. package/dist/src/testing/test-builder.js.map +1 -1
  45. package/dist/src/testing/test-protocol.d.ts +5 -5
  46. package/dist/src/testing/test-protocol.d.ts.map +1 -1
  47. package/dist/src/testing/test-protocol.js +28 -24
  48. package/dist/src/testing/test-protocol.js.map +1 -1
  49. package/dist/src/tests/basic-test-suite.d.ts +6 -0
  50. package/dist/src/tests/basic-test-suite.d.ts.map +1 -0
  51. package/dist/src/tests/basic-test-suite.js +142 -0
  52. package/dist/src/tests/basic-test-suite.js.map +1 -0
  53. package/dist/src/tests/memory-transport.test.d.ts +2 -0
  54. package/dist/src/tests/memory-transport.test.d.ts.map +1 -0
  55. package/dist/src/tests/memory-transport.test.js +12 -0
  56. package/dist/src/tests/memory-transport.test.js.map +1 -0
  57. package/dist/src/{presence.test.d.ts → tests/presence.test.d.ts} +0 -0
  58. package/dist/src/tests/presence.test.d.ts.map +1 -0
  59. package/dist/src/{presence.test.js → tests/presence.test.js} +21 -20
  60. package/dist/src/tests/presence.test.js.map +1 -0
  61. package/dist/src/tests/property-test-suite.d.ts +5 -0
  62. package/dist/src/tests/property-test-suite.d.ts.map +1 -0
  63. package/dist/src/tests/property-test-suite.js +203 -0
  64. package/dist/src/tests/property-test-suite.js.map +1 -0
  65. package/dist/src/tests/utils.d.ts +21 -0
  66. package/dist/src/tests/utils.d.ts.map +1 -0
  67. package/dist/src/tests/utils.js +76 -0
  68. package/dist/src/tests/utils.js.map +1 -0
  69. package/dist/src/tests/webrtc-transport.test.d.ts +2 -0
  70. package/dist/src/tests/webrtc-transport.test.d.ts.map +1 -0
  71. package/dist/src/tests/webrtc-transport.test.js +16 -0
  72. package/dist/src/tests/webrtc-transport.test.js.map +1 -0
  73. package/dist/src/topology/fully-connected-topology.d.ts +1 -1
  74. package/dist/src/topology/fully-connected-topology.d.ts.map +1 -1
  75. package/dist/src/topology/fully-connected-topology.js +4 -3
  76. package/dist/src/topology/fully-connected-topology.js.map +1 -1
  77. package/dist/src/topology/mmst-topology.js +4 -4
  78. package/dist/src/topology/mmst-topology.js.map +1 -1
  79. package/dist/src/topology/star-topology.js +4 -4
  80. package/dist/src/topology/star-topology.js.map +1 -1
  81. package/dist/src/topology/topology.d.ts +0 -5
  82. package/dist/src/topology/topology.d.ts.map +1 -1
  83. package/dist/src/transport/memory-transport.d.ts +8 -7
  84. package/dist/src/transport/memory-transport.d.ts.map +1 -1
  85. package/dist/src/transport/memory-transport.js +79 -45
  86. package/dist/src/transport/memory-transport.js.map +1 -1
  87. package/dist/src/transport/memory-transport.test.js +3 -2
  88. package/dist/src/transport/memory-transport.test.js.map +1 -1
  89. package/dist/src/transport/transport.d.ts +8 -4
  90. package/dist/src/transport/transport.d.ts.map +1 -1
  91. package/dist/src/transport/webrtc-simple-peer.test.d.ts +2 -0
  92. package/dist/src/transport/webrtc-simple-peer.test.d.ts.map +1 -0
  93. package/dist/src/transport/{wrtc-simple-peer.test.js → webrtc-simple-peer.test.js} +2 -2
  94. package/dist/src/transport/webrtc-simple-peer.test.js.map +1 -0
  95. package/dist/src/transport/webrtc-transport-proxy.d.ts +4 -4
  96. package/dist/src/transport/webrtc-transport-proxy.d.ts.map +1 -1
  97. package/dist/src/transport/webrtc-transport-proxy.js +15 -10
  98. package/dist/src/transport/webrtc-transport-proxy.js.map +1 -1
  99. package/dist/src/transport/webrtc-transport-proxy.test.js +2 -2
  100. package/dist/src/transport/webrtc-transport-proxy.test.js.map +1 -1
  101. package/dist/src/transport/webrtc-transport-service.js +2 -2
  102. package/dist/src/transport/webrtc-transport-service.js.map +1 -1
  103. package/dist/src/transport/webrtc-transport.d.ts +3 -3
  104. package/dist/src/transport/webrtc-transport.d.ts.map +1 -1
  105. package/dist/src/transport/webrtc-transport.js +10 -10
  106. package/dist/src/transport/webrtc-transport.js.map +1 -1
  107. package/dist/src/transport/webrtc-transport.test.js +3 -3
  108. package/dist/src/transport/webrtc-transport.test.js.map +1 -1
  109. package/dist/src/types.d.ts +1 -1
  110. package/dist/src/types.d.ts.map +1 -1
  111. package/package.json +25 -18
  112. package/src/index.ts +2 -2
  113. package/src/network-manager.ts +30 -45
  114. package/src/protocol-factory.ts +5 -3
  115. package/src/signal/index.ts +2 -2
  116. package/src/signal/integration.test.ts +1 -1
  117. package/src/signal/message-router.test.ts +1 -1
  118. package/src/signal/message-router.ts +2 -2
  119. package/src/signal/{signal-messaging.ts → signal-messenger.ts} +2 -2
  120. package/src/swarm/connection.ts +23 -12
  121. package/src/swarm/peer.ts +156 -0
  122. package/src/swarm/swarm-mapper.ts +21 -10
  123. package/src/swarm/swarm.ts +142 -111
  124. package/src/testing/test-builder.ts +143 -63
  125. package/src/testing/test-protocol.ts +31 -23
  126. package/src/tests/basic-test-suite.ts +168 -0
  127. package/src/tests/memory-transport.test.ts +11 -0
  128. package/src/{presence.test.ts → tests/presence.test.ts} +24 -23
  129. package/src/tests/property-test-suite.ts +221 -0
  130. package/src/tests/utils.ts +85 -0
  131. package/src/tests/webrtc-transport.test.ts +16 -0
  132. package/src/topology/fully-connected-topology.ts +5 -4
  133. package/src/topology/topology.ts +0 -5
  134. package/src/transport/memory-transport.test.ts +3 -2
  135. package/src/transport/memory-transport.ts +79 -49
  136. package/src/transport/transport.ts +9 -3
  137. package/src/transport/{wrtc-simple-peer.test.ts → webrtc-simple-peer.test.ts} +1 -1
  138. package/src/transport/webrtc-transport-proxy.test.ts +2 -2
  139. package/src/transport/webrtc-transport-proxy.ts +17 -8
  140. package/src/transport/webrtc-transport-service.ts +1 -1
  141. package/src/transport/webrtc-transport.test.ts +4 -6
  142. package/src/transport/webrtc-transport.ts +4 -4
  143. package/dist/src/network-manager.test.d.ts +0 -2
  144. package/dist/src/network-manager.test.d.ts.map +0 -1
  145. package/dist/src/network-manager.test.js +0 -596
  146. package/dist/src/network-manager.test.js.map +0 -1
  147. package/dist/src/presence.test.d.ts.map +0 -1
  148. package/dist/src/presence.test.js.map +0 -1
  149. package/dist/src/signal/signal-messaging.js.map +0 -1
  150. package/dist/src/transport/wrtc-simple-peer.test.d.ts +0 -2
  151. package/dist/src/transport/wrtc-simple-peer.test.d.ts.map +0 -1
  152. package/dist/src/transport/wrtc-simple-peer.test.js.map +0 -1
  153. package/src/network-manager.test.ts +0 -707
@@ -1 +1 @@
1
- {"version":3,"file":"webrtc-transport.d.ts","sourceRoot":"","sources":["../../../src/transport/webrtc-transport.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAE/D,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG1D,oBAAY,qBAAqB,GAAG;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC;IAC/B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAOnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IAEnC,QAAQ,CAAC,MAAM,cAAe;IAC9B,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,MAAM,cAAqB;gBAEP,MAAM,EAAE,qBAAqB;IA+BpD,KAAK;IAQL,MAAM,CAAC,MAAM,EAAE,MAAM;YAMb,kBAAkB;CAIjC;AAGD,eAAO,MAAM,4BAA4B,kBAAmB,GAAG,KAAG,gBAMhE,CAAC"}
1
+ {"version":3,"file":"webrtc-transport.d.ts","sourceRoot":"","sources":["../../../src/transport/webrtc-transport.ts"],"names":[],"mappings":";AAOA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AAEjD,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;IAC/B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C,CAAC;AAEF;;GAEG;AACH,qBAAa,eAAgB,YAAW,SAAS;IAOnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IANnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IAEnC,QAAQ,CAAC,MAAM,cAAe;IAC9B,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,MAAM,cAAqB;gBAEP,MAAM,EAAE,qBAAqB;IA+BpD,OAAO;IAQb,MAAM,CAAC,MAAM,EAAE,MAAM;YAMP,kBAAkB;CAIjC;AAGD,eAAO,MAAM,4BAA4B,kBAAmB,GAAG,KAAG,gBAMhE,CAAC"}
@@ -22,39 +22,39 @@ class WebRTCTransport {
22
22
  this.closed = new async_1.Event();
23
23
  this.connected = new async_1.Event();
24
24
  this.errors = new debug_1.ErrorStream();
25
- (0, log_1.log)('created connection', params, { file: "packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", line: 34 });
25
+ (0, log_1.log)('created connection', params, { file: "packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", line: 34, scope: this, bugcheck: "If you see this message then it means that the source code preprocessor for @dxos/log is broken. It probably has misinterpreted an unrelated call for a logger invocation." });
26
26
  this._peer = new simple_peer_1.default({
27
27
  initiator: this.params.initiator,
28
28
  wrtc: simple_peer_1.default.WEBRTC_SUPPORT ? undefined : webrtc_1.wrtc !== null && webrtc_1.wrtc !== void 0 ? webrtc_1.wrtc : (0, debug_1.raise)(new Error('wrtc not available')),
29
29
  config: this.params.webrtcConfig
30
30
  });
31
31
  this._peer.on('signal', async (data) => {
32
- (0, log_1.log)('signal', data, { file: "packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", line: 42 });
32
+ (0, log_1.log)('signal', data, { file: "packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", line: 42, scope: this, bugcheck: "If you see this message then it means that the source code preprocessor for @dxos/log is broken. It probably has misinterpreted an unrelated call for a logger invocation." });
33
33
  await this.params.sendSignal({ json: JSON.stringify(data) });
34
34
  });
35
35
  this._peer.on('connect', () => {
36
- (0, log_1.log)('connected', {}, { file: "packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", line: 47 });
36
+ (0, log_1.log)('connected', {}, { file: "packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", line: 47, scope: this, bugcheck: "If you see this message then it means that the source code preprocessor for @dxos/log is broken. It probably has misinterpreted an unrelated call for a logger invocation." });
37
37
  this.params.stream.pipe(this._peer).pipe(this.params.stream);
38
38
  this.connected.emit();
39
39
  });
40
40
  this._peer.on('close', async () => {
41
- (0, log_1.log)('closed', {}, { file: "packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", line: 53 });
41
+ (0, log_1.log)('closed', {}, { file: "packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", line: 53, scope: this, bugcheck: "If you see this message then it means that the source code preprocessor for @dxos/log is broken. It probably has misinterpreted an unrelated call for a logger invocation." });
42
42
  await this._disconnectStreams();
43
43
  this.closed.emit();
44
44
  });
45
45
  this._peer.on('error', async (err) => {
46
46
  this.errors.raise(err);
47
- await this.close();
47
+ await this.destroy();
48
48
  });
49
49
  }
50
- async close() {
51
- (0, log_1.log)('closing...', {}, { file: "packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", line: 65 });
50
+ async destroy() {
51
+ (0, log_1.log)('closing...', {}, { file: "packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", line: 65, scope: this, bugcheck: "If you see this message then it means that the source code preprocessor for @dxos/log is broken. It probably has misinterpreted an unrelated call for a logger invocation." });
52
52
  await this._disconnectStreams();
53
53
  this._peer.destroy();
54
54
  this.closed.emit();
55
- (0, log_1.log)('closed', {}, { file: "packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", line: 69 });
55
+ (0, log_1.log)('closed', {}, { file: "packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", line: 69, scope: this, bugcheck: "If you see this message then it means that the source code preprocessor for @dxos/log is broken. It probably has misinterpreted an unrelated call for a logger invocation." });
56
56
  }
57
- async signal(signal) {
57
+ signal(signal) {
58
58
  (0, node_assert_1.default)(this._peer, 'Connection not ready to accept signals.');
59
59
  (0, node_assert_1.default)(signal.json, 'Signal message must contain signal data.');
60
60
  this._peer.signal(JSON.parse(signal.json));
@@ -68,7 +68,7 @@ class WebRTCTransport {
68
68
  exports.WebRTCTransport = WebRTCTransport;
69
69
  // TODO(dmaretskyi): Convert to class.
70
70
  const createWebRTCTransportFactory = (webrtcConfig) => ({
71
- create: (params) => new WebRTCTransport({
71
+ createTransport: (params) => new WebRTCTransport({
72
72
  ...params,
73
73
  webrtcConfig
74
74
  })
@@ -1 +1 @@
1
- {"version":3,"file":"webrtc-transport.js","sourceRoot":"","sources":["../../../src/transport/webrtc-transport.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;AAEF,8DAAiC;AACjC,8DAA4E;AAE5E,uCAAoC;AACpC,uCAAiD;AACjD,mCAAgC;AAIhC,qCAAgC;AAShC;;GAEG;AACH,MAAa,eAAe;IAO1B,YAA6B,MAA6B;QAA7B,WAAM,GAAN,MAAM,CAAuB;QAJjD,WAAM,GAAG,IAAI,aAAK,EAAE,CAAC;QACrB,cAAS,GAAG,IAAI,aAAK,EAAE,CAAC;QACxB,WAAM,GAAG,IAAI,mBAAW,EAAE,CAAC;QAGlC,IAAA,SAAG,EAAC,oBAAoB,EAAE,MAAM,6FAAC,CAAC;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAqB,CAAC;YACrC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;YAChC,IAAI,EAAE,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAI,aAAJ,aAAI,cAAJ,aAAI,GAAI,IAAA,aAAK,EAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;YACvG,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACrC,IAAA,SAAG,EAAC,QAAQ,EAAE,IAAI,6FAAC,CAAC;YACpB,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YAC5B,IAAA,SAAG,EAAC,WAAW,iGAAC,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;YAChC,IAAA,SAAG,EAAC,QAAQ,iGAAC,CAAC;YACd,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAA,SAAG,EAAC,YAAY,iGAAC,CAAC;QAClB,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAChC,IAAI,CAAC,KAAM,CAAC,OAAO,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnB,IAAA,SAAG,EAAC,QAAQ,iGAAC,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,IAAA,qBAAM,EAAC,IAAI,CAAC,KAAK,EAAE,yCAAyC,CAAC,CAAC;QAC9D,IAAA,qBAAM,EAAC,MAAM,CAAC,IAAI,EAAE,0CAA0C,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEO,KAAK,CAAC,kBAAkB;;QAC9B,4CAA4C;QAC5C,MAAA,MAAA,MAAA,MAAA,IAAI,CAAC,MAAM,CAAC,MAAM,EAAC,MAAM,mDAAG,IAAI,CAAC,KAAK,CAAC,0CAAE,MAAM,mDAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxE,CAAC;CACF;AAxDD,0CAwDC;AAED,sCAAsC;AAC/B,MAAM,4BAA4B,GAAG,CAAC,YAAkB,EAAoB,EAAE,CAAC,CAAC;IACrF,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CACjB,IAAI,eAAe,CAAC;QAClB,GAAG,MAAM;QACT,YAAY;KACb,CAAC;CACL,CAAC,CAAC;AANU,QAAA,4BAA4B,gCAMtC"}
1
+ {"version":3,"file":"webrtc-transport.js","sourceRoot":"","sources":["../../../src/transport/webrtc-transport.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ describe('WebRTCTransport', function () {
30
30
  };
31
31
  connection.closed.once(closedCb);
32
32
  await (0, async_1.sleep)(10); // Let simple-peer process events.
33
- await connection.close();
33
+ await connection.destroy();
34
34
  await (0, async_1.sleep)(10); // Process events.
35
35
  (0, expect_1.default)(callsCounter).toEqual(1);
36
36
  })
@@ -53,7 +53,7 @@ describe('WebRTCTransport', function () {
53
53
  await connection2.signal(signal);
54
54
  }
55
55
  });
56
- (0, testutils_1.afterTest)(() => connection1.close());
56
+ (0, testutils_1.afterTest)(() => connection1.destroy());
57
57
  (0, testutils_1.afterTest)(() => connection1.errors.assertNoUnhandledErrors());
58
58
  const plugin2 = new testing_1.TestProtocolPlugin(peer2Id.asBuffer());
59
59
  const protocolProvider2 = (0, testing_1.testProtocolProvider)(topic.asBuffer(), peer2Id, plugin2);
@@ -68,7 +68,7 @@ describe('WebRTCTransport', function () {
68
68
  await connection1.signal(signal);
69
69
  }
70
70
  });
71
- (0, testutils_1.afterTest)(() => connection2.close());
71
+ (0, testutils_1.afterTest)(() => connection2.destroy());
72
72
  (0, testutils_1.afterTest)(() => connection2.errors.assertNoUnhandledErrors());
73
73
  const received = [];
74
74
  const mockReceive = (p, s) => {
@@ -1 +1 @@
1
- {"version":3,"file":"webrtc-transport.test.js","sourceRoot":"","sources":["../../../src/transport/webrtc-transport.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"webrtc-transport.test.js","sourceRoot":"","sources":["../../../src/transport/webrtc-transport.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;AAEF,oDAA4B;AAC5B,mCAAgC;AAChC,sEAA4C;AAE5C,uCAAoC;AACpC,yCAA4C;AAC5C,qCAAuC;AACvC,uDAA+C;AAC/C,+CAA4C;AAE5C,wCAAsE;AACtE,yDAAqD;AAErD,QAAQ,CAAC,iBAAiB,EAAE;IAC1B,sHAAsH;IACtH,EAAE,CAAC,gBAAgB,EAAE,KAAK;QACxB,MAAM,UAAU,GAAG,IAAI,kCAAe,CAAC;YACrC,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,IAAI,eAAM,EAAE;YACpB,UAAU,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;SAC3B,CAAC,CAAC;QAEH,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,YAAY,EAAE,CAAC;QACjB,CAAC,CAAC;QAEF,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,IAAA,aAAK,EAAC,EAAE,CAAC,CAAC,CAAC,kCAAkC;QACnD,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;QAE3B,MAAM,IAAA,aAAK,EAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB;QACnC,IAAA,gBAAM,EAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC;SACC,OAAO,CAAC,IAAK,CAAC;SACd,OAAO,CAAC,CAAC,CAAC,CAAC;IAEd,EAAE,CAAC,0DAA0D,EAAE,KAAK;QAClE,MAAM,KAAK,GAAG,gBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,gBAAS,CAAC,MAAM,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,gBAAS,CAAC,MAAM,EAAE,CAAC;QAEnC,MAAM,OAAO,GAAG,IAAI,4BAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,IAAA,8BAAoB,EAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,IAAI,kCAAe,CAAC;YACtC,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,iBAAiB,CAAC;gBACxB,OAAO,EAAE,IAAA,qBAAY,EAAC,KAAK,CAAC;gBAC5B,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC,MAAM;YACT,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC3B,MAAM,IAAA,aAAK,EAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;SACF,CAAC,CAAC;QACH,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,CAAC;QAE9D,MAAM,OAAO,GAAG,IAAI,4BAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,MAAM,iBAAiB,GAAG,IAAA,8BAAoB,EAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACnF,MAAM,WAAW,GAAG,IAAI,kCAAe,CAAC;YACtC,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,iBAAiB,CAAC;gBACxB,OAAO,EAAE,IAAA,qBAAY,EAAC,KAAK,CAAC;gBAC5B,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC,MAAM;YACT,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;gBAC3B,MAAM,IAAA,aAAK,EAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;SACF,CAAC,CAAC;QACH,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACvC,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,uBAAuB,EAAE,CAAC,CAAC;QAE9D,MAAM,QAAQ,GAAU,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,CAAC,CAAW,EAAE,CAAS,EAAE,EAAE;YAC7C,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC;QACF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QACnC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YACvC,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,sBAAsB,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,MAAM,IAAA,yBAAa,EAAC,GAAG,EAAE;YACvB,IAAA,gBAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChC,IAAA,gBAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,wBAAQ,CAAC,CAAC;YAC7C,IAAA,gBAAM,EAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;SACC,OAAO,CAAC,IAAK,CAAC;SACd,OAAO,CAAC,CAAC,CAAC,CAAC;AAChB,CAAC,CAAC,CAAC"}
@@ -2,5 +2,5 @@ import { PublicKey } from '@dxos/keys';
2
2
  /**
3
3
  * Swarm topic.
4
4
  */
5
- export declare type Topic = PublicKey;
5
+ export type Topic = PublicKey;
6
6
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC;;GAEG;AACH,oBAAY,KAAK,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/network-manager",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "Network Manager",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -17,41 +17,48 @@
17
17
  "README.md"
18
18
  ],
19
19
  "dependencies": {
20
- "@dxos/async": "0.1.8",
21
- "@dxos/codec-protobuf": "0.1.8",
22
- "@dxos/credentials": "0.1.8",
23
- "@dxos/crypto": "0.1.8",
24
- "@dxos/debug": "0.1.8",
25
- "@dxos/keys": "0.1.8",
26
- "@dxos/log": "0.1.8",
27
- "@dxos/mesh-protocol": "0.1.8",
28
- "@dxos/messaging": "0.1.8",
29
- "@dxos/protocol-plugin-presence": "0.1.8",
30
- "@dxos/protocols": "0.1.8",
31
- "@dxos/rpc": "0.1.8",
32
- "@dxos/util": "0.1.8",
33
20
  "@koush/wrtc": "^0.5.3",
34
21
  "assert": "^2.0.0",
35
22
  "isomorphic-ws": "^4.0.1",
36
23
  "nanomessage-rpc": "^3.0.0",
37
24
  "simple-peer": "9.11.0",
38
25
  "ws": "^7.4.4",
39
- "xor-distance": "^2.0.0"
26
+ "xor-distance": "^2.0.0",
27
+ "@dxos/async": "0.1.10",
28
+ "@dxos/codec-protobuf": "0.1.10",
29
+ "@dxos/credentials": "0.1.10",
30
+ "@dxos/crypto": "0.1.10",
31
+ "@dxos/debug": "0.1.10",
32
+ "@dxos/keys": "0.1.10",
33
+ "@dxos/log": "0.1.10",
34
+ "@dxos/mesh-protocol": "0.1.10",
35
+ "@dxos/messaging": "0.1.10",
36
+ "@dxos/protocol-plugin-presence": "0.1.10",
37
+ "@dxos/protocols": "0.1.10",
38
+ "@dxos/rpc": "0.1.10",
39
+ "@dxos/util": "0.1.10"
40
40
  },
41
41
  "devDependencies": {
42
- "@dxos/signal": "0.1.8",
43
- "@dxos/testutils": "0.1.8",
44
42
  "@swc-node/register": "^1.5.4",
45
43
  "@swc/core": "^1.3.9",
46
44
  "@types/simple-peer": "9.11.3",
47
45
  "@types/ws": "^7.4.0",
48
46
  "earljs": "~0.1.10",
49
47
  "fast-check": "~2.14.0",
50
- "typescript": "^4.8.4"
48
+ "typescript": "^4.8.4",
49
+ "@dxos/signal": "0.1.10",
50
+ "@dxos/testutils": "0.1.10"
51
51
  },
52
52
  "publishConfig": {
53
53
  "access": "public"
54
54
  },
55
+ "beast": {
56
+ "classDiagrams": [
57
+ {
58
+ "root": "src/network-manager.ts"
59
+ }
60
+ ]
61
+ },
55
62
  "scripts": {
56
63
  "check": "true"
57
64
  }
package/src/index.ts CHANGED
@@ -2,11 +2,11 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
+ export * from './connection-log';
5
6
  export * from './network-manager';
6
7
  export * from './protocol-factory';
8
+ export * from './signal';
7
9
  export * from './swarm';
8
10
  export * from './topology';
9
11
  export * from './transport';
10
- export * from './signal';
11
12
  export * from './types';
12
- export * from './connection-log';
@@ -66,12 +66,12 @@ export type NetworkManagerOptions = {
66
66
  /**
67
67
  * Manages connection to the swarm.
68
68
  */
69
+ // TODO(dmaretskyi): Rename SwarmManager.
69
70
  export class NetworkManager {
70
- private readonly _transportFactory: TransportFactory;
71
-
72
71
  private readonly _swarms = new ComplexMap<PublicKey, Swarm>(PublicKey.hash);
73
72
  private readonly _mappers = new ComplexMap<PublicKey, SwarmMapper>(PublicKey.hash);
74
73
 
74
+ private readonly _transportFactory: TransportFactory;
75
75
  private readonly _signalManager: SignalManager;
76
76
  private readonly _messenger: Messenger;
77
77
  private readonly _signalConnection: SignalConnection;
@@ -86,18 +86,24 @@ export class NetworkManager {
86
86
  this._signalManager = signalManager;
87
87
  this._signalManager.swarmEvent.on(({ topic, swarmEvent: event }) => this._swarms.get(topic)?.onSwarmEvent(event));
88
88
  this._messenger = new Messenger({ signalManager: this._signalManager });
89
-
90
89
  this._signalConnection = {
91
90
  join: (opts) => this._signalManager.join(opts),
92
91
  leave: (opts) => this._signalManager.leave(opts)
93
92
  };
94
93
 
94
+ // TODO(burdon): Inject listener (generic pattern).
95
95
  if (log) {
96
96
  this._connectionLog = new ConnectionLog();
97
97
  }
98
98
  }
99
99
 
100
- get signal() {
100
+ // TODO(burdon): Remove access (Devtools only).
101
+ get connectionLog() {
102
+ return this._connectionLog;
103
+ }
104
+
105
+ // TODO(burdon): Remove access (Devtools only).
106
+ get signalManager() {
101
107
  return this._signalManager;
102
108
  }
103
109
 
@@ -106,11 +112,6 @@ export class NetworkManager {
106
112
  return Array.from(this._swarms.keys());
107
113
  }
108
114
 
109
- // TODO(burdon): Factor out devtools.
110
- get connectionLog() {
111
- return this._connectionLog;
112
- }
113
-
114
115
  getSwarmMap(topic: PublicKey): SwarmMapper | undefined {
115
116
  return this._mappers.get(topic);
116
117
  }
@@ -119,27 +120,30 @@ export class NetworkManager {
119
120
  return this._swarms.get(topic);
120
121
  }
121
122
 
123
+ async close() {
124
+ for (const topic of this._swarms.keys()) {
125
+ await this.leaveSwarm(topic).catch((err) => {
126
+ log(err);
127
+ });
128
+ }
129
+
130
+ await this._signalManager.destroy();
131
+ }
132
+
122
133
  /**
123
134
  * Join the swarm.
124
135
  */
125
- // TODO(burdon): Join/Open?
126
- async openSwarmConnection({
127
- topic,
128
- peerId,
129
- topology,
130
- protocol,
131
- presence,
132
- label
133
- }: SwarmOptions): Promise<SwarmConnection> {
136
+ // TODO(burdon): Join/Open? Swarm abstraction?
137
+ async joinSwarm({ topic, peerId, topology, protocol, presence, label }: SwarmOptions): Promise<SwarmConnection> {
134
138
  assert(PublicKey.isPublicKey(topic));
135
139
  assert(PublicKey.isPublicKey(peerId));
136
140
  assert(topology);
137
141
  assert(typeof protocol === 'function');
138
142
  if (this._swarms.has(topic)) {
139
- throw new Error(`Already connected to swarm: ${topic}`);
143
+ throw new Error(`Already connected to swarm: ${topic.truncate()}`);
140
144
  }
141
145
 
142
- log('joining', { topic, peerId, topology: topology.toString() });
146
+ log('joining', { topic, peerId, topology: topology.toString() }); // TODO(burdon): Log peerId.
143
147
  const swarm = new Swarm(topic, peerId, topology, protocol, this._messenger, this._transportFactory, label);
144
148
  swarm.errors.handle((error) => {
145
149
  log(`Swarm error: ${error}`);
@@ -151,22 +155,23 @@ export class NetworkManager {
151
155
 
152
156
  this.topicsUpdated.emit();
153
157
  this._connectionLog?.swarmJoined(swarm);
154
- log('open', { topic });
158
+ log('joined', { topic, count: this._swarms.size });
155
159
 
156
160
  return {
157
- close: () => this.closeSwarmConnection(topic)
161
+ close: () => this.leaveSwarm(topic)
158
162
  };
159
163
  }
160
164
 
161
165
  /**
162
166
  * Close the connection.
163
167
  */
164
- async closeSwarmConnection(topic: PublicKey) {
168
+ async leaveSwarm(topic: PublicKey) {
165
169
  if (!this._swarms.has(topic)) {
170
+ log.warn('swarm not open', { topic });
166
171
  return;
167
172
  }
168
173
 
169
- log('closing', { topic });
174
+ log('leaving', { topic });
170
175
  const swarm = this._swarms.get(topic)!;
171
176
  await this._signalConnection.leave({ topic, peerId: swarm.ownPeerId });
172
177
 
@@ -180,26 +185,6 @@ export class NetworkManager {
180
185
  this._swarms.delete(topic);
181
186
 
182
187
  await this.topicsUpdated.emit();
183
- log('closed', { topic });
184
- }
185
-
186
- /**
187
- * @deprecated
188
- */
189
- // TODO(dmaretskyi): Remove.
190
- async start() {
191
- console.warn('NetworkManger.start is deprecated.');
192
- }
193
-
194
- // TODO(burdon): Open/close?
195
- async destroy() {
196
- for (const topic of this._swarms.keys()) {
197
- await this.closeSwarmConnection(topic).catch((err) => {
198
- log(`Failed to leave swarm ${topic} on NetworkManager.destroy}`);
199
- log(err);
200
- });
201
- }
202
-
203
- await this._signalManager.destroy();
188
+ log('left', { topic, count: this._swarms.size });
204
189
  }
205
190
  }
@@ -32,6 +32,7 @@ export const protocolFactory = ({
32
32
  getTopics
33
33
  }: ProtocolFactoryOptions): ProtocolProvider => {
34
34
  assert(getTopics);
35
+
35
36
  // eslint-disable-next-line no-unused-vars
36
37
  return ({ channel, initiator }) => {
37
38
  log('creating protocol');
@@ -42,6 +43,7 @@ export const protocolFactory = ({
42
43
  if (publicKey) {
43
44
  protocol.setContext({ topic: PublicKey.stringify(publicKey) });
44
45
  }
46
+
45
47
  assert(publicKey, 'PublicKey not found in discovery.');
46
48
  return publicKey;
47
49
  },
@@ -51,7 +53,6 @@ export const protocolFactory = ({
51
53
  });
52
54
 
53
55
  protocol.setExtensions(plugins.map((plugin) => plugin.createExtension())).init();
54
-
55
56
  return protocol;
56
57
  };
57
58
  };
@@ -75,9 +76,10 @@ export const transportProtocolProvider = (
75
76
  rendezvousKey: Buffer,
76
77
  peerId: Buffer,
77
78
  protocolPlugin: any
78
- ): ProtocolProvider =>
79
- protocolFactory({
79
+ ): ProtocolProvider => {
80
+ return protocolFactory({
80
81
  getTopics: () => [rendezvousKey],
81
82
  session: { peerId: PublicKey.stringify(peerId) },
82
83
  plugins: [protocolPlugin]
83
84
  });
85
+ };
@@ -2,6 +2,6 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- export * from './signal-connection';
6
- export * from './signal-messaging';
7
5
  export * from './message-router';
6
+ export * from './signal-connection';
7
+ export * from './signal-messenger';
@@ -12,7 +12,7 @@ import { WebsocketSignalManager } from '@dxos/messaging';
12
12
  import { createTestBroker, TestBroker } from '@dxos/signal';
13
13
 
14
14
  import { MessageRouter } from './message-router';
15
- import { SignalMessage } from './signal-messaging';
15
+ import { SignalMessage } from './signal-messenger';
16
16
 
17
17
  describe('Signal Integration Test', function () {
18
18
  let broker: TestBroker;
@@ -16,7 +16,7 @@ import { createTestBroker } from '@dxos/signal';
16
16
  import { afterTest } from '@dxos/testutils';
17
17
 
18
18
  import { MessageRouter } from './message-router';
19
- import { OfferMessage, SignalMessage } from './signal-messaging';
19
+ import { OfferMessage, SignalMessage } from './signal-messenger';
20
20
 
21
21
  describe('MessageRouter', function () {
22
22
  let topic: PublicKey;
@@ -11,7 +11,7 @@ import { schema } from '@dxos/protocols';
11
11
  import { Answer, SwarmMessage } from '@dxos/protocols/proto/dxos/mesh/swarm';
12
12
  import { ComplexMap, MakeOptional } from '@dxos/util';
13
13
 
14
- import { OfferMessage, SignalMessage, SignalMessaging } from './signal-messaging';
14
+ import { OfferMessage, SignalMessage, SignalMessenger } from './signal-messenger';
15
15
 
16
16
  interface OfferRecord {
17
17
  resolve: (answer: Answer) => void;
@@ -28,7 +28,7 @@ interface MessageRouterOptions {
28
28
  /**
29
29
  * Adds offer/answer and signal interfaces.
30
30
  */
31
- export class MessageRouter implements SignalMessaging {
31
+ export class MessageRouter implements SignalMessenger {
32
32
  private readonly _onSignal: (message: SignalMessage) => Promise<void>;
33
33
  private readonly _sendMessage: (msg: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;
34
34
 
@@ -24,8 +24,8 @@ export interface SignalMessage {
24
24
  /**
25
25
  * Signal peer messaging interface.
26
26
  */
27
-
28
- export interface SignalMessaging {
27
+ // TODO(burdon): Rename SignalMessenger.
28
+ export interface SignalMessenger {
29
29
  /**
30
30
  * Offer/answer RPC.
31
31
  */
@@ -11,7 +11,7 @@ import { log } from '@dxos/log';
11
11
  import { Protocol } from '@dxos/mesh-protocol';
12
12
  import { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';
13
13
 
14
- import { SignalMessage, SignalMessaging } from '../signal';
14
+ import { SignalMessage, SignalMessenger } from '../signal';
15
15
  import { Transport, TransportFactory } from '../transport';
16
16
 
17
17
  /**
@@ -72,7 +72,7 @@ export class Connection {
72
72
  public readonly remoteId: PublicKey,
73
73
  public readonly sessionId: PublicKey,
74
74
  public readonly initiator: boolean,
75
- private readonly _signalMessaging: SignalMessaging,
75
+ private readonly _signalMessaging: SignalMessenger,
76
76
  private readonly _protocol: Protocol,
77
77
  private readonly _transportFactory: TransportFactory
78
78
  ) {}
@@ -108,7 +108,7 @@ export class Connection {
108
108
 
109
109
  if (answer.accept) {
110
110
  try {
111
- this.open();
111
+ this.openConnection();
112
112
  } catch (err: any) {
113
113
  this.errors.raise(err);
114
114
  }
@@ -124,13 +124,16 @@ export class Connection {
124
124
  });
125
125
  }
126
126
 
127
+ /**
128
+ * Create an underlying transport and prepares it for the connection.
129
+ */
127
130
  // TODO(burdon): Make async?
128
- open() {
131
+ openConnection() {
129
132
  assert(this._state === ConnectionState.INITIAL, 'Invalid state.');
130
133
  this._changeState(this.initiator ? ConnectionState.INITIATING_CONNECTION : ConnectionState.CONNECTING);
131
134
 
132
135
  assert(!this._transport);
133
- this._transport = this._transportFactory.create({
136
+ this._transport = this._transportFactory.createTransport({
134
137
  initiator: this.initiator,
135
138
  stream: this._protocol.stream,
136
139
  sendSignal: async (signal) => {
@@ -169,17 +172,24 @@ export class Connection {
169
172
  return;
170
173
  }
171
174
 
172
- // TODO(dmaretskyi): CLOSING state.
173
- log('closing', { peerId: this.ownId });
175
+ log('closing...', { peerId: this.ownId });
174
176
 
175
- // This will try to gracefull close the stream flushing any unsent data packets.
176
- await this._protocol.close();
177
+ try {
178
+ // Gracefully close the stream flushing any unsent data packets.
179
+ await this._protocol.close();
180
+ } catch (err: any) {
181
+ log.catch(err);
182
+ }
177
183
 
178
- // After the transport is closed streams are disconnected.
179
- await this._transport?.close();
184
+ try {
185
+ // After the transport is closed streams are disconnected.
186
+ await this._transport?.destroy();
187
+ } catch (err: any) {
188
+ log.catch(err);
189
+ }
180
190
 
181
- this._changeState(ConnectionState.CLOSED);
182
191
  log('closed', { peerId: this.ownId });
192
+ this._changeState(ConnectionState.CLOSED);
183
193
  }
184
194
 
185
195
  async signal(msg: SignalMessage) {
@@ -204,6 +214,7 @@ export class Connection {
204
214
  }
205
215
 
206
216
  private _changeState(state: ConnectionState): void {
217
+ assert(state !== this._state, 'Already in this state.');
207
218
  this._state = state;
208
219
  this.stateChanged.emit(state);
209
220
  }