mediasoup-client 3.13.0 → 3.14.1

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 (67) hide show
  1. package/lib/Consumer.d.ts.map +1 -1
  2. package/lib/Consumer.js +3 -0
  3. package/lib/DataConsumer.d.ts.map +1 -1
  4. package/lib/DataConsumer.js +8 -8
  5. package/lib/DataProducer.d.ts.map +1 -1
  6. package/lib/DataProducer.js +8 -7
  7. package/lib/Device.d.ts +2 -2
  8. package/lib/Device.d.ts.map +1 -1
  9. package/lib/Device.js +53 -70
  10. package/lib/Producer.d.ts.map +1 -1
  11. package/lib/Producer.js +3 -0
  12. package/lib/RtpParameters.d.ts +8 -8
  13. package/lib/RtpParameters.d.ts.map +1 -1
  14. package/lib/Transport.d.ts +4 -4
  15. package/lib/Transport.d.ts.map +1 -1
  16. package/lib/Transport.js +9 -7
  17. package/lib/enhancedEvents.d.ts +4 -0
  18. package/lib/enhancedEvents.d.ts.map +1 -1
  19. package/lib/enhancedEvents.js +7 -0
  20. package/lib/handlers/Chrome111.d.ts +13 -13
  21. package/lib/handlers/Chrome111.d.ts.map +1 -1
  22. package/lib/handlers/Chrome111.js +175 -124
  23. package/lib/handlers/Chrome74.d.ts +13 -13
  24. package/lib/handlers/Chrome74.d.ts.map +1 -1
  25. package/lib/handlers/Chrome74.js +175 -120
  26. package/lib/handlers/FakeHandler.d.ts +8 -10
  27. package/lib/handlers/FakeHandler.d.ts.map +1 -1
  28. package/lib/handlers/FakeHandler.js +204 -61
  29. package/lib/handlers/Firefox120.d.ts +13 -13
  30. package/lib/handlers/Firefox120.d.ts.map +1 -1
  31. package/lib/handlers/Firefox120.js +200 -147
  32. package/lib/handlers/HandlerInterface.d.ts +11 -9
  33. package/lib/handlers/HandlerInterface.d.ts.map +1 -1
  34. package/lib/handlers/ReactNative106.d.ts +13 -13
  35. package/lib/handlers/ReactNative106.d.ts.map +1 -1
  36. package/lib/handlers/ReactNative106.js +181 -127
  37. package/lib/handlers/Safari12.d.ts +13 -13
  38. package/lib/handlers/Safari12.d.ts.map +1 -1
  39. package/lib/handlers/Safari12.js +178 -116
  40. package/lib/handlers/sdp/MediaSection.d.ts +5 -5
  41. package/lib/handlers/sdp/MediaSection.d.ts.map +1 -1
  42. package/lib/handlers/sdp/MediaSection.js +43 -45
  43. package/lib/handlers/sdp/RemoteSdp.d.ts +5 -6
  44. package/lib/handlers/sdp/RemoteSdp.d.ts.map +1 -1
  45. package/lib/handlers/sdp/RemoteSdp.js +5 -8
  46. package/lib/handlers/sdp/commonUtils.d.ts +5 -4
  47. package/lib/handlers/sdp/commonUtils.d.ts.map +1 -1
  48. package/lib/handlers/sdp/commonUtils.js +2 -2
  49. package/lib/handlers/sdp/plainRtpUtils.d.ts +4 -3
  50. package/lib/handlers/sdp/plainRtpUtils.d.ts.map +1 -1
  51. package/lib/handlers/sdp/plainRtpUtils.js +2 -2
  52. package/lib/handlers/sdp/unifiedPlanUtils.d.ts +3 -2
  53. package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +1 -1
  54. package/lib/handlers/sdp/unifiedPlanUtils.js +10 -8
  55. package/lib/index.d.ts +1 -1
  56. package/lib/index.js +1 -1
  57. package/lib/ortc.d.ts +7 -6
  58. package/lib/ortc.d.ts.map +1 -1
  59. package/lib/ortc.js +13 -14
  60. package/lib/privateTypes.d.ts +27 -0
  61. package/lib/privateTypes.d.ts.map +1 -0
  62. package/lib/privateTypes.js +2 -0
  63. package/lib/test/test.js +22 -3
  64. package/lib/utils.d.ts +1 -1
  65. package/lib/utils.d.ts.map +1 -1
  66. package/lib/utils.js +5 -4
  67. package/package.json +8 -9
