@dxos/network-manager 0.6.13 → 0.6.14-main.69511f5

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 (161) hide show
  1. package/dist/lib/browser/{chunk-XYSYUN63.mjs → chunk-RUNQZNCV.mjs} +1247 -1066
  2. package/dist/lib/browser/chunk-RUNQZNCV.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +9 -19
  4. package/dist/lib/browser/meta.json +1 -1
  5. package/dist/lib/browser/testing/index.mjs +20 -33
  6. package/dist/lib/browser/testing/index.mjs.map +3 -3
  7. package/dist/lib/browser/transport/tcp/index.mjs +38 -0
  8. package/dist/lib/browser/transport/tcp/index.mjs.map +7 -0
  9. package/dist/lib/node/{chunk-4YAYC7WN.cjs → chunk-D6P7ACEM.cjs} +1262 -1205
  10. package/dist/lib/node/chunk-D6P7ACEM.cjs.map +7 -0
  11. package/dist/lib/node/index.cjs +27 -37
  12. package/dist/lib/node/index.cjs.map +2 -2
  13. package/dist/lib/node/meta.json +1 -1
  14. package/dist/lib/node/testing/index.cjs +24 -34
  15. package/dist/lib/node/testing/index.cjs.map +3 -3
  16. package/dist/lib/node/transport/tcp/index.cjs +191 -0
  17. package/dist/lib/node/transport/tcp/index.cjs.map +7 -0
  18. package/dist/lib/node-esm/chunk-22DA2US6.mjs +4373 -0
  19. package/dist/lib/node-esm/chunk-22DA2US6.mjs.map +7 -0
  20. package/dist/lib/node-esm/index.mjs +50 -0
  21. package/dist/lib/node-esm/index.mjs.map +7 -0
  22. package/dist/lib/node-esm/meta.json +1 -0
  23. package/dist/lib/node-esm/testing/index.mjs +279 -0
  24. package/dist/lib/node-esm/testing/index.mjs.map +7 -0
  25. package/dist/lib/node-esm/transport/tcp/index.mjs +159 -0
  26. package/dist/lib/node-esm/transport/tcp/index.mjs.map +7 -0
  27. package/dist/types/src/network-manager.d.ts +2 -1
  28. package/dist/types/src/network-manager.d.ts.map +1 -1
  29. package/dist/types/src/signal/ice.d.ts.map +1 -1
  30. package/dist/types/src/signal/integration.node.test.d.ts +2 -0
  31. package/dist/types/src/signal/integration.node.test.d.ts.map +1 -0
  32. package/dist/types/src/signal/swarm-messenger.node.test.d.ts +2 -0
  33. package/dist/types/src/signal/swarm-messenger.node.test.d.ts.map +1 -0
  34. package/dist/types/src/swarm/connection.d.ts.map +1 -1
  35. package/dist/types/src/swarm/swarm.d.ts +1 -1
  36. package/dist/types/src/testing/test-builder.d.ts +2 -2
  37. package/dist/types/src/testing/test-builder.d.ts.map +1 -1
  38. package/dist/types/src/testing/test-wire-protocol.d.ts +1 -2
  39. package/dist/types/src/testing/test-wire-protocol.d.ts.map +1 -1
  40. package/dist/types/src/tests/basic-test-suite.d.ts.map +1 -1
  41. package/dist/types/src/tests/property-test-suite.d.ts.map +1 -1
  42. package/dist/types/src/tests/tcp-transport.node.test.d.ts +2 -0
  43. package/dist/types/src/tests/tcp-transport.node.test.d.ts.map +1 -0
  44. package/dist/types/src/tests/utils.d.ts.map +1 -1
  45. package/dist/types/src/transport/index.d.ts +1 -5
  46. package/dist/types/src/transport/index.d.ts.map +1 -1
  47. package/dist/types/src/transport/memory-transport.d.ts +2 -2
  48. package/dist/types/src/transport/memory-transport.d.ts.map +1 -1
  49. package/dist/types/src/transport/tcp/index.d.ts +2 -0
  50. package/dist/types/src/transport/tcp/index.d.ts.map +1 -0
  51. package/dist/types/src/transport/{tcp-transport.browser.d.ts → tcp/tcp-transport.browser.d.ts} +3 -3
  52. package/dist/types/src/transport/tcp/tcp-transport.browser.d.ts.map +1 -0
  53. package/dist/types/src/transport/{tcp-transport.d.ts → tcp/tcp-transport.d.ts} +3 -3
  54. package/dist/types/src/transport/tcp/tcp-transport.d.ts.map +1 -0
  55. package/dist/types/src/transport/transport.d.ts +7 -6
  56. package/dist/types/src/transport/transport.d.ts.map +1 -1
  57. package/dist/types/src/transport/webrtc/index.d.ts +4 -0
  58. package/dist/types/src/transport/webrtc/index.d.ts.map +1 -0
  59. package/dist/types/src/transport/webrtc/rtc-connection-factory.d.ts +14 -0
  60. package/dist/types/src/transport/webrtc/rtc-connection-factory.d.ts.map +1 -0
  61. package/dist/types/src/transport/webrtc/rtc-peer-connection.d.ts +68 -0
  62. package/dist/types/src/transport/webrtc/rtc-peer-connection.d.ts.map +1 -0
  63. package/dist/types/src/transport/webrtc/rtc-transport-channel.d.ts +33 -0
  64. package/dist/types/src/transport/webrtc/rtc-transport-channel.d.ts.map +1 -0
  65. package/dist/types/src/transport/webrtc/rtc-transport-channel.test.d.ts +2 -0
  66. package/dist/types/src/transport/webrtc/rtc-transport-channel.test.d.ts.map +1 -0
  67. package/dist/types/src/transport/webrtc/rtc-transport-factory.d.ts +4 -0
  68. package/dist/types/src/transport/webrtc/rtc-transport-factory.d.ts.map +1 -0
  69. package/dist/types/src/transport/{simplepeer-transport-proxy.d.ts → webrtc/rtc-transport-proxy.d.ts} +10 -12
  70. package/dist/types/src/transport/webrtc/rtc-transport-proxy.d.ts.map +1 -0
  71. package/dist/types/src/transport/webrtc/rtc-transport-proxy.test.d.ts +2 -0
  72. package/dist/types/src/transport/webrtc/rtc-transport-proxy.test.d.ts.map +1 -0
  73. package/dist/types/src/transport/{simplepeer-transport-service.d.ts → webrtc/rtc-transport-service.d.ts} +9 -7
  74. package/dist/types/src/transport/webrtc/rtc-transport-service.d.ts.map +1 -0
  75. package/dist/types/src/transport/webrtc/rtc-transport-stats.d.ts +4 -0
  76. package/dist/types/src/transport/webrtc/rtc-transport-stats.d.ts.map +1 -0
  77. package/dist/types/src/transport/webrtc/rtc-transport.test.d.ts +2 -0
  78. package/dist/types/src/transport/webrtc/rtc-transport.test.d.ts.map +1 -0
  79. package/dist/types/src/transport/webrtc/test-utils.d.ts +5 -0
  80. package/dist/types/src/transport/webrtc/test-utils.d.ts.map +1 -0
  81. package/dist/types/src/transport/webrtc/utils.d.ts +3 -0
  82. package/dist/types/src/transport/webrtc/utils.d.ts.map +1 -0
  83. package/package.json +53 -36
  84. package/src/network-manager.ts +5 -13
  85. package/src/signal/ice.test.ts +1 -3
  86. package/src/signal/ice.ts +6 -1
  87. package/src/signal/{integration.test.ts → integration.node.test.ts} +9 -15
  88. package/src/signal/{swarm-messenger.test.ts → swarm-messenger.node.test.ts} +13 -23
  89. package/src/swarm/connection-limiter.test.ts +3 -6
  90. package/src/swarm/connection.test.ts +63 -38
  91. package/src/swarm/connection.ts +5 -5
  92. package/src/swarm/swarm.test.ts +10 -12
  93. package/src/swarm/swarm.ts +1 -1
  94. package/src/testing/test-builder.ts +13 -29
  95. package/src/testing/test-wire-protocol.ts +1 -4
  96. package/src/tests/basic-test-suite.ts +34 -33
  97. package/src/tests/memory-transport.test.ts +40 -42
  98. package/src/tests/property-test-suite.ts +21 -22
  99. package/src/tests/tcp-transport.node.test.ts +65 -0
  100. package/src/tests/utils.ts +3 -2
  101. package/src/tests/webrtc-transport.test.ts +9 -9
  102. package/src/transport/index.ts +1 -5
  103. package/src/transport/memory-transport.ts +2 -0
  104. package/src/transport/tcp/index.ts +5 -0
  105. package/src/transport/{tcp-transport.browser.ts → tcp/tcp-transport.browser.ts} +7 -3
  106. package/src/transport/{tcp-transport.ts → tcp/tcp-transport.ts} +3 -1
  107. package/src/transport/transport.ts +8 -7
  108. package/src/transport/webrtc/index.ts +7 -0
  109. package/src/transport/webrtc/rtc-connection-factory.ts +82 -0
  110. package/src/transport/webrtc/rtc-peer-connection.ts +472 -0
  111. package/src/transport/webrtc/rtc-transport-channel.test.ts +176 -0
  112. package/src/transport/webrtc/rtc-transport-channel.ts +195 -0
  113. package/src/transport/webrtc/rtc-transport-factory.ts +28 -0
  114. package/src/transport/webrtc/rtc-transport-proxy.test.ts +413 -0
  115. package/src/transport/webrtc/rtc-transport-proxy.ts +264 -0
  116. package/src/transport/webrtc/rtc-transport-service.ts +192 -0
  117. package/src/transport/webrtc/rtc-transport-stats.ts +67 -0
  118. package/src/transport/webrtc/rtc-transport.test.ts +198 -0
  119. package/src/transport/webrtc/test-utils.ts +22 -0
  120. package/src/transport/webrtc/utils.ts +36 -0
  121. package/src/typings.d.ts +8 -2
  122. package/dist/lib/browser/chunk-XYSYUN63.mjs.map +0 -7
  123. package/dist/lib/node/chunk-4YAYC7WN.cjs.map +0 -7
  124. package/dist/types/src/signal/integration.test.d.ts +0 -2
  125. package/dist/types/src/signal/integration.test.d.ts.map +0 -1
  126. package/dist/types/src/signal/swarm-messenger.test.d.ts +0 -2
  127. package/dist/types/src/signal/swarm-messenger.test.d.ts.map +0 -1
  128. package/dist/types/src/tests/tcp-transport.test.d.ts +0 -2
  129. package/dist/types/src/tests/tcp-transport.test.d.ts.map +0 -1
  130. package/dist/types/src/transport/libdatachannel-transport.d.ts +0 -42
  131. package/dist/types/src/transport/libdatachannel-transport.d.ts.map +0 -1
  132. package/dist/types/src/transport/libdatachannel-transport.test.d.ts +0 -2
  133. package/dist/types/src/transport/libdatachannel-transport.test.d.ts.map +0 -1
  134. package/dist/types/src/transport/memory-transport.test.d.ts +0 -2
  135. package/dist/types/src/transport/memory-transport.test.d.ts.map +0 -1
  136. package/dist/types/src/transport/simplepeer-simple-peer.d.ts +0 -2
  137. package/dist/types/src/transport/simplepeer-simple-peer.d.ts.map +0 -1
  138. package/dist/types/src/transport/simplepeer-transport-proxy-test.d.ts +0 -2
  139. package/dist/types/src/transport/simplepeer-transport-proxy-test.d.ts.map +0 -1
  140. package/dist/types/src/transport/simplepeer-transport-proxy.d.ts.map +0 -1
  141. package/dist/types/src/transport/simplepeer-transport-service.d.ts.map +0 -1
  142. package/dist/types/src/transport/simplepeer-transport.d.ts +0 -36
  143. package/dist/types/src/transport/simplepeer-transport.d.ts.map +0 -1
  144. package/dist/types/src/transport/simplepeer-transport.test.d.ts +0 -2
  145. package/dist/types/src/transport/simplepeer-transport.test.d.ts.map +0 -1
  146. package/dist/types/src/transport/tcp-transport.browser.d.ts.map +0 -1
  147. package/dist/types/src/transport/tcp-transport.d.ts.map +0 -1
  148. package/dist/types/src/transport/webrtc.d.ts +0 -6
  149. package/dist/types/src/transport/webrtc.d.ts.map +0 -1
  150. package/src/globals.d.ts +0 -7
  151. package/src/tests/tcp-transport.test.ts +0 -67
  152. package/src/transport/libdatachannel-transport.test.ts +0 -100
  153. package/src/transport/libdatachannel-transport.ts +0 -376
  154. package/src/transport/memory-transport.test.ts +0 -74
  155. package/src/transport/simplepeer-simple-peer.ts +0 -26
  156. package/src/transport/simplepeer-transport-proxy-test.ts +0 -181
  157. package/src/transport/simplepeer-transport-proxy.ts +0 -246
  158. package/src/transport/simplepeer-transport-service.ts +0 -160
  159. package/src/transport/simplepeer-transport.test.ts +0 -61
  160. package/src/transport/simplepeer-transport.ts +0 -250
  161. package/src/transport/webrtc.ts +0 -15
