@whereby.com/media 1.9.0 → 1.10.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.
package/dist/index.cjs CHANGED
@@ -134,6 +134,13 @@ function captureCandidatePairInfoMetrics(cpMetrics, currentCptats, prevCptats, t
134
134
  cpMetrics.availableIncomingBitrate = currentCptats.availableIncomingBitrate;
135
135
  const remote = report.get(currentCptats.remoteCandidateId);
136
136
  const local = report.get(currentCptats.localCandidateId);
137
+ cpMetrics.usingTurn = false;
138
+ if (local) {
139
+ if (/relay/i.test(local.candidateType || '')) {
140
+ cpMetrics.usingTurn = true;
141
+ cpMetrics.turnProtocol = local.relayProtocol;
142
+ }
143
+ }
137
144
  if (remote && local) {
138
145
  cpMetrics.localEp = `${local.protocol}:${local.address || local.ip}:${local.port} ${local.candidateType} (${local.networkType})`;
139
146
  cpMetrics.remoteEp = `${remote.protocol}:${remote.address || remote.ip}:${remote.port} ${remote.candidateType}`;
@@ -175,8 +182,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
175
182
  ssrcMetrics.lossRatio = (1000 * (packetLossCountDiff / (packetLossCountDiff + packetCountDiff))) / timeDiff;
176
183
  const byteCountDiff = currentSsrcStats.bytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesReceived) || 0);
177
184
  ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
178
- const headerByteCountDiff = currentSsrcStats.headerBytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesReceived) || 0);
179
- ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
185
+ let headerByteCountDiff = 0;
186
+ if (currentSsrcStats.headerBytesReceived) {
187
+ headerByteCountDiff = currentSsrcStats.headerBytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesReceived) || 0);
188
+ ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
189
+ }
180
190
  const totalBytesDiff = byteCountDiff + headerByteCountDiff;
181
191
  ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
182
192
  ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
@@ -194,8 +204,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
194
204
  ssrcMetrics.packetRate = (1000 * packetCountDiff) / timeDiff;
195
205
  const byteCountDiff = currentSsrcStats.bytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesSent) || 0);
196
206
  ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
197
- const headerByteCountDiff = currentSsrcStats.headerBytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesSent) || 0);
198
- ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
207
+ let headerByteCountDiff = 0;
208
+ if (currentSsrcStats.headerBytesSent) {
209
+ headerByteCountDiff = currentSsrcStats.headerBytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesSent) || 0);
210
+ ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
211
+ }
199
212
  const totalBytesDiff = byteCountDiff + headerByteCountDiff;
200
213
  ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
201
214
  ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
