@dxos/network-manager 2.33.9-dev.d70ac9ee → 2.33.9-dev.d9963f00

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 (73) hide show
  1. package/dist/browser-mocha/bundle.js +119253 -0
  2. package/dist/browser-mocha/main.js +27 -0
  3. package/dist/src/network-manager.d.ts.map +1 -1
  4. package/dist/src/network-manager.js +7 -6
  5. package/dist/src/network-manager.js.map +1 -1
  6. package/dist/src/proto/gen/dxos/mesh/signal.d.ts +21 -0
  7. package/dist/src/proto/gen/dxos/mesh/signal.d.ts.map +1 -1
  8. package/dist/src/proto/gen/index.d.ts +1 -0
  9. package/dist/src/proto/gen/index.d.ts.map +1 -1
  10. package/dist/src/proto/gen/index.js +1 -1
  11. package/dist/src/proto/gen/index.js.map +1 -1
  12. package/dist/src/protocol-factory.js +3 -3
  13. package/dist/src/protocol-factory.js.map +1 -1
  14. package/dist/src/signal/in-memory-signal-manager.js +5 -5
  15. package/dist/src/signal/in-memory-signal-manager.js.map +1 -1
  16. package/dist/src/signal/message-router.d.ts +16 -4
  17. package/dist/src/signal/message-router.d.ts.map +1 -1
  18. package/dist/src/signal/message-router.js +91 -17
  19. package/dist/src/signal/message-router.js.map +1 -1
  20. package/dist/src/signal/message-router.test.js +120 -13
  21. package/dist/src/signal/message-router.test.js.map +1 -1
  22. package/dist/src/signal/signal-client.d.ts +2 -1
  23. package/dist/src/signal/signal-client.d.ts.map +1 -1
  24. package/dist/src/signal/signal-client.js +26 -16
  25. package/dist/src/signal/signal-client.js.map +1 -1
  26. package/dist/src/signal/signal-client.test.js +4 -2
  27. package/dist/src/signal/signal-client.test.js.map +1 -1
  28. package/dist/src/signal/websocket-rpc.js +3 -3
  29. package/dist/src/signal/websocket-rpc.js.map +1 -1
  30. package/dist/src/signal/websocket-signal-manager.js +2 -2
  31. package/dist/src/signal/websocket-signal-manager.js.map +1 -1
  32. package/dist/src/swarm/connection.js +8 -8
  33. package/dist/src/swarm/connection.js.map +1 -1
  34. package/dist/src/swarm/swarm.js +10 -10
  35. package/dist/src/swarm/swarm.js.map +1 -1
  36. package/dist/src/swarm/swarm.test.js +2 -0
  37. package/dist/src/swarm/swarm.test.js.map +1 -1
  38. package/dist/src/testing/test-protocol.d.ts.map +1 -1
  39. package/dist/src/testing/test-protocol.js +3 -3
  40. package/dist/src/testing/test-protocol.js.map +1 -1
  41. package/dist/src/topology/fully-connected-topology.js +3 -3
  42. package/dist/src/topology/fully-connected-topology.js.map +1 -1
  43. package/dist/src/topology/mmst-topology.js +5 -5
  44. package/dist/src/topology/mmst-topology.js.map +1 -1
  45. package/dist/src/topology/star-topology.js +4 -4
  46. package/dist/src/topology/star-topology.js.map +1 -1
  47. package/dist/src/transport/in-memory-transport.js +2 -2
  48. package/dist/src/transport/in-memory-transport.js.map +1 -1
  49. package/dist/src/transport/webrtc-transport.js +3 -3
  50. package/dist/src/transport/webrtc-transport.js.map +1 -1
  51. package/dist/tsconfig.tsbuildinfo +1 -1
  52. package/package.json +14 -11
  53. package/src/network-manager.ts +2 -1
  54. package/src/proto/defs/dxos/mesh/signal.proto +13 -0
  55. package/src/proto/gen/dxos/mesh/signal.ts +21 -0
  56. package/src/proto/gen/index.ts +2 -1
  57. package/src/protocol-factory.ts +1 -1
  58. package/src/signal/in-memory-signal-manager.ts +1 -1
  59. package/src/signal/message-router.test.ts +154 -38
  60. package/src/signal/message-router.ts +107 -18
  61. package/src/signal/signal-client.test.ts +4 -2
  62. package/src/signal/signal-client.ts +42 -15
  63. package/src/signal/websocket-rpc.ts +1 -1
  64. package/src/signal/websocket-signal-manager.ts +1 -1
  65. package/src/swarm/connection.ts +1 -1
  66. package/src/swarm/swarm.test.ts +2 -0
  67. package/src/swarm/swarm.ts +2 -2
  68. package/src/testing/test-protocol.ts +1 -1
  69. package/src/topology/fully-connected-topology.ts +1 -1
  70. package/src/topology/mmst-topology.ts +1 -1
  71. package/src/topology/star-topology.ts +1 -1
  72. package/src/transport/in-memory-transport.ts +1 -1
  73. package/src/transport/webrtc-transport.ts +1 -1