@@ -2,20 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Safari12 = void 0;
4
4
  const sdpTransform = require("sdp-transform");
5
+ const enhancedEvents_1 = require("../enhancedEvents");
5
6
  const Logger_1 = require("../Logger");
6
7
  const utils = require("../utils");
7
8
  const ortc = require("../ortc");
9
+ const errors_1 = require("../errors");
10
+ const scalabilityModes_1 = require("../scalabilityModes");
11
+ const RemoteSdp_1 = require("./sdp/RemoteSdp");
8
12
  const sdpCommonUtils = require("./sdp/commonUtils");
9
13
  const sdpUnifiedPlanUtils = require("./sdp/unifiedPlanUtils");
10
14
  const ortcUtils = require("./ortc/utils");
11
- const errors_1 = require("../errors");
12
- const HandlerInterface_1 = require("./HandlerInterface");
13
- const RemoteSdp_1 = require("./sdp/RemoteSdp");
14
- const scalabilityModes_1 = require("../scalabilityModes");
15
15
  const logger = new Logger_1.Logger('Safari12');
16
16
  const NAME = 'Safari12';
17
17
  const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 };
18
- class Safari12 extends HandlerInterface_1.HandlerInterface {
18
+ class Safari12 extends enhancedEvents_1.EnhancedEventEmitter {
19
19
  // Closed flag.
20
20
  _closed = false;
21
21
  // Handler direction.
@@ -46,70 +46,54 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
46
46
  * Creates a factory function.
47
47
  */
48
48
  static createFactory() {
49
- return () => new Safari12();
50
- }
51
- constructor() {
52
- super();
53
- }
54
- get name() {
55
- return NAME;
56
- }
57
- close() {
58
- logger.debug('close()');
59
- if (this._closed) {
60
- return;
61
- }
62
- this._closed = true;
63
- // Close RTCPeerConnection.
64
- if (this._pc) {
65
- try {
66
- this._pc.close();
67
- }
68
- catch (error) { }
69
- }
70
- this.emit('@close');
71
- }
72
- async getNativeRtpCapabilities() {
73
- logger.debug('getNativeRtpCapabilities()');
74
- const pc = new RTCPeerConnection({
75
- iceServers: [],
76
- iceTransportPolicy: 'all',
77
- bundlePolicy: 'max-bundle',
78
- rtcpMuxPolicy: 'require',
79
- });
80
- try {
81
- pc.addTransceiver('audio');
82
- pc.addTransceiver('video');
83
- const offer = await pc.createOffer();
84
- try {
85
- pc.close();
86
- }
87
- catch (error) { }
88
- const sdpObject = sdpTransform.parse(offer.sdp);
89
- const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
90
- sdpObject,
91
- });
92
- // libwebrtc supports NACK for OPUS but doesn't announce it.
93
- ortcUtils.addNackSupportForOpus(nativeRtpCapabilities);
94
- return nativeRtpCapabilities;
95
- }
96
- catch (error) {
97
- try {
98
- pc.close();
99
- }
100
- catch (error2) { }
101
- throw error;
102
- }
103
- }
104
- async getNativeSctpCapabilities() {
105
- logger.debug('getNativeSctpCapabilities()');
106
49
  return {
107
- numStreams: SCTP_NUM_STREAMS,
50
+ name: NAME,
51
+ factory: (options) => new Safari12(options),
52
+ getNativeRtpCapabilities: async () => {
53
+ logger.debug('getNativeRtpCapabilities()');
54
+ let pc = new RTCPeerConnection({
55
+ iceServers: [],
56
+ iceTransportPolicy: 'all',
57
+ bundlePolicy: 'max-bundle',
58
+ rtcpMuxPolicy: 'require',
59
+ });
60
+ try {
61
+ pc.addTransceiver('audio');
62
+ pc.addTransceiver('video');
63
+ const offer = await pc.createOffer();
64
+ try {
65
+ pc.close();
66
+ }
67
+ catch (error) { }
68
+ pc = undefined;
69
+ const sdpObject = sdpTransform.parse(offer.sdp);
70
+ const nativeRtpCapabilities = sdpCommonUtils.extractRtpCapabilities({
71
+ sdpObject,
72
+ });
73
+ // libwebrtc supports NACK for OPUS but doesn't announce it.
74
+ ortcUtils.addNackSupportForOpus(nativeRtpCapabilities);
75
+ return nativeRtpCapabilities;
76
+ }
77
+ catch (error) {
78
+ try {
79
+ pc?.close();
80
+ }
81
+ catch (error2) { }
82
+ pc = undefined;
83
+ throw error;
84
+ }
85
+ },
86
+ getNativeSctpCapabilities: async () => {
87
+ logger.debug('getNativeSctpCapabilities()');
88
+ return {
89
+ numStreams: SCTP_NUM_STREAMS,
90
+ };
91
+ },
108
92
  };
109
93
  }