@@ -444,7 +457,7 @@ function collectStats(state, { logger, interval }, immediate) {
444
457
  pcData.previousSSRCs = pcData.currentSSRCs || {};
445
458
  pcData.currentSSRCs = {};
446
459
  report.forEach((currentRtcStats) => {
447
- var _a, _b;
460
+ var _a, _b, _c;
448
461
  if (currentRtcStats.type === "candidate-pair" && /inprogress|succeeded/.test(currentRtcStats.state)) {
449
462
  const prevRtcStats = (_a = pcData._oldReport) === null || _a === void 0 ? void 0 : _a.get(currentRtcStats.id);
450
463
  const timeDiff = prevRtcStats ? currentRtcStats.timestamp - prevRtcStats.timestamp : interval;
@@ -470,6 +483,13 @@ function collectStats(state, { logger, interval }, immediate) {
470
483
  }
471
484
  }
472
485
  const client = clients.find((c) => { var _a; return ((_a = c[kind].track) === null || _a === void 0 ? void 0 : _a.id) === trackId; }) || defaultClient;
486
+ if (!currentRtcStats.trackIdentifier &&
487
+ pcData.ssrcToTrackId[ssrc] &&
488
+ ((_c = client[kind].track) === null || _c === void 0 ? void 0 : _c.id) &&
489
+ client[kind].track.id !== pcData.ssrcToTrackId[ssrc]) {
490
+ trackId = client[kind].track.id;
491
+ pcData.ssrcToTrackId[ssrc] = client[kind].track.id;
492
+ }
473
493
  pcData.currentSSRCs[ssrc] = client.id;
474
494
  if (prevRtcStats) {
475
495
  const newTransport = report.get(currentRtcStats.transportId);
@@ -883,6 +903,18 @@ const metrics = [
883
903
  enabled: ({ stats }) => { var _a; return ((_a = stats === null || stats === void 0 ? void 0 : stats.pressure) === null || _a === void 0 ? void 0 : _a.source) === "cpu"; },
884
904
  value: ({ stats }) => ({ nominal: 0.25, fair: 0.5, serious: 0.75, critical: 1 })[stats.pressure.state] || 0,
885
905
  },
906
+ {
907
+ id: "turn-usage",
908
+ global: true,
909
+ enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
910
+ value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.usingTurn)
911
+ },
912
+ {
913
+ id: "turn-tls-usage",
914
+ global: true,
915
+ enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
916
+ value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.turnProtocol === 'tls')
917
+ },
886
918
  {
887
919
  id: "concealment",
888
920
  enabled: ({ hasLiveTrack, ssrc0, kind }) => hasLiveTrack &&
@@ -3072,9 +3104,6 @@ class Session {
3072
3104
  return this.pc && this.pc.connectionState === "connected";
3073
3105
  }
3074
3106
  replaceTrack(oldTrack, newTrack) {
3075
- if (!newTrack) {
3076
- rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "newTrack", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind });
3077
- }
3078
3107
  const pc = this.pc;
3079
3108
  if (!pc)
3080
3109
  return false;
@@ -3088,9 +3117,6 @@ class Session {
3088
3117
  for (let i = 0; i < senders.length; i++) {
3089
3118
  const sender = senders[i];
3090
3119
  const track = sender.track;
3091
- if (!track) {
3092
- rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "trackFromSender", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind, newTrackKind: newTrack === null || newTrack === void 0 ? void 0 : newTrack.kind });
3093
- }
3094
3120
  if ((track === null || track === void 0 ? void 0 : track.id) === newTrack.id) {
3095
3121
  return Promise.resolve(newTrack);
3096
3122
  }
package/dist/index.mjs CHANGED
@@ -113,6 +113,13 @@ function captureCandidatePairInfoMetrics(cpMetrics, currentCptats, prevCptats, t
113
113
  cpMetrics.availableIncomingBitrate = currentCptats.availableIncomingBitrate;
114
114
  const remote = report.get(currentCptats.remoteCandidateId);
115
115
  const local = report.get(currentCptats.localCandidateId);
116
+ cpMetrics.usingTurn = false;
117
+ if (local) {
118
+ if (/relay/i.test(local.candidateType || '')) {
119
+ cpMetrics.usingTurn = true;
120
+ cpMetrics.turnProtocol = local.relayProtocol;
121
+ }
122
+ }
116
123
  if (remote && local) {
117
124
  cpMetrics.localEp = `${local.protocol}:${local.address || local.ip}:${local.port} ${local.candidateType} (${local.networkType})`;
118
125
  cpMetrics.remoteEp = `${remote.protocol}:${remote.address || remote.ip}:${remote.port} ${remote.candidateType}`;
@@ -154,8 +161,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
154
161
  ssrcMetrics.lossRatio = (1000 * (packetLossCountDiff / (packetLossCountDiff + packetCountDiff))) / timeDiff;
155
162
  const byteCountDiff = currentSsrcStats.bytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesReceived) || 0);
156
163
  ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
157
- const headerByteCountDiff = currentSsrcStats.headerBytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesReceived) || 0);
158
- ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
164
+ let headerByteCountDiff = 0;
165
+ if (currentSsrcStats.headerBytesReceived) {
166
+ headerByteCountDiff = currentSsrcStats.headerBytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesReceived) || 0);
167
+ ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
168
+ }
159
169
  const totalBytesDiff = byteCountDiff + headerByteCountDiff;
