mediasoup-client 3.6.67 → 3.6.69

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 (57) hide show
  1. package/lib/Consumer.d.ts +4 -3
  2. package/lib/Consumer.d.ts.map +1 -1
  3. package/lib/Consumer.js +9 -9
  4. package/lib/DataConsumer.d.ts +1 -1
  5. package/lib/DataConsumer.d.ts.map +1 -1
  6. package/lib/DataConsumer.js +2 -2
  7. package/lib/DataProducer.d.ts +1 -1
  8. package/lib/DataProducer.d.ts.map +1 -1
  9. package/lib/DataProducer.js +2 -2
  10. package/lib/Device.d.ts +1 -1
  11. package/lib/Device.d.ts.map +1 -1
  12. package/lib/Device.js +5 -5
  13. package/lib/Producer.d.ts +3 -3
  14. package/lib/Producer.d.ts.map +1 -1
  15. package/lib/Producer.js +11 -11
  16. package/lib/Transport.d.ts +10 -10
  17. package/lib/Transport.d.ts.map +1 -1
  18. package/lib/Transport.js +49 -43
  19. package/lib/handlers/Chrome55.d.ts +3 -3
  20. package/lib/handlers/Chrome55.d.ts.map +1 -1
  21. package/lib/handlers/Chrome55.js +16 -17
  22. package/lib/handlers/Chrome67.d.ts +3 -3
  23. package/lib/handlers/Chrome67.d.ts.map +1 -1
  24. package/lib/handlers/Chrome67.js +21 -23
  25. package/lib/handlers/Chrome70.d.ts +3 -3
  26. package/lib/handlers/Chrome70.d.ts.map +1 -1
  27. package/lib/handlers/Chrome70.js +20 -20
  28. package/lib/handlers/Chrome74.d.ts +3 -3
  29. package/lib/handlers/Chrome74.d.ts.map +1 -1
  30. package/lib/handlers/Chrome74.js +24 -24
  31. package/lib/handlers/Edge11.d.ts +4 -4
  32. package/lib/handlers/Edge11.d.ts.map +1 -1
  33. package/lib/handlers/Edge11.js +11 -11
  34. package/lib/handlers/FakeHandler.d.ts +1 -1
  35. package/lib/handlers/FakeHandler.d.ts.map +1 -1
  36. package/lib/handlers/FakeHandler.js +5 -5
  37. package/lib/handlers/Firefox60.d.ts +3 -3
  38. package/lib/handlers/Firefox60.d.ts.map +1 -1
  39. package/lib/handlers/Firefox60.js +23 -23
  40. package/lib/handlers/HandlerInterface.d.ts +7 -0
  41. package/lib/handlers/HandlerInterface.d.ts.map +1 -1
  42. package/lib/handlers/ReactNative.d.ts +3 -3
  43. package/lib/handlers/ReactNative.d.ts.map +1 -1
  44. package/lib/handlers/ReactNative.js +14 -14
  45. package/lib/handlers/ReactNativeUnifiedPlan.d.ts +3 -3
  46. package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +1 -1
  47. package/lib/handlers/ReactNativeUnifiedPlan.js +24 -24
  48. package/lib/handlers/Safari11.d.ts +3 -3
  49. package/lib/handlers/Safari11.d.ts.map +1 -1
  50. package/lib/handlers/Safari11.js +20 -20
  51. package/lib/handlers/Safari12.d.ts +3 -3
  52. package/lib/handlers/Safari12.d.ts.map +1 -1
  53. package/lib/handlers/Safari12.js +24 -24
  54. package/lib/index.d.ts +1 -1
  55. package/lib/index.js +1 -1
  56. package/npm-scripts.js +1 -1
  57. package/package.json +8 -8
package/lib/Transport.js CHANGED
@@ -62,7 +62,7 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
62
62
  // Whether the Consumer for RTP probation has been created.
63
63
  this._probatorConsumerCreated = false;
64
64
  // AwaitQueue instance to make async tasks happen sequentially.
65
- this._awaitQueue = new awaitqueue_1.AwaitQueue({ ClosedErrorClass: errors_1.InvalidStateError });
65
+ this._awaitQueue = new awaitqueue_1.AwaitQueue();
66
66
  // Consumer creation tasks awaiting to be processed.
