@dxos/network-manager 0.6.12-staging.e11e696 → 0.6.12

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 (155) hide show
  1. package/dist/lib/browser/{chunk-YOKKEU6T.mjs → chunk-XYSYUN63.mjs} +998 -1192
  2. package/dist/lib/browser/chunk-XYSYUN63.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +19 -10
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/testing/index.mjs +27 -18
  6. package/dist/lib/browser/testing/index.mjs.map +3 -3
  7. package/dist/lib/node/{chunk-7ZWQLO5T.cjs → chunk-4YAYC7WN.cjs} +1166 -1233
  8. package/dist/lib/node/chunk-4YAYC7WN.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +37 -27
  10. package/dist/lib/node/index.cjs.map +2 -2
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/testing/index.cjs +29 -20
  13. package/dist/lib/node/testing/index.cjs.map +3 -3
  14. package/dist/types/src/signal/integration.test.d.ts +2 -0
  15. package/dist/types/src/signal/integration.test.d.ts.map +1 -0
  16. package/dist/types/src/signal/swarm-messenger.test.d.ts +2 -0
  17. package/dist/types/src/signal/swarm-messenger.test.d.ts.map +1 -0
  18. package/dist/types/src/swarm/connection.d.ts.map +1 -1
  19. package/dist/types/src/swarm/swarm.d.ts +1 -1
  20. package/dist/types/src/testing/test-builder.d.ts +2 -2
  21. package/dist/types/src/testing/test-builder.d.ts.map +1 -1
  22. package/dist/types/src/tests/basic-test-suite.d.ts.map +1 -1
  23. package/dist/types/src/tests/property-test-suite.d.ts.map +1 -1
  24. package/dist/types/src/tests/tcp-transport.test.d.ts +2 -0
  25. package/dist/types/src/tests/tcp-transport.test.d.ts.map +1 -0
  26. package/dist/types/src/tests/utils.d.ts.map +1 -1
  27. package/dist/types/src/transport/index.d.ts +5 -1
  28. package/dist/types/src/transport/index.d.ts.map +1 -1
  29. package/dist/types/src/transport/libdatachannel-transport.d.ts +42 -0
  30. package/dist/types/src/transport/libdatachannel-transport.d.ts.map +1 -0
  31. package/dist/types/src/transport/libdatachannel-transport.test.d.ts +2 -0
  32. package/dist/types/src/transport/libdatachannel-transport.test.d.ts.map +1 -0
  33. package/dist/types/src/transport/memory-transport.d.ts +2 -2
  34. package/dist/types/src/transport/memory-transport.d.ts.map +1 -1
  35. package/dist/types/src/transport/memory-transport.test.d.ts +2 -0
  36. package/dist/types/src/transport/memory-transport.test.d.ts.map +1 -0
  37. package/dist/types/src/transport/simplepeer-simple-peer.d.ts +2 -0
  38. package/dist/types/src/transport/simplepeer-simple-peer.d.ts.map +1 -0
  39. package/dist/types/src/transport/simplepeer-transport-proxy-test.d.ts +2 -0
  40. package/dist/types/src/transport/simplepeer-transport-proxy-test.d.ts.map +1 -0
  41. package/dist/types/src/transport/{webrtc/rtc-transport-proxy.d.ts → simplepeer-transport-proxy.d.ts} +12 -10
  42. package/dist/types/src/transport/simplepeer-transport-proxy.d.ts.map +1 -0
  43. package/dist/types/src/transport/{webrtc/rtc-transport-service.d.ts → simplepeer-transport-service.d.ts} +7 -9
  44. package/dist/types/src/transport/simplepeer-transport-service.d.ts.map +1 -0
  45. package/dist/types/src/transport/simplepeer-transport.d.ts +36 -0
  46. package/dist/types/src/transport/simplepeer-transport.d.ts.map +1 -0
  47. package/dist/types/src/transport/simplepeer-transport.test.d.ts +2 -0
  48. package/dist/types/src/transport/simplepeer-transport.test.d.ts.map +1 -0
  49. package/dist/types/src/transport/{tcp/tcp-transport.browser.d.ts → tcp-transport.browser.d.ts} +3 -3
  50. package/dist/types/src/transport/tcp-transport.browser.d.ts.map +1 -0
  51. package/dist/types/src/transport/{tcp/tcp-transport.d.ts → tcp-transport.d.ts} +3 -3
  52. package/dist/types/src/transport/tcp-transport.d.ts.map +1 -0
  53. package/dist/types/src/transport/transport.d.ts +6 -7
  54. package/dist/types/src/transport/transport.d.ts.map +1 -1
  55. package/dist/types/src/transport/webrtc.d.ts +6 -0
  56. package/dist/types/src/transport/webrtc.d.ts.map +1 -0
  57. package/package.json +30 -53
  58. package/src/globals.d.ts +7 -0
  59. package/src/signal/ice.test.ts +3 -1
  60. package/src/signal/{integration.node.test.ts → integration.test.ts} +15 -9
  61. package/src/signal/{swarm-messenger.node.test.ts → swarm-messenger.test.ts} +23 -13
  62. package/src/swarm/connection-limiter.test.ts +6 -3
  63. package/src/swarm/connection.test.ts +38 -63
  64. package/src/swarm/connection.ts +5 -5
  65. package/src/swarm/swarm.test.ts +11 -9
  66. package/src/swarm/swarm.ts +1 -1
  67. package/src/testing/test-builder.ts +28 -12
  68. package/src/tests/basic-test-suite.ts +33 -34
  69. package/src/tests/memory-transport.test.ts +42 -40
  70. package/src/tests/property-test-suite.ts +22 -21
  71. package/src/tests/tcp-transport.test.ts +67 -0
  72. package/src/tests/utils.ts +2 -3
  73. package/src/tests/webrtc-transport.test.ts +9 -9
  74. package/src/transport/index.ts +5 -1
  75. package/src/transport/libdatachannel-transport.test.ts +100 -0
  76. package/src/transport/libdatachannel-transport.ts +376 -0
  77. package/src/transport/memory-transport.test.ts +74 -0
  78. package/src/transport/memory-transport.ts +0 -2
  79. package/src/transport/simplepeer-simple-peer.ts +26 -0
  80. package/src/transport/simplepeer-transport-proxy-test.ts +181 -0
  81. package/src/transport/simplepeer-transport-proxy.ts +246 -0
  82. package/src/transport/simplepeer-transport-service.ts +160 -0
  83. package/src/transport/simplepeer-transport.test.ts +61 -0
  84. package/src/transport/simplepeer-transport.ts +250 -0
  85. package/src/transport/{tcp/tcp-transport.browser.ts → tcp-transport.browser.ts} +3 -7
  86. package/src/transport/{tcp/tcp-transport.ts → tcp-transport.ts} +1 -3
  87. package/src/transport/transport.ts +7 -8
  88. package/src/transport/webrtc.ts +15 -0
  89. package/src/typings.d.ts +2 -8
  90. package/dist/lib/browser/chunk-GW3YM55A.mjs +0 -14
  91. package/dist/lib/browser/chunk-GW3YM55A.mjs.map +0 -7
  92. package/dist/lib/browser/chunk-YOKKEU6T.mjs.map +0 -7
  93. package/dist/lib/browser/transport/tcp/index.mjs +0 -39
  94. package/dist/lib/browser/transport/tcp/index.mjs.map +0 -7
  95. package/dist/lib/node/chunk-7ZWQLO5T.cjs.map +0 -7
  96. package/dist/lib/node/transport/tcp/index.cjs +0 -191
  97. package/dist/lib/node/transport/tcp/index.cjs.map +0 -7
  98. package/dist/lib/node-esm/chunk-4VO725JT.mjs +0 -4383
  99. package/dist/lib/node-esm/chunk-4VO725JT.mjs.map +0 -7
  100. package/dist/lib/node-esm/index.mjs +0 -50
  101. package/dist/lib/node-esm/index.mjs.map +0 -7
  102. package/dist/lib/node-esm/meta.json +0 -1
  103. package/dist/lib/node-esm/testing/index.mjs +0 -280
  104. package/dist/lib/node-esm/testing/index.mjs.map +0 -7
  105. package/dist/lib/node-esm/transport/tcp/index.mjs +0 -159
  106. package/dist/lib/node-esm/transport/tcp/index.mjs.map +0 -7
  107. package/dist/types/src/signal/integration.node.test.d.ts +0 -2
  108. package/dist/types/src/signal/integration.node.test.d.ts.map +0 -1
  109. package/dist/types/src/signal/swarm-messenger.node.test.d.ts +0 -2
  110. package/dist/types/src/signal/swarm-messenger.node.test.d.ts.map +0 -1
  111. package/dist/types/src/tests/tcp-transport.node.test.d.ts +0 -2
  112. package/dist/types/src/tests/tcp-transport.node.test.d.ts.map +0 -1
  113. package/dist/types/src/transport/tcp/index.d.ts +0 -2
  114. package/dist/types/src/transport/tcp/index.d.ts.map +0 -1
  115. package/dist/types/src/transport/tcp/tcp-transport.browser.d.ts.map +0 -1
  116. package/dist/types/src/transport/tcp/tcp-transport.d.ts.map +0 -1
  117. package/dist/types/src/transport/webrtc/index.d.ts +0 -4
  118. package/dist/types/src/transport/webrtc/index.d.ts.map +0 -1
  119. package/dist/types/src/transport/webrtc/rtc-connection-factory.d.ts +0 -14
  120. package/dist/types/src/transport/webrtc/rtc-connection-factory.d.ts.map +0 -1
  121. package/dist/types/src/transport/webrtc/rtc-peer-connection.d.ts +0 -68
  122. package/dist/types/src/transport/webrtc/rtc-peer-connection.d.ts.map +0 -1
  123. package/dist/types/src/transport/webrtc/rtc-transport-channel.d.ts +0 -33
  124. package/dist/types/src/transport/webrtc/rtc-transport-channel.d.ts.map +0 -1
  125. package/dist/types/src/transport/webrtc/rtc-transport-channel.test.d.ts +0 -2
  126. package/dist/types/src/transport/webrtc/rtc-transport-channel.test.d.ts.map +0 -1
  127. package/dist/types/src/transport/webrtc/rtc-transport-factory.d.ts +0 -4
  128. package/dist/types/src/transport/webrtc/rtc-transport-factory.d.ts.map +0 -1
  129. package/dist/types/src/transport/webrtc/rtc-transport-proxy.d.ts.map +0 -1
  130. package/dist/types/src/transport/webrtc/rtc-transport-proxy.test.d.ts +0 -2
  131. package/dist/types/src/transport/webrtc/rtc-transport-proxy.test.d.ts.map +0 -1
  132. package/dist/types/src/transport/webrtc/rtc-transport-service.d.ts.map +0 -1
  133. package/dist/types/src/transport/webrtc/rtc-transport-stats.d.ts +0 -4
  134. package/dist/types/src/transport/webrtc/rtc-transport-stats.d.ts.map +0 -1
  135. package/dist/types/src/transport/webrtc/rtc-transport.test.d.ts +0 -2
  136. package/dist/types/src/transport/webrtc/rtc-transport.test.d.ts.map +0 -1
  137. package/dist/types/src/transport/webrtc/test-utils.d.ts +0 -5
  138. package/dist/types/src/transport/webrtc/test-utils.d.ts.map +0 -1
  139. package/dist/types/src/transport/webrtc/utils.d.ts +0 -3
  140. package/dist/types/src/transport/webrtc/utils.d.ts.map +0 -1
  141. package/src/tests/tcp-transport.node.test.ts +0 -65
  142. package/src/transport/tcp/index.ts +0 -5
  143. package/src/transport/webrtc/index.ts +0 -7
  144. package/src/transport/webrtc/rtc-connection-factory.ts +0 -82
  145. package/src/transport/webrtc/rtc-peer-connection.ts +0 -472
  146. package/src/transport/webrtc/rtc-transport-channel.test.ts +0 -176
  147. package/src/transport/webrtc/rtc-transport-channel.ts +0 -195
  148. package/src/transport/webrtc/rtc-transport-factory.ts +0 -28
  149. package/src/transport/webrtc/rtc-transport-proxy.test.ts +0 -413
  150. package/src/transport/webrtc/rtc-transport-proxy.ts +0 -264
  151. package/src/transport/webrtc/rtc-transport-service.ts +0 -192
  152. package/src/transport/webrtc/rtc-transport-stats.ts +0 -67
  153. package/src/transport/webrtc/rtc-transport.test.ts +0 -198
  154. package/src/transport/webrtc/test-utils.ts +0 -22
  155. package/src/transport/webrtc/utils.ts +0 -36