@@ -5,8 +5,10 @@
5
5
  import debug from 'debug';
6
6
 
7
7
  import { Event } from '@dxos/async';
8
+ import { failUndefined } from '@dxos/debug';
8
9
  import { PublicKey } from '@dxos/protocols';
9
10
 
11
+ import { schema } from '../proto/gen';
10
12
  import { Answer, Message } from '../proto/gen/dxos/mesh/signal';
11
13
  import { SignalApi } from './signal-api';
12
14
  import { WebsocketRpc } from './websocket-rpc';
@@ -90,13 +92,17 @@ export class SignalClient {
90
92
  data: message.data
91
93
  }));
92
94
 
93
- this._client.subscribe('signal', (msg: Message) => this._onSignal({
94
- id: PublicKey.from(msg.id!),
95
- remoteId: PublicKey.from(msg.remoteId!),
96
- topic: PublicKey.from(msg.topic!),
97
- sessionId: PublicKey.from(msg.sessionId!),
98
- data: msg.data
99
- }));
95
+ this._client.subscribe('signal', (msg: SignalMessage) => {
96
+ return this._onSignal({
97
+ id: PublicKey.from(msg.id!),
98
+ remoteId: PublicKey.from(msg.remoteId!),
99
+ topic: PublicKey.from(msg.topic!),
100
+ sessionId: PublicKey.from(msg.sessionId!),
101
+ data: schema.getCodecForType('dxos.mesh.signal.MessageData').decode(msg.data ?? failUndefined()),
102
+ // Field that MessageRouter adds, so on lower level it not always defined.
103
+ messageId: msg.messageId ? PublicKey.from(msg.messageId) : undefined
104
+ });
105
+ });
100
106
 