67
67
  this._pendingConsumerTasks = [];
68
68
  // Consumer creation in progress flag.
@@ -109,7 +109,7 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
109
109
  extendedRtpCapabilities
110
110
  });
111
111
  this._appData = appData || {};
112
- this._handleHandler();
112
+ this.handleHandler();
113
113
  }
114
114
  /**
115
115
  * Transport id.
@@ -165,8 +165,8 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
165
165
  return;
166
166
  logger.debug('close()');
167
167
  this._closed = true;
168
- // Close the AwaitQueue.
169
- this._awaitQueue.close();
168
+ // Stop the AwaitQueue.
169
+ this._awaitQueue.stop();
170
170
  // Close the handler.
171
171
  this._handler.close();
172
172
  // Close all Producers.
@@ -231,7 +231,9 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
231
231
  */
232
232
  async produce({ track, encodings, codecOptions, codec, stopTracks = true, disableTrackOnPause = true, zeroRtpOnPause = false, appData = {} } = {}) {
233
233
  logger.debug('produce() [track:%o]', track);
234
- if (!track)
234
+ if (this._closed)
235
+ throw new errors_1.InvalidStateError('closed');
236
+ else if (!track)
235
237
  throw new TypeError('missing track');
236
238
  else if (this._direction !== 'send')
237
239
  throw new errors_1.UnsupportedError('not a sending Transport');
@@ -307,7 +309,7 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
307
309
  appData
308
310
  });
309
311
  this._producers.set(producer.id, producer);
310
- this._handleProducer(producer);
312
+ this.handleProducer(producer);
311
313
  // Emit observer event.
312
314
  this._observer.safeEmit('newproducer', producer);
313
315
  return producer;
@@ -333,7 +335,7 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
333
335
  /**
334
336
  * Create a Consumer to consume a remote Producer.
335
337
  */
336
- async consume({ id, producerId, kind, rtpParameters, appData = {} }) {
338
+ async consume({ id, producerId, kind, rtpParameters, streamId, appData = {} }) {
337
339
  logger.debug('consume()');
338
340
  rtpParameters = utils.clone(rtpParameters, undefined);
339
341
  if (this._closed)
@@ -359,13 +361,14 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
359
361
  producerId,
360
362
  kind,
361
363
  rtpParameters,
364
+ streamId,
362
365
  appData
363
366
  });
364
367
  // Store the Consumer creation task.
365
368
  this._pendingConsumerTasks.push(consumerCreationTask);
366
369
  // There is no Consumer creation in progress, create it now.
367
370
  if (this._consumerCreationInProgress === false) {
368
- this._createPendingConsumers();
371
+ this.createPendingConsumers();
369
372
  }
370
373
  return consumerCreationTask.promise;
371
374
  }
@@ -374,7 +377,9 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
374
377
  */
375
378
  async produceData({ ordered = true, maxPacketLifeTime, maxRetransmits, label = '', protocol = '', appData = {} } = {}) {
376
379
  logger.debug('produceData()');
377
- if (this._direction !== 'send')
380
+ if (this._closed)
381
+ throw new errors_1.InvalidStateError('closed');
382
+ else if (this._direction !== 'send')
378
383
  throw new errors_1.UnsupportedError('not a sending Transport');
379
384
  else if (!this._maxSctpMessageSize)
380
385
  throw new errors_1.UnsupportedError('SCTP not enabled by remote Transport');
@@ -407,7 +412,7 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
407
412
  });
408
413
  const dataProducer = new DataProducer_1.DataProducer({ id, dataChannel, sctpStreamParameters, appData });
409
414
  this._dataProducers.set(dataProducer.id, dataProducer);
410
- this._handleDataProducer(dataProducer);
415
+ this.handleDataProducer(dataProducer);
411
416
  // Emit observer event.
412
417
  this._observer.safeEmit('newdataproducer', dataProducer);
413
418
  return dataProducer;
@@ -450,18 +455,18 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
450
455
  appData
451
456
  });
452
457
  this._dataConsumers.set(dataConsumer.id, dataConsumer);
453
- this._handleDataConsumer(dataConsumer);
458
+ this.handleDataConsumer(dataConsumer);
454
459
  // Emit observer event.
455
460
  this._observer.safeEmit('newdataconsumer', dataConsumer);