@@ -0,0 +1,250 @@
1
+ /* eslint-disable no-fallthrough */
2
+ //
3
+ // Copyright 2020 DXOS.org
4
+ //
5
+
6
+ import SimplePeerConstructor, { type Instance as SimplePeer } from 'simple-peer';
7
+ import invariant from 'tiny-invariant';
8
+
9
+ import { Event, synchronized } from '@dxos/async';
10
+ import { ErrorStream, raise } from '@dxos/debug';
11
+ import { PublicKey } from '@dxos/keys';
12
+ import { log } from '@dxos/log';
13
+ import { ConnectionResetError, ConnectivityError, ProtocolError, UnknownProtocolError, trace } from '@dxos/protocols';
14
+ import { type Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';
15
+
16
+ import { type Transport, type TransportFactory, type TransportOptions, type TransportStats } from './transport';
17
+ import { wrtc } from './webrtc';
18
+ import { type IceProvider } from '../signal';
19
+
20
+ export type SimplePeerTransportParams = TransportOptions & {
21
+ webrtcConfig?: RTCConfiguration;
22
+ iceProvider?: IceProvider;
23
+ };
24
+
25
+ export const createSimplePeerTransportFactory = (
26
+ webrtcConfig?: RTCConfiguration,
27
+ iceProvider?: IceProvider,
28
+ ): TransportFactory => ({
29
+ createTransport: (options) =>
30
+ new SimplePeerTransport({
31
+ ...options,
32
+ webrtcConfig,
33
+ iceProvider,
34
+ }),
35
+ });
36
+
37
+ /**
38
+ * Implements Transport for WebRTC. Uses simple-peer under the hood.
39
+ */
40
+ export class SimplePeerTransport implements Transport {
41
+ private _peer?: SimplePeer = undefined;
42
+ private _closed = false;
43
+ private _piped = false;
44
+
45
+ readonly closed = new Event();
46
+ readonly connected = new Event();
47
+ readonly errors = new ErrorStream();
48
+
49
+ private readonly _instanceId = PublicKey.random().toHex();
50
+
51
+ get isOpen() {
52
+ // TODO(burdon): Open state?
53
+ return this._piped && !this._closed;
54
+ }
55
+
56
+ /**
57
+ * @params opts.config formatted as per https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection/RTCPeerConnection
58
+ */
59
+ constructor(private readonly _params: SimplePeerTransportParams) {}
60
+
61
+ async getStats(): Promise<TransportStats> {
62
+ const stats = await this._getStats();
63
+ if (!stats) {
64
+ return {
65
+ bytesSent: 0,
66
+ bytesReceived: 0,
67
+ packetsSent: 0,
68
+ packetsReceived: 0,
69
+ rawStats: {},
70
+ };
71
+ }
72
+
73
+ // TODO(nf): transport or candidatePair?
74
+ return {
75
+ bytesSent: stats.transport.bytesSent,
76
+ bytesReceived: stats.transport.bytesReceived,
77
+ packetsSent: stats.transport.packetsSent,
78
+ packetsReceived: stats.transport.packetsReceived,
79
+ rawStats: stats.raw,
80
+ };
81
+ }
82
+
83
+ async _getStats(): Promise<any> {
84
+ if (typeof (this._peer as any)?._pc?.getStats !== 'function') {
85
+ return null;
86
+ }
87
+ return await (this._peer as any)._pc.getStats().then((stats: any) => {
88
+ const statsEntries = Array.from(stats.entries() as any[]);
89
+ const transport = statsEntries.filter((s: any) => s[1].type === 'transport')[0][1];
90
+ const candidatePair = statsEntries.filter((s: any) => s[0] === transport.selectedCandidatePairId);
91
+ let selectedCandidatePair: any;
92
+ let remoteCandidate: any;
93
+ if (candidatePair.length > 0) {
94
+ selectedCandidatePair = candidatePair[0][1];
95
+ remoteCandidate = statsEntries.filter((s: any) => s[0] === selectedCandidatePair.remoteCandidateId)[0][1];
96
+ }
97
+ return {
98
+ datachannel: statsEntries.filter((s: any) => s[1].type === 'data-channel')[0][1],
99
+ transport,
100
+ selectedCandidatePair,
101
+ remoteCandidate,
102
+ raw: Object.fromEntries(stats.entries()),
103
+ };
104
+ });
105
+ }
106
+
107
+ async getDetails(): Promise<string> {
108
+ const stats = await this._getStats();
109
+ const rc = stats?.remoteCandidate;
110
+ if (!rc) {
111
+ return 'unavailable';
112
+ }
113
+
114
+ if (rc.candidateType === 'relay') {
115
+ return `${rc.ip}:${rc.port}/${rc.protocol} relay for ${rc.relatedAddress}:${rc.relatedPort}`;
116
+ }
117
+ return `${rc.ip}:${rc.port}/${rc.protocol} ${rc.candidateType}`;
118
+ }
119
+
120
+ @synchronized
121
+ async open() {
122
+ log.trace('dxos.mesh.webrtc-transport.open', trace.begin({ id: this._instanceId }));
123
+ log('created connection', { params: this._params });
124
+
125
+ const providedIceServers = await this._params.iceProvider?.getIceServers();
126
+ if (!this._params.webrtcConfig) {
127
+ this._params.webrtcConfig = {};
128
+ }
129
+ this._params.webrtcConfig.iceServers = [
130
+ ...(this._params.webrtcConfig.iceServers ?? []),
131
+ ...(providedIceServers ?? []),
132
+ ];
133
+
134
+ this._peer = new SimplePeerConstructor({
135
+ channelName: 'dxos.mesh.transport',
136
+ initiator: this._params.initiator,
137
+ wrtc: SimplePeerConstructor.WEBRTC_SUPPORT ? undefined : wrtc ?? raise(new Error('wrtc not available')),
138
+ config: this._params.webrtcConfig,
139
+ });
140
+
141
+ this._peer.on('signal', async (data) => {
142
+ log('signal', data);
143
+ await this._params.sendSignal({ payload: { data } });
144
+ });
145
+
146
+ this._peer.on('connect', () => {
147
+ log('connected');
148
+ this._params.stream.pipe(this._peer!).pipe(this._params.stream);
149
+ this._piped = true;
150
+ this.connected.emit();
151
+ });
152
+
153
+ this._peer.on('close', async () => {
154
+ log('closed');
155
+ await this.close();
156
+ });
157
+
158
+ this._peer.on('error', async (err) => {
159
+ // https://developer.mozilla.org/en-US/docs/Web/API/RTCError
160
+ if (typeof RTCError !== 'undefined' && err instanceof RTCError) {
161
+ // Sent when connection is unexpectedly severed
162
+ if (err.errorDetail === 'sctp-failure') {
163
+ this.errors.raise(new ConnectionResetError('sctp-failure from RTCError', err));
164
+ } else {
165
+ log.info('unknown RTCError', { err });
166
+ this.errors.raise(new UnknownProtocolError('unknown RTCError', err));
167
+ }
168
+ // catch more generic simple-peer errors: https://github.com/feross/simple-peer/blob/master/README.md#error-codes
169
+ } else if ('code' in err) {
170
+ log.info('simple-peer error', err);
171
+ switch (err.code) {
172
+ case 'ERR_WEBRTC_SUPPORT':
173
+ this.errors.raise(new ProtocolError('WebRTC not supported', err));
174
+ break;
175
+ case 'ERR_SIGNALING':
176
+ this.errors.raise(new ConnectivityError('signaling failure', err));
177
+ break;
178
+ case 'ERR_ICE_CONNECTION_FAILURE':
179
+ case 'ERR_DATA_CHANNEL':
180
+ case 'ERR_CONNECTION_FAILURE':
181
+ this.errors.raise(new ConnectivityError('unknown communication failure', err));
182
+ break;
183
+ // errors due to library issues or improper API usage
184
+ case 'ERR_CREATE_OFFER':
185
+ case 'ERR_CREATE_ANSWER':
186
+ case 'ERR_SET_LOCAL_DESCRIPTION':
187
+ case 'ERR_SET_REMOTE_DESCRIPTION':
188
+ case 'ERR_ADD_ICE_CANDIDATE':
189
+ this.errors.raise(new UnknownProtocolError('unknown simple-peer library failure', err));
190
+ break;
191
+ default:
192
+ this.errors.raise(new Error('unknown simple-peer error'));
193
+ break;
194
+ }
195
+ } else {
196
+ log.info('unknown peer connection error', err);
197
+ this.errors.raise(err);
198
+ }
199
+
200
+ // Try to gather additional information about the connection.
201
+ try {
202
+ if (typeof (this._peer as any)?._pc?.getStats === 'function') {
203
+ (this._peer as any)._pc.getStats().then((stats: any) => {
204
+ log.info('report after webrtc error', {
205
+ config: this._params.webrtcConfig,
206
+ stats: Object.fromEntries((stats as any).entries()),
207
+ });
208
+ });
209
+ }
210
+ } catch (err) {
211
+ log.catch(err);
212
+ }
213
+
214
+ await this.close();
215
+ });
216
+
217
+ log.trace('dxos.mesh.webrtc-transport.open', trace.end({ id: this._instanceId }));
218
+ }
219
+
220
+ @synchronized
221
+ async close() {
222
+ log('closing...');
223
+ if (this._closed) {
224
+ return;
225
+ }
226
+ this._disconnectStreams();
227
+ this._peer!.destroy();
228
+ this._closed = true;
229
+ this.closed.emit();
230
+ log('closed');
231
+ }
232
+
233
+ @synchronized
234
+ async onSignal(signal: Signal) {
235
+ if (this._closed) {
236
+ return; // Ignore signals after close.
237
+ }
238
+
239
+ invariant(signal.payload.data, 'Signal message must contain signal data.');
240
+ invariant(this._peer, 'Peer must be initialized before receiving signals.');
241
+ this._peer.signal(signal.payload.data);
242
+ }
243
+
244
+ private _disconnectStreams() {
245
+ // TODO(rzadp): Find a way of unpiping this?
246
+ if (this._piped) {
247
+ this._params.stream.unpipe?.(this._peer)?.unpipe?.(this._params.stream);
248
+ }
249
+ }
250
+ }
@@ -5,7 +5,7 @@
5
5
  import { Event } from '@dxos/async';
6
6
  import { ErrorStream } from '@dxos/debug';
7
7
 
8
- import { type Transport, type TransportFactory, type TransportStats } from '../transport';
8
+ import { type Transport, type TransportFactory, type TransportStats } from './transport';
9
9
 
10
10
  export const TcpTransportFactory: TransportFactory = {
11
11
  createTransport: () => new TcpTransport(),
@@ -23,13 +23,9 @@ export class TcpTransport implements Transport {
23
23
  return true;
24
24
  }
25
25
 
26
- async open() {
27
- return this;
28
- }
26
+ async open() {}
29
27
 
30
- async close() {
31
- return this;
32
- }
28
+ async close() {}
33
29
 
34
30
  async onSignal() {
35
31
  throw new Error('Method not implemented.');
@@ -9,7 +9,7 @@ import { ErrorStream } from '@dxos/debug';
9
9
  import { log } from '@dxos/log';
10
10
  import { type Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';
11
11
 
12
- import { type Transport, type TransportFactory, type TransportOptions, type TransportStats } from '../transport';
12
+ import { type Transport, type TransportFactory, type TransportOptions, type TransportStats } from './transport';
13
13
 
14
14
  export const TcpTransportFactory: TransportFactory = {
15
15
  createTransport: (options) => new TcpTransport(options),
@@ -72,7 +72,6 @@ export class TcpTransport implements Transport {
72
72
  this._server.listen(0);
73
73
  });
74
74
  }
75
- return this;
76
75
  }
77
76
 
78
77
  async close() {
@@ -80,7 +79,6 @@ export class TcpTransport implements Transport {
80
79
  this._socket?.destroy();
81
80
  this._server?.close();
82
81
  this._closed = true;
83
- return this;
84
82
  }
85
83
 
86
84
  async onSignal({ payload }: Signal) {
@@ -8,8 +8,9 @@ import { type PublicKey } from '@dxos/keys';
8
8
  import { type Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';
9
9
 
10
10
  export enum TransportKind {
11
- WEB_RTC = 'WEB-RTC',
12
- WEB_RTC_PROXY = 'WEB-RTC_PROXY',
11
+ SIMPLE_PEER = 'SIMPLE_PEER',
12
+ SIMPLE_PEER_PROXY = 'SIMPLE_PEER_PROXY',
13
+ LIBDATACHANNEL = 'LIBDATACHANNEL',
13
14
  MEMORY = 'MEMORY',
14
15
  TCP = 'TCP',
15
16
  }
@@ -24,8 +25,10 @@ export interface Transport {
24
25
  connected: Event;
25
26
  errors: ErrorStream;
26
27
 
27
- open(): Promise<this>;
28
- close(): Promise<this>;
28
+ open(): Promise<void>;
29
+ close(): Promise<void>;
30
+
31
+ get isOpen(): boolean;
29
32
 
30
33
  /**
31
34
  * Handle message from signaling.
@@ -47,10 +50,6 @@ export interface Transport {
47
50
  * Common options for all transports.
48
51
  */
49
52
  export type TransportOptions = {
50
- ownPeerKey: string;
51
- remotePeerKey: string;
52
-
53
- topic: string;
54
53
  /**
55
54
  * Did local node initiate this connection.
56
55
  */
@@ -0,0 +1,15 @@
1
+ //
2
+ // Copyright 2022 DXOS.org
3
+ //
4
+
5
+ /**
6
+ * Will be null if WebRTC is not available in this environment.
7
+ */
8
+ let wrtc: any = null;
9
+
10
+ // Try to load WebRTC if available. This will fail in the shared-worker context.
11
+ try {
12
+ wrtc = require('@koush/wrtc');
13
+ } catch {}
14
+
15
+ export { wrtc };
package/src/typings.d.ts CHANGED
@@ -3,11 +3,5 @@
3
3
  //
4
4
 
5
5
  declare module '@koush/wrtc';
6
-
7
- declare module '#node-datachannel' {
8
- export * from 'node-datachannel';
9
- }
10
-
11
- declare module '#node-datachannel/polyfill' {
12
- export * from 'node-datachannel/polyfill';
13
- }
6
+ declare module 'nanomessage-rpc';
7
+ declare module 'xor-distance';
@@ -1,14 +0,0 @@
1
- import "@dxos/node-std/globals";
2
-
3
- // inject-globals:@inject-globals
4
- import {
5
- global,
6
- Buffer,
7
- process
8
- } from "@dxos/node-std/inject-globals";
9
-
10
- export {
11
- Buffer,
12
- process
13
- };
14
- //# sourceMappingURL=chunk-GW3YM55A.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": [],
4
- "sourcesContent": [],
5
- "mappings": "",
6
- "names": []
7
- }