160
170
  ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
161
171
  ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
@@ -173,8 +183,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
173
183
  ssrcMetrics.packetRate = (1000 * packetCountDiff) / timeDiff;
174
184
  const byteCountDiff = currentSsrcStats.bytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesSent) || 0);
175
185
  ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
176
- const headerByteCountDiff = currentSsrcStats.headerBytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesSent) || 0);
177
- ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
186
+ let headerByteCountDiff = 0;
187
+ if (currentSsrcStats.headerBytesSent) {
188
+ headerByteCountDiff = currentSsrcStats.headerBytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesSent) || 0);
189
+ ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
190
+ }
178
191
  const totalBytesDiff = byteCountDiff + headerByteCountDiff;
179
192
  ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
180
193
  ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
@@ -423,7 +436,7 @@ function collectStats(state, { logger, interval }, immediate) {
423
436
  pcData.previousSSRCs = pcData.currentSSRCs || {};
424
437
  pcData.currentSSRCs = {};
425
438
  report.forEach((currentRtcStats) => {
426
- var _a, _b;
439
+ var _a, _b, _c;
427
440
  if (currentRtcStats.type === "candidate-pair" && /inprogress|succeeded/.test(currentRtcStats.state)) {
428
441
  const prevRtcStats = (_a = pcData._oldReport) === null || _a === void 0 ? void 0 : _a.get(currentRtcStats.id);
429
442
  const timeDiff = prevRtcStats ? currentRtcStats.timestamp - prevRtcStats.timestamp : interval;
@@ -449,6 +462,13 @@ function collectStats(state, { logger, interval }, immediate) {
449
462
  }
450
463
  }
451
464
  const client = clients.find((c) => { var _a; return ((_a = c[kind].track) === null || _a === void 0 ? void 0 : _a.id) === trackId; }) || defaultClient;
465
+ if (!currentRtcStats.trackIdentifier &&
466
+ pcData.ssrcToTrackId[ssrc] &&
467
+ ((_c = client[kind].track) === null || _c === void 0 ? void 0 : _c.id) &&
468
+ client[kind].track.id !== pcData.ssrcToTrackId[ssrc]) {
469
+ trackId = client[kind].track.id;
470
+ pcData.ssrcToTrackId[ssrc] = client[kind].track.id;
471
+ }
452
472
  pcData.currentSSRCs[ssrc] = client.id;
453
473
  if (prevRtcStats) {
454
474
  const newTransport = report.get(currentRtcStats.transportId);
@@ -862,6 +882,18 @@ const metrics = [
862
882
  enabled: ({ stats }) => { var _a; return ((_a = stats === null || stats === void 0 ? void 0 : stats.pressure) === null || _a === void 0 ? void 0 : _a.source) === "cpu"; },
863
883
  value: ({ stats }) => ({ nominal: 0.25, fair: 0.5, serious: 0.75, critical: 1 })[stats.pressure.state] || 0,
864
884
  },
885
+ {
886
+ id: "turn-usage",
887
+ global: true,
888
+ enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
889
+ value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.usingTurn)
890
+ },
891
+ {
892
+ id: "turn-tls-usage",
893
+ global: true,
894
+ enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
895
+ value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.turnProtocol === 'tls')
896
+ },
865
897
  {
866
898
  id: "concealment",
867
899
  enabled: ({ hasLiveTrack, ssrc0, kind }) => hasLiveTrack &&
@@ -3051,9 +3083,6 @@ class Session {
3051
3083
  return this.pc && this.pc.connectionState === "connected";
3052
3084
  }
3053
3085
  replaceTrack(oldTrack, newTrack) {
3054
- if (!newTrack) {
3055
- rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "newTrack", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind });
3056
- }
3057
3086
  const pc = this.pc;
3058
3087
  if (!pc)
3059
3088
  return false;
@@ -3067,9 +3096,6 @@ class Session {
3067
3096
  for (let i = 0; i < senders.length; i++) {
3068
3097
  const sender = senders[i];
3069
3098
  const track = sender.track;
3070
- if (!track) {
3071
- rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "trackFromSender", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind, newTrackKind: newTrack === null || newTrack === void 0 ? void 0 : newTrack.kind });
3072
- }
3073
3099
  if ((track === null || track === void 0 ? void 0 : track.id) === newTrack.id) {
3074
3100
  return Promise.resolve(newTrack);
3075
3101
  }
@@ -113,6 +113,13 @@ function captureCandidatePairInfoMetrics(cpMetrics, currentCptats, prevCptats, t
113
113
  cpMetrics.availableIncomingBitrate = currentCptats.availableIncomingBitrate;
114
114
  const remote = report.get(currentCptats.remoteCandidateId);
115
115
  const local = report.get(currentCptats.localCandidateId);
116
+ cpMetrics.usingTurn = false;
117
+ if (local) {
118
+ if (/relay/i.test(local.candidateType || '')) {
119
+ cpMetrics.usingTurn = true;
120
+ cpMetrics.turnProtocol = local.relayProtocol;
121
+ }
122
+ }
116
123
  if (remote && local) {
117
124
  cpMetrics.localEp = `${local.protocol}:${local.address || local.ip}:${local.port} ${local.candidateType} (${local.networkType})`;
118
125
  cpMetrics.remoteEp = `${remote.protocol}:${remote.address || remote.ip}:${remote.port} ${remote.candidateType}`;
@@ -154,8 +161,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
154
161
  ssrcMetrics.lossRatio = (1000 * (packetLossCountDiff / (packetLossCountDiff + packetCountDiff))) / timeDiff;
155
162
  const byteCountDiff = currentSsrcStats.bytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesReceived) || 0);
156
163
  ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
157
- const headerByteCountDiff = currentSsrcStats.headerBytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesReceived) || 0);
158
- ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
164
+ let headerByteCountDiff = 0;
165
+ if (currentSsrcStats.headerBytesReceived) {
166
+ headerByteCountDiff = currentSsrcStats.headerBytesReceived - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesReceived) || 0);
167
+ ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
168
+ }
159
169
  const totalBytesDiff = byteCountDiff + headerByteCountDiff;