456
461
  return dataConsumer;
457
462
  }, 'transport.consumeData()');
458
463
  }
459
464
  // This method is guaranteed to never throw.
460
- async _createPendingConsumers() {
465
+ async createPendingConsumers() {
461
466
  this._consumerCreationInProgress = true;
462
467
  this._awaitQueue.push(async () => {
463
468
  if (this._pendingConsumerTasks.length === 0) {
464
- logger.debug('_createPendingConsumers() | there is no Consumer to be created');
469
+ logger.debug('createPendingConsumers() | there is no Consumer to be created');
465
470
  return;
466
471
  }
467
472
  const pendingConsumerTasks = [...this._pendingConsumerTasks];
@@ -472,11 +477,12 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
472
477
  // Fill options list.
473
478
  const optionsList = [];
474
479
  for (const task of pendingConsumerTasks) {
475
- const { id, kind, rtpParameters } = task.consumerOptions;
480
+ const { id, kind, rtpParameters, streamId } = task.consumerOptions;
476
481
  optionsList.push({
477
482
  trackId: id,
478
483
  kind: kind,
479
- rtpParameters
484
+ rtpParameters,
485
+ streamId
480
486
  });
481
487
  }
482
488
  try {
@@ -496,7 +502,7 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
496
502
  appData
497
503
  });
498
504
  this._consumers.set(consumer.id, consumer);
499
- this._handleConsumer(consumer);
505
+ this.handleConsumer(consumer);
500
506
  // If this is the first video Consumer and the Consumer for RTP probation
501
507
  // has not yet been created, it's time to create it.
502
508
  if (!this._probatorConsumerCreated && !videoConsumerForProbator && kind === 'video') {
@@ -521,29 +527,29 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
521
527
  kind: 'video',
522
528
  rtpParameters: probatorRtpParameters
523
529
  }]);
524
- logger.debug('_createPendingConsumers() | Consumer for RTP probation created');
530
+ logger.debug('createPendingConsumers() | Consumer for RTP probation created');
525
531
  this._probatorConsumerCreated = true;
526
532
  }
527
533
  catch (error) {
528
- logger.error('_createPendingConsumers() | failed to create Consumer for RTP probation:%o', error);
534
+ logger.error('createPendingConsumers() | failed to create Consumer for RTP probation:%o', error);
529
535
  }
530
536
  }
531
- }, 'transport._createPendingConsumers()')
537
+ }, 'transport.createPendingConsumers()')
532
538
  .then(() => {
533
539
  this._consumerCreationInProgress = false;
534
540
  // There are pending Consumer tasks, enqueue their creation.
535
541
  if (this._pendingConsumerTasks.length > 0) {
536
- this._createPendingConsumers();
542
+ this.createPendingConsumers();
537
543
  }
538
544
  })
539
545
  // NOTE: We only get here when the await queue is closed.
540
546
  .catch(() => { });
541
547
  }
542
- _pausePendingConsumers() {
548
+ pausePendingConsumers() {
543
549
  this._consumerPauseInProgress = true;
544
550
  this._awaitQueue.push(async () => {
545
551
  if (this._pendingPauseConsumers.size === 0) {
546
- logger.debug('_pausePendingConsumers() | there is no Consumer to be paused');
552
+ logger.debug('pausePendingConsumers() | there is no Consumer to be paused');
547
553
  return;
548
554
  }
549
555
  const pendingPauseConsumers = Array.from(this._pendingPauseConsumers.values());
@@ -555,24 +561,24 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
555
561
  await this._handler.pauseReceiving(localIds);
556
562
  }
557
563
  catch (error) {
558
- logger.error('_pausePendingConsumers() | failed to pause Consumers:', error);
564
+ logger.error('pausePendingConsumers() | failed to pause Consumers:', error);
559
565
  }
560
- }, 'transport._pausePendingConsumers')
566
+ }, 'transport.pausePendingConsumers')
561
567
  .then(() => {
562
568
  this._consumerPauseInProgress = false;
563
569
  // There are pending Consumers to be paused, do it.
564
570
  if (this._pendingPauseConsumers.size > 0) {
565
- this._pausePendingConsumers();
571
+ this.pausePendingConsumers();
566
572
  }
567
573
  })
568
574
  // NOTE: We only get here when the await queue is closed.
