mediasoup-client 3.7.13 → 3.7.15

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 (63) hide show
  1. package/lib/Consumer.d.ts +1 -1
  2. package/lib/Consumer.d.ts.map +1 -1
  3. package/lib/Consumer.js +1 -1
  4. package/lib/DataConsumer.d.ts +1 -1
  5. package/lib/DataConsumer.js +1 -1
  6. package/lib/DataProducer.d.ts +1 -1
  7. package/lib/DataProducer.js +1 -1
  8. package/lib/Device.d.ts +1 -1
  9. package/lib/Device.d.ts.map +1 -1
  10. package/lib/Device.js +1 -0
  11. package/lib/Producer.d.ts +1 -1
  12. package/lib/Producer.d.ts.map +1 -1
  13. package/lib/Producer.js +1 -1
  14. package/lib/Transport.d.ts +1 -1
  15. package/lib/Transport.d.ts.map +1 -1
  16. package/lib/Transport.js +4 -4
  17. package/lib/errors.d.ts.map +1 -1
  18. package/lib/errors.js +0 -3
  19. package/lib/handlers/Chrome111.d.ts.map +1 -1
  20. package/lib/handlers/Chrome111.js +7 -6
  21. package/lib/handlers/Chrome55.d.ts.map +1 -1
  22. package/lib/handlers/Chrome55.js +7 -6
  23. package/lib/handlers/Chrome67.d.ts.map +1 -1
  24. package/lib/handlers/Chrome67.js +7 -6
  25. package/lib/handlers/Chrome70.d.ts.map +1 -1
  26. package/lib/handlers/Chrome70.js +9 -8
  27. package/lib/handlers/Chrome74.d.ts.map +1 -1
  28. package/lib/handlers/Chrome74.js +8 -7
  29. package/lib/handlers/Edge11.d.ts.map +1 -1
  30. package/lib/handlers/Edge11.js +5 -4
  31. package/lib/handlers/FakeHandler.d.ts.map +1 -1
  32. package/lib/handlers/FakeHandler.js +4 -3
  33. package/lib/handlers/Firefox120.d.ts.map +1 -1
  34. package/lib/handlers/Firefox120.js +9 -12
  35. package/lib/handlers/Firefox60.d.ts.map +1 -1
  36. package/lib/handlers/Firefox60.js +15 -20
  37. package/lib/handlers/ReactNative.d.ts.map +1 -1
  38. package/lib/handlers/ReactNative.js +7 -6
  39. package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +1 -1
  40. package/lib/handlers/ReactNativeUnifiedPlan.js +9 -8
  41. package/lib/handlers/Safari11.d.ts.map +1 -1
  42. package/lib/handlers/Safari11.js +7 -6
  43. package/lib/handlers/Safari12.d.ts.map +1 -1
  44. package/lib/handlers/Safari12.js +8 -9
  45. package/lib/handlers/ortc/edgeUtils.js +10 -10
  46. package/lib/handlers/ortc/utils.js +1 -1
  47. package/lib/handlers/sdp/MediaSection.d.ts.map +1 -1
  48. package/lib/handlers/sdp/MediaSection.js +12 -13
  49. package/lib/handlers/sdp/RemoteSdp.js +1 -1
  50. package/lib/handlers/sdp/commonUtils.js +1 -1
  51. package/lib/handlers/sdp/planBUtils.d.ts.map +1 -1
  52. package/lib/handlers/sdp/planBUtils.js +1 -2
  53. package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +1 -1
  54. package/lib/handlers/sdp/unifiedPlanUtils.js +2 -3
  55. package/lib/index.d.ts +1 -1
  56. package/lib/index.js +1 -1
  57. package/lib/ortc.js +7 -7
  58. package/lib/scalabilityModes.js +1 -1
  59. package/lib/test/fakeParameters.d.ts.map +1 -1
  60. package/lib/test/fakeParameters.js +7 -8
  61. package/lib/test/test.js +50 -48
  62. package/npm-scripts.mjs +4 -3
  63. package/package.json +13 -9