160
170
  ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
161
171
  ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
@@ -173,8 +183,11 @@ function captureCommonSsrcMetrics(ssrcMetrics, currentSsrcStats, prevSsrcStats,
173
183
  ssrcMetrics.packetRate = (1000 * packetCountDiff) / timeDiff;
174
184
  const byteCountDiff = currentSsrcStats.bytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.bytesSent) || 0);
175
185
  ssrcMetrics.byteCount = (ssrcMetrics.byteCount || 0) + byteCountDiff;
176
- const headerByteCountDiff = currentSsrcStats.headerBytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesSent) || 0);
177
- ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
186
+ let headerByteCountDiff = 0;
187
+ if (currentSsrcStats.headerBytesSent) {
188
+ headerByteCountDiff = currentSsrcStats.headerBytesSent - ((prevSsrcStats === null || prevSsrcStats === void 0 ? void 0 : prevSsrcStats.headerBytesSent) || 0);
189
+ ssrcMetrics.headerByteCount = (ssrcMetrics.headerByteCount || 0) + headerByteCountDiff;
190
+ }
178
191
  const totalBytesDiff = byteCountDiff + headerByteCountDiff;
179
192
  ssrcMetrics.bitrate = (8000 * totalBytesDiff) / timeDiff;
180
193
  ssrcMetrics.mediaRatio = byteCountDiff / totalBytesDiff;
