@whereby.com/media 1.9.0 → 1.10.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.
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}`;
@@ -883,6 +890,18 @@ const metrics = [
883
890
  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
891
  value: ({ stats }) => ({ nominal: 0.25, fair: 0.5, serious: 0.75, critical: 1 })[stats.pressure.state] || 0,
885
892
  },
893
+ {
894
+ id: "turn-usage",
895
+ global: true,
896
+ enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
897
+ value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.usingTurn)
898
+ },
899
+ {
900
+ id: "turn-tls-usage",
901
+ global: true,
902
+ enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
903
+ value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.turnProtocol === 'tls')
904
+ },
886
905
  {
887
906
  id: "concealment",
888
907
  enabled: ({ hasLiveTrack, ssrc0, kind }) => hasLiveTrack &&
@@ -3072,9 +3091,6 @@ class Session {
3072
3091
  return this.pc && this.pc.connectionState === "connected";
3073
3092
  }
3074
3093
  replaceTrack(oldTrack, newTrack) {
3075
- if (!newTrack) {
3076
- rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "newTrack", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind });
3077
- }
3078
3094
  const pc = this.pc;
3079
3095
  if (!pc)
3080
3096
  return false;
@@ -3088,9 +3104,6 @@ class Session {
3088
3104
  for (let i = 0; i < senders.length; i++) {
3089
3105
  const sender = senders[i];
3090
3106
  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
3107
  if ((track === null || track === void 0 ? void 0 : track.id) === newTrack.id) {
3095
3108
  return Promise.resolve(newTrack);
3096
3109
  }
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}`;
@@ -862,6 +869,18 @@ const metrics = [
862
869
  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
870
  value: ({ stats }) => ({ nominal: 0.25, fair: 0.5, serious: 0.75, critical: 1 })[stats.pressure.state] || 0,
864
871
  },
872
+ {
873
+ id: "turn-usage",
874
+ global: true,
875
+ enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
876
+ value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.usingTurn)
877
+ },
878
+ {
879
+ id: "turn-tls-usage",
880
+ global: true,
881
+ enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
882
+ value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.turnProtocol === 'tls')
883
+ },
865
884
  {
866
885
  id: "concealment",
867
886
  enabled: ({ hasLiveTrack, ssrc0, kind }) => hasLiveTrack &&
@@ -3051,9 +3070,6 @@ class Session {
3051
3070
  return this.pc && this.pc.connectionState === "connected";
3052
3071
  }
3053
3072
  replaceTrack(oldTrack, newTrack) {
3054
- if (!newTrack) {
3055
- rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "newTrack", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind });
3056
- }
3057
3073
  const pc = this.pc;
3058
3074
  if (!pc)
3059
3075
  return false;
@@ -3067,9 +3083,6 @@ class Session {
3067
3083
  for (let i = 0; i < senders.length; i++) {
3068
3084
  const sender = senders[i];
3069
3085
  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
3086
  if ((track === null || track === void 0 ? void 0 : track.id) === newTrack.id) {
3074
3087
  return Promise.resolve(newTrack);
3075
3088
  }
@@ -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}`;
@@ -862,6 +869,18 @@ const metrics = [
862
869
  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
870
  value: ({ stats }) => ({ nominal: 0.25, fair: 0.5, serious: 0.75, critical: 1 })[stats.pressure.state] || 0,
864
871
  },
872
+ {
873
+ id: "turn-usage",
874
+ global: true,
875
+ enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
876
+ value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.usingTurn)
877
+ },
878
+ {
879
+ id: "turn-tls-usage",
880
+ global: true,
881
+ enabled: ({ stats }) => !!Object.values(stats.candidatePairs).length,
882
+ value: ({ stats }) => Object.values(stats.candidatePairs).some((cp) => cp.turnProtocol === 'tls')
883
+ },
865
884
  {
866
885
  id: "concealment",
867
886
  enabled: ({ hasLiveTrack, ssrc0, kind }) => hasLiveTrack &&
@@ -3051,9 +3070,6 @@ class Session {
3051
3070
  return this.pc && this.pc.connectionState === "connected";
3052
3071
  }
3053
3072
  replaceTrack(oldTrack, newTrack) {
3054
- if (!newTrack) {
3055
- rtcStats.sendEvent("replaceTrackP2P", { nullTrack: "newTrack", oldTrackKind: oldTrack === null || oldTrack === void 0 ? void 0 : oldTrack.kind });
3056
- }
3057
3073
  const pc = this.pc;
3058
3074
  if (!pc)
3059
3075
  return false;
@@ -3067,9 +3083,6 @@ class Session {
3067
3083
  for (let i = 0; i < senders.length; i++) {
3068
3084
  const sender = senders[i];
3069
3085
  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
3086
  if ((track === null || track === void 0 ? void 0 : track.id) === newTrack.id) {
3074
3087
  return Promise.resolve(newTrack);
3075
3088
  }
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.0",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/whereby/sdk",
7
7
  "repository": {