mediasoup-client 3.19.0 → 3.21.0

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.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 -1
  5. package/lib/DataProducer.d.ts.map +1 -1
  6. package/lib/DataProducer.js +8 -1
  7. package/lib/Device.d.ts +0 -8
  8. package/lib/Device.d.ts.map +1 -1
  9. package/lib/Device.js +36 -21
  10. package/lib/Logger.d.ts +1 -0
  11. package/lib/Logger.d.ts.map +1 -1
  12. package/lib/Logger.js +4 -1
  13. package/lib/Producer.d.ts.map +1 -1
  14. package/lib/Producer.js +3 -0
  15. package/lib/SctpParameters.d.ts +9 -22
  16. package/lib/SctpParameters.d.ts.map +1 -1
  17. package/lib/Transport.d.ts +2 -1
  18. package/lib/Transport.d.ts.map +1 -1
  19. package/lib/Transport.js +88 -25
  20. package/lib/handlers/Chrome111.d.ts +2 -0
  21. package/lib/handlers/Chrome111.d.ts.map +1 -1
  22. package/lib/handlers/Chrome111.js +51 -14
  23. package/lib/handlers/Chrome74.d.ts +2 -0
  24. package/lib/handlers/Chrome74.d.ts.map +1 -1
  25. package/lib/handlers/Chrome74.js +51 -14
  26. package/lib/handlers/FakeHandler.d.ts +1 -2
  27. package/lib/handlers/FakeHandler.d.ts.map +1 -1
  28. package/lib/handlers/FakeHandler.js +38 -6
  29. package/lib/handlers/Firefox120.d.ts +2 -0
  30. package/lib/handlers/Firefox120.d.ts.map +1 -1
  31. package/lib/handlers/Firefox120.js +51 -14
  32. package/lib/handlers/HandlerInterface.d.ts +3 -3
  33. package/lib/handlers/HandlerInterface.d.ts.map +1 -1
  34. package/lib/handlers/ReactNative106.d.ts +2 -0
  35. package/lib/handlers/ReactNative106.d.ts.map +1 -1
  36. package/lib/handlers/ReactNative106.js +51 -14
  37. package/lib/handlers/Safari12.d.ts +2 -0
  38. package/lib/handlers/Safari12.d.ts.map +1 -1
  39. package/lib/handlers/Safari12.js +51 -14
  40. package/lib/handlers/sdp/{MediaSection.d.ts → RemoteMediaSection.d.ts} +4 -4
  41. package/lib/handlers/sdp/RemoteMediaSection.d.ts.map +1 -0
  42. package/lib/handlers/sdp/{MediaSection.js → RemoteMediaSection.js} +47 -12
  43. package/lib/handlers/sdp/RemoteSdp.d.ts.map +1 -1
  44. package/lib/handlers/sdp/RemoteSdp.js +41 -8
  45. package/lib/handlers/sdp/commonUtils.js +34 -1
  46. package/lib/index.d.ts +1 -1
  47. package/lib/index.js +42 -6
  48. package/lib/ortc.d.ts +1 -6
  49. package/lib/ortc.d.ts.map +1 -1
  50. package/lib/ortc.js +35 -34
  51. package/lib/test/fakeParameters.d.ts +0 -1
  52. package/lib/test/fakeParameters.d.ts.map +1 -1
  53. package/lib/test/fakeParameters.js +36 -10
  54. package/lib/test/test.js +36 -9
  55. package/npm-scripts.mjs +20 -11
  56. package/package.json +13 -13
  57. package/lib/handlers/sdp/MediaSection.d.ts.map +0 -1
package/lib/Transport.js CHANGED
@@ -1,12 +1,45 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.Transport = void 0;
4
37
  const awaitqueue_1 = require("awaitqueue");
5
38
  const Logger_1 = require("./Logger");
6
39
  const enhancedEvents_1 = require("./enhancedEvents");
7
40
  const errors_1 = require("./errors");
8
- const utils = require("./utils");
9
- const ortc = require("./ortc");
41
+ const utils = __importStar(require("./utils"));
42
+ const ortc = __importStar(require("./ortc"));
10
43
  const Producer_1 = require("./Producer");
