@webex/internal-media-core 0.0.2-beta → 0.0.5-beta

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 (124) hide show
  1. package/dist/cjs/index.js +13246 -0
  2. package/dist/esm/index.js +1342 -762
  3. package/dist/types/Media/Effects/BNR/Bnr.d.ts.map +1 -1
  4. package/dist/types/Media/Effects/BNR/BnrMock.d.ts.map +1 -1
  5. package/dist/types/MediaConnection/MediaConnection.d.ts.map +1 -1
  6. package/dist/types/MediaConnection/config.d.ts +11 -0
  7. package/dist/types/MediaConnection/config.d.ts.map +1 -1
  8. package/dist/types/MediaConnection/logger.d.ts +1 -1
  9. package/dist/types/MediaConnection/logger.d.ts.map +1 -1
  10. package/dist/types/MediaConnection/utils.d.ts +3 -0
  11. package/dist/types/MediaConnection/utils.d.ts.map +1 -1
  12. package/dist/types/MediaConnection/utils.test-fixtures.d.ts +10 -0
  13. package/dist/types/MediaConnection/utils.test-fixtures.d.ts.map +1 -1
  14. package/package.json +13 -8
  15. package/dist/transpiled/Logger/index.js +0 -41
  16. package/dist/transpiled/Logger/index.js.map +0 -1
  17. package/dist/transpiled/Media/Device/Device.js +0 -21
  18. package/dist/transpiled/Media/Device/Device.js.map +0 -1
  19. package/dist/transpiled/Media/Device/DeviceMocks.js +0 -65
  20. package/dist/transpiled/Media/Device/DeviceMocks.js.map +0 -1
  21. package/dist/transpiled/Media/Device/index.js +0 -2
  22. package/dist/transpiled/Media/Device/index.js.map +0 -1
  23. package/dist/transpiled/Media/Effects/BNR/Bnr.integration-test.js +0 -47
  24. package/dist/transpiled/Media/Effects/BNR/Bnr.integration-test.js.map +0 -1
  25. package/dist/transpiled/Media/Effects/BNR/Bnr.js +0 -187
  26. package/dist/transpiled/Media/Effects/BNR/Bnr.js.map +0 -1
  27. package/dist/transpiled/Media/Effects/BNR/Bnr.test.js +0 -37
  28. package/dist/transpiled/Media/Effects/BNR/Bnr.test.js.map +0 -1
  29. package/dist/transpiled/Media/Effects/BNR/BnrMock.js +0 -92
  30. package/dist/transpiled/Media/Effects/BNR/BnrMock.js.map +0 -1
  31. package/dist/transpiled/Media/Effects/BNR/index.js +0 -2
  32. package/dist/transpiled/Media/Effects/BNR/index.js.map +0 -1
  33. package/dist/transpiled/Media/Media.integration-test.js +0 -40
  34. package/dist/transpiled/Media/Media.integration-test.js.map +0 -1
  35. package/dist/transpiled/Media/Media.test.js +0 -291
  36. package/dist/transpiled/Media/Media.test.js.map +0 -1
  37. package/dist/transpiled/Media/Track/BufferSourceAudioTrack.js +0 -4
  38. package/dist/transpiled/Media/Track/BufferSourceAudioTrack.js.map +0 -1
  39. package/dist/transpiled/Media/Track/CameraVideoTrack.js +0 -4
  40. package/dist/transpiled/Media/Track/CameraVideoTrack.js.map +0 -1
  41. package/dist/transpiled/Media/Track/LocalAudioTrack.js +0 -4
  42. package/dist/transpiled/Media/Track/LocalAudioTrack.js.map +0 -1
  43. package/dist/transpiled/Media/Track/LocalTrack.js +0 -4
  44. package/dist/transpiled/Media/Track/LocalTrack.js.map +0 -1
  45. package/dist/transpiled/Media/Track/LocalVideoTrack.js +0 -4
  46. package/dist/transpiled/Media/Track/LocalVideoTrack.js.map +0 -1
  47. package/dist/transpiled/Media/Track/MicrophoneAudioTrack.js +0 -4
  48. package/dist/transpiled/Media/Track/MicrophoneAudioTrack.js.map +0 -1
  49. package/dist/transpiled/Media/Track/RemoteAudioTrack.js +0 -4
  50. package/dist/transpiled/Media/Track/RemoteAudioTrack.js.map +0 -1
  51. package/dist/transpiled/Media/Track/RemoteTrack.js +0 -4
  52. package/dist/transpiled/Media/Track/RemoteTrack.js.map +0 -1
  53. package/dist/transpiled/Media/Track/RemoteVideoTrack.js +0 -4
  54. package/dist/transpiled/Media/Track/RemoteVideoTrack.js.map +0 -1
  55. package/dist/transpiled/Media/Track/Track.integration-test.js +0 -118
  56. package/dist/transpiled/Media/Track/Track.integration-test.js.map +0 -1
  57. package/dist/transpiled/Media/Track/Track.js +0 -120
  58. package/dist/transpiled/Media/Track/Track.js.map +0 -1
  59. package/dist/transpiled/Media/Track/Track.test.js +0 -26
  60. package/dist/transpiled/Media/Track/Track.test.js.map +0 -1
  61. package/dist/transpiled/Media/Track/TrackMock.js +0 -109
  62. package/dist/transpiled/Media/Track/TrackMock.js.map +0 -1
  63. package/dist/transpiled/Media/Track/Utils.js +0 -31
  64. package/dist/transpiled/Media/Track/Utils.js.map +0 -1
  65. package/dist/transpiled/Media/Track/index.js +0 -2
  66. package/dist/transpiled/Media/Track/index.js.map +0 -1
  67. package/dist/transpiled/Media/index.js +0 -401
  68. package/dist/transpiled/Media/index.js.map +0 -1
  69. package/dist/transpiled/MediaConnection/EventEmitter.js +0 -4
  70. package/dist/transpiled/MediaConnection/EventEmitter.js.map +0 -1
  71. package/dist/transpiled/MediaConnection/MediaConnection.integration-test.js +0 -218
  72. package/dist/transpiled/MediaConnection/MediaConnection.integration-test.js.map +0 -1
  73. package/dist/transpiled/MediaConnection/MediaConnection.js +0 -357
  74. package/dist/transpiled/MediaConnection/MediaConnection.js.map +0 -1
  75. package/dist/transpiled/MediaConnection/MediaConnection.test.js +0 -427
  76. package/dist/transpiled/MediaConnection/MediaConnection.test.js.map +0 -1
  77. package/dist/transpiled/MediaConnection/RoapMediaConnection.integration-test.js +0 -368
  78. package/dist/transpiled/MediaConnection/RoapMediaConnection.integration-test.js.map +0 -1
  79. package/dist/transpiled/MediaConnection/RoapMediaConnection.js +0 -148
  80. package/dist/transpiled/MediaConnection/RoapMediaConnection.js.map +0 -1
  81. package/dist/transpiled/MediaConnection/RoapMediaConnection.test.js +0 -320
  82. package/dist/transpiled/MediaConnection/RoapMediaConnection.test.js.map +0 -1
  83. package/dist/transpiled/MediaConnection/config.js +0 -2
  84. package/dist/transpiled/MediaConnection/config.js.map +0 -1
  85. package/dist/transpiled/MediaConnection/eventTypes.js +0 -36
  86. package/dist/transpiled/MediaConnection/eventTypes.js.map +0 -1
  87. package/dist/transpiled/MediaConnection/index.js +0 -4
  88. package/dist/transpiled/MediaConnection/index.js.map +0 -1
  89. package/dist/transpiled/MediaConnection/logger.js +0 -22
  90. package/dist/transpiled/MediaConnection/logger.js.map +0 -1
  91. package/dist/transpiled/MediaConnection/roap.js +0 -399
  92. package/dist/transpiled/MediaConnection/roap.js.map +0 -1
  93. package/dist/transpiled/MediaConnection/roap.test.js +0 -873
  94. package/dist/transpiled/MediaConnection/roap.test.js.map +0 -1
  95. package/dist/transpiled/MediaConnection/roap.typegen.js +0 -2
  96. package/dist/transpiled/MediaConnection/roap.typegen.js.map +0 -1
  97. package/dist/transpiled/MediaConnection/testUtils/EventListener.js +0 -102
  98. package/dist/transpiled/MediaConnection/testUtils/EventListener.js.map +0 -1
  99. package/dist/transpiled/MediaConnection/testUtils/RoapListener.js +0 -15
  100. package/dist/transpiled/MediaConnection/testUtils/RoapListener.js.map +0 -1
  101. package/dist/transpiled/MediaConnection/testUtils/index.js +0 -17
  102. package/dist/transpiled/MediaConnection/testUtils/index.js.map +0 -1
  103. package/dist/transpiled/MediaConnection/testUtils/logger.js +0 -31
  104. package/dist/transpiled/MediaConnection/testUtils/logger.js.map +0 -1
  105. package/dist/transpiled/MediaConnection/testUtils.js +0 -14
  106. package/dist/transpiled/MediaConnection/testUtils.js.map +0 -1
  107. package/dist/transpiled/MediaConnection/utils.js +0 -71
  108. package/dist/transpiled/MediaConnection/utils.js.map +0 -1
  109. package/dist/transpiled/MediaConnection/utils.test-fixtures.js +0 -287
  110. package/dist/transpiled/MediaConnection/utils.test-fixtures.js.map +0 -1
  111. package/dist/transpiled/MediaConnection/utils.test.js +0 -20
  112. package/dist/transpiled/MediaConnection/utils.test.js.map +0 -1
  113. package/dist/transpiled/common/peerConnectionMock.js +0 -52
  114. package/dist/transpiled/common/peerConnectionMock.js.map +0 -1
  115. package/dist/transpiled/constants.js +0 -9
  116. package/dist/transpiled/constants.js.map +0 -1
  117. package/dist/transpiled/index.intergation-test.js +0 -14
  118. package/dist/transpiled/index.intergation-test.js.map +0 -1
  119. package/dist/transpiled/index.js +0 -41
  120. package/dist/transpiled/index.js.map +0 -1
  121. package/dist/types/MediaConnection/MediaConnection.integration-test.d.ts +0 -2
  122. package/dist/types/MediaConnection/MediaConnection.integration-test.d.ts.map +0 -1
  123. package/dist/types/MediaConnection/testUtils.d.ts +0 -7
  124. package/dist/types/MediaConnection/testUtils.d.ts.map +0 -1