@@ -1,61 +0,0 @@
1
- //
2
- // Copyright 2020 DXOS.org
3
- //
4
-
5
- import { Duplex } from 'stream';
6
-
7
- import { sleep, TestStream } from '@dxos/async';
8
- import { afterTest, describe, test } from '@dxos/test';
9
-
10
- import { SimplePeerTransport } from './simplepeer-transport';
11
-
12
- describe('SimplePeerTransport', () => {
13
- // This doesn't clean up correctly and crashes with SIGSEGV / SIGABRT at the end. Probably an issue with wrtc package.
14
- test('open and close', async () => {
15
- const connection = new SimplePeerTransport({
16
- initiator: true,
17
- stream: new Duplex(),
18
- sendSignal: async () => {},
19
- });
20
-
21
- await connection.open();
22
- const wait = connection.closed.waitForCount(1);
23
- await connection.close();
24
- await wait;
25
- })
26
- .timeout(1_000)
27
- .retries(3);
28
-
29
- test('establish connection and send data through with protocol', async () => {
30
- const stream1 = new TestStream();
31
- const connection1 = new SimplePeerTransport({
32
- initiator: true,
33
- stream: stream1,
34
- sendSignal: async (signal) => {
35
- await sleep(10);
36
- await connection2.onSignal(signal);
37
- },
38
- });
39
- afterTest(() => connection1.close());
40
- afterTest(() => connection1.errors.assertNoUnhandledErrors());
41
-
42
- const stream2 = new TestStream();
43
- const connection2 = new SimplePeerTransport({
44
- initiator: false,
45
- stream: stream2,
46
- sendSignal: async (signal) => {
47
- await sleep(10);
48
- await connection1.onSignal(signal);
49
- },
50
- });
51
- afterTest(() => connection2.close());
52
- afterTest(() => connection2.errors.assertNoUnhandledErrors());
53
-
54
- await connection1.open();
55
- await connection2.open();
56
-
57
- await TestStream.assertConnectivity(stream1, stream2);
58
- })
59
- .timeout(2_000)
60
- .retries(3);
61
- });
@@ -1,250 +0,0 @@
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
- }
@@ -1,15 +0,0 @@
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 };