@dxos/network-manager 2.33.9-dev.bba8fc00 → 2.33.9-dev.ceab0857

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 (148) hide show
  1. package/dist/src/network-manager.blueprint-test.d.ts +3 -1
  2. package/dist/src/network-manager.blueprint-test.d.ts.map +1 -1
  3. package/dist/src/network-manager.blueprint-test.js +46 -17
  4. package/dist/src/network-manager.blueprint-test.js.map +1 -1
  5. package/dist/src/network-manager.browser-test.js +1 -1
  6. package/dist/src/network-manager.browser-test.js.map +1 -1
  7. package/dist/src/network-manager.d.ts.map +1 -1
  8. package/dist/src/network-manager.js +6 -6
  9. package/dist/src/network-manager.js.map +1 -1
  10. package/dist/src/network-manager.test.js +5 -4
  11. package/dist/src/network-manager.test.js.map +1 -1
  12. package/dist/src/proto/gen/dxos/credentials.d.ts.map +1 -1
  13. package/dist/src/proto/gen/dxos/halo/keys.d.ts.map +1 -1
  14. package/dist/src/proto/gen/dxos/halo/keys.js.map +1 -1
  15. package/dist/src/proto/gen/dxos/mesh/signal.d.ts +52 -45
  16. package/dist/src/proto/gen/dxos/mesh/signal.d.ts.map +1 -1
  17. package/dist/src/proto/gen/dxos/mesh/signalMessage.d.ts +79 -0
  18. package/dist/src/proto/gen/dxos/mesh/signalMessage.d.ts.map +1 -0
  19. package/dist/src/proto/gen/dxos/mesh/signalMessage.js +3 -0
  20. package/dist/src/proto/gen/dxos/mesh/signalMessage.js.map +1 -0
  21. package/dist/src/proto/gen/google/protobuf.d.ts +6 -0
  22. package/dist/src/proto/gen/google/protobuf.d.ts.map +1 -1
  23. package/dist/src/proto/gen/index.d.ts +17 -5
  24. package/dist/src/proto/gen/index.d.ts.map +1 -1
  25. package/dist/src/proto/gen/index.js +1 -1
  26. package/dist/src/proto/gen/index.js.map +1 -1
  27. package/dist/src/proto/substitutions.d.ts +4 -0
  28. package/dist/src/proto/substitutions.d.ts.map +1 -1
  29. package/dist/src/proto/substitutions.js +3 -1
  30. package/dist/src/proto/substitutions.js.map +1 -1
  31. package/dist/src/signal/in-memory-signal-manager.d.ts +7 -7
  32. package/dist/src/signal/in-memory-signal-manager.d.ts.map +1 -1
  33. package/dist/src/signal/in-memory-signal-manager.js +29 -8
  34. package/dist/src/signal/in-memory-signal-manager.js.map +1 -1
  35. package/dist/src/signal/index.d.ts +1 -2
  36. package/dist/src/signal/index.d.ts.map +1 -1
  37. package/dist/src/signal/index.js +1 -2
  38. package/dist/src/signal/index.js.map +1 -1
  39. package/dist/src/signal/integration.test.d.ts +2 -0
  40. package/dist/src/signal/integration.test.d.ts.map +1 -0
  41. package/dist/src/signal/integration.test.js +102 -0
  42. package/dist/src/signal/integration.test.js.map +1 -0
  43. package/dist/src/signal/message-router.d.ts +7 -7
  44. package/dist/src/signal/message-router.d.ts.map +1 -1
  45. package/dist/src/signal/message-router.js +6 -1
  46. package/dist/src/signal/message-router.js.map +1 -1
  47. package/dist/src/signal/message-router.test.js +15 -19
  48. package/dist/src/signal/message-router.test.js.map +1 -1
  49. package/dist/src/signal/signal-client.d.ts +33 -18
  50. package/dist/src/signal/signal-client.d.ts.map +1 -1
  51. package/dist/src/signal/signal-client.js +102 -92
  52. package/dist/src/signal/signal-client.js.map +1 -1
  53. package/dist/src/signal/signal-client.test.js +60 -77
  54. package/dist/src/signal/signal-client.test.js.map +1 -1
  55. package/dist/src/signal/{websocket-signal-manager.d.ts → signal-manager-impl.d.ts} +13 -11
  56. package/dist/src/signal/signal-manager-impl.d.ts.map +1 -0
  57. package/dist/src/signal/signal-manager-impl.js +151 -0
  58. package/dist/src/signal/signal-manager-impl.js.map +1 -0
  59. package/dist/src/signal/signal-manager.d.ts +12 -11
  60. package/dist/src/signal/signal-manager.d.ts.map +1 -1
  61. package/dist/src/signal/signal-rpc-client.d.ts +19 -0
  62. package/dist/src/signal/signal-rpc-client.d.ts.map +1 -0
  63. package/dist/src/signal/signal-rpc-client.js +108 -0
  64. package/dist/src/signal/signal-rpc-client.js.map +1 -0
  65. package/dist/src/signal/signal-rpc-client.test.d.ts +2 -0
  66. package/dist/src/signal/signal-rpc-client.test.d.ts.map +1 -0
  67. package/dist/src/signal/signal-rpc-client.test.js +74 -0
  68. package/dist/src/signal/signal-rpc-client.test.js.map +1 -0
  69. package/dist/src/swarm/connection.d.ts +3 -3
  70. package/dist/src/swarm/connection.d.ts.map +1 -1
  71. package/dist/src/swarm/connection.js +1 -4
  72. package/dist/src/swarm/connection.js.map +1 -1
  73. package/dist/src/swarm/swarm.d.ts +6 -7
  74. package/dist/src/swarm/swarm.d.ts.map +1 -1
  75. package/dist/src/swarm/swarm.js +21 -17
  76. package/dist/src/swarm/swarm.js.map +1 -1
  77. package/dist/src/swarm/swarm.test.js +156 -117
  78. package/dist/src/swarm/swarm.test.js.map +1 -1
  79. package/dist/src/topology/fully-connected-topology.d.ts +0 -1
  80. package/dist/src/topology/fully-connected-topology.d.ts.map +1 -1
  81. package/dist/src/topology/fully-connected-topology.js +1 -6
  82. package/dist/src/topology/fully-connected-topology.js.map +1 -1
  83. package/dist/src/topology/mmst-topology.d.ts +0 -1
  84. package/dist/src/topology/mmst-topology.d.ts.map +1 -1
  85. package/dist/src/topology/mmst-topology.js +1 -6
  86. package/dist/src/topology/mmst-topology.js.map +1 -1
  87. package/dist/src/topology/star-topology.d.ts +0 -1
  88. package/dist/src/topology/star-topology.d.ts.map +1 -1
  89. package/dist/src/topology/star-topology.js +1 -6
  90. package/dist/src/topology/star-topology.js.map +1 -1
  91. package/dist/src/topology/topology.d.ts +0 -6
  92. package/dist/src/topology/topology.d.ts.map +1 -1
  93. package/dist/src/transport/in-memory-transport.d.ts +2 -2
  94. package/dist/src/transport/in-memory-transport.d.ts.map +1 -1
  95. package/dist/src/transport/in-memory-transport.js.map +1 -1
  96. package/dist/src/transport/transport.d.ts +3 -3
  97. package/dist/src/transport/transport.d.ts.map +1 -1
  98. package/dist/src/transport/webrtc-transport.d.ts +3 -3
  99. package/dist/src/transport/webrtc-transport.d.ts.map +1 -1
  100. package/dist/src/transport/webrtc-transport.js.map +1 -1
  101. package/dist/tests-setup.js +1 -1
  102. package/dist/tsconfig.tsbuildinfo +1 -1
  103. package/package.json +14 -12
  104. package/src/network-manager.blueprint-test.ts +57 -22
  105. package/src/network-manager.browser-test.ts +1 -1
  106. package/src/network-manager.test.ts +8 -7
  107. package/src/network-manager.ts +8 -9
  108. package/src/proto/defs/dxos/mesh/signal.proto +53 -35
  109. package/src/proto/defs/dxos/mesh/signalMessage.proto +51 -0
  110. package/src/proto/gen/dxos/credentials.ts +1 -0
  111. package/src/proto/gen/dxos/halo/keys.ts +1 -0
  112. package/src/proto/gen/dxos/mesh/signal.ts +51 -45
  113. package/src/proto/gen/dxos/mesh/signalMessage.ts +83 -0
  114. package/src/proto/gen/google/protobuf.ts +7 -0
  115. package/src/proto/gen/index.ts +18 -6
  116. package/src/proto/substitutions.ts +3 -1
  117. package/src/signal/in-memory-signal-manager.ts +37 -12
  118. package/src/signal/index.ts +1 -2
  119. package/src/signal/integration.test.ts +117 -0
  120. package/src/signal/message-router.test.ts +36 -41
  121. package/src/signal/message-router.ts +22 -18
  122. package/src/signal/signal-client.test.ts +70 -92
  123. package/src/signal/signal-client.ts +119 -113
  124. package/src/signal/signal-manager-impl.ts +166 -0
  125. package/src/signal/signal-manager.ts +12 -12
  126. package/src/signal/signal-rpc-client.test.ts +86 -0
  127. package/src/signal/signal-rpc-client.ts +121 -0
  128. package/src/swarm/connection.ts +5 -8
  129. package/src/swarm/swarm.test.ts +208 -169
  130. package/src/swarm/swarm.ts +24 -20
  131. package/src/topology/fully-connected-topology.ts +1 -9
  132. package/src/topology/mmst-topology.ts +1 -9
  133. package/src/topology/star-topology.ts +1 -7
  134. package/src/topology/topology.ts +0 -7
  135. package/src/transport/in-memory-transport.ts +2 -2
  136. package/src/transport/transport.ts +3 -3
  137. package/src/transport/webrtc-transport.ts +3 -3
  138. package/dist/browser-mocha/bundle.js +0 -119286
  139. package/dist/browser-mocha/main.js +0 -27
  140. package/dist/src/signal/websocket-rpc.d.ts +0 -30
  141. package/dist/src/signal/websocket-rpc.d.ts.map +0 -1
  142. package/dist/src/signal/websocket-rpc.js +0 -203
  143. package/dist/src/signal/websocket-rpc.js.map +0 -1
  144. package/dist/src/signal/websocket-signal-manager.d.ts.map +0 -1
  145. package/dist/src/signal/websocket-signal-manager.js +0 -134
  146. package/dist/src/signal/websocket-signal-manager.js.map +0 -1
  147. package/src/signal/websocket-rpc.ts +0 -208
  148. package/src/signal/websocket-signal-manager.ts +0 -158