11
44
  const Consumer_1 = require("./Consumer");
12
45
  const DataProducer_1 = require("./DataProducer");
@@ -40,8 +73,8 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
40
73
  // Whether we can produce audio/video based on computed extended RTP
41
74
  // capabilities.
42
75
  _canProduceByKind;
43
- // SCTP max message size if enabled.
44
- _maxSctpMessageSize;
76
+ // SCTP parameters of the mediasoup transport.
77
+ _sctpParameters;
45
78
  // RTC handler isntance.
46
79
  _handler;
47
80
  // Transport ICE gathering state.
@@ -88,7 +121,17 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
88
121
  this._getSendExtendedRtpCapabilities = getSendExtendedRtpCapabilities;
89
122
  this._recvRtpCapabilities = recvRtpCapabilities;
90
123
  this._canProduceByKind = canProduceByKind;
91
- this._maxSctpMessageSize = sctpParameters?.maxMessageSize;
124
+ // NOTE: Let's clone received SctpParameters and adapt them to be backwards
125
+ // compatible with old mediasoup server versions.
126
+ this._sctpParameters = utils.clone(sctpParameters);
127
+ if (this._sctpParameters) {
128
+ this._sctpParameters.maxSendMessageSize =
129
+ this._sctpParameters.maxSendMessageSize ??
130
+ this._sctpParameters.maxMessageSize;
131
+ this._sctpParameters.maxReceiveMessageSize =
132
+ this._sctpParameters.maxReceiveMessageSize ??
133
+ this._sctpParameters.maxMessageSize;
134
+ }
92
135
  // Clone and sanitize additionalSettings.
93
136
  const clonedAdditionalSettings = utils.clone(additionalSettings) ?? {};
94
137
  delete clonedAdditionalSettings.iceServers;
@@ -100,7 +143,7 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
100
143
  iceParameters,
101
144
  iceCandidates,
102
145
  dtlsParameters,
103
- sctpParameters,
146
+ sctpParameters: this._sctpParameters,
104
147
  iceServers,
105
148
  iceTransportPolicy,
106
149
  additionalSettings: clonedAdditionalSettings,
@@ -225,7 +268,9 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
225
268
  throw new TypeError('missing iceParameters');
226
269
  }
227
270
  // Enqueue command.
228
- return this._awaitQueue.push(async () => await this._handler.restartIce(iceParameters), 'transport.restartIce()');
271
+ await this._awaitQueue.push(async () => {
272
+ await this._handler.restartIce(iceParameters);
273
+ }, 'transport.restartIce()');
229
274
  }