@@ -423,7 +436,7 @@ function collectStats(state, { logger, interval }, immediate) {
423
436
  pcData.previousSSRCs = pcData.currentSSRCs || {};
424
437
  pcData.currentSSRCs = {};
425
438
  report.forEach((currentRtcStats) => {
426
- var _a, _b;
439
+ var _a, _b, _c;
427
440
  if (currentRtcStats.type === "candidate-pair" && /inprogress|succeeded/.test(currentRtcStats.state)) {
428
441
  const prevRtcStats = (_a = pcData._oldReport) === null || _a === void 0 ? void 0 : _a.get(currentRtcStats.id);
429
442
  const timeDiff = prevRtcStats ? currentRtcStats.timestamp - prevRtcStats.timestamp : interval;
@@ -449,6 +462,13 @@ function collectStats(state, { logger, interval }, immediate) {
449
462
  }
450
463
  }
451
464
  const client = clients.find((c) => { var _a; return ((_a = c[kind].track) === null || _a === void 0 ? void 0 : _a.id) === trackId; }) || defaultClient;
465
+ if (!currentRtcStats.trackIdentifier &&
466
+ pcData.ssrcToTrackId[ssrc] &&
467
+ ((_c = client[kind].track) === null || _c === void 0 ? void 0 : _c.id) &&
468
+ client[kind].track.id !== pcData.ssrcToTrackId[ssrc]) {
469
+ trackId = client[kind].track.id;
470
+ pcData.ssrcToTrackId[ssrc] = client[kind].track.id;
471
+ }
452
472
  pcData.currentSSRCs[ssrc] = client.id;
453
473
  if (prevRtcStats) {
454
474
  const newTransport = report.get(currentRtcStats.transportId);
@@ -862,6 +882,18 @@ const metrics = [
862
882
  enabled: ({ stats }) => { var _a; return ((_a = stats === null || stats === void 0 ? void 0 : stats.pressure) === null || _a === void 0 ? void 0 : _a.source) === "cpu"; },
863
883
  value: ({ stats }) => ({ nominal: 0.25, fair: 0.5, serious: 0.75, critical: 1 })[stats.pressure.state] || 0,
864
884
  },
885
+ {
886
+ id: "turn-usage",
887
+ global: true,
888
+ enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
889
+ value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.usingTurn)
890
+ },
891
+ {
892
+ id: "turn-tls-usage",
893
+ global: true,
894
+ enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
895
+ value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.turnProtocol === 'tls')
896
+ },
865
897
  {
866
898
  id: "concealment",
867
899
  enabled: ({ hasLiveTrack, ssrc0, kind }) => hasLiveTrack &&
@@ -3051,9 +3083,6 @@ class Session {
3051
3083
  return this.pc && this.pc.connectionState === "connected";
3052
3084
  }
3053
3085
  replaceTrack(oldTrack, newTrack) {
3054
- if (!newTrack) {
3055
- rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "newTrack", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind });
3056
- }
3057
3086
  const pc = this.pc;
3058
3087
  if (!pc)
3059
3088
  return false;
@@ -3067,9 +3096,6 @@ class Session {
3067
3096
  for (let i = 0; i < senders.length; i++) {
3068
3097
  const sender = senders[i];
3069
3098
  const track = sender.track;
3070
- if (!track) {
3071
- rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "trackFromSender", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind, newTrackKind: newTrack === null || newTrack === void 0 ? void 0 : newTrack.kind });
3072
- }
3073
3099
  if ((track === null || track === void 0 ? void 0 : track.id) === newTrack.id) {
3074
3100
  return Promise.resolve(newTrack);
3075
3101
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@whereby.com/media",
3
3
  "description": "Media library for Whereby",
4
- "version": "1.9.0",
4
+ "version": "1.10.1",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/whereby/sdk",
7
7
  "repository": {