@@ -12,40 +12,29 @@ const wait_for_expect_1 = __importDefault(require("wait-for-expect"));
12
12
  const async_1 = require("@dxos/async");
13
13
  const protocols_1 = require("@dxos/protocols");
14
14
  const signal_1 = require("@dxos/signal");
15
- const util_1 = require("@dxos/util");
15
+ const testutils_1 = require("@dxos/testutils");
16
16
  const signal_client_1 = require("./signal-client");
17
- (0, mocha_1.describe)('SignalApi', () => {
18
- let topic;
19
- let peer1;
20
- let peer2;
21
- let api1;
22
- let api2;
17
+ (0, mocha_1.describe)('SignalClient', () => {
23
18
  let broker1;
24
- const signalApiPort1 = (0, util_1.randomInt)(10000, 50000);
25
- const signalApiUrl1 = 'http://0.0.0.0:' + signalApiPort1;
26
- // code let broker2: ReturnType<typeof createBroker>;
27
- const signalApiPort2 = (0, util_1.randomInt)(10000, 50000);
28
- const signalApiUrl2 = 'http://0.0.0.0:' + signalApiPort2;
19
+ let broker2;
29
20
  before(async () => {
30
- broker1 = await (0, signal_1.createTestBroker)(signalApiPort1);
31
- // broker2 = await createTestBroker(signalApiPort2);
21
+ broker1 = await (0, signal_1.createTestBroker)();
22
+ // broker2 = await await createTestBroker(signalApiPort2);
32
23
  });
33
- beforeEach(() => {
34
- topic = protocols_1.PublicKey.random();
35
- peer1 = protocols_1.PublicKey.random();
36
- peer2 = protocols_1.PublicKey.random();
37
- });
38
- after(async function () {
39
- this.timeout(0);
40
- await api1.close();
41
- await broker1.stop();
24
+ after(() => {
25
+ broker1.stop();
42
26
  // code await broker2.stop();
43
27
  });
44
28
  (0, mocha_1.it)('message between 2 clients', async () => {
29
+ const topic = protocols_1.PublicKey.random();
30
+ const peer1 = protocols_1.PublicKey.random();
31
+ const peer2 = protocols_1.PublicKey.random();
45
32
  const signalMock1 = (0, earljs_1.mockFn)()
46
33
  .resolvesTo();
47
- api1 = new signal_client_1.SignalClient(signalApiUrl1, (async () => { }), signalMock1);
48
- api2 = new signal_client_1.SignalClient(signalApiUrl1, (async () => { }), (async () => { }));
34
+ const api1 = new signal_client_1.SignalClient(broker1.url(), signalMock1);
35
+ (0, testutils_1.afterTest)(() => api1.close());
36
+ const api2 = new signal_client_1.SignalClient(broker1.url(), (async () => { }));
37
+ (0, testutils_1.afterTest)(() => api2.close());
49
38
  await api1.join(topic, peer1);
50
39
  await api2.join(topic, peer2);
51
40
  const msg = {
@@ -53,90 +42,84 @@ const signal_client_1 = require("./signal-client");
53
42
  remoteId: peer1,
54
43
  sessionId: protocols_1.PublicKey.random(),
55
44
  topic,
56
- data: { signal: { json: "foo: 'bar'" } },
57
- messageId: undefined
45
+ data: { signal: { json: JSON.stringify({ 'asd': 'asd' }) } }
58
46
  };
59
47
  await api2.signal(msg);
60
48
  await (0, wait_for_expect_1.default)(() => {
61
49
  (0, earljs_1.expect)(signalMock1).toHaveBeenCalledWith([msg]);
62
50
  }, 4000);
63
- }).timeout(5000);
51
+ }).timeout(500);
64
52
  (0, mocha_1.it)('join', async () => {
65
- api1 = new signal_client_1.SignalClient(signalApiUrl1, (async () => { }), async () => { });
66
- const join = await api1.join(topic, peer1);
67
- (0, earljs_1.expect)(join).toEqual([peer1]);
68
- const join2 = await api1.join(topic, peer2);
69
- (0, earljs_1.expect)(join2).toEqual([peer1, peer2]);
70
- }).timeout(1000);
71
- (0, mocha_1.it)('offer', async () => {
72
- const offerMock = (0, earljs_1.mockFn)()
73
- .resolvesTo({ accept: true });
74
- api1 = new signal_client_1.SignalClient(signalApiUrl1, offerMock, async () => { });
53
+ const topic = protocols_1.PublicKey.random();
54
+ const peer1 = protocols_1.PublicKey.random();
55
+ const peer2 = protocols_1.PublicKey.random();
56
+ const api1 = new signal_client_1.SignalClient(broker1.url(), async () => { });
57
+ (0, testutils_1.afterTest)(() => api1.close());
58
+ const api2 = new signal_client_1.SignalClient(broker1.url(), async () => { });
59
+ (0, testutils_1.afterTest)(() => api2.close());
60
+ const promise1 = api1.swarmEvent.waitFor(([, swarmEvent]) => !!swarmEvent.peerAvailable && peer2.equals(swarmEvent.peerAvailable.peer));
61
+ const promise2 = api2.swarmEvent.waitFor(([, swarmEvent]) => !!swarmEvent.peerAvailable && peer1.equals(swarmEvent.peerAvailable.peer));
75
62
  await api1.join(topic, peer1);
76
- const offer = {
77
- data: { offer: {} },
78
- id: peer2,
79
- remoteId: peer1,
80
- sessionId: protocols_1.PublicKey.random(),
81
- topic
82
- };
83
- const offerResult = await api1.offer(offer);
84
- (0, earljs_1.expect)(offerResult).toEqual({ accept: true });
85
- (0, earljs_1.expect)(offerMock).toHaveBeenCalledWith([offer]);
86
- }).timeout(5000);
87
- (0, mocha_1.it)('signal', async () => {
63
+ await api2.join(topic, peer2);
64
+ await promise1;
65
+ await promise2;
66
+ }).timeout(500);
67
+ (0, mocha_1.it)('signal to self', async () => {
68
+ const topic = protocols_1.PublicKey.random();
69
+ const peer1 = protocols_1.PublicKey.random();
70
+ const peer2 = protocols_1.PublicKey.random();
88
71
  const signalMock = (0, earljs_1.mockFn)()
89
72
  .resolvesTo();
90
- api1 = new signal_client_1.SignalClient(signalApiUrl1, (async () => { }), signalMock);
73
+ const api1 = new signal_client_1.SignalClient(broker1.url(), signalMock);
74
+ (0, testutils_1.afterTest)(() => api1.close());
91
75
  await api1.join(topic, peer1);
92
76
  const msg = {
93
77
  id: peer2,
94
78
  remoteId: peer1,
95
79
  sessionId: protocols_1.PublicKey.random(),
96
80
  topic,
97
- data: { signal: { json: 'bar' } },
98
- messageId: undefined
81
+ data: { signal: { json: JSON.stringify({ 'asd': 'asd' }) } }
99
82
  };
100
83
  await api1.signal(msg);
101
84
  await (0, wait_for_expect_1.default)(() => {
102
85
  (0, earljs_1.expect)(signalMock).toHaveBeenCalledWith([msg]);
103
86
  }, 4000);
104
- }).timeout(5000);
87
+ }).timeout(500);
105
88
  mocha_1.it.skip('join across multiple signal servers', async () => {
89
+ const topic = protocols_1.PublicKey.random();
90
+ const peer1 = protocols_1.PublicKey.random();
91
+ const peer2 = protocols_1.PublicKey.random();
106
92
  // This feature is not implemented yet.
107
- api1 = new signal_client_1.SignalClient(signalApiUrl1, (async () => { }), async () => { });
108
- api2 = new signal_client_1.SignalClient(signalApiUrl2, (async () => { }), async () => { });
93
+ const api1 = new signal_client_1.SignalClient(broker1.url(), async () => { });
94
+ (0, testutils_1.afterTest)(() => api1.close());
95
+ const api2 = new signal_client_1.SignalClient(broker2.url(), async () => { });
96
+ (0, testutils_1.afterTest)(() => api2.close());
109
97
  await api1.join(topic, peer1);
110
98
  await api2.join(topic, peer2);
111
- await (0, wait_for_expect_1.default)(async () => {
112
- const peers = await api2.lookup(topic);
113
- (0, earljs_1.expect)(peers.length).toEqual(2);
114
- }, 4000);
115
- await (0, wait_for_expect_1.default)(async () => {
116
- const peers = await api1.lookup(topic);
117
- (0, earljs_1.expect)(peers.length).toEqual(2);
118
- }, 4000);
99
+ // await waitForExpect(async () => {
100
+ // const peers = await api2.lookup(topic);
101
+ // expect(peers.length).toEqual(2);
102
+ // }, 4_000);
103
+ // await waitForExpect(async () => {
104
+ // const peers = await api1.lookup(topic);
105
+ // expect(peers.length).toEqual(2);
106
+ // }, 4_000);
119
107
  }).timeout(5000);
120
108
  // Skip because communication between signal servers is not yet implemented.
121
109
  mocha_1.it.skip('newly joined peer can receive signals from other signal servers', async () => {
122
- const offerMock = (0, earljs_1.mockFn)()
123
- .resolvesTo({ accept: true });
110
+ const topic = protocols_1.PublicKey.random();
111
+ const peer1 = protocols_1.PublicKey.random();
112
+ const peer2 = protocols_1.PublicKey.random();
124
113
  const signalMock = (0, earljs_1.mockFn)()
125
114
  .resolvesTo();
126
- api1 = new signal_client_1.SignalClient(signalApiUrl1, offerMock, async () => { });
127
- api2 = new signal_client_1.SignalClient(signalApiUrl2, (async () => { }), signalMock);
115
+ const api1 = new signal_client_1.SignalClient(broker1.url(), async () => { });
116
+ (0, testutils_1.afterTest)(() => api1.close());
117
+ const api2 = new signal_client_1.SignalClient(broker2.url(), signalMock);
118
+ (0, testutils_1.afterTest)(() => api2.close());
128
119
  await api1.join(topic, peer1);
129
120
  await (0, async_1.sleep)(3000);
130
121
  await api2.join(topic, peer2);
131
122
  const sessionId = protocols_1.PublicKey.random();
132
- const answer = await api2.offer({
133
- remoteId: peer1,
134
- id: peer2,
135
- topic,
136
- sessionId,
137
- data: { offer: {} }
138
- });
139
- (0, earljs_1.expect)(answer).toEqual({ accept: true });
140
123
  const msg = {
141
124
  id: peer2,
142
125
  remoteId: peer1,
@@ -149,5 +132,5 @@ const signal_client_1 = require("./signal-client");
149
132
  (0, earljs_1.expect)(signalMock).toHaveBeenCalledWith([msg]);
150
133
  }, 4000);
151
134
  }).timeout(5000);
152
- }).timeout(10000);
135
+ });
153
136
  //# sourceMappingURL=signal-client.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signal-client.test.js","sourceRoot":"","sources":["../../../src/signal/signal-client.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signal-client.test.js","sourceRoot":"","sources":["../../../src/signal/signal-client.test.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;AAEF,mCAAwC;AACxC,iCAA6C;AAC7C,sEAA4C;AAE5C,uCAAoC;AACpC,+CAA4C;AAC5C,yCAA4D;AAC5D,+CAA4C;AAG5C,mDAA+C;AAE/C,IAAA,gBAAQ,EAAC,cAAc,EAAE,GAAG,EAAE;IAC5B,IAAI,OAAmB,CAAC;IAExB,IAAI,OAAmB,CAAC;IAExB,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,OAAO,GAAG,MAAM,IAAA,yBAAgB,GAAE,CAAC;QACnC,0DAA0D;IAC5D,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,GAAG,EAAE;QACT,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,6BAA6B;IAC/B,CAAC,CAAC,CAAC;IAEH,IAAA,UAAI,EAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,WAAW,GAAG,IAAA,eAAM,GAAyC;aAChE,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAC1D,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,GAAE,CAAC,CAAQ,CAAC,CAAC;QACtE,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE9B,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE9B,MAAM,GAAG,GAAkB;YACzB,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,qBAAS,CAAC,MAAM,EAAE;YAC7B,KAAK;YACL,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;SAC7D,CAAC;QACF,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvB,MAAM,IAAA,yBAAa,EAAC,GAAG,EAAE;YACvB,IAAA,eAAM,EAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC,EAAE,IAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEhB,IAAA,UAAI,EAAC,MAAM,EAAE,KAAK,IAAI,EAAE;QACtB,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7D,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7D,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE9B,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QACxI,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;QAExI,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE9B,MAAM,QAAQ,CAAC;QACf,MAAM,QAAQ,CAAC;IACjB,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEhB,IAAA,UAAI,EAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAChC,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAA,eAAM,GAAyC;aAC/D,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QACzD,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE9B,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE9B,MAAM,GAAG,GAAkB;YACzB,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,qBAAS,CAAC,MAAM,EAAE;YAC7B,KAAK;YACL,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;SAC7D,CAAC;QACF,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEvB,MAAM,IAAA,yBAAa,EAAC,GAAG,EAAE;YACvB,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC,EAAE,IAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEhB,UAAI,CAAC,IAAI,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,uCAAuC;QACvC,MAAM,IAAI,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7D,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7D,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE9B,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE9B,oCAAoC;QACpC,4CAA4C;QAC5C,qCAAqC;QACrC,aAAa;QAEb,oCAAoC;QACpC,4CAA4C;QAC5C,qCAAqC;QACrC,aAAa;IACf,CAAC,CAAC,CAAC,OAAO,CAAC,IAAK,CAAC,CAAC;IAElB,4EAA4E;IAC5E,UAAI,CAAC,IAAI,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QACtF,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,IAAA,eAAM,GAAyC;aAC/D,UAAU,EAAE,CAAC;QAEhB,MAAM,IAAI,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC,CAAC,CAAC;QAC7D,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,4BAAY,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QACzD,IAAA,qBAAS,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAE9B,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,IAAA,aAAK,EAAC,IAAI,CAAC,CAAC;QAClB,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE9B,MAAM,SAAS,GAAG,qBAAS,CAAC,MAAM,EAAE,CAAC;QAErC,MAAM,GAAG,GAAkB;YACzB,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,KAAK;YACf,SAAS;YACT,KAAK;YACL,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;SACjC,CAAC;QACF,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEvB,MAAM,IAAA,yBAAa,EAAC,GAAG,EAAE;YACvB,IAAA,eAAM,EAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACjD,CAAC,EAAE,IAAK,CAAC,CAAC;IACZ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAK,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC"}