110
- run({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, extendedRtpCapabilities, }) {
111
- this.assertNotClosed();
112
- logger.debug('run()');
94
+ constructor({ direction, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, extendedRtpCapabilities, }) {
95
+ super();
96
+ logger.debug('constructor()');
113
97
  this._direction = direction;
114
98
  this._remoteSdp = new RemoteSdp_1.RemoteSdp({
115
99
  iceParameters,
@@ -135,46 +119,44 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
135
119
  bundlePolicy: 'max-bundle',
136
120
  rtcpMuxPolicy: 'require',
137
121
  ...additionalSettings,
138
- }, proprietaryConstraints);
122
+ });
139
123
  this._pc.addEventListener('icegatheringstatechange', () => {
140
124
  this.emit('@icegatheringstatechange', this._pc.iceGatheringState);
141
125
  });
142
126
  this._pc.addEventListener('icecandidateerror', (event) => {
143
127
  this.emit('@icecandidateerror', event);
144
128
  });
129
+ this._pc.addEventListener('icegatheringstatechange', this.onIceGatheringStateChange);
130
+ this._pc.addEventListener('icecandidateerror', this.onIceCandidateError);
145
131
  if (this._pc.connectionState) {
146
- this._pc.addEventListener('connectionstatechange', () => {
147
- this.emit('@connectionstatechange', this._pc.connectionState);
148
- });
132
+ this._pc.addEventListener('connectionstatechange', this.onConnectionStateChange);
149
133
  }