569
575
  .catch(() => { });
570
576
  }
571
- _resumePendingConsumers() {
577
+ resumePendingConsumers() {
572
578
  this._consumerResumeInProgress = true;
573
579
  this._awaitQueue.push(async () => {
574
580
  if (this._pendingResumeConsumers.size === 0) {
575
- logger.debug('_resumePendingConsumers() | there is no Consumer to be resumed');
581
+ logger.debug('resumePendingConsumers() | there is no Consumer to be resumed');
576
582
  return;
577
583
  }
578
584
  const pendingResumeConsumers = Array.from(this._pendingResumeConsumers.values());
@@ -584,24 +590,24 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
584
590
  await this._handler.resumeReceiving(localIds);
585
591
  }
586
592
  catch (error) {
587
- logger.error('_resumePendingConsumers() | failed to resume Consumers:', error);
593
+ logger.error('resumePendingConsumers() | failed to resume Consumers:', error);
588
594
  }
589
- }, 'transport._resumePendingConsumers')
595
+ }, 'transport.resumePendingConsumers')
590
596
  .then(() => {
591
597
  this._consumerResumeInProgress = false;
592
598
  // There are pending Consumer to be resumed, do it.
593
599
  if (this._pendingResumeConsumers.size > 0) {
594
- this._resumePendingConsumers();
600
+ this.resumePendingConsumers();
595
601
  }
596
602
  })
597
603
  // NOTE: We only get here when the await queue is closed.
598
604
  .catch(() => { });
599
605
  }
600
- _closePendingConsumers() {
606
+ closePendingConsumers() {
601
607
  this._consumerCloseInProgress = true;
602
608
  this._awaitQueue.push(async () => {
603
609
  if (this._pendingCloseConsumers.size === 0) {
604
- logger.debug('_closePendingConsumers() | there is no Consumer to be closed');
610
+ logger.debug('closePendingConsumers() | there is no Consumer to be closed');
605
611
  return;
606
612
  }
607
613
  const pendingCloseConsumers = Array.from(this._pendingCloseConsumers.values());
@@ -611,20 +617,20 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
611
617
  await this._handler.stopReceiving(pendingCloseConsumers.map((consumer) => consumer.localId));
612
618
  }
613
619
  catch (error) {
614
- logger.error('_closePendingConsumers() | failed to close Consumers:', error);
620
+ logger.error('closePendingConsumers() | failed to close Consumers:', error);
615
621
  }
616
- }, 'transport._closePendingConsumers')
622
+ }, 'transport.closePendingConsumers')
617
623
  .then(() => {
618
624
  this._consumerCloseInProgress = false;
619
625
  // There are pending Consumer to be resumed, do it.
620
626
  if (this._pendingCloseConsumers.size > 0) {
621
- this._closePendingConsumers();
627
+ this.closePendingConsumers();
622
628
  }
623
629
  })
624
630
  // NOTE: We only get here when the await queue is closed.
625
631
  .catch(() => { });
626
632
  }
