@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
@@ -39,6 +39,7 @@ export class WebRTCTransportProxy implements Transport {
39
39
  proxyId: this._proxyId,
40
40
  initiator: this._params.initiator
41
41
  });
42
+
42
43
  this._serviceStream.waitUntilReady().then(
43
44
  () => {
44
45
  this._serviceStream.subscribe(async (event: BridgeEvent) => {
@@ -78,7 +79,7 @@ export class WebRTCTransportProxy implements Transport {
78
79
  break;
79
80
  }
80
81
  case ConnectionState.CLOSED: {
81
- await this.close();
82
+ await this.destroy();
82
83
  break;
83
84
  }
84
85
  }
@@ -93,23 +94,29 @@ export class WebRTCTransportProxy implements Transport {
93
94
  await this._params.sendSignal(signalEvent.payload);
94
95
  }
95
96
 
96
- async signal(signal: Signal): Promise<void> {
97
- await this._params.bridgeService.sendSignal({
98
- proxyId: this._proxyId,
99
- signal
100
- });
97
+ signal(signal: Signal): void {
98
+ this._params.bridgeService
99
+ .sendSignal({
100
+ proxyId: this._proxyId,
101
+ signal
102
+ })
103
+ .catch((err) => this.errors.raise(err));
101
104
  }
102
105
 
103
- async close(): Promise<void> {
106
+ // TODO(burdon): Move open from constructor.
107
+ async destroy(): Promise<void> {
104
108
  if (this._closed) {
105
109
  return;
106
110
  }
111
+
107
112
  this._serviceStream.close();
113
+
108
114
  try {
109
115
  await this._params.bridgeService.close({ proxyId: this._proxyId });
110
116
  } catch (err: any) {
111
117
  log.catch(err);
112
118
  }
119
+
113
120
  this.closed.emit();
114
121
  this._closed = true;
115
122
  }
@@ -117,6 +124,7 @@ export class WebRTCTransportProxy implements Transport {
117
124
  /**
118
125
  * Called when underlying proxy service becomes unavailable.
119
126
  */
127
+ // TODO(burdon): Option on close method.
120
128
  forceClose() {
121
129
  this._serviceStream.close();
122
130
  this.closed.emit();
@@ -124,6 +132,7 @@ export class WebRTCTransportProxy implements Transport {
124
132
  }
125
133
  }
126
134
 
135
+ // TODO(burdon): Why is this named Proxy?
127
136
  export class WebRTCTransportProxyFactory implements TransportFactory {
128
137
  private _bridgeService: BridgeService | undefined;
129
138
  private _connections = new Set<WebRTCTransportProxy>();
@@ -141,7 +150,7 @@ export class WebRTCTransportProxyFactory implements TransportFactory {
141
150
  return this;
142
151
  }
143
152
 
144
- create(options: TransportOptions): Transport {
153
+ createTransport(options: TransportOptions): Transport {
145
154
  assert(this._bridgeService, 'WebRTCTransportProxyFactory is not ready to open connections');
146
155
 
147
156
  const transport = new WebRTCTransportProxy({
@@ -102,7 +102,7 @@ export class WebRTCTransportService implements BridgeService {
102
102
  }
103
103
 
104
104
  async close({ proxyId }: CloseRequest) {
105
- await this.transports.get(proxyId)?.transport.close();
105
+ await this.transports.get(proxyId)?.transport.destroy();
106
106
  await this.transports.get(proxyId)?.stream.end();
107
107
  this.transports.delete(proxyId);
108
108
  log('Closed.');
@@ -28,13 +28,12 @@ describe('WebRTCTransport', function () {
28
28
  const closedCb = () => {
29
29
  callsCounter++;
30
30
  };
31
- connection.closed.once(closedCb);
32
31
 
32
+ connection.closed.once(closedCb);
33
33
  await sleep(10); // Let simple-peer process events.
34
- await connection.close();
34
+ await connection.destroy();
35
35
 
36
36
  await sleep(10); // Process events.
37
-
38
37
  expect(callsCounter).toEqual(1);
39
38
  })
40
39
  .timeout(1_000)
@@ -58,7 +57,7 @@ describe('WebRTCTransport', function () {
58
57
  await connection2.signal(signal);
59
58
  }
60
59
  });
61
- afterTest(() => connection1.close());
60
+ afterTest(() => connection1.destroy());
62
61
  afterTest(() => connection1.errors.assertNoUnhandledErrors());
63
62
 
64
63
  const plugin2 = new TestProtocolPlugin(peer2Id.asBuffer());
@@ -74,7 +73,7 @@ describe('WebRTCTransport', function () {
74
73
  await connection1.signal(signal);
75
74
  }
76
75
  });
77
- afterTest(() => connection2.close());
76
+ afterTest(() => connection2.destroy());
78
77
  afterTest(() => connection2.errors.assertNoUnhandledErrors());
79
78
 
80
79
  const received: any[] = [];
@@ -83,7 +82,6 @@ describe('WebRTCTransport', function () {
83
82
  return undefined;
84
83
  };
85
84
  plugin1.on('receive', mockReceive);
86
-
87
85
  plugin2.on('connect', async (protocol) => {
88
86
  await plugin2.send(peer1Id.asBuffer(), '{"message": "Hello"}');
89
87
  });
@@ -57,11 +57,11 @@ export class WebRTCTransport implements Transport {
57
57
 
58
58
  this._peer.on('error', async (err) => {
59
59
  this.errors.raise(err);
60
- await this.close();
60
+ await this.destroy();
61
61
  });
62
62
  }
63
63
 
64
- async close() {
64
+ async destroy() {
65
65
  log('closing...');
66
66
  await this._disconnectStreams();
67
67
  this._peer!.destroy();
@@ -69,7 +69,7 @@ export class WebRTCTransport implements Transport {
69
69
  log('closed');
70
70
  }
71
71
 
72
- async signal(signal: Signal) {
72
+ signal(signal: Signal) {
73
73
  assert(this._peer, 'Connection not ready to accept signals.');
74
74
  assert(signal.json, 'Signal message must contain signal data.');
75
75
  this._peer.signal(JSON.parse(signal.json));
@@ -83,7 +83,7 @@ export class WebRTCTransport implements Transport {
83
83
 
84
84
  // TODO(dmaretskyi): Convert to class.
85
85
  export const createWebRTCTransportFactory = (webrtcConfig?: any): TransportFactory => ({
86
- create: (params) =>
86
+ createTransport: (params) =>
87
87
  new WebRTCTransport({
88
88
  ...params,
89
89
  webrtcConfig
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=network-manager.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"network-manager.test.d.ts","sourceRoot":"","sources":["../../src/network-manager.test.ts"],"names":[],"mappings":""}