@@ -35,13 +35,13 @@ function getCapabilities() {
35
35
  const caps = utils.clone(nativeCaps);
36
36
  for (const codec of caps.codecs ?? []) {
37
37
  // Rename numChannels to channels.
38
- // @ts-ignore
38
+ // @ts-expect-error --- On purpose.
39
39
  codec.channels = codec.numChannels;
40
- // @ts-ignore
40
+ // @ts-expect-error --- On purpose.
41
41
  delete codec.numChannels;
42
42
  // Add mimeType.
43
- // @ts-ignore (due to codec.name).
44
- codec.mimeType = codec.mimeType || `${codec.kind}/${codec.name}`;
43
+ // @ts-expect-error --- On purpose (due to codec.name).
44
+ codec.mimeType = codec.mimeType ?? `${codec.kind}/${codec.name}`;
45
45
  // NOTE: Edge sets some numeric parameters as string rather than number. Fix them.
46
46
  if (codec.parameters) {
47
47
  const parameters = codec.parameters;
@@ -53,7 +53,7 @@ function getCapabilities() {
53
53
  }
54
54
  }
55
55
  // Delete emty parameter String in rtcpFeedback.
56
- for (const feedback of codec.rtcpFeedback || []) {
56
+ for (const feedback of codec.rtcpFeedback ?? []) {
57
57
  if (!feedback.parameter) {
58
58
  feedback.parameter = '';
59
59
  }
@@ -68,25 +68,25 @@ function mangleRtpParameters(rtpParameters) {
68
68
  const params = utils.clone(rtpParameters);
69
69
  // Rename mid to muxId.
70
70
  if (params.mid) {
71
- // @ts-ignore (due to muxId).
71
+ // @ts-expect-error --- On purpose (due to muxId).
72
72
  params.muxId = params.mid;
73
73
  delete params.mid;
74
74
  }
75
75
  for (const codec of params.codecs) {
76
76
  // Rename channels to numChannels.
77
77
  if (codec.channels) {
78
- // @ts-ignore.
78
+ // @ts-expect-error --- On purpose.
79
79
  codec.numChannels = codec.channels;
80
80
  delete codec.channels;
81
81
  }
82
82
  // Add codec.name (requried by Edge).
83
- // @ts-ignore (due to name).
83
+ // @ts-expect-error --- On purpose (due to name).
84
84
  if (codec.mimeType && !codec.name) {
85
- // @ts-ignore (due to name).
85
+ // @ts-expect-error --- On purpose (due to name).
86
86
  codec.name = codec.mimeType.split('/')[1];
87
87
  }
88
88
  // Remove mimeType.
89
- // @ts-ignore
89
+ // @ts-expect-error --- On purpose.
90
90
  delete codec.mimeType;
91
91
  }
92
92
  return params;
@@ -5,7 +5,7 @@ exports.addNackSuppportForOpus = addNackSuppportForOpus;
5
5
  * This function adds RTCP NACK support for OPUS codec in given capabilities.
6
6
  */
7
7
  function addNackSuppportForOpus(rtpCapabilities) {
8
- for (const codec of rtpCapabilities.codecs || []) {
8
+ for (const codec of rtpCapabilities.codecs ?? []) {
9
9
  if ((codec.mimeType.toLowerCase() === 'audio/opus' ||
10
10
  codec.mimeType.toLowerCase() === 'audio/multiopus') &&
11
11
  !codec.rtcpFeedback?.some(fb => fb.type === 'nack' && !fb.parameter)) {
@@ -1 +1 @@
1
- {"version":3,"file":"MediaSection.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/MediaSection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MediaSection.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/MediaSection.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,aAAa,EACb,YAAY,EACZ,cAAc,EACd,QAAQ,EACR,kBAAkB,EAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EACN,SAAS,EACT,aAAa,EAIb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,8BAAsB,YAAY;IAEjC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC;IAErC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;gBAEvB,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,KAAa,GACb,EAAE;QACF,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;QAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;QAChC,KAAK,EAAE,OAAO,CAAC;KACf;IA0CD,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,KAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,gBAAwB,GACxB,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,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,gBAAgB,EAAE,GAAG,CAAC;QACtB,kBAAkB,CAAC,EAAE,aAAa,CAAC;QACnC,mBAAmB,CAAC,EAAE,aAAa,CAAC;QACpC,YAAY,CAAC,EAAE,oBAAoB,CAAC;QACpC,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC3B;IAoQD,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,KAAa,EACb,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,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,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;IAqKD,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAKjC,MAAM,IAAI,IAAI;IAId,YAAY,CAAC,EACZ,kBAAkB,EAClB,QAAQ,EACR,OAAO,GACP,EAAE;QACF,kBAAkB,EAAE,aAAa,CAAC;QAClC,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KAChB,GAAG,IAAI;IAgGR,kBAAkB,CAAC,EAClB,kBAAkB,GAClB,EAAE;QACF,kBAAkB,EAAE,aAAa,CAAC;KAClC,GAAG,IAAI;CAeR"}
@@ -212,7 +212,7 @@ class AnswerMediaSection extends MediaSection {
212
212
  this._mediaObject.ext = [];
213
213
  for (const ext of answerRtpParameters.headerExtensions) {
214
214
  // Don't add a header extension if not present in the offer.
215
- const found = (offerMediaObject.ext || []).some((localExt) => localExt.uri === ext.uri);
215
+ const found = (offerMediaObject.ext ?? []).some((localExt) => localExt.uri === ext.uri);
216
216
  if (!found) {
217
217
  continue;
218
218
  }
@@ -233,7 +233,7 @@ class AnswerMediaSection extends MediaSection {
233
233
  list1: offerMediaObject.simulcast.list1,
234
234
  };
235
235
  this._mediaObject.rids = [];
236
- for (const rid of offerMediaObject.rids || []) {
236
+ for (const rid of offerMediaObject.rids ?? []) {
237
237
  if (rid.direction !== 'send') {
238
238
  continue;
239
239
  }
@@ -245,12 +245,11 @@ class AnswerMediaSection extends MediaSection {
245
245
  }
246
246
  // Simulcast (draft version 03).
247
247
  else if (offerMediaObject.simulcast_03) {
248
- // eslint-disable-next-line camelcase
249
248
  this._mediaObject.simulcast_03 = {
250
249
  value: offerMediaObject.simulcast_03.value.replace(/send/g, 'recv'),
251
250
  };
252
251
  this._mediaObject.rids = [];
253
- for (const rid of offerMediaObject.rids || []) {
252
+ for (const rid of offerMediaObject.rids ?? []) {
254
253
  if (rid.direction !== 'send') {
255
254
  continue;
256
255
  }
@@ -307,7 +306,7 @@ class AnswerMediaSection extends MediaSection {
307
306
  this._mediaObject.direction = 'recvonly';
308
307
  }
309
308
  muxSimulcastStreams(encodings) {
310
- if (!this._mediaObject.simulcast || !this._mediaObject.simulcast.list1) {
309
+ if (!this._mediaObject.simulcast?.list1) {
311
310
  return;
312
311
  }
313
312
  const layers = {};
@@ -360,7 +359,7 @@ class OfferMediaSection extends MediaSection {
360
359
  this._mediaObject.rtcpFb = [];
361
360
  this._mediaObject.fmtp = [];
362
361
  if (!this._planB) {
363
- this._mediaObject.msid = `${streamId || '-'} ${trackId}`;
362
+ this._mediaObject.msid = `${streamId ?? '-'} ${trackId}`;
364
363
  }
365
364
  for (const codec of offerRtpParameters.codecs) {
366
365
  const rtp = {
@@ -407,7 +406,7 @@ class OfferMediaSection extends MediaSection {
407
406
  this._mediaObject.rtcpRsize = 'rtcp-rsize';
408
407
  const encoding = offerRtpParameters.encodings[0];
409
408
  const ssrc = encoding.ssrc;
410
- const rtxSsrc = encoding.rtx && encoding.rtx.ssrc ? encoding.rtx.ssrc : undefined;
409
+ const rtxSsrc = encoding.rtx?.ssrc;
411
410
  this._mediaObject.ssrcs = [];
412
411
  this._mediaObject.ssrcGroups = [];
413
412
  if (offerRtpParameters.rtcp.cname) {
@@ -421,7 +420,7 @@ class OfferMediaSection extends MediaSection {
421
420
  this._mediaObject.ssrcs.push({
422
421
  id: ssrc,
423
422
  attribute: 'msid',
424
- value: `${streamId || '-'} ${trackId}`,
423
+ value: `${streamId ?? '-'} ${trackId}`,
425
424
  });
426
425
  }
427
426
  if (rtxSsrc) {
@@ -436,7 +435,7 @@ class OfferMediaSection extends MediaSection {
436
435
  this._mediaObject.ssrcs.push({
437
436
  id: rtxSsrc,
438
437
  attribute: 'msid',
439
- value: `${streamId || '-'} ${trackId}`,
438
+ value: `${streamId ?? '-'} ${trackId}`,
440
439
  });
441
440
  }
442
441
  // Associate original and retransmission SSRCs.
@@ -478,7 +477,7 @@ class OfferMediaSection extends MediaSection {
478
477
  planBReceive({ offerRtpParameters, streamId, trackId, }) {
479
478
  const encoding = offerRtpParameters.encodings[0];
480
479
  const ssrc = encoding.ssrc;
481
- const rtxSsrc = encoding.rtx && encoding.rtx.ssrc ? encoding.rtx.ssrc : undefined;
480
+ const rtxSsrc = encoding.rtx?.ssrc;
482
481
  const payloads = this._mediaObject.payloads.split(' ');
483
482
  for (const codec of offerRtpParameters.codecs) {
484
483
  if (payloads.includes(String(codec.payloadType))) {
@@ -529,7 +528,7 @@ class OfferMediaSection extends MediaSection {
529
528
  this._mediaObject.ssrcs.push({
530
529
  id: ssrc,
531
530
  attribute: 'msid',
532
- value: `${streamId || '-'} ${trackId}`,
531
+ value: `${streamId ?? '-'} ${trackId}`,
533
532
  });
534
533
  if (rtxSsrc) {
535
534
  if (offerRtpParameters.rtcp.cname) {
@@ -542,7 +541,7 @@ class OfferMediaSection extends MediaSection {
542
541
  this._mediaObject.ssrcs.push({
543
542
  id: rtxSsrc,
544
543
  attribute: 'msid',
545
- value: `${streamId || '-'} ${trackId}`,
544
+ value: `${streamId ?? '-'} ${trackId}`,
546
545
  });
547
546
  // Associate original and retransmission SSRCs.
548
547
  this._mediaObject.ssrcGroups.push({
@@ -554,7 +553,7 @@ class OfferMediaSection extends MediaSection {
554
553
  planBStopReceiving({ offerRtpParameters, }) {
555
554
  const encoding = offerRtpParameters.encodings[0];
556
555
  const ssrc = encoding.ssrc;
557
- const rtxSsrc = encoding.rtx && encoding.rtx.ssrc ? encoding.rtx.ssrc : undefined;
556
+ const rtxSsrc = encoding.rtx?.ssrc;
558
557
  this._mediaObject.ssrcs = this._mediaObject.ssrcs.filter((s) => s.id !== ssrc && s.id !== rtxSsrc);
559
558
  if (rtxSsrc) {
560
559
  this._mediaObject.ssrcGroups = this._mediaObject.ssrcGroups.filter((group) => group.ssrcs !== `${ssrc} ${rtxSsrc}`);
@@ -55,7 +55,7 @@ class RemoteSdp {
55
55
  media: [],
56
56
  };
57
57
  // If ICE parameters are given, add ICE-Lite indicator.
58
- if (iceParameters && iceParameters.iceLite) {
58
+ if (iceParameters?.iceLite) {
59
59
  this._sdpObject.icelite = 'ice-lite';
60
60
  }
61
61
  // If DTLS parameters are given, assume WebRTC and BUNDLE.
@@ -82,7 +82,7 @@ function extractRtpCapabilities({ sdpObject, }) {
82
82
  continue;
83
83
  }
84
84
  // Specials case to convert parameter value to string.
85
- if (parameters && parameters.hasOwnProperty('profile-level-id')) {
85
+ if (parameters?.hasOwnProperty('profile-level-id')) {
86
86
  parameters['profile-level-id'] = String(parameters['profile-level-id']);
87
87
  }
88
88
  codec.parameters = parameters;
@@ -1 +1 @@
1
- {"version":3,"file":"planBUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/planBUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAgB,eAAe,CAAC,EAC/B,gBAAgB,EAChB,KAAK,GACL,EAAE;IACF,gBAAgB,EAAE,GAAG,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;CACxB,GAAG,qBAAqB,EAAE,CAyE1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAClC,gBAAgB,EAChB,KAAK,EACL,UAAU,GACV,EAAE;IACF,gBAAgB,EAAE,GAAG,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAqHP"}
1
+ {"version":3,"file":"planBUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/planBUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAgB,eAAe,CAAC,EAC/B,gBAAgB,EAChB,KAAK,GACL,EAAE;IACF,gBAAgB,EAAE,GAAG,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;CACxB,GAAG,qBAAqB,EAAE,CAyE1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAClC,gBAAgB,EAChB,KAAK,EACL,UAAU,GACV,EAAE;IACF,gBAAgB,EAAE,GAAG,CAAC;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAmHP"}
@@ -117,8 +117,7 @@ function addLegacySimulcast({ offerMediaObject, track, numStreams, }) {
117
117
  semantics: 'SIM',
118
118
  ssrcs: ssrcs.join(' '),
119
119
  });
120
- for (let i = 0; i < ssrcs.length; ++i) {
121
- const ssrc = ssrcs[i];
120
+ for (const ssrc of ssrcs) {
122
121
  offerMediaObject.ssrcs.push({
123
122
  id: ssrc,
124
123
  attribute: 'cname',
@@ -1 +1 @@
1
- {"version":3,"file":"unifiedPlanUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/unifiedPlanUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAgB,eAAe,CAAC,EAC/B,gBAAgB,GAChB,EAAE;IACF,gBAAgB,EAAE,GAAG,CAAC;CACtB,GAAG,qBAAqB,EAAE,CAyD1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAClC,gBAAgB,EAChB,UAAU,GACV,EAAE;IACF,gBAAgB,EAAE,GAAG,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAoGP"}
1
+ {"version":3,"file":"unifiedPlanUtils.d.ts","sourceRoot":"","sources":["../../../src/handlers/sdp/unifiedPlanUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,wBAAgB,eAAe,CAAC,EAC/B,gBAAgB,GAChB,EAAE;IACF,gBAAgB,EAAE,GAAG,CAAC;CACtB,GAAG,qBAAqB,EAAE,CAyD1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,EAClC,gBAAgB,EAChB,UAAU,GACV,EAAE;IACF,gBAAgB,EAAE,GAAG,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACnB,GAAG,IAAI,CAkGP"}
@@ -58,7 +58,7 @@ function addLegacySimulcast({ offerMediaObject, numStreams, }) {
58
58
  throw new Error('a=ssrc line with msid information not found');
59
59
  }
60
60
  const [streamId, trackId] = ssrcMsidLine.value.split(' ');
61
- const firstSsrc = ssrcMsidLine.id;
61
+ const firstSsrc = Number(ssrcMsidLine.id);
62
62
  let firstRtxSsrc;
63
63
  // Get the SSRC for RTX.
64
64
  (offerMediaObject.ssrcGroups || []).some((line) => {
@@ -93,8 +93,7 @@ function addLegacySimulcast({ offerMediaObject, numStreams, }) {
93
93
  semantics: 'SIM',
94
94
  ssrcs: ssrcs.join(' '),
95
95
  });
96
- for (let i = 0; i < ssrcs.length; ++i) {
97
- const ssrc = ssrcs[i];
96
+ for (const ssrc of ssrcs) {
98
97
  offerMediaObject.ssrcs.push({
99
98
  id: ssrc,
100
99
  attribute: 'cname',
package/lib/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { types };
8
8
  /**
9
9
  * Expose mediasoup-client version.
10
10
  */
11
- export declare const version = "3.7.13";
11
+ export declare const version = "3.7.15";
12
12
  /**
13
13
  * Expose Device class and detectDevice() helper.
14
14
  */
package/lib/index.js CHANGED
@@ -37,7 +37,7 @@ exports.types = types;
37
37
  /**
38
38
  * Expose mediasoup-client version.
39
39
  */
40
- exports.version = '3.7.13';
40
+ exports.version = '3.7.15';
41
41
  /**
42
42
  * Expose parseScalabilityMode() function.
43
43
  */
package/lib/ortc.js CHANGED
@@ -194,11 +194,11 @@ function getExtendedRtpCapabilities(localCaps, remoteCaps) {
194
194
  headerExtensions: [],
195
195
  };
196
196
  // Match media codecs and keep the order preferred by remoteCaps.
197
- for (const remoteCodec of remoteCaps.codecs || []) {
197
+ for (const remoteCodec of remoteCaps.codecs ?? []) {
198
198
  if (isRtxCodec(remoteCodec)) {
199
199
  continue;
200
200
  }
201
- const matchingLocalCodec = (localCaps.codecs || []).find((localCodec) => matchCodecs(localCodec, remoteCodec, { strict: true, modify: true }));
201
+ const matchingLocalCodec = (localCaps.codecs ?? []).find((localCodec) => matchCodecs(localCodec, remoteCodec, { strict: true, modify: true }));
202
202
  if (!matchingLocalCodec) {
203
203
  continue;
204
204
  }
@@ -433,17 +433,17 @@ function getSendingRemoteRtpParameters(kind, extendedRtpCapabilities) {
433
433
  if (rtpParameters.headerExtensions.some(ext => ext.uri ===
434
434
  'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01')) {
435
435
  for (const codec of rtpParameters.codecs) {
436
- codec.rtcpFeedback = (codec.rtcpFeedback || []).filter((fb) => fb.type !== 'goog-remb');
436
+ codec.rtcpFeedback = (codec.rtcpFeedback ?? []).filter((fb) => fb.type !== 'goog-remb');
437
437
  }
438
438
  }
439
439
  else if (rtpParameters.headerExtensions.some(ext => ext.uri === 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time')) {
440
440
  for (const codec of rtpParameters.codecs) {
441
- codec.rtcpFeedback = (codec.rtcpFeedback || []).filter(fb => fb.type !== 'transport-cc');
441
+ codec.rtcpFeedback = (codec.rtcpFeedback ?? []).filter(fb => fb.type !== 'transport-cc');
442
442
  }
443
443
  }
444
444
  else {
445
445
  for (const codec of rtpParameters.codecs) {
446
- codec.rtcpFeedback = (codec.rtcpFeedback || []).filter((fb) => fb.type !== 'transport-cc' && fb.type !== 'goog-remb');
446
+ codec.rtcpFeedback = (codec.rtcpFeedback ?? []).filter((fb) => fb.type !== 'transport-cc' && fb.type !== 'goog-remb');
447
447
  }
448
448
  }
449
449
  return rtpParameters;
@@ -893,8 +893,8 @@ function matchHeaderExtensions(aExt, bExt) {
893
893
  }
894
894
  function reduceRtcpFeedback(codecA, codecB) {
895
895
  const reducedRtcpFeedback = [];
896
- for (const aFb of codecA.rtcpFeedback || []) {
897
- const matchingBFb = (codecB.rtcpFeedback || []).find((bFb) => bFb.type === aFb.type &&
896
+ for (const aFb of codecA.rtcpFeedback ?? []) {
897
+ const matchingBFb = (codecB.rtcpFeedback ?? []).find((bFb) => bFb.type === aFb.type &&
898
898
  (bFb.parameter === aFb.parameter || (!bFb.parameter && !aFb.parameter)));
899
899
  if (matchingBFb) {
900
900
  reducedRtcpFeedback.push(matchingBFb);
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parse = parse;
4
4
  const ScalabilityModeRegex = new RegExp('^[LS]([1-9]\\d{0,1})T([1-9]\\d{0,1})');
5
5
  function parse(scalabilityMode) {
6
- const match = ScalabilityModeRegex.exec(scalabilityMode || '');
6
+ const match = ScalabilityModeRegex.exec(scalabilityMode ?? '');
7
7
  if (match) {
8
8
  return {
9
9
  spatialLayers: Number(match[1]),
@@ -1 +1 @@
1
- {"version":3,"file":"fakeParameters.d.ts","sourceRoot":"","sources":["../../src/test/fakeParameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,KAAK,CAAC;AAOvC,wBAAgB,6BAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,eAAe,CAoKrF;AAED,wBAAgB,6BAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,eAAe,CAoHrF;AAED,wBAAgB,8BAA8B,IAAI,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAIvF;AAED,wBAAgB,2BAA2B,IAAI,eAAe,CAAC,KAAK,CAAC,cAAc,CAWlF;AAED,wBAAgB,iCAAiC,IAAI,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAyD1F;AAED,wBAAgB,gCAAgC,IAAI;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAIjE;AAED,wBAAgB,gCAAgC,CAAC,EAChD,EAAE,EACF,aAAa,GACb,GAAE;IACF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,eAAe,CAAC,KAAK,CAAC,eAAe,CA6O7C;AAED,wBAAgB,oCAAoC,IAAI;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAIrE;AAED,wBAAgB,oCAAoC,CAAC,EACpD,EAAE,GACF,GAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,eAAe,CAAC,KAAK,CAAC,mBAAmB,CAWlE"}
1
+ {"version":3,"file":"fakeParameters.d.ts","sourceRoot":"","sources":["../../src/test/fakeParameters.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,eAAe,MAAM,KAAK,CAAC;AAOvC,wBAAgB,6BAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,eAAe,CAoKrF;AAED,wBAAgB,6BAA6B,IAAI,eAAe,CAAC,KAAK,CAAC,eAAe,CAmHrF;AAED,wBAAgB,8BAA8B,IAAI,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAIvF;AAED,wBAAgB,2BAA2B,IAAI,eAAe,CAAC,KAAK,CAAC,cAAc,CAWlF;AAED,wBAAgB,iCAAiC,IAAI,eAAe,CAAC,KAAK,CAAC,gBAAgB,CAyD1F;AAED,wBAAgB,gCAAgC,IAAI;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAIjE;AAED,wBAAgB,gCAAgC,CAAC,EAChD,EAAE,EACF,aAAa,GACb,GAAE;IACF,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,eAAe,CAAC,KAAK,CAAC,eAAe,CA6O7C;AAED,wBAAgB,oCAAoC,IAAI;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAIrE;AAED,wBAAgB,oCAAoC,CAAC,EACpD,EAAE,GACF,GAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,eAAe,CAAC,KAAK,CAAC,mBAAmB,CAWlE"}
@@ -294,19 +294,18 @@ function generateNativeRtpCapabilities() {
294
294
  },
295
295
  {
296
296
  kind: 'video',
297
- // @ts-ignore
298
297
  uri: 'http://www.webrtc.org/experiments/rtp-hdrext/playout-delay',
299
298
  preferredId: 6,
300
299
  },
301
300
  {
302
301
  kind: 'video',
303
- // @ts-ignore
302
+ // @ts-expect-error --- ON purpose.
304
303
  uri: 'http://www.webrtc.org/experiments/rtp-hdrext/video-content-type',
305
304
  preferredId: 7,
306
305
  },
307
306
  {
308
307
  kind: 'video',
309
- // @ts-ignore
308
+ // @ts-expect-error --- ON purpose.
310
309
  uri: 'http://www.webrtc.org/experiments/rtp-hdrext/video-timing',
311
310
  preferredId: 8,
312
311
  },
@@ -398,7 +397,7 @@ function generateConsumerRemoteParameters({ id, codecMimeType, } = {}) {
398
397
  switch (codecMimeType) {
399
398
  case 'audio/opus': {
400
399
  return {
401
- id: id || generateFakeUuid(),
400
+ id: id ?? generateFakeUuid(),
402
401
  producerId: generateFakeUuid(),
403
402
  kind: 'audio',
404
403
  rtpParameters: utils.deepFreeze({
@@ -444,7 +443,7 @@ function generateConsumerRemoteParameters({ id, codecMimeType, } = {}) {
444
443
  }
445
444
  case 'audio/ISAC': {
446
445
  return {
447
- id: id || generateFakeUuid(),
446
+ id: id ?? generateFakeUuid(),
448
447
  producerId: generateFakeUuid(),
449
448
  kind: 'audio',
450
449
  rtpParameters: utils.deepFreeze({
@@ -483,7 +482,7 @@ function generateConsumerRemoteParameters({ id, codecMimeType, } = {}) {
483
482
  }
484
483
  case 'video/VP8': {
485
484
  return {
486
- id: id || generateFakeUuid(),
485
+ id: id ?? generateFakeUuid(),
487
486
  producerId: generateFakeUuid(),
488
487
  kind: 'video',
489
488
  rtpParameters: utils.deepFreeze({
@@ -553,7 +552,7 @@ function generateConsumerRemoteParameters({ id, codecMimeType, } = {}) {
553
552
  }
554
553
  case 'video/H264': {
555
554
  return {
556
- id: id || generateFakeUuid(),
555
+ id: id ?? generateFakeUuid(),
557
556
  producerId: generateFakeUuid(),
558
557
  kind: 'video',
559
558
  rtpParameters: utils.deepFreeze({
@@ -635,7 +634,7 @@ function generateDataProducerRemoteParameters() {
635
634
  }
636
635
  function generateDataConsumerRemoteParameters({ id, } = {}) {
637
636
  return {
638
- id: id || generateFakeUuid(),
637
+ id: id ?? generateFakeUuid(),
639
638
  dataProducerId: generateFakeUuid(),
640
639
  sctpStreamParameters: utils.deepFreeze({
641
640
  streamId: 666,