@@ -1,29 +1,31 @@
1
1
  import { Event } from '@dxos/async';
2
2
  import { PublicKey } from '@dxos/protocols';
3
- import { Answer, Message } from '../proto/gen/dxos/mesh/signal';
3
+ import { SwarmEvent } from '../proto/gen/dxos/mesh/signal';
4
+ import { SignalMessage } from '../proto/gen/dxos/mesh/signalMessage';
4
5
  import { SignalApi } from './signal-api';
5
6
  import { SignalManager } from './signal-manager';
6
- export declare class WebsocketSignalManager implements SignalManager {
7
+ export declare class SignalManagerImpl implements SignalManager {
7
8
  private readonly _hosts;
8
- private readonly _onOffer;
9
9
  private readonly _servers;
10
10
  /** Topics joined: topic => peerId */
11
11
  private readonly _topicsJoined;
12
+ /** host => topic => peerId */
12
13
  private readonly _topicsJoinedPerSignal;
14
+ private _reconciling?;
13
15
  private _reconcileTimeoutId?;
16
+ private _destroyed;
14
17
  readonly statusChanged: Event<SignalApi.Status[]>;
15
18
  readonly commandTrace: Event<SignalApi.CommandTrace>;
16
- readonly peerCandidatesChanged: Event<[topic: PublicKey, candidates: PublicKey[]]>;
17
- readonly onSignal: Event<Message>;
18
- constructor(_hosts: string[], _onOffer: (message: Message) => Promise<Answer>);
19
+ readonly swarmEvent: Event<[topic: PublicKey, swarmEvent: SwarmEvent]>;
20
+ readonly onMessage: Event<SignalMessage>;
21
+ constructor(_hosts: string[]);
19
22
  getStatus(): SignalApi.Status[];
20
23
  join(topic: PublicKey, peerId: PublicKey): void;
21
24
  leave(topic: PublicKey, peerId: PublicKey): void;
25
+ private _scheduleReconcile;
26
+ private _reconcileLater;
22
27
  private _reconcileJoinedTopics;
23
- private _reconcile;
24
- lookup(topic: PublicKey): void;
25
- offer(msg: Message): Promise<Answer>;
26
- signal(msg: Message): Promise<void>;
28
+ message(msg: SignalMessage): Promise<void>;
27
29
  destroy(): Promise<void>;
28
30
  }
29
- //# sourceMappingURL=websocket-signal-manager.d.ts.map
31
+ //# sourceMappingURL=signal-manager-impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-manager-impl.d.ts","sourceRoot":"","sources":["../../../src/signal/signal-manager-impl.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAgB,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAIjD,qBAAa,iBAAkB,YAAW,aAAa;IAkBnD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAjBzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmC;IAE5D,qCAAqC;IACrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgE;IAC9F,8BAA8B;IAC9B,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAuD;IAE9F,OAAO,CAAC,YAAY,CAAC,CAAkB;IACvC,OAAO,CAAC,mBAAmB,CAAC,CAAiB;IAC7C,OAAO,CAAC,UAAU,CAAS;IAE3B,QAAQ,CAAC,aAAa,4BAAmC;IACzD,QAAQ,CAAC,YAAY,gCAAuC;IAC5D,QAAQ,CAAC,UAAU,oDAA2D;IAC9E,QAAQ,CAAC,SAAS,uBAA8B;gBAG7B,MAAM,EAAE,MAAM,EAAE;IAmBnC,SAAS,IAAK,SAAS,CAAC,MAAM,EAAE;IAIhC,IAAI,CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;IAOzC,KAAK,CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;IAO1C,OAAO,CAAC,kBAAkB;IAsB1B,OAAO,CAAC,eAAe;YAWT,sBAAsB;IA0C9B,OAAO,CAAE,GAAG,EAAE,aAAa;IAS3B,OAAO;CAOd"}
@@ -0,0 +1,151 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2020 DXOS.org
4
+ //
5
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
6
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
7
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
8
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
9
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.SignalManagerImpl = void 0;
16
+ const debug_1 = __importDefault(require("debug"));
17
+ const node_assert_1 = __importDefault(require("node:assert"));
18
+ const async_1 = require("@dxos/async");
19
+ const util_1 = require("@dxos/util");
20
+ const signal_client_1 = require("./signal-client");
21
+ const log = (0, debug_1.default)('dxos:network-manager:signal-manager-impl');
22
+ class SignalManagerImpl {
23
+ constructor(_hosts) {
24
+ this._hosts = _hosts;
25
+ this._servers = new Map();
26
+ /** Topics joined: topic => peerId */
27
+ this._topicsJoined = new util_1.ComplexMap(topic => topic.toHex());
28
+ /** host => topic => peerId */
29
+ this._topicsJoinedPerSignal = new Map();
30
+ this._reconciling = false;
31
+ this._destroyed = false;
32
+ this.statusChanged = new async_1.Event();
33
+ this.commandTrace = new async_1.Event();
34
+ this.swarmEvent = new async_1.Event();
35
+ this.onMessage = new async_1.Event();
36
+ log(`Created WebsocketSignalManager with signal servers: ${_hosts}`);
37
+ (0, node_assert_1.default)(_hosts.length === 1, 'Only a single signaling server connection is supported');
38
+ for (const host of this._hosts) {
39
+ const server = new signal_client_1.SignalClient(host, async (msg) => this.onMessage.emit(msg));
40
+ // TODO(mykola): Add subscription group
41
+ server.swarmEvent.on(data => this.swarmEvent.emit(data));
42
+ server.statusChanged.on(() => this.statusChanged.emit(this.getStatus()));
43
+ this._servers.set(host, server);
44
+ server.commandTrace.on(trace => this.commandTrace.emit(trace));
45
+ this._topicsJoinedPerSignal.set(host, new util_1.ComplexMap(x => x.toHex()));
46
+ }
47
+ }
48
+ getStatus() {
49
+ return Array.from(this._servers.values()).map(server => server.getStatus());
50
+ }
51
+ join(topic, peerId) {
52
+ (0, node_assert_1.default)(!this._topicsJoined.has(topic), `Topic ${topic} is already joined`);
53
+ log(`Join ${topic} ${peerId}`);
54
+ this._topicsJoined.set(topic, peerId);
55
+ this._scheduleReconcile();
56
+ }
57
+ leave(topic, peerId) {
58
+ (0, node_assert_1.default)(!!this._topicsJoined.has(topic), `Topic ${topic} was not joined`);
59
+ log(`Leave ${topic} ${peerId}`);
60
+ this._topicsJoined.delete(topic);
61
+ this._scheduleReconcile();
62
+ }
63
+ _scheduleReconcile() {
64
+ if (this._destroyed) {
65
+ return;
66
+ }
67
+ if (!this._reconciling) {
68
+ this._reconciling = true;
69
+ this._reconcileJoinedTopics().then(() => {
70
+ this._reconciling = false;
71
+ }, err => {
72
+ this._reconciling = false;
73
+ log(`Error while reconciling: ${err}`);
74
+ this._reconcileLater();
75
+ });
76
+ }
77
+ else {
78
+ this._reconcileLater();
79
+ }
80
+ }
81
+ _reconcileLater() {
82
+ if (this._destroyed) {
83
+ return;
84
+ }
85
+ if (!this._reconcileTimeoutId) {
86
+ this._reconcileTimeoutId = setTimeout(async () => this._scheduleReconcile(), 3000);
87
+ }
88
+ }
89
+ async _reconcileJoinedTopics() {
90
+ // TODO(mykola): Handle reconnects to SS. Maybe move map of joined topics to signal-client.
91
+ log('Reconciling..');
92
+ for (const [host, server] of this._servers) {
93
+ const actualJoinedTopics = this._topicsJoinedPerSignal.get(host);
94
+ // Leave swarms
95
+ for (const [topic, actualPeerId] of actualJoinedTopics) {
96
+ try {
97
+ const desiredPeerId = this._topicsJoined.get(topic);
98
+ if (!desiredPeerId || !desiredPeerId.equals(actualPeerId)) {
99
+ await server.leave(topic, actualPeerId);
100
+ actualJoinedTopics.delete(topic);
101
+ }
102
+ }
103
+ catch (err) {
104
+ log(`Error leaving swarm: ${err}`);
105
+ this._scheduleReconcile();
106
+ }
107
+ }
108
+ // Join swarms
109
+ for (const [topic, desiredPeerId] of this._topicsJoined) {
110
+ try {
111
+ const actualPeerId = actualJoinedTopics.get(topic);
112
+ if (!actualPeerId) {
113
+ await server.join(topic, desiredPeerId);
114
+ actualJoinedTopics.set(topic, desiredPeerId);
115
+ }
116
+ else {
117
+ if (!actualPeerId.equals(desiredPeerId)) {
118
+ throw new Error(`Joined with peerId different from desired: ${JSON.stringify({ actualPeerId, desiredPeerId })}`);
119
+ }
120
+ }
121
+ }
122
+ catch (err) {
123
+ log(`Error joining swarm: ${err}`);
124
+ this._scheduleReconcile();
125
+ }
126
+ }
127
+ }
128
+ log('Done reconciling..');
129
+ this._reconciling = false;
130
+ }
131
+ async message(msg) {
132
+ log(`Signal ${msg.remoteId}`);
133
+ for (const server of this._servers.values()) {
134
+ server.signal(msg).catch(err => {
135
+ log(`Error signaling: ${err}`);
136
+ });
137
+ }
138
+ }
139
+ async destroy() {
140
+ this._destroyed = true;
141
+ if (this._reconcileTimeoutId) {
142
+ clearTimeout(this._reconcileTimeoutId);
143
+ }
144
+ await Promise.all(Array.from(this._servers.values()).map(server => server.close()));
145
+ }
146
+ }
147
+ __decorate([
148
+ async_1.synchronized
149
+ ], SignalManagerImpl.prototype, "_reconcileJoinedTopics", null);
150
+ exports.SignalManagerImpl = SignalManagerImpl;
151
+ //# sourceMappingURL=signal-manager-impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-manager-impl.js","sourceRoot":"","sources":["../../../src/signal/signal-manager-impl.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,12 @@
1
1
  import { Event } from '@dxos/async';
2
2
  import { PublicKey } from '@dxos/protocols';
3
- import { Answer, Message } from '../proto/gen/dxos/mesh/signal';
3
+ import { SwarmEvent } from '../proto/gen/dxos/mesh/signal';
4
+ import { Answer, SignalMessage } from '../proto/gen/dxos/mesh/signalMessage';
4
5
  import { SignalApi } from './signal-api';
5
6
  /**
6
7
  * Signal peer discovery interface.
7
8
  */
8
9
  export interface SignalConnection {
9
- /**
10
- * Find peers (triggers async event).
11
- */
12
- lookup(topic: PublicKey): void;
13
10
  /**
14
11
  * Join topic on signal network, to be discoverable by other peers.
15
12
  */
@@ -26,18 +23,22 @@ export interface SignalMessaging {
26
23
  /**
27
24
  * Offer/answer RPC.
28
25
  */
29
- offer(msg: Message): Promise<Answer>;
26
+ offer(msg: SignalMessage): Promise<Answer>;
30
27
  /**
31
- * Send message to peer.
28
+ * Reliably send a signal to a peer.
32
29
  */
33
- signal(msg: Message): Promise<void>;
30
+ signal(msg: SignalMessage): Promise<void>;
34
31
  }
35
- export interface SignalManager extends SignalConnection, SignalMessaging {
32
+ export interface SignalManager extends SignalConnection {
36
33
  statusChanged: Event<SignalApi.Status[]>;
37
34
  commandTrace: Event<SignalApi.CommandTrace>;
38
- peerCandidatesChanged: Event<[topic: PublicKey, candidates: PublicKey[]]>;
39
- onSignal: Event<Message>;
35
+ swarmEvent: Event<[topic: PublicKey, swarmEvent: SwarmEvent]>;
36
+ onMessage: Event<SignalMessage>;
40
37
  getStatus(): SignalApi.Status[];
41
38
  destroy(): Promise<void>;
39
+ /**
40
+ * Send message to peer.
41
+ */
42
+ message(msg: SignalMessage): Promise<void>;
42
43
  }
43
44
  //# sourceMappingURL=signal-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"signal-manager.d.ts","sourceRoot":"","sources":["../../../src/signal/signal-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,MAAM,CAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;IAE/B;;OAEG;IACH,IAAI,CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAAA;IAEhD;;OAEG;IACH,KAAK,CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAAA;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,CAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAErC;;OAEG;IACH,MAAM,CAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,aAAc,SAAQ,gBAAgB,EAAE,eAAe;IACtE,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;IACxC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IAC3C,qBAAqB,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;IACzE,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAA;IAExB,SAAS,IAAK,SAAS,CAAC,MAAM,EAAE,CAAA;IAChC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB"}
1
+ {"version":3,"file":"signal-manager.d.ts","sourceRoot":"","sources":["../../../src/signal/signal-manager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;OAEG;IACH,IAAI,CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAAA;IAEhD;;OAEG;IACH,KAAK,CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAG,IAAI,CAAA;CAClD;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,KAAK,CAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAE3C;;OAEG;IACH,MAAM,CAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C;AAED,MAAM,WAAW,aAAc,SAAQ,gBAAgB;IACrD,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAA;IACxC,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IAC3C,UAAU,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAA;IAC7D,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAE/B,SAAS,IAAK,SAAS,CAAC,MAAM,EAAE,CAAA;IAChC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB;;OAEG;IACH,OAAO,CAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC5C"}
@@ -0,0 +1,19 @@
1
+ import { Event } from '@dxos/async';
2
+ import { Any, Stream } from '@dxos/codec-protobuf';
3
+ import { PublicKey } from '@dxos/protocols';
4
+ import { Message } from '../proto/gen/dxos/mesh/signal';
5
+ export declare class SignalRPCClient {
6
+ private readonly _url;
7
+ private readonly _socket;
8
+ private readonly _rpc;
9
+ private readonly _connectTrigger;
10
+ readonly connected: Event<void>;
11
+ readonly disconnected: Event<void>;
12
+ readonly error: Event<Error>;
13
+ constructor(_url: string);
14
+ join(topic: PublicKey, peerId: PublicKey): Promise<Stream<import("../proto/gen/dxos/mesh/signal").SwarmEvent>>;
15
+ receiveMessages(peerId: PublicKey): Promise<Stream<Message>>;
16
+ sendMessage(author: PublicKey, recipient: PublicKey, message: Any): Promise<void>;
17
+ close(): Promise<void>;
18
+ }
19
+ //# sourceMappingURL=signal-rpc-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-rpc-client.d.ts","sourceRoot":"","sources":["../../../src/signal/signal-rpc-client.ts"],"names":[],"mappings":"AAOA,OAAO,EAAW,KAAK,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,OAAO,EAAE,OAAO,EAAU,MAAM,+BAA+B,CAAC;AAOhE,qBAAa,eAAe;IAUxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IATvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAW;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA0B;IAC/C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAiB;IAEjD,QAAQ,CAAC,SAAS,cAAe;IACjC,QAAQ,CAAC,YAAY,cAAe;IACpC,QAAQ,CAAC,KAAK,eAAsB;gBAGjB,IAAI,EAAE,MAAM;IAqDzB,IAAI,CAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS;IAWzC,eAAe,CAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAS7D,WAAW,CAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG;IAUlE,KAAK;CAOZ"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2022 DXOS.org
4
+ //
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SignalRPCClient = void 0;
10
+ const debug_1 = __importDefault(require("debug"));
11
+ const isomorphic_ws_1 = __importDefault(require("isomorphic-ws"));
12
+ const async_1 = require("@dxos/async");
13
+ const rpc_1 = require("@dxos/rpc");
14
+ const gen_1 = require("../proto/gen");
15
+ const log = (0, debug_1.default)('dxos:network-manager:signal-rpc-client');
16
+ class SignalRPCClient {
17
+ constructor(_url) {
18
+ this._url = _url;
19
+ this._connectTrigger = new async_1.Trigger();
20
+ this.connected = new async_1.Event();
21
+ this.disconnected = new async_1.Event();
22
+ this.error = new async_1.Event();
23
+ this._socket = new isomorphic_ws_1.default(this._url);
24
+ this._socket.onopen = async () => {
25
+ try {
26
+ await this._rpc.open();
27
+ log(`RPC open ${this._url}`);
28
+ this.connected.emit();
29
+ this._connectTrigger.wake();
30
+ }
31
+ catch (err) {
32
+ this.error.emit(err);
33
+ }
34
+ };
35
+ this._socket.onclose = async () => {
36
+ log(`Disconnected ${this._url}`);
37
+ this.disconnected.emit();
38
+ try {
39
+ await this._rpc.close();
40
+ }
41
+ catch (err) {
42
+ this.error.emit(err);
43
+ }
44
+ };
45
+ this._socket.onerror = (e) => {
46
+ var _a;
47
+ log(`Signal socket error ${this._url} ${e.message}`);
48
+ this.error.emit((_a = e.error) !== null && _a !== void 0 ? _a : new Error(e.message));
49
+ };
50
+ this._rpc = (0, rpc_1.createBundledRpcClient)({
51
+ Signal: gen_1.schema.getService('dxos.mesh.signal.Signal')
52
+ }, {
53
+ noHandshake: true,
54
+ port: {
55
+ send: msg => {
56
+ this._socket.send(msg);
57
+ },
58
+ subscribe: cb => {
59
+ this._socket.onmessage = async (msg) => {
60
+ if (typeof Blob !== 'undefined' && msg.data instanceof Blob) {
61
+ cb(Buffer.from(await msg.data.arrayBuffer()));
62
+ }
63
+ else {
64
+ cb(msg.data);
65
+ }
66
+ };
67
+ }
68
+ }
69
+ });
70
+ }
71
+ async join(topic, peerId) {
72
+ log('join', topic, peerId);
73
+ await this._connectTrigger.wait();
74
+ const swarmStream = this._rpc.rpc.Signal.join({
75
+ swarm: topic.asUint8Array(),
76
+ peer: peerId.asUint8Array()
77
+ });
78
+ await swarmStream.waitUntilReady();
79
+ return swarmStream;
80
+ }
81
+ async receiveMessages(peerId) {
82
+ await this._connectTrigger.wait();
83
+ const messageStream = this._rpc.rpc.Signal.receiveMessages({
84
+ peer: peerId.asUint8Array()
85
+ });
86
+ await messageStream.waitUntilReady();
87
+ return messageStream;
88
+ }
89
+ async sendMessage(author, recipient, message) {
90
+ log('sendMessage', author, recipient, message);
91
+ await this._connectTrigger.wait();
92
+ await this._rpc.rpc.Signal.sendMessage({
93
+ author: author.asUint8Array(),
94
+ recipient: recipient.asUint8Array(),
95
+ payload: message
96
+ });
97
+ }
98
+ async close() {
99
+ try {
100
+ await this._rpc.close();
101
+ }
102
+ finally {
103
+ this._socket.close();
104
+ }
105
+ }
106
+ }
107
+ exports.SignalRPCClient = SignalRPCClient;
108
+ //# sourceMappingURL=signal-rpc-client.js.map