230
275
  /**
231
276
  * Update ICE servers.
@@ -239,7 +284,9 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
239
284
  throw new TypeError('missing iceServers');
240
285
  }
241
286
  // Enqueue command.
242
- return this._awaitQueue.push(async () => this._handler.updateIceServers(iceServers), 'transport.updateIceServers()');
287
+ await this._awaitQueue.push(async () => {
288
+ await this._handler.updateIceServers(iceServers);
289
+ }, 'transport.updateIceServers()');
243
290
  }
244
291
  /**
245
292
  * Create a Producer.
@@ -253,7 +300,7 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
253
300
  throw new TypeError('missing track');
254
301
  }
255
302
  else if (this._direction !== 'send') {
256
- throw new errors_1.UnsupportedError('not a sending Transport');
303
+ throw new errors_1.UnsupportedError('not a sending transport');
257
304
  }
258
305
  else if (!this._canProduceByKind[track.kind]) {
259
306
  throw new errors_1.UnsupportedError(`cannot produce ${track.kind}`);
@@ -379,7 +426,7 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
379
426
  throw new errors_1.InvalidStateError('closed');
380
427
  }
381
428
  else if (this._direction !== 'recv') {
382
- throw new errors_1.UnsupportedError('not a receiving Transport');
429
+ throw new errors_1.UnsupportedError('not a receiving transport');
383
430
  }
384
431
  else if (typeof id !== 'string') {
385
432
  throw new TypeError('missing id');
@@ -435,10 +482,10 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
435
482
  throw new errors_1.InvalidStateError('closed');
436
483
  }
437
484
  else if (this._direction !== 'send') {
438
- throw new errors_1.UnsupportedError('not a sending Transport');
485
+ throw new errors_1.UnsupportedError('not a sending transport');
439
486
  }
440
- else if (!this._maxSctpMessageSize) {
441
- throw new errors_1.UnsupportedError('SCTP not enabled by remote Transport');
487
+ else if (!this._sctpParameters) {
488
+ throw new errors_1.UnsupportedError('SCTP not enabled by remote transport');
442
489
  }
443
490
  else if (this.listenerCount('connect') === 0 &&
444
491
  this._connectionState === 'new') {
@@ -496,10 +543,10 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
496
543
  throw new errors_1.InvalidStateError('closed');
497
544
  }
498
545
  else if (this._direction !== 'recv') {
499
- throw new errors_1.UnsupportedError('not a receiving Transport');
546
+ throw new errors_1.UnsupportedError('not a receiving transport');
500
547
  }
501
- else if (!this._maxSctpMessageSize) {
502
- throw new errors_1.UnsupportedError('SCTP not enabled by remote Transport');
548
+ else if (!this._sctpParameters) {
549
+ throw new errors_1.UnsupportedError('SCTP not enabled by remote transport');
503
550
  }
504
551
  else if (typeof id !== 'string') {
505
552
  throw new TypeError('missing id');
@@ -521,7 +568,8 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
521
568
  // Enqueue command.
522
569
  return this._awaitQueue.push(async () => {
523
570
  const { dataChannel } = await this._handler.receiveDataChannel({
524
- maxMessageSize: this._maxSctpMessageSize,
571
+ // NOTE: Mirror it.
572
+ maxMessageSize: this._sctpParameters?.maxSendMessageSize,
525
573
  sctpStreamParameters: clonedSctpStreamParameters,
526
574
  label,
527
575
  protocol,
@@ -540,6 +588,9 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
540
588
  return dataConsumer;
541
589
  }, 'transport.consumeData()');
542
590
  }
591
+ getDataChannelMaxMessageSize() {
592
+ return this._handler.getDataChannelMaxMessageSize();
593
+ }
543
594
  // This method is guaranteed to never throw.
544
595
  createPendingConsumers() {
545
596
  this._consumerCreationInProgress = true;
@@ -736,7 +787,7 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
736
787
  }
737
788
  });
738
789
  handler.on('@icecandidateerror', (event) => {
739
- logger.warn(`ICE candidate error [url:${event.url}, localAddress:${event.address}, localPort:${event.port}]: ${event.errorCode} "${event.errorText}"`);
790
+ logger.debug(`ICE candidate error [url:${event.url}, localAddress:${event.address}, localPort:${event.port}]: ${event.errorCode} "${event.errorText}"`);
740
791
  this.safeEmit('icecandidateerror', event);
741
792
  });
742
793
  handler.on('@connectionstatechange', (connectionState) => {
@@ -757,36 +808,48 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
757
808
  return;
758
809
  }
759
810
  this._awaitQueue
760
- .push(async () => await this._handler.stopSending(producer.localId), 'producer @close event')
761
- .catch((error) => logger.warn('producer.close() failed:%o', error));
811
+ .push(async () => {
812
+ await this._handler.stopSending(producer.localId);
813
+ }, 'producer @close event')
814
+ .catch((error) => logger.warn('producer closure failed:%o', error));
762
815
  });
763
816
  producer.on('@pause', (callback, errback) => {
764
817
  this._awaitQueue
765
- .push(async () => await this._handler.pauseSending(producer.localId), 'producer @pause event')
818
+ .push(async () => {
819
+ await this._handler.pauseSending(producer.localId);
820
+ }, 'producer @pause event')
766
821
  .then(callback)
767
822
  .catch(errback);
768
823
  });
769
824
  producer.on('@resume', (callback, errback) => {
770
825
  this._awaitQueue
771
- .push(async () => await this._handler.resumeSending(producer.localId), 'producer @resume event')
826
+ .push(async () => {
827
+ await this._handler.resumeSending(producer.localId);
828
+ }, 'producer @resume event')
772
829
  .then(callback)
773
830
  .catch(errback);
774
831
  });
775
832
  producer.on('@replacetrack', (track, callback, errback) => {
776
833
  this._awaitQueue
777
- .push(async () => await this._handler.replaceTrack(producer.localId, track), 'producer @replacetrack event')
834
+ .push(async () => {
835
+ await this._handler.replaceTrack(producer.localId, track);
836
+ }, 'producer @replacetrack event')
778
837
  .then(callback)
779
838
  .catch(errback);
780
839
  });
781
840
  producer.on('@setmaxspatiallayer', (spatialLayer, callback, errback) => {
782
841
  this._awaitQueue
783
- .push(async () => await this._handler.setMaxSpatialLayer(producer.localId, spatialLayer), 'producer @setmaxspatiallayer event')
842
+ .push(async () => {
843
+ await this._handler.setMaxSpatialLayer(producer.localId, spatialLayer);
844
+ }, 'producer @setmaxspatiallayer event')
784
845
  .then(callback)
785
846
  .catch(errback);
786
847
  });
787
848
  producer.on('@setrtpencodingparameters', (params, callback, errback) => {
788
849
  this._awaitQueue
789
- .push(async () => await this._handler.setRtpEncodingParameters(producer.localId, params), 'producer @setrtpencodingparameters event')
850
+ .push(async () => {
851
+ await this._handler.setRtpEncodingParameters(producer.localId, params);
852
+ }, 'producer @setrtpencodingparameters event')
790
853
  .then(callback)
791
854
  .catch(errback);
792
855
  });
@@ -4,6 +4,7 @@ import type { HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOption
4
4
  export declare class Chrome111 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
5
5
  private _closed;
6
6
  private _direction;
7
+ private _sctpMaxReceiveMessageSize?;
7
8
  private _remoteSdp;
8
9
  private _getSendExtendedRtpCapabilities;
9
10
  private _forcedLocalDtlsRole?;
@@ -39,6 +40,7 @@ export declare class Chrome111 extends EnhancedEventEmitter<HandlerEvents> imple
39
40
  resumeReceiving(localIds: string[]): Promise<void>;
40
41
  getReceiverStats(localId: string): Promise<RTCStatsReport>;
41
42
  receiveDataChannel({ maxMessageSize, sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
43
+ getDataChannelMaxMessageSize(): number | undefined;
42
44
  private setupTransport;
43
45
  private onIceGatheringStateChange;
44
46
  private onIceCandidateError;
@@ -1 +1 @@
1
- {"version":3,"file":"Chrome111.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome111.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chrome111.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome111.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,58 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.Chrome111 = void 0;
4
- const sdpTransform = require("sdp-transform");
37
+ const sdpTransform = __importStar(require("sdp-transform"));
5
38
  const enhancedEvents_1 = require("../enhancedEvents");
6
39
  const Logger_1 = require("../Logger");
7
- const ortc = require("../ortc");
40
+ const ortc = __importStar(require("../ortc"));
8
41
  const errors_1 = require("../errors");
9
42
  const scalabilityModes_1 = require("../scalabilityModes");
10
43
  const RemoteSdp_1 = require("./sdp/RemoteSdp");
11
- const sdpCommonUtils = require("./sdp/commonUtils");
12
- const sdpUnifiedPlanUtils = require("./sdp/unifiedPlanUtils");
13
- const ortcUtils = require("./ortc/utils");
44
+ const sdpCommonUtils = __importStar(require("./sdp/commonUtils"));
45
+ const sdpUnifiedPlanUtils = __importStar(require("./sdp/unifiedPlanUtils"));
46
+ const ortcUtils = __importStar(require("./ortc/utils"));
14
47
  const logger = new Logger_1.Logger('Chrome111');
15
48
  const NAME = 'Chrome111';
16
- const SCTP_NUM_STREAMS = { OS: 65535, MIS: 65535 };
17
49
  class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
18
50
  // Closed flag.
19
51
  _closed = false;
20
52
  // Handler direction.
21
53
  _direction;
54
+ // DataChannel max receive message size.
55
+ _sctpMaxReceiveMessageSize;
22
56
  // Remote SDP handler.
23
57
  _remoteSdp;
24
58
  // Callback to request sending extended RTP capabilities on demand.
@@ -81,12 +115,6 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
81
115
  throw error;
82
116
  }
83
117
  },
84
- getNativeSctpCapabilities: async () => {
85
- logger.debug('getNativeSctpCapabilities()');
86
- return {
87
- numStreams: SCTP_NUM_STREAMS,
88
- };
89
- },
90
118
  };
91
119
  }
92
120
  static getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions = []) {
@@ -106,6 +134,8 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
106
134
  super();
107
135
  logger.debug('constructor()');
108
136
  this._direction = direction;
137
+ // NOTE: Mirror it.
138
+ this._sctpMaxReceiveMessageSize = sctpParameters?.maxSendMessageSize;
109
139
  this._remoteSdp = new RemoteSdp_1.RemoteSdp({
110
140
  iceParameters,
111
141
  iceCandidates,
@@ -490,7 +520,7 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
490
520
  const dataChannel = this._pc.createDataChannel(sctpStreamParameters.label, options);
491
521
  // Increase next id.
492
522
  this._nextSendSctpStreamId =
493
- ++this._nextSendSctpStreamId % SCTP_NUM_STREAMS.MIS;
523
+ ++this._nextSendSctpStreamId % (this._pc.sctp?.maxChannels ?? 65536);
494
524
  // If this is the first DataChannel we need to create the SDP answer with
495
525
  // m=application section.
496
526
  if (!this._hasDataChannelMediaSection) {
@@ -714,7 +744,9 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
714
744
  let answer = await this._pc.createAnswer();
715
745
  const localSdpObject = sdpTransform.parse(answer.sdp);
716
746
  const answerMediaObject = localSdpObject.media.find(m => m.type === 'application');
717
- answerMediaObject.maxMessageSize = maxMessageSize;
747
+ if (typeof maxMessageSize === 'number') {
748
+ answerMediaObject.maxMessageSize = maxMessageSize;
749
+ }
718
750
  if (!this._transportReady) {
719
751
  await this.setupTransport({
720
752
  localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
@@ -731,6 +763,11 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
731
763
  }
732
764
  return { dataChannel };
733
765
  }
766
+ getDataChannelMaxMessageSize() {
767
+ return this._direction === 'send'
768
+ ? this._pc.sctp?.maxMessageSize
769
+ : this._sctpMaxReceiveMessageSize;
770
+ }
734
771
  async setupTransport({ localDtlsRole, localSdpObject, }) {
735
772
  if (!localSdpObject) {
736
773
  localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
@@ -4,6 +4,7 @@ import type { HandlerFactory, HandlerEvents, HandlerInterface, HandlerSendOption
4
4
  export declare class Chrome74 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
5
5
  private _closed;
6
6
  private _direction;
7
+ private _sctpMaxReceiveMessageSize?;
7
8
  private _remoteSdp;
8
9
  private _getSendExtendedRtpCapabilities;
9
10
  private _forcedLocalDtlsRole?;
@@ -39,6 +40,7 @@ export declare class Chrome74 extends EnhancedEventEmitter<HandlerEvents> implem
39
40
  resumeReceiving(localIds: string[]): Promise<void>;
40
41
  getReceiverStats(localId: string): Promise<RTCStatsReport>;
41
42
  receiveDataChannel({ maxMessageSize, sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
43
+ getDataChannelMaxMessageSize(): number | undefined;
42
44
  private setupTransport;
43
45
  private onIceGatheringStateChange;
44
46
  private onIceCandidateError;
@@ -1 +1 @@
1
- {"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,58 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.Chrome74 = void 0;
4
- const sdpTransform = require("sdp-transform");
37
+ const sdpTransform = __importStar(require("sdp-transform"));
5
38
  const Logger_1 = require("../Logger");
6
39
  const enhancedEvents_1 = require("../enhancedEvents");
7
- const ortc = require("../ortc");
40
+ const ortc = __importStar(require("../ortc"));
8
41
  const errors_1 = require("../errors");
9
42
  const scalabilityModes_1 = require("../scalabilityModes");
10
43
  const RemoteSdp_1 = require("./sdp/RemoteSdp");
11
- const sdpCommonUtils = require("./sdp/commonUtils");
12
- const sdpUnifiedPlanUtils = require("./sdp/unifiedPlanUtils");
13
- const ortcUtils = require("./ortc/utils");
44
+ const sdpCommonUtils = __importStar(require("./sdp/commonUtils"));
45
+ const sdpUnifiedPlanUtils = __importStar(require("./sdp/unifiedPlanUtils"));
46
+ const ortcUtils = __importStar(require("./ortc/utils"));
14
47
  const logger = new Logger_1.Logger('Chrome74');
15
48
  const NAME = 'Chrome74';
16
- const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 };
17
49
  class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
18
50
  // Closed flag.
19
51
  _closed = false;
20
52
  // Handler direction.
21
53
  _direction;
54
+ // DataChannel max receive message size.
55
+ _sctpMaxReceiveMessageSize;
22
56
  // Remote SDP handler.
23
57
  _remoteSdp;
24
58
  // Callback to request sending extended RTP capabilities on demand.
@@ -76,12 +110,6 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
76
110
  throw error;
77
111
  }
78
112
  },
79
- getNativeSctpCapabilities: async () => {
80
- logger.debug('getNativeSctpCapabilities()');
81
- return {
82
- numStreams: SCTP_NUM_STREAMS,
83
- };
84
- },
85
113
  };
86
114
  }
87
115
  static getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions = []) {
@@ -101,6 +129,8 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
101
129
  super();
102
130
  logger.debug('constructor()');
103
131
  this._direction = direction;
132
+ // NOTE: Mirror it.
133
+ this._sctpMaxReceiveMessageSize = sctpParameters?.maxSendMessageSize;
104
134
  this._remoteSdp = new RemoteSdp_1.RemoteSdp({
105
135
  iceParameters,
106
136
  iceCandidates,
@@ -505,7 +535,7 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
505
535
  const dataChannel = this._pc.createDataChannel(sctpStreamParameters.label, options);
506
536
  // Increase next id.
507
537
  this._nextSendSctpStreamId =
508
- ++this._nextSendSctpStreamId % SCTP_NUM_STREAMS.MIS;
538
+ ++this._nextSendSctpStreamId % (this._pc.sctp?.maxChannels ?? 65536);
509
539
  // If this is the first DataChannel we need to create the SDP answer with
510
540
  // m=application section.
511
541
  if (!this._hasDataChannelMediaSection) {
@@ -716,7 +746,9 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
716
746
  let answer = await this._pc.createAnswer();
717
747
  const localSdpObject = sdpTransform.parse(answer.sdp);
718
748
  const answerMediaObject = localSdpObject.media.find(m => m.type === 'application');
719
- answerMediaObject.maxMessageSize = maxMessageSize;
749
+ if (typeof maxMessageSize === 'number') {
750
+ answerMediaObject.maxMessageSize = maxMessageSize;
751
+ }
720
752
  if (!this._transportReady) {
721
753
  await this.setupTransport({
722
754
  localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
@@ -733,6 +765,11 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
733
765
  }
734
766
  return { dataChannel };
735
767
  }
768
+ getDataChannelMaxMessageSize() {
769
+ return this._direction === 'send'
770
+ ? this._pc.sctp?.maxMessageSize
771
+ : this._sctpMaxReceiveMessageSize;
772
+ }
736
773
  async setupTransport({ localDtlsRole, localSdpObject, }) {
737
774
  if (!localSdpObject) {
738
775
  localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
@@ -1,11 +1,9 @@
1
1
  import { EnhancedEventEmitter } from '../enhancedEvents';
2
2
  import type { IceParameters, DtlsParameters, IceGatheringState, ConnectionState } from '../Transport';
3
3
  import type { RtpCapabilities } from '../RtpParameters';
4
- import type { SctpCapabilities } from '../SctpParameters';
5
4
  import type { HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOptions, HandlerSendResult, HandlerReceiveOptions, HandlerReceiveResult, HandlerSendDataChannelOptions, HandlerSendDataChannelResult, HandlerReceiveDataChannelOptions, HandlerReceiveDataChannelResult } from './HandlerInterface';
6
5
  export type FakeParameters = {
7
6
  generateNativeRtpCapabilities: () => RtpCapabilities;
8
- generateNativeSctpCapabilities: () => SctpCapabilities;
9
7
  generateLocalDtlsParameters: () => DtlsParameters;
10
8
  };
11
9
  export declare class FakeHandler extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
@@ -46,6 +44,7 @@ export declare class FakeHandler extends EnhancedEventEmitter<HandlerEvents> imp
46
44
  resumeReceiving(localIds: string[]): Promise<void>;
47
45
  getReceiverStats(localId: string): Promise<RTCStatsReport>;
48
46
  receiveDataChannel({ sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
47
+ getDataChannelMaxMessageSize(): number | undefined;
49
48
  private setupTransport;
50
49
  private assertNotClosed;
51
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FakeHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/FakeHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FakeHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/FakeHandler.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,44 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.FakeHandler = void 0;
4
37
  const fake_mediastreamtrack_1 = require("fake-mediastreamtrack");
5
38
  const enhancedEvents_1 = require("../enhancedEvents");
6
39
  const Logger_1 = require("../Logger");
7
- const utils = require("../utils");
8
- const ortc = require("../ortc");
40
+ const utils = __importStar(require("../utils"));
41
+ const ortc = __importStar(require("../ortc"));
9
42
  const errors_1 = require("../errors");
10
43
  const FakeEventTarget_1 = require("./fakeEvents/FakeEventTarget");
11
44
  const logger = new Logger_1.Logger('FakeHandler');
@@ -40,10 +73,6 @@ class FakeHandler extends enhancedEvents_1.EnhancedEventEmitter {
40
73
  logger.debug('getNativeRtpCapabilities() [direction:%o]', direction);
41
74
  return FakeHandler.getLocalRtpCapabilities(fakeParameters);
42
75
  },
43
- getNativeSctpCapabilities: async () => {
44
- logger.debug('getNativeSctpCapabilities()');
45
- return fakeParameters.generateNativeSctpCapabilities();
46
- },
47
76
  };
48
77
  }
49
78
  static getLocalRtpCapabilities(fakeParameters) {
@@ -266,6 +295,9 @@ class FakeHandler extends enhancedEvents_1.EnhancedEventEmitter {
266
295
  });
267
296
  return { dataChannel };
268
297
  }
298
+ getDataChannelMaxMessageSize() {
299
+ return 500000;
300
+ }
269
301
  async setupTransport({ localDtlsRole,
270
302
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
271
303
  localSdpObject, }) {
@@ -4,6 +4,7 @@ import type { HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOption
4
4
  export declare class Firefox120 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
5
5
  private _closed;
6
6
  private _direction;
7
+ private _sctpMaxReceiveMessageSize?;
7
8
  private _remoteSdp;
8
9
  private _getSendExtendedRtpCapabilities;
9
10
  private _pc;
@@ -38,6 +39,7 @@ export declare class Firefox120 extends EnhancedEventEmitter<HandlerEvents> impl
38
39
  resumeReceiving(localIds: string[]): Promise<void>;
39
40
  getReceiverStats(localId: string): Promise<RTCStatsReport>;
40
41
  receiveDataChannel({ maxMessageSize, sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
42
+ getDataChannelMaxMessageSize(): number | undefined;
41
43
  private setupTransport;
42
44
  private onIceGatheringStateChange;
43
45
  private onIceCandidateError;