627
- _handleHandler() {
633
+ handleHandler() {
628
634
  const handler = this._handler;
629
635
  handler.on('@connect', ({ dtlsParameters }, callback, errback) => {
630
636
  if (this._closed) {
@@ -642,7 +648,7 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
642
648
  this.safeEmit('connectionstatechange', connectionState);
643
649
  });
644
650
  }
645
- _handleProducer(producer) {
651
+ handleProducer(producer) {
646
652
  producer.on('@close', () => {
647
653
  this._producers.delete(producer.id);
648
654
  if (this._closed)
@@ -683,7 +689,7 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
683
689
  .catch(errback);
684
690
  });
685
691
  }
686
- _handleConsumer(consumer) {
692
+ handleConsumer(consumer) {
687
693
  consumer.on('@close', () => {
688
694
  this._consumers.delete(consumer.id);
689
695
  this._pendingPauseConsumers.delete(consumer.id);
@@ -694,7 +700,7 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
694
700
  this._pendingCloseConsumers.set(consumer.id, consumer);
695
701
  // There is no Consumer close in progress, do it now.
696
702
  if (this._consumerCloseInProgress === false) {
697
- this._closePendingConsumers();
703
+ this.closePendingConsumers();
698
704
  }
699
705
  });
700
706
  consumer.on('@pause', () => {
@@ -706,7 +712,7 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
706
712
  this._pendingPauseConsumers.set(consumer.id, consumer);
707
713
  // There is no Consumer pause in progress, do it now.
708
714
  if (this._consumerPauseInProgress === false) {
709
- this._pausePendingConsumers();
715
+ this.pausePendingConsumers();
710
716
  }
711
717
  });
712
718
  consumer.on('@resume', () => {
@@ -718,7 +724,7 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
718
724
  this._pendingResumeConsumers.set(consumer.id, consumer);
719
725
  // There is no Consumer resume in progress, do it now.
720
726
  if (this._consumerResumeInProgress === false) {
721
- this._resumePendingConsumers();
727
+ this.resumePendingConsumers();
722
728
  }
723
729
  });
724
730
  consumer.on('@getstats', (callback, errback) => {
@@ -729,12 +735,12 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
729
735
  .catch(errback);
730
736
  });
731
737
  }
732
- _handleDataProducer(dataProducer) {
738
+ handleDataProducer(dataProducer) {
733
739
  dataProducer.on('@close', () => {
734
740
  this._dataProducers.delete(dataProducer.id);
735
741
  });
736
742
  }
737
- _handleDataConsumer(dataConsumer) {
743
+ handleDataConsumer(dataConsumer) {
738
744
  dataConsumer.on('@close', () => {
739
745
  this._dataConsumers.delete(dataConsumer.id);
740
746
  });
@@ -44,8 +44,8 @@ export declare class Chrome55 extends HandlerInterface {
44
44
  resumeReceiving(localIds: string[]): Promise<void>;
45
45
  getReceiverStats(localId: string): Promise<RTCStatsReport>;
46
46
  receiveDataChannel({ sctpStreamParameters, label, protocol }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
47
- private _setupTransport;
48
- private _assertSendDirection;
49
- private _assertRecvDirection;
47
+ private setupTransport;
48
+ private assertSendDirection;
49
+ private assertRecvDirection;
50
50
  }
51
51
  //# sourceMappingURL=Chrome55.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chrome55.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome55.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chrome55.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome55.ts"],"names":[],"mappings":"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"}
@@ -206,7 +206,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
206
206
  }
207
207
  async send({ track, encodings, codecOptions, codec }) {
208
208
  var _a;
209
- this._assertSendDirection();
209
+ this.assertSendDirection();
210
210
  logger.debug('send() [kind:%s, track.id:%s]', track.kind, track.id);
211
211
  if (codec) {
212
212
  logger.warn('send() | codec selection is not available in %s handler', this.name);
@@ -223,7 +223,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
223
223
  sendingRemoteRtpParameters.codecs =
224
224
  ortc.reduceCodecs(sendingRemoteRtpParameters.codecs);
225
225
  if (!this._transportReady) {
226
- await this._setupTransport({
226
+ await this.setupTransport({
227
227
  localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
228
228
  localSdpObject
229
229
  });
@@ -284,7 +284,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
284
284
  };
285
285
  }
286
286
  async stopSending(localId) {
287
- this._assertSendDirection();
287
+ this.assertSendDirection();
288
288
  logger.debug('stopSending() [localId:%s]', localId);
289
289
  const track = this._mapSendLocalIdTrack.get(localId);
290
290
  if (!track)
@@ -339,7 +339,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
339
339
  }
340
340
  async sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }) {
341
341
  var _a;
342
- this._assertSendDirection();
342
+ this.assertSendDirection();
343
343
  const options = {
344
344
  negotiated: true,
345
345
  id: this._nextSendSctpStreamId,
@@ -362,7 +362,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
362
362
  const offerMediaObject = localSdpObject.media
363
363
  .find((m) => m.type === 'application');
364
364
  if (!this._transportReady) {
365
- await this._setupTransport({
365
+ await this.setupTransport({
366
366
  localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
367
367
  localSdpObject
368
368
  });
@@ -385,18 +385,17 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
385
385
  }
386
386
  async receive(optionsList) {
387
387
  var _a;
388
- this._assertRecvDirection();
388
+ this.assertRecvDirection();
389
389
  const results = [];
390
390
  for (const options of optionsList) {
391
- const { trackId, kind, rtpParameters } = options;
391
+ const { trackId, kind, rtpParameters, streamId } = options;
392
392
  logger.debug('receive() [trackId:%s, kind:%s]', trackId, kind);
393
393
  const mid = kind;
394
- const streamId = rtpParameters.rtcp.cname;
395
394
  this._remoteSdp.receive({
396
395
  mid,
397
396
  kind,
398
397
  offerRtpParameters: rtpParameters,
399
- streamId,
398
+ streamId: streamId || rtpParameters.rtcp.cname,
400
399
  trackId
401
400
  });
402
401
  }
@@ -419,7 +418,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
419
418
  }
420
419
  answer = { type: 'answer', sdp: sdpTransform.write(localSdpObject) };
421
420
  if (!this._transportReady) {
422
- await this._setupTransport({
421
+ await this.setupTransport({
423
422
  localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
424
423
  localSdpObject
425
424
  });
@@ -430,7 +429,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
430
429
  const { kind, trackId, rtpParameters } = options;
431
430
  const mid = kind;
432
431
  const localId = trackId;
433
- const streamId = rtpParameters.rtcp.cname;
432
+ const streamId = options.streamId || rtpParameters.rtcp.cname;
434
433
  const stream = this._pc.getRemoteStreams()
435
434
  .find((s) => s.id === streamId);
436
435
  const track = stream.getTrackById(localId);
@@ -443,7 +442,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
443
442
  return results;
444
443
  }
445
444
  async stopReceiving(localIds) {
446
- this._assertRecvDirection();
445
+ this.assertRecvDirection();
447
446
  for (const localId of localIds) {
448
447
  logger.debug('stopReceiving() [localId:%s]', localId);
449
448
  const { mid, rtpParameters } = this._mapRecvLocalIdInfo.get(localId) || {};
@@ -474,7 +473,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
474
473
  }
475
474
  async receiveDataChannel({ sctpStreamParameters, label, protocol }) {
476
475
  var _a;
477
- this._assertRecvDirection();
476
+ this.assertRecvDirection();
478
477
  const { streamId, ordered, maxPacketLifeTime, maxRetransmits } = sctpStreamParameters;
479
478
  const options = {
480
479
  negotiated: true,
@@ -497,7 +496,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
497
496
  const answer = await this._pc.createAnswer();
498
497
  if (!this._transportReady) {
499
498
  const localSdpObject = sdpTransform.parse(answer.sdp);
500
- await this._setupTransport({
499
+ await this.setupTransport({
501
500
  localDtlsRole: (_a = this._forcedLocalDtlsRole) !== null && _a !== void 0 ? _a : 'client',
502
501
  localSdpObject
503
502
  });
@@ -508,7 +507,7 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
508
507
  }
509
508
  return { dataChannel };
510
509
  }
511
- async _setupTransport({ localDtlsRole, localSdpObject }) {
510
+ async setupTransport({ localDtlsRole, localSdpObject }) {
512
511
  if (!localSdpObject)
513
512
  localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
514
513
  // Get our local DTLS parameters.
@@ -523,12 +522,12 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
523
522
  });
524
523
  this._transportReady = true;
525
524
  }
526
- _assertSendDirection() {
525
+ assertSendDirection() {
527
526
  if (this._direction !== 'send') {
528
527
  throw new Error('method can just be called for handlers with "send" direction');
529
528
  }
530
529
  }
531
- _assertRecvDirection() {
530
+ assertRecvDirection() {
532
531
  if (this._direction !== 'recv') {
533
532
  throw new Error('method can just be called for handlers with "recv" direction');
534
533
  }
@@ -44,8 +44,8 @@ export declare class Chrome67 extends HandlerInterface {
44
44
  resumeReceiving(localIds: string[]): Promise<void>;
45
45
  getReceiverStats(localId: string): Promise<RTCStatsReport>;
46
46
  receiveDataChannel({ sctpStreamParameters, label, protocol }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
47
- private _setupTransport;
48
- private _assertSendDirection;
49
- private _assertRecvDirection;
47
+ private setupTransport;
48
+ private assertSendDirection;
49
+ private assertRecvDirection;
50
50
  }
51
51
  //# sourceMappingURL=Chrome67.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Chrome67.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome67.ts"],"names":[],"mappings":"AAMA,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAY,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,eAAe,EAAiB,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAM3E,qBAAa,QAAS,SAAQ,gBAAgB;IAG7C,OAAO,CAAC,UAAU,CAAC,CAAkB;IAErC,OAAO,CAAC,UAAU,CAAC,CAAY;IAE/B,OAAO,CAAC,2BAA2B,CAAC,CAAmC;IAGvE,OAAO,CAAC,iCAAiC,CAAC,CAAmC;IAG7E,OAAO,CAAC,oBAAoB,CAAC,CAAW;IAExC,OAAO,CAAC,GAAG,CAAM;IAEjB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAC9B;IAEX,OAAO,CAAC,gBAAgB,CAAK;IAG7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAQrB;IAEf,OAAO,CAAC,2BAA2B,CAAS;IAE5C,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,eAAe,CAAS;IAEhC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,cAAc;;IAUtC,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,KAAK,IAAI,IAAI;IAcP,wBAAwB,IAAI,OAAO,CAAC,eAAe,CAAC;IAuCpD,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAS5D,GAAG,CACF,EACC,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,EAAE,iBAAiB,GAClB,IAAI;IAkFD,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3D,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDvD,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAK5C,IAAI,CACT,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,kBAAkB,GAC3D,OAAO,CAAC,iBAAiB,CAAC;IAoIvB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyD3C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,YAAY,CACjB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7C,OAAO,CAAC,IAAI,CAAC;IAgCV,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BxE,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBrE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAYxD,eAAe,CACpB,EACC,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,KAAK,EACL,QAAQ,EACR,EAAE,6BAA6B,GAC9B,OAAO,CAAC,4BAA4B,CAAC;IAuElC,OAAO,CAEZ,WAAW,EAAE,qBAAqB,EAAE,GACjC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IA4F7B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkChD,cAAc,CAEnB,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7B,eAAe,CAEpB,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7B,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAY1D,kBAAkB,CACvB,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,gCAAgC,GACzE,OAAO,CAAC,+BAA+B,CAAC;YAiE7B,eAAe;IAuC7B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,oBAAoB;CAQ5B"}
1
+ {"version":3,"file":"Chrome67.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome67.ts"],"names":[],"mappings":"AAMA,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAY,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,eAAe,EAAiB,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAM3E,qBAAa,QAAS,SAAQ,gBAAgB;IAG7C,OAAO,CAAC,UAAU,CAAC,CAAkB;IAErC,OAAO,CAAC,UAAU,CAAC,CAAY;IAE/B,OAAO,CAAC,2BAA2B,CAAC,CAAmC;IAGvE,OAAO,CAAC,iCAAiC,CAAC,CAAmC;IAG7E,OAAO,CAAC,oBAAoB,CAAC,CAAW;IAExC,OAAO,CAAC,GAAG,CAAM;IAEjB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAC9B;IAEX,OAAO,CAAC,gBAAgB,CAAK;IAG7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAQrB;IAEf,OAAO,CAAC,2BAA2B,CAAS;IAE5C,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,eAAe,CAAS;IAEhC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,cAAc;;IAUtC,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,KAAK,IAAI,IAAI;IAcP,wBAAwB,IAAI,OAAO,CAAC,eAAe,CAAC;IAuCpD,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAS5D,GAAG,CACF,EACC,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,EAAE,iBAAiB,GAClB,IAAI;IAkFD,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3D,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDvD,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAK5C,IAAI,CACT,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,kBAAkB,GAC3D,OAAO,CAAC,iBAAiB,CAAC;IAoIvB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyD3C,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5C,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7C,YAAY,CACjB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7C,OAAO,CAAC,IAAI,CAAC;IAgCV,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BxE,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBrE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAYxD,eAAe,CACpB,EACC,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,KAAK,EACL,QAAQ,EACR,EAAE,6BAA6B,GAC9B,OAAO,CAAC,4BAA4B,CAAC;IAuElC,OAAO,CACZ,WAAW,EAAE,qBAAqB,EAAE,GACjC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IA4F7B,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAkChD,cAAc,CAEnB,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7B,eAAe,CAEpB,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAK7B,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAY1D,kBAAkB,CACvB,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,gCAAgC,GACzE,OAAO,CAAC,+BAA+B,CAAC;YAiE7B,cAAc;IAuC5B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,mBAAmB;CAQ3B"}