101
107
  this._clientCleanup.push(this._client.connected.on(() => {
102
108
  log('Socket connected');
@@ -210,6 +216,7 @@ export class SignalClient {
210
216
  /**
211
217
  * Routes an offer to the other peer's _onOffer callback.
212
218
  * @returns Other peer's _onOffer callback return value.
219
+ * @deprecated
213
220
  */
214
221
  async offer (msg: Message): Promise<Answer> {
215
222
  return this._client.call('offer', {
@@ -224,13 +231,33 @@ export class SignalClient {
224
231
  /**
225
232
  * Routes an offer to the other peer's _onSignal callback.
226
233
  */
227
- async signal (payload: Message): Promise<void> {
228
- return this._client.emit('signal', {
229
- id: payload.id?.asBuffer(),
230
- remoteId: payload.remoteId?.asBuffer(),
231
- topic: payload.topic?.asBuffer(),
232
- sessionId: payload.sessionId?.asBuffer(),
233
- data: payload.data
234
- });
234
+ async signal (message: Message): Promise<void> {
235
+ const signalMessage: SignalMessage = {
236
+ messageId: message.messageId?.asBuffer(),
237
+ id: message.id?.asBuffer(),
238
+ remoteId: message.remoteId?.asBuffer(),
239
+ topic: message.topic?.asBuffer(),
240
+ sessionId: message.sessionId?.asBuffer(),
241
+ data: Buffer.from(schema.getCodecForType('dxos.mesh.signal.MessageData').encode(message.data ?? failUndefined()))
242
+ };
243
+ return this._client.emit('signal', signalMessage);
235
244
  }
236
245
  }
246
+
247
+ /**
248
+ * Messages as processed by the signal server.
249
+ */
250
+ interface SignalMessage{
251
+ /**
252
+ * Sender's public key.
253
+ */
254
+ id?: Buffer;
255
+ /**
256
+ * Receiver`s public key.
257
+ */
258
+ remoteId?: Buffer;
259
+ topic?: Buffer;
260
+ sessionId?: Buffer;
261
+ data?: Buffer;
262
+ messageId?: Buffer;
263
+ }
@@ -2,10 +2,10 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
7
6
  import WebSocket from 'isomorphic-ws';
8
7
  import nanomessagerpc from 'nanomessage-rpc';
8
+ import assert from 'node:assert';
9
9
  import { promisify } from 'util';
10
10
 
11
11
  import { Event, Trigger, sleep } from '@dxos/async';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { Event, synchronized } from '@dxos/async';
9
9
  import { PublicKey } from '@dxos/protocols';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2021 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { Event, synchronized } from '@dxos/async';
9
9
  import { ErrorStream } from '@dxos/debug';
@@ -52,12 +52,14 @@ const setup = ({ router = false } = {}) => {
52
52
  onSignal: msg => swarm1.onSignal(msg),
53
53
  onOffer: msg => swarm1.onOffer(msg)
54
54
  });
55
+ afterTest(() => mr1.destroy());
55
56
 
56
57
  const mr2: MessageRouter = new MessageRouter({
57
58
  sendMessage: msg => mr1.receiveMessage(msg),
58
59
  onSignal: msg => swarm2.onSignal(msg),
59
60
  onOffer: msg => swarm2.onOffer(msg)
60
61
  });
62
+ afterTest(() => mr2.destroy());
61
63
 
62
64
  const sm1: SignalMessaging = router ? mr1 : new MockSignalConnection(() => swarm2);
63
65
 
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { Event } from '@dxos/async';
9
9
  import { discoveryKey } from '@dxos/crypto';
@@ -101,7 +101,7 @@ export class Swarm {
101
101
  }
102
102
 
103
103
  async onOffer (message: Message): Promise<Answer> {
104
- log(`Offer from ${message.id} topic=${this._topic}`);
104
+ log(`Offer from ${JSON.stringify(message)}`);
105
105
  // Id of the peer offering us the connection.
106
106
  assert(message.id);
107
107
  const remoteId = message.id;
@@ -4,9 +4,9 @@
4
4
 
5
5
  // Test/mock Protocol implementation used in network-manager tests.
6
6
 
7
- import assert from 'assert';
8
7
  import debug from 'debug';
9
8
  import { EventEmitter } from 'events';
9
+ import assert from 'node:assert';
10
10
 
11
11
  import { Extension, Protocol } from '@dxos/mesh-protocol';
12
12
  import { PublicKey } from '@dxos/protocols';
@@ -2,7 +2,7 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
5
+ import assert from 'node:assert';
6
6
 
7
7
  import { PublicKey } from '@dxos/protocols';
8
8
 
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
  import distance from 'xor-distance';
8
8
 
9
9
  import { PublicKey } from '@dxos/protocols';
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
 
8
8
  import { PublicKey } from '@dxos/protocols';
9
9
 
@@ -2,8 +2,8 @@
2
2
  // Copyright 2020 DXOS.org
3
3
  //
4
4
 
5
- import assert from 'assert';
6
5
  import debug from 'debug';
6
+ import assert from 'node:assert';
7
7
  import { Transform } from 'stream';
8
8
 
9
9
  import { Event } from '@dxos/async';
@@ -3,8 +3,8 @@
3
3
  //
4
4
 
5
5
  import wrtc from '@koush/wrtc';
6
- import assert from 'assert';
7
6
  import debug from 'debug';
7
+ import assert from 'node:assert';
8
8
  import SimplePeerConstructor, { Instance as SimplePeer } from 'simple-peer';
9
9
 
10
10
  import { Event } from '@dxos/async';