150
134
  else {
151
- this._pc.addEventListener('iceconnectionstatechange', () => {
152
- logger.warn('run() | pc.connectionState not supported, using pc.iceConnectionState');
153
- switch (this._pc.iceConnectionState) {
154
- case 'checking': {
155
- this.emit('@connectionstatechange', 'connecting');
156
- break;
157
- }
158
- case 'connected':
159
- case 'completed': {
160
- this.emit('@connectionstatechange', 'connected');
161
- break;
162
- }
163
- case 'failed': {
164
- this.emit('@connectionstatechange', 'failed');
165
- break;
166
- }
167
- case 'disconnected': {
168
- this.emit('@connectionstatechange', 'disconnected');
169
- break;
170
- }
171
- case 'closed': {
172
- this.emit('@connectionstatechange', 'closed');
173
- break;
174
- }
175
- }
176
- });
135
+ logger.warn('run() | pc.connectionState not supported, using pc.iceConnectionState');
136
+ this._pc.addEventListener('iceconnectionstatechange', this.onIceConnectionStateChange);
137
+ }
138
+ }
139
+ get name() {
140
+ return NAME;
141
+ }
142
+ close() {
143
+ logger.debug('close()');
144
+ if (this._closed) {
145
+ return;
146
+ }
147
+ this._closed = true;
148
+ // Close RTCPeerConnection.
149
+ try {
150
+ this._pc.close();
177
151
  }
152
+ catch (error) { }
153
+ this._pc.removeEventListener('icegatheringstatechange', this.onIceGatheringStateChange);
154
+ this._pc.removeEventListener('icecandidateerror', this.onIceCandidateError);
155
+ this._pc.removeEventListener('connectionstatechange', this.onConnectionStateChange);
156
+ this._pc.removeEventListener('iceconnectionstatechange', this.onIceConnectionStateChange);
157
+ this.emit('@close');
158
+ // Invoke close() in EnhancedEventEmitter classes.
159
+ super.close();
178
160
  }
179
161
  async updateIceServers(iceServers) {
180
162
  this.assertNotClosed();
@@ -195,12 +177,18 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
195
177
  const offer = await this._pc.createOffer({ iceRestart: true });
196
178
  logger.debug('restartIce() | calling pc.setLocalDescription() [offer:%o]', offer);
197
179
  await this._pc.setLocalDescription(offer);
198
- const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
180
+ const answer = {
181
+ type: 'answer',
182
+ sdp: this._remoteSdp.getSdp(),
183
+ };
199
184
  logger.debug('restartIce() | calling pc.setRemoteDescription() [answer:%o]', answer);
200
185
  await this._pc.setRemoteDescription(answer);
201
186
  }
202
187
  else {
203
- const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
188
+ const offer = {
189
+ type: 'offer',
190
+ sdp: this._remoteSdp.getSdp(),
191
+ };
204
192
  logger.debug('restartIce() | calling pc.setRemoteDescription() [offer:%o]', offer);
205
193
  await this._pc.setRemoteDescription(offer);
206
194
  const answer = await this._pc.createAnswer();
@@ -232,8 +220,6 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
232
220
  }
233
221
  let offer = await this._pc.createOffer();
234
222
  let localSdpObject = sdpTransform.parse(offer.sdp);
235
- // @ts-expect-error --- sdpTransform.SessionDescription type doesn't
236
- // define extmapAllowMixed field.
237
223
  if (localSdpObject.extmapAllowMixed) {
238
224
  this._remoteSdp.setSessionExtmapAllowMixed();
239
225
  }
@@ -253,7 +239,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
253
239
  offerMediaObject,
254
240
  numStreams: encodings.length,
255
241
  });
256
- offer = { type: 'offer', sdp: sdpTransform.write(localSdpObject) };
242
+ offer = {
243
+ type: 'offer',
244
+ sdp: sdpTransform.write(localSdpObject),
245
+ };
257
246
  }
258
247
  logger.debug('send() | calling pc.setLocalDescription() [offer:%o]', offer);
259
248
  await this._pc.setLocalDescription(offer);
@@ -300,7 +289,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
300
289
  answerRtpParameters: sendingRemoteRtpParameters,
301
290
  codecOptions,
302
291
  });
303
- const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
292
+ const answer = {
293
+ type: 'answer',
294
+ sdp: this._remoteSdp.getSdp(),
295
+ };
304
296
  logger.debug('send() | calling pc.setRemoteDescription() [answer:%o]', answer);
305
297
  await this._pc.setRemoteDescription(answer);
306
298
  // Store in the map.
@@ -333,7 +325,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
333
325
  const offer = await this._pc.createOffer();
334
326
  logger.debug('stopSending() | calling pc.setLocalDescription() [offer:%o]', offer);
335
327
  await this._pc.setLocalDescription(offer);