@@ -1,357 +0,0 @@
1
- import EventEmitter from './EventEmitter';
2
- import { getLogger, getErrorDescription } from './logger';
3
- import { isSdpInvalid, getLocalTrackInfo, mungeLocalSdp } from './utils';
4
- import { Event, ConnectionState, RemoteTrackType } from './eventTypes';
5
- const localTrackTypes = [
6
- { type: 'audio', kind: 'audio' },
7
- { type: 'video', kind: 'video' },
8
- { type: 'screenShareVideo', kind: 'video' },
9
- ];
10
- export class MediaConnection extends EventEmitter {
11
- id;
12
- config;
13
- pc;
14
- localTracks;
15
- transceivers;
16
- receiveOptions;
17
- mediaConnectionState;
18
- lastEmittedMediaConnectionState;
19
- constructor(mediaConnectionConfig, options, debugId) {
20
- super();
21
- this.config = mediaConnectionConfig;
22
- this.receiveOptions = options.receive;
23
- this.localTracks = options.send;
24
- this.id = debugId || 'MediaConnection';
25
- this.transceivers = {};
26
- this.mediaConnectionState = ConnectionState.NEW;
27
- this.pc = new window.RTCPeerConnection({
28
- iceServers: this.config.iceServers,
29
- bundlePolicy: 'max-compat',
30
- });
31
- this.pc.ontrack = this.onTrack.bind(this);
32
- this.pc.oniceconnectionstatechange = this.onIceConnectionStateChange.bind(this);
33
- this.pc.onconnectionstatechange = this.onConnectionStateChange.bind(this);
34
- }
35
- log(action, description) {
36
- getLogger().info(`${this.id}:${action} ${description}`);
37
- }
38
- error(action, description, error) {
39
- getLogger().error(`${this.id}:${action} ${description} ${getErrorDescription(error)}`);
40
- }
41
- createTransceivers() {
42
- localTrackTypes.forEach(({ type, kind }) => {
43
- const trackType = type;
44
- const transceiverType = type;
45
- const trackInfo = getLocalTrackInfo(kind, this.receiveOptions[trackType], this.localTracks[trackType]);
46
- if (!this.config.skipInactiveTransceivers || trackInfo.direction !== 'inactive') {
47
- this.transceivers[transceiverType] = this.pc.addTransceiver(trackInfo.trackOrKind, {
48
- direction: trackInfo.direction,
49
- });
50
- }
51
- });
52
- this.setupTransceiverListeners();
53
- }
54
- initializeTransceivers(incomingOffer) {
55
- if (this.pc.getTransceivers().length > 0) {
56
- this.error('initiateOffer()', 'SDP negotiation already started');
57
- throw new Error('SDP negotiation already started');
58
- }
59
- if (incomingOffer) {
60
- this.addLocalTracks();
61
- }
62
- else {
63
- this.createTransceivers();
64
- }
65
- }
66
- close() {
67
- this.pc.close();
68
- this.pc.ontrack = null;
69
- this.pc.oniceconnectionstatechange = null;
70
- this.pc.onconnectionstatechange = null;
71
- this.pc.onicegatheringstatechange = null;
72
- this.pc.onicecandidate = null;
73
- this.pc.onicecandidateerror = null;
74
- }
75
- getConfig() {
76
- return this.config;
77
- }
78
- getSendReceiveOptions() {
79
- return { send: this.localTracks, receive: this.receiveOptions };
80
- }
81
- updateTransceivers(options) {
82
- let newOfferNeeded = false;
83
- this.receiveOptions = options.receive;
84
- this.identifyTransceivers();
85
- localTrackTypes.forEach(({ type, kind }) => {
86
- const trackType = type;
87
- const transceiverType = type;
88
- const track = options.send[trackType];
89
- const transceiver = this.transceivers[transceiverType];
90
- if (track !== undefined && track !== this.localTracks[trackType]) {
91
- this.localTracks[trackType] = track;
92
- if (transceiver) {
93
- this.log('updateTransceivers()', `replacing sender track on "${type}" transceiver`);
94
- transceiver.sender.replaceTrack(track);
95
- }
96
- }
97
- if (transceiver) {
98
- const trackInfo = getLocalTrackInfo(kind, this.receiveOptions[trackType], this.localTracks[trackType]);
99
- if (transceiver.direction !== trackInfo.direction) {
100
- this.log('updateTransceivers()', `updating direction to ${trackInfo.direction} on "${type}" transceiver`);
101
- transceiver.direction = trackInfo.direction;
102
- newOfferNeeded = true;
103
- }
104
- }
105
- });
106
- return newOfferNeeded;
107
- }
108
- updateSendOptions(tracks) {
109
- return this.updateTransceivers({
110
- send: tracks,
111
- receive: {
112
- ...this.receiveOptions,
113
- },
114
- });
115
- }
116
- updateReceiveOptions(options) {
117
- return this.updateTransceivers({
118
- send: this.localTracks,
119
- receive: options,
120
- });
121
- }
122
- updateSendReceiveOptions(options) {
123
- return this.updateTransceivers(options);
124
- }
125
- getConnectionState() {
126
- this.log('getConnectionState()', `called, returning ${this.mediaConnectionState}`);
127
- return this.mediaConnectionState;
128
- }
129
- getStats() {
130
- return this.pc.getStats();
131
- }
132
- insertDTMF(tones, duration, interToneGap) {
133
- if (!this.transceivers.audio) {
134
- throw new Error('audio transceiver missing');
135
- }
136
- if (!this.transceivers.audio.sender) {
137
- throw new Error('this.transceivers.audio.sender is null');
138
- }
139
- if (!this.transceivers.audio.sender.dtmf) {
140
- throw new Error('this.transceivers.audio.sender.dtmf is null');
141
- }
142
- this.transceivers.audio.sender.dtmf.insertDTMF(tones.toUpperCase(), duration, interToneGap);
143
- }
144
- setupTransceiverListeners() {
145
- if (this.transceivers.audio?.sender?.dtmf) {
146
- this.transceivers.audio.sender.dtmf.ontonechange = this.onToneChange.bind(this);
147
- }
148
- }
149
- onToneChange(event) {
150
- this.log('onToneChange()', `emitting Event.DTMF_TONE_CHANGED with tone="${event.tone}"`);
151
- this.emit(Event.DTMF_TONE_CHANGED, { tone: event.tone });
152
- }
153
- identifyTransceivers() {
154
- if (!this.transceivers.audio &&
155
- !this.transceivers.video &&
156
- !this.transceivers.screenShareVideo) {
157
- const transceivers = this.pc.getTransceivers();
158
- this.log('identifyTransceivers()', `transceivers.length=${transceivers.length}`);
159
- transceivers.forEach((transceiver, idx) => {
160
- this.log('identifyTransceivers()', `transceiver[${idx}].mid=${transceiver.mid}`);
161
- });
162
- [this.transceivers.audio, this.transceivers.video, this.transceivers.screenShareVideo] =
163
- transceivers;
164
- this.setupTransceiverListeners();
165
- }
166
- }
167
- onTrack(event) {
168
- this.log('onTrack()', `callback called: event=${JSON.stringify(event)}`);
169
- const MEDIA_ID = {
170
- AUDIO_TRACK: '0',
171
- VIDEO_TRACK: '1',
172
- SHARE_TRACK: '2',
173
- };
174
- const { track } = event;
175
- let trackMediaID = null;
176
- this.identifyTransceivers();
177
- if (event.transceiver?.mid) {
178
- this.log('onTrack()', 'identifying track by event.transceiver.mid');
179
- trackMediaID = event.transceiver.mid;
180
- }
181
- else if (track.id === this.transceivers.audio?.receiver?.track?.id) {
182
- trackMediaID = MEDIA_ID.AUDIO_TRACK;
183
- }
184
- else if (track.id === this.transceivers.video?.receiver?.track?.id) {
185
- trackMediaID = MEDIA_ID.VIDEO_TRACK;
186
- }
187
- else if (track.id === this.transceivers.screenShareVideo?.receiver?.track?.id) {
188
- trackMediaID = MEDIA_ID.SHARE_TRACK;
189
- }
190
- else {
191
- trackMediaID = null;
192
- }
193
- this.log('onTrack()', `trackMediaID=${trackMediaID}`);
194
- switch (trackMediaID) {
195
- case MEDIA_ID.AUDIO_TRACK:
196
- this.log('onTrack()', 'emitting Event.REMOTE_TRACK_ADDED with type=AUDIO');
197
- this.emit(Event.REMOTE_TRACK_ADDED, {
198
- type: RemoteTrackType.AUDIO,
199
- track,
200
- });
201
- break;
202
- case MEDIA_ID.VIDEO_TRACK:
203
- this.log('onTrack()', 'emitting Event.REMOTE_TRACK_ADDED with type=VIDEO');
204
- this.emit(Event.REMOTE_TRACK_ADDED, {
205
- type: RemoteTrackType.VIDEO,
206
- track,
207
- });
208
- break;
209
- case MEDIA_ID.SHARE_TRACK:
210
- this.log('onTrack()', 'emitting Event.REMOTE_TRACK_ADDED with type=SCREENSHARE_VIDEO');
211
- this.emit(Event.REMOTE_TRACK_ADDED, {
212
- type: RemoteTrackType.SCREENSHARE_VIDEO,
213
- track,
214
- });
215
- break;
216
- default: {
217
- this.error('onTrack()', `failed to match remote track media id: ${trackMediaID}`);
218
- }
219
- }
220
- }
221
- addLocalTracks() {
222
- this.log('addLocalTracks()', `adding tracks ${JSON.stringify(this.localTracks)}`);
223
- if (this.localTracks.audio) {
224
- this.pc.addTrack(this.localTracks.audio);
225
- }
226
- if (this.localTracks.video) {
227
- this.pc.addTrack(this.localTracks.video);
228
- }
229
- if (this.localTracks.screenShareVideo) {
230
- this.pc.addTrack(this.localTracks.screenShareVideo);
231
- }
232
- }
233
- onConnectionStateChange() {
234
- this.log('onConnectionStateChange()', `callback called: connectionState=${this.pc.connectionState}`);
235
- this.evaluateMediaConnectionState();
236
- }
237
- onIceConnectionStateChange() {
238
- this.log('onIceConnectionStateChange()', `callback called: iceConnectionState=${this.pc.iceConnectionState}`);
239
- this.evaluateMediaConnectionState();
240
- }
241
- evaluateMediaConnectionState() {
242
- const rtcPcConnectionState = this.pc.connectionState;
243
- const iceState = this.pc.iceConnectionState;
244
- const connectionStates = [rtcPcConnectionState, iceState];
245
- if (connectionStates.some((value) => value === 'closed')) {
246
- this.mediaConnectionState = ConnectionState.CLOSED;
247
- }
248
- else if (connectionStates.some((value) => value === 'failed')) {
249
- this.mediaConnectionState = ConnectionState.FAILED;
250
- }
251
- else if (connectionStates.some((value) => value === 'disconnected')) {
252
- this.mediaConnectionState = ConnectionState.DISCONNECTED;
253
- }
254
- else if (connectionStates.every((value) => value === 'connected' || value === 'completed')) {
255
- this.mediaConnectionState = ConnectionState.CONNECTED;
256
- }
257
- else {
258
- this.mediaConnectionState = ConnectionState.CONNECTING;
259
- }
260
- this.log('evaluateConnectionState', `iceConnectionState=${iceState} rtcPcConnectionState=${rtcPcConnectionState} => mediaConnectionState=${this.mediaConnectionState}`);
261
- if (this.lastEmittedMediaConnectionState !== this.mediaConnectionState) {
262
- this.emit(Event.CONNECTION_STATE_CHANGED, { state: this.mediaConnectionState });
263
- this.lastEmittedMediaConnectionState = this.mediaConnectionState;
264
- }
265
- }
266
- createLocalOffer() {
267
- return this.pc
268
- .createOffer()
269
- .then((description) => {
270
- this.log('createLocalOffer', 'local SDP offer created');
271
- return this.pc.setLocalDescription(description);
272
- })
273
- .then(() => this.waitForIceCandidates())
274
- .then(() => {
275
- const mungedSdp = mungeLocalSdp(this.config.sdpMunging, this.pc.localDescription.sdp);
276
- return { sdp: mungedSdp };
277
- });
278
- }
279
- handleRemoteOffer(sdp) {
280
- this.log('handleRemoteOffer', 'called');
281
- if (!sdp) {
282
- return Promise.reject(new Error('SDP missing'));
283
- }
284
- return this.pc
285
- .setRemoteDescription(new window.RTCSessionDescription({
286
- type: 'offer',
287
- sdp,
288
- }))
289
- .then(() => this.pc.createAnswer())
290
- .then((answer) => this.pc.setLocalDescription(answer))
291
- .then(() => this.waitForIceCandidates())
292
- .then(() => {
293
- const mungedSdp = mungeLocalSdp(this.config.sdpMunging, this.pc.localDescription.sdp);
294
- return { sdp: mungedSdp };
295
- });
296
- }
297
- handleRemoteAnswer(sdp) {
298
- this.log('handleRemoteAnswer', 'called');
299
- if (!sdp) {
300
- return Promise.reject(new Error('SDP missing'));
301
- }
302
- return this.pc.setRemoteDescription(new window.RTCSessionDescription({
303
- type: 'answer',
304
- sdp,
305
- }));
306
- }
307
- waitForIceCandidates() {
308
- return new Promise((resolve, reject) => {
309
- const startTime = performance.now();
310
- let done = false;
311
- const isLocalSdpValid = () => !isSdpInvalid({
312
- allowPort0: !!this.config.sdpMunging.convertPort9to0,
313
- }, this.error.bind(this), this.pc.localDescription?.sdp);
314
- const doneGatheringIceCandidates = () => {
315
- if (!done) {
316
- const miliseconds = performance.now() - startTime;
317
- this.log('waitForIceCandidates()', `checking SDP...`);
318
- if (!isLocalSdpValid()) {
319
- this.error('waitForIceCandidates()', 'SDP not valid after waiting.');
320
- reject(new Error('SDP not valid'));
321
- }
322
- this.log('waitForIceCandidates()', `It took ${miliseconds} miliseconds to gather ice candidates`);
323
- done = true;
324
- this.pc.onicegatheringstatechange = null;
325
- this.pc.onicecandidate = null;
326
- this.pc.onicecandidateerror = null;
327
- resolve();
328
- }
329
- };
330
- if (this.pc.iceGatheringState === 'complete' && isLocalSdpValid()) {
331
- this.log('waitForIceCandidates()', 'iceGatheringState is already "complete" and local SDP is valid');
332
- resolve();
333
- }
334
- this.log('waitForIceCandidates()', 'waiting for ICE candidates to be gathered...');
335
- this.pc.onicegatheringstatechange = () => {
336
- this.log('waitForIceCandidates()', `iceGatheringState changed to ${this.pc.iceGatheringState}`);
337
- if (this.pc.iceGatheringState === 'complete') {
338
- doneGatheringIceCandidates();
339
- }
340
- };
341
- this.pc.onicecandidate = (evt) => {
342
- if (evt.candidate === null) {
343
- this.log('waitForIceCandidates()', 'evt.candidate === null received');
344
- doneGatheringIceCandidates();
345
- }
346
- else {
347
- this.log('waitForIceCandidates()', `ICE Candidate(${evt.candidate?.sdpMLineIndex}): ${evt.candidate?.candidate}`);
348
- }
349
- };
350
- this.pc.onicecandidateerror = (event) => {
351
- this.error('waitForIceCandidates()', `onicecandidateerror: ${event}`);
352
- reject(new Error('Error gathering ICE candidates'));
353
- };
354
- });
355
- }
356
- }
357
- //# sourceMappingURL=MediaConnection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MediaConnection.js","sourceRoot":"","sources":["../../../src/MediaConnection/MediaConnection.ts"],"names":[],"mappings":"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"}