336
- const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
328
+ const answer = {
329
+ type: 'answer',
330
+ sdp: this._remoteSdp.getSdp(),
331
+ };
337
332
  logger.debug('stopSending() | calling pc.setRemoteDescription() [answer:%o]', answer);
338
333
  await this._pc.setRemoteDescription(answer);
339
334
  this._mapMidTransceiver.delete(localId);
@@ -351,7 +346,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
351
346
  const offer = await this._pc.createOffer();
352
347
  logger.debug('pauseSending() | calling pc.setLocalDescription() [offer:%o]', offer);
353
348
  await this._pc.setLocalDescription(offer);
354
- const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
349
+ const answer = {
350
+ type: 'answer',
351
+ sdp: this._remoteSdp.getSdp(),
352
+ };
355
353
  logger.debug('pauseSending() | calling pc.setRemoteDescription() [answer:%o]', answer);
356
354
  await this._pc.setRemoteDescription(answer);
357
355
  }
@@ -368,7 +366,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
368
366
  const offer = await this._pc.createOffer();
369
367
  logger.debug('resumeSending() | calling pc.setLocalDescription() [offer:%o]', offer);
370
368
  await this._pc.setLocalDescription(offer);
371
- const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
369
+ const answer = {
370
+ type: 'answer',
371
+ sdp: this._remoteSdp.getSdp(),
372
+ };
372
373
  logger.debug('resumeSending() | calling pc.setRemoteDescription() [answer:%o]', answer);
373
374
  await this._pc.setRemoteDescription(answer);
374
375
  }
@@ -409,7 +410,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
409
410
  const offer = await this._pc.createOffer();
410
411
  logger.debug('setMaxSpatialLayer() | calling pc.setLocalDescription() [offer:%o]', offer);
411
412
  await this._pc.setLocalDescription(offer);
412
- const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
413
+ const answer = {
414
+ type: 'answer',
415
+ sdp: this._remoteSdp.getSdp(),
416
+ };
413
417
  logger.debug('setMaxSpatialLayer() | calling pc.setRemoteDescription() [answer:%o]', answer);
414
418
  await this._pc.setRemoteDescription(answer);
415
419
  }
@@ -430,7 +434,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
430
434
  const offer = await this._pc.createOffer();
431
435
  logger.debug('setRtpEncodingParameters() | calling pc.setLocalDescription() [offer:%o]', offer);
432
436
  await this._pc.setLocalDescription(offer);
433
- const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
437
+ const answer = {
438
+ type: 'answer',
439
+ sdp: this._remoteSdp.getSdp(),
440
+ };
434
441
  logger.debug('setRtpEncodingParameters() | calling pc.setRemoteDescription() [answer:%o]', answer);
435
442
  await this._pc.setRemoteDescription(answer);
436
443
  }
@@ -464,7 +471,7 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
464
471
  if (!this._hasDataChannelMediaSection) {
465
472
  const offer = await this._pc.createOffer();
466
473
  const localSdpObject = sdpTransform.parse(offer.sdp);
467
- const offerMediaObject = localSdpObject.media.find((m) => m.type === 'application');
474
+ const offerMediaObject = localSdpObject.media.find(m => m.type === 'application');
468
475
  if (!this._transportReady) {
469
476
  await this.setupTransport({
470
477
  localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
@@ -474,7 +481,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
474
481
  logger.debug('sendDataChannel() | calling pc.setLocalDescription() [offer:%o]', offer);
475
482
  await this._pc.setLocalDescription(offer);
476
483
  this._remoteSdp.sendSctpAssociation({ offerMediaObject });
477
- const answer = { type: 'answer', sdp: this._remoteSdp.getSdp() };
484
+ const answer = {
485
+ type: 'answer',
486
+ sdp: this._remoteSdp.getSdp(),
487
+ };
478
488
  logger.debug('sendDataChannel() | calling pc.setRemoteDescription() [answer:%o]', answer);
479
489
  await this._pc.setRemoteDescription(answer);
480
490
  this._hasDataChannelMediaSection = true;
@@ -505,7 +515,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
505
515
  trackId,
506
516
  });
507
517
  }
508
- const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
518
+ const offer = {
519
+ type: 'offer',
520
+ sdp: this._remoteSdp.getSdp(),
521
+ };
509
522
  logger.debug('receive() | calling pc.setRemoteDescription() [offer:%o]', offer);
510
523
  await this._pc.setRemoteDescription(offer);
511
524
  for (const options of optionsList) {
@@ -526,7 +539,7 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
526
539
  for (const options of optionsList) {
527
540
  const { trackId, rtpParameters } = options;
528
541
  const localId = mapLocalId.get(trackId);
529
- const answerMediaObject = localSdpObject.media.find((m) => String(m.mid) === localId);
542
+ const answerMediaObject = localSdpObject.media.find(m => String(m.mid) === localId);
530
543
  // May need to modify codec parameters in the answer based on codec
531
544
  // parameters in the offer.
532
545
  sdpCommonUtils.applyCodecParameters({
@@ -534,7 +547,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
534
547
  answerMediaObject,
535
548
  });
536
549
  }
537
- answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
550
+ answer = {
551
+ type: 'answer',
552
+ sdp: sdpTransform.write(localSdpObject),
553
+ };
538
554
  if (!this._transportReady) {
539
555
  await this.setupTransport({
540
556
  localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
@@ -575,7 +591,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
575
591
  }
576
592
  this._remoteSdp.closeMediaSection(transceiver.mid);
577
593
  }
578
- const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
594
+ const offer = {
595
+ type: 'offer',
596
+ sdp: this._remoteSdp.getSdp(),
597
+ };
579
598
  logger.debug('stopReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
580
599
  await this._pc.setRemoteDescription(offer);
581
600
  const answer = await this._pc.createAnswer();
@@ -597,7 +616,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
597
616
  transceiver.direction = 'inactive';
598
617
  this._remoteSdp.pauseMediaSection(localId);
599
618
  }
600
- const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
619
+ const offer = {
620
+ type: 'offer',
621
+ sdp: this._remoteSdp.getSdp(),
622
+ };
601
623
  logger.debug('pauseReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
602
624
  await this._pc.setRemoteDescription(offer);
603
625
  const answer = await this._pc.createAnswer();
@@ -616,7 +638,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
616
638
  transceiver.direction = 'recvonly';
617
639
  this._remoteSdp.resumeReceivingMediaSection(localId);
618
640
  }
619
- const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
641
+ const offer = {
642
+ type: 'offer',
643
+ sdp: this._remoteSdp.getSdp(),
644
+ };
620
645
  logger.debug('resumeReceiving() | calling pc.setRemoteDescription() [offer:%o]', offer);
621
646
  await this._pc.setRemoteDescription(offer);
622
647
  const answer = await this._pc.createAnswer();
@@ -650,7 +675,10 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
650
675
  // m=application section.
651
676
  if (!this._hasDataChannelMediaSection) {
652
677
  this._remoteSdp.receiveSctpAssociation();
653
- const offer = { type: 'offer', sdp: this._remoteSdp.getSdp() };
678
+ const offer = {
679
+ type: 'offer',
680
+ sdp: this._remoteSdp.getSdp(),
681
+ };
654
682
  logger.debug('receiveDataChannel() | calling pc.setRemoteDescription() [offer:%o]', offer);
655
683
  await this._pc.setRemoteDescription(offer);
656
684
  const answer = await this._pc.createAnswer();
@@ -685,6 +713,40 @@ class Safari12 extends HandlerInterface_1.HandlerInterface {
685
713
  });
686
714
  this._transportReady = true;
687
715
  }
716
+ onIceGatheringStateChange = () => {
717
+ this.emit('@icegatheringstatechange', this._pc.iceGatheringState);
718
+ };
719
+ onIceCandidateError = (event) => {
720
+ this.emit('@icecandidateerror', event);
721
+ };
722
+ onConnectionStateChange = () => {
723
+ this.emit('@connectionstatechange', this._pc.connectionState);
724
+ };
725
+ onIceConnectionStateChange = () => {
726
+ switch (this._pc.iceConnectionState) {
727
+ case 'checking': {
728
+ this.emit('@connectionstatechange', 'connecting');
729
+ break;
730
+ }
731
+ case 'connected':
732
+ case 'completed': {
733
+ this.emit('@connectionstatechange', 'connected');
734
+ break;
735
+ }
736
+ case 'failed': {
737
+ this.emit('@connectionstatechange', 'failed');
738
+ break;
739
+ }
740
+ case 'disconnected': {
741
+ this.emit('@connectionstatechange', 'disconnected');
742
+ break;
743
+ }
744
+ case 'closed': {
745
+ this.emit('@connectionstatechange', 'closed');
746
+ break;
747
+ }
748
+ }
749
+ };
688
750
  assertNotClosed() {
689
751
  if (this._closed) {
690
752
  throw new errors_1.InvalidStateError('method called in a closed handler');
@@ -1,9 +1,10 @@
1
+ import type * as SdpTransform from 'sdp-transform';
1
2
  import type { IceParameters, IceCandidate, DtlsParameters, DtlsRole, PlainRtpParameters } from '../../Transport';
2
3
  import type { ProducerCodecOptions } from '../../Producer';
3
4
  import type { MediaKind, RtpParameters } from '../../RtpParameters';
4
5
  import type { SctpParameters } from '../../SctpParameters';
5
6
  export declare abstract class MediaSection {
6
- protected readonly _mediaObject: any;
7
+ protected readonly _mediaObject: SdpTransform.MediaDescription;
7
8
  constructor({ iceParameters, iceCandidates, dtlsParameters, }: {
8
9
  iceParameters?: IceParameters;
9
10
  iceCandidates?: IceCandidate[];
@@ -12,7 +13,7 @@ export declare abstract class MediaSection {
12
13
  abstract setDtlsRole(role: DtlsRole): void;
13
14
  get mid(): string;
14
15
  get closed(): boolean;
15
- getObject(): object;
16
+ getObject(): SdpTransform.MediaDescription;
16
17
  setIceParameters(iceParameters: IceParameters): void;
17
18
  pause(): void;
18
19
  abstract resume(): void;
@@ -26,7 +27,7 @@ export declare class AnswerMediaSection extends MediaSection {
26
27
  dtlsParameters?: DtlsParameters;
27
28
  sctpParameters?: SctpParameters;
28
29
  plainRtpParameters?: PlainRtpParameters;
29
- offerMediaObject: any;
30
+ offerMediaObject: SdpTransform.MediaDescription;
30
31
  offerRtpParameters?: RtpParameters;
31
32
  answerRtpParameters?: RtpParameters;
32
33
  codecOptions?: ProducerCodecOptions;
@@ -36,7 +37,7 @@ export declare class AnswerMediaSection extends MediaSection {
36
37
  muxSimulcastStreams(encodings: RTCRtpEncodingParameters[]): void;
37
38
  }
38
39
  export declare class OfferMediaSection extends MediaSection {
39
- constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, mid, kind, offerRtpParameters, streamId, trackId, oldDataChannelSpec, }: {
40
+ constructor({ iceParameters, iceCandidates, dtlsParameters, sctpParameters, plainRtpParameters, mid, kind, offerRtpParameters, streamId, trackId, }: {
40
41
  iceParameters?: IceParameters;
41
42
  iceCandidates?: IceCandidate[];
42
43
  dtlsParameters?: DtlsParameters;
@@ -47,7 +48,6 @@ export declare class OfferMediaSection extends MediaSection {
47
48
  offerRtpParameters?: RtpParameters;
48
49
  streamId?: string;
49
50
  trackId?: string;
50
- oldDataChannelSpec?: boolean;
51
51
  });
52
52
  setDtlsRole(role: DtlsRole): void;
53
53
  resume(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"MediaSection.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/MediaSection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EACX,SAAS,EACT,aAAa,EAIb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,8BAAsB,YAAY;IAEjC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC;gBAEzB,EACX,aAAa,EACb,aAAa,EACb,cAAc,GACd,EAAE;QACF,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;QAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;KAChC;IAyCD,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAE1C,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,SAAS,IAAI,MAAM;IAInB,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAKpD,KAAK,IAAI,IAAI;IAIb,QAAQ,CAAC,MAAM,IAAI,IAAI;IAEvB,OAAO,IAAI,IAAI;IAYf,KAAK,IAAI,IAAI;CAKb;AAED,qBAAa,kBAAmB,SAAQ,YAAY;gBACvC,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GACZ,EAAE;QACF,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;QAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;QACxC,gBAAgB,EAAE,GAAG,CAAC;QACtB,kBAAkB,CAAC,EAAE,aAAa,CAAC;QACnC,mBAAmB,CAAC,EAAE,aAAa,CAAC;QACpC,YAAY,CAAC,EAAE,oBAAoB,CAAC;KACpC;IA+PD,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAsBjC,MAAM,IAAI,IAAI;IAId,mBAAmB,CAAC,SAAS,EAAE,wBAAwB,EAAE,GAAG,IAAI;CA6BhE;AAED,qBAAa,iBAAkB,SAAQ,YAAY;gBACtC,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,GAAG,EACH,IAAI,EACJ,kBAAkB,EAClB,QAAQ,EACR,OAAO,EACP,kBAA0B,GAC1B,EAAE;QACF,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;QAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;QACxC,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,SAAS,GAAG,aAAa,CAAC;QAChC,kBAAkB,CAAC,EAAE,aAAa,CAAC;QACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;KAC7B;IAsJD,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAKjC,MAAM,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"MediaSection.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/MediaSection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,YAAY,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EACX,aAAa,EACb,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,KAAK,EACX,SAAS,EACT,aAAa,EAGb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,8BAAsB,YAAY;IAEjC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC,gBAAgB,CAAC;gBAEnD,EACX,aAAa,EACb,aAAa,EACb,cAAc,GACd,EAAE;QACF,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;QAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;KAChC;IAmDD,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAE1C,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,MAAM,IAAI,OAAO,CAEpB;IAED,SAAS,IAAI,YAAY,CAAC,gBAAgB;IAI1C,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI;IAKpD,KAAK,IAAI,IAAI;IAIb,QAAQ,CAAC,MAAM,IAAI,IAAI;IAEvB,OAAO,IAAI,IAAI;IAYf,KAAK,IAAI,IAAI;CAKb;AAED,qBAAa,kBAAmB,SAAQ,YAAY;gBACvC,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GACZ,EAAE;QACF,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;QAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;QACxC,gBAAgB,EAAE,YAAY,CAAC,gBAAgB,CAAC;QAChD,kBAAkB,CAAC,EAAE,aAAa,CAAC;QACnC,mBAAmB,CAAC,EAAE,aAAa,CAAC;QACpC,YAAY,CAAC,EAAE,oBAAoB,CAAC;KACpC;IAiQD,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAsBjC,MAAM,IAAI,IAAI;IAId,mBAAmB,CAAC,SAAS,EAAE,wBAAwB,EAAE,GAAG,IAAI;CA6BhE;AAED,qBAAa,iBAAkB,SAAQ,YAAY;gBACtC,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,GAAG,EACH,IAAI,EACJ,kBAAkB,EAClB,QAAQ,EACR,OAAO,GACP,EAAE;QACF,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;QAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;QACxC,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,SAAS,GAAG,aAAa,CAAC;QAChC,kBAAkB,CAAC,EAAE,aAAa,CAAC;QACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KACjB;IA4ID,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAKjC,MAAM,IAAI,IAAI;CAGd"}