@whereby.com/media 8.2.1 → 8.2.3

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
@@ -544,25 +544,22 @@ class Session {
544
544
  this.pc.addTrack(track, stream);
545
545
  });
546
546
  }
547
- addTrack(track, stream) {
547
+ addTrack(track) {
548
548
  var _a;
549
549
  if (track.kind === "video" && ((_a = this._mediaPrefs) === null || _a === void 0 ? void 0 : _a.wantsVideo) === false) {
550
550
  return;
551
551
  }
552
- if (!stream) {
553
- stream = this.streams[0];
554
- }
552
+ const stream = this.streams[0];
553
+ this._incrementAnalyticMetric("P2PSessionAddTrack");
554
+ rtcStats.sendEvent("P2PSessionAddTrack", {
555
+ trackId: track.id,
556
+ kind: track.kind,
557
+ hasSessionStream: !!stream,
558
+ trackOfSameKindInStream: !!(stream === null || stream === void 0 ? void 0 : stream.getTracks().filter((t) => t.kind === track.kind && t.id !== track.id).length),
559
+ });
555
560
  stream === null || stream === void 0 ? void 0 : stream.addTrack(track);
556
561
  this.pc.addTrack(track, stream);
557
562
  }
558
- removeTrack(track) {
559
- const stream = this.streams[0];
560
- stream.removeTrack(track);
561
- const sender = this.pc.getSenders().find((sender) => sender.track === track);
562
- if (sender) {
563
- this.pc.removeTrack(sender);
564
- }
565
- }
566
563
  removeStream(stream) {
567
564
  const streamIdIndex = this.streamIds.indexOf(stream.id);
568
565
  if (streamIdIndex !== -1) {
@@ -2543,6 +2540,8 @@ class P2pRtcManager {
2543
2540
  P2PMicNotWorking: 0,
2544
2541
  P2PLocalNetworkFailed: 0,
2545
2542
  P2PRelayedIceCandidate: 0,
2543
+ P2PSessionAddTrack: 0,
2544
+ P2PAddTrackToPeerConnections: 0,
2546
2545
  };
2547
2546
  }
2548
2547
  numberOfPeerconnections() {
@@ -2836,7 +2835,6 @@ class P2pRtcManager {
2836
2835
  return this.peerConnections[clientId];
2837
2836
  }
2838
2837
  _createSession({ clientId, initialBandwidth, isOfferer }) {
2839
- var _a, _b;
2840
2838
  if (!clientId) {
2841
2839
  throw new Error("clientId is missing");
2842
2840
  }
@@ -3099,8 +3097,8 @@ class P2pRtcManager {
3099
3097
  if (this._features.increaseIncomingMediaBufferOn) {
3100
3098
  this._setJitterBufferTarget(pc);
3101
3099
  }
3102
- if (((_b = (_a = this._localCameraStream) === null || _a === void 0 ? void 0 : _a.getVideoTracks()) === null || _b === void 0 ? void 0 : _b.length) && this._stoppedVideoTrack) {
3103
- session.addTrack(this._stoppedVideoTrack, this._localCameraStream);
3100
+ if (this._localCameraStream && !this._localCameraStream.getVideoTracks().length && this._stoppedVideoTrack) {
3101
+ pc.addTrack(this._stoppedVideoTrack, this._localCameraStream);
3104
3102
  }
3105
3103
  return session;
3106
3104
  }
@@ -3124,9 +3122,15 @@ class P2pRtcManager {
3124
3122
  this._withForcedRenegotiation(session, () => session.addStream(stream));
3125
3123
  });
3126
3124
  }
3127
- _addTrackToPeerConnections(track, stream) {
3125
+ _addTrackToPeerConnections(track) {
3126
+ this.analytics.P2PAddTrackToPeerConnections++;
3127
+ rtcStats.sendEvent("P2PAddTrackToPeerConnections", {
3128
+ trackId: track.id,
3129
+ kind: track.kind,
3130
+ readyState: track.readyState,
3131
+ });
3128
3132
  this._forEachPeerConnection((session) => {
3129
- this._withForcedRenegotiation(session, () => session.addTrack(track, stream));
3133
+ this._withForcedRenegotiation(session, () => session.addTrack(track));
3130
3134
  });
3131
3135
  }
3132
3136
  _replaceTrackToPeerConnections(oldTrack, newTrack) {
@@ -3162,11 +3166,6 @@ class P2pRtcManager {
3162
3166
  this._withForcedRenegotiation(session, () => session.removeStream(stream));
3163
3167
  });
3164
3168
  }
3165
- _removeTrackFromPeerConnections(track) {
3166
- this._forEachPeerConnection((session) => {
3167
- this._withForcedRenegotiation(session, () => session.removeTrack(track));
3168
- });
3169
- }
3170
3169
  _updateAndScheduleMediaServersRefresh({ iceServers, turnServers, mediaserverConfigTtlSeconds, }) {
3171
3170
  this._iceServers = iceServers;
3172
3171
  this._turnServers = turnServers;
package/dist/index.d.cts CHANGED
@@ -1294,8 +1294,7 @@ declare class Session {
1294
1294
  pendingReplaceTrackActions: (() => Promise<void>)[];
1295
1295
  constructor({ clientId, bandwidth, peerConnectionConfig, deprioritizeH264Encoding, incrementAnalyticMetric, mediaPrefs, }: P2PSessionOptions);
1296
1296
  addStream(stream: MediaStream): void;
1297
- addTrack(track: MediaStreamTrack, stream?: MediaStream): void;
1298
- removeTrack(track: MediaStreamTrack): void;
1297
+ addTrack(track: MediaStreamTrack): void;
1299
1298
  removeStream(stream: MediaStream): void;
1300
1299
  _setRemoteDescription(desc: SignalRTCSessionDescription): Promise<void>;
1301
1300
  handleOffer(offer: SignalRTCSessionDescription): Promise<SignalRTCSessionDescription>;
@@ -1345,6 +1344,8 @@ type P2PAnalytics = {
1345
1344
  P2PMicNotWorking: number;
1346
1345
  P2PLocalNetworkFailed: number;
1347
1346
  P2PRelayedIceCandidate: number;
1347
+ P2PSessionAddTrack: number;
1348
+ P2PAddTrackToPeerConnections: number;
1348
1349
  };
1349
1350
  type P2PAnalyticMetric = keyof P2PAnalytics;
1350
1351
  type P2PIncrementAnalyticMetric = (metric: P2PAnalyticMetric) => void;
@@ -1416,10 +1417,9 @@ declare class P2pRtcManager implements RtcManager {
1416
1417
  _cleanup(clientId: string): void;
1417
1418
  _forEachPeerConnection(func: any): void;
1418
1419
  _addStreamToPeerConnections(stream: MediaStream): void;
1419
- _addTrackToPeerConnections(track: MediaStreamTrack, stream?: MediaStream): void;
1420
+ _addTrackToPeerConnections(track: MediaStreamTrack): void;
1420
1421
  _replaceTrackToPeerConnections(oldTrack: any, newTrack: any): Promise<void | any[]>;
1421
1422
  _removeStreamFromPeerConnections(stream: MediaStream): void;
1422
- _removeTrackFromPeerConnections(track: MediaStreamTrack): void;
1423
1423
  _updateAndScheduleMediaServersRefresh({ iceServers, turnServers, mediaserverConfigTtlSeconds, }: SignalMediaServerConfig): void;
1424
1424
  _clearMediaServersRefresh(): void;
1425
1425
  _monitorAudioTrack(track: MediaStreamTrack): void;
package/dist/index.d.mts CHANGED
@@ -1294,8 +1294,7 @@ declare class Session {
1294
1294
  pendingReplaceTrackActions: (() => Promise<void>)[];
1295
1295
  constructor({ clientId, bandwidth, peerConnectionConfig, deprioritizeH264Encoding, incrementAnalyticMetric, mediaPrefs, }: P2PSessionOptions);
1296
1296
  addStream(stream: MediaStream): void;
1297
- addTrack(track: MediaStreamTrack, stream?: MediaStream): void;
1298
- removeTrack(track: MediaStreamTrack): void;
1297
+ addTrack(track: MediaStreamTrack): void;
1299
1298
  removeStream(stream: MediaStream): void;
1300
1299
  _setRemoteDescription(desc: SignalRTCSessionDescription): Promise<void>;
1301
1300
  handleOffer(offer: SignalRTCSessionDescription): Promise<SignalRTCSessionDescription>;
@@ -1345,6 +1344,8 @@ type P2PAnalytics = {
1345
1344
  P2PMicNotWorking: number;
1346
1345
  P2PLocalNetworkFailed: number;
1347
1346
  P2PRelayedIceCandidate: number;
1347
+ P2PSessionAddTrack: number;
1348
+ P2PAddTrackToPeerConnections: number;
1348
1349
  };
1349
1350
  type P2PAnalyticMetric = keyof P2PAnalytics;
1350
1351
  type P2PIncrementAnalyticMetric = (metric: P2PAnalyticMetric) => void;
@@ -1416,10 +1417,9 @@ declare class P2pRtcManager implements RtcManager {
1416
1417
  _cleanup(clientId: string): void;
1417
1418
  _forEachPeerConnection(func: any): void;
1418
1419
  _addStreamToPeerConnections(stream: MediaStream): void;
1419
- _addTrackToPeerConnections(track: MediaStreamTrack, stream?: MediaStream): void;
1420
+ _addTrackToPeerConnections(track: MediaStreamTrack): void;
1420
1421
  _replaceTrackToPeerConnections(oldTrack: any, newTrack: any): Promise<void | any[]>;
1421
1422
  _removeStreamFromPeerConnections(stream: MediaStream): void;
1422
- _removeTrackFromPeerConnections(track: MediaStreamTrack): void;
1423
1423
  _updateAndScheduleMediaServersRefresh({ iceServers, turnServers, mediaserverConfigTtlSeconds, }: SignalMediaServerConfig): void;
1424
1424
  _clearMediaServersRefresh(): void;
1425
1425
  _monitorAudioTrack(track: MediaStreamTrack): void;
package/dist/index.d.ts CHANGED
@@ -1294,8 +1294,7 @@ declare class Session {
1294
1294
  pendingReplaceTrackActions: (() => Promise<void>)[];
1295
1295
  constructor({ clientId, bandwidth, peerConnectionConfig, deprioritizeH264Encoding, incrementAnalyticMetric, mediaPrefs, }: P2PSessionOptions);
1296
1296
  addStream(stream: MediaStream): void;
1297
- addTrack(track: MediaStreamTrack, stream?: MediaStream): void;
1298
- removeTrack(track: MediaStreamTrack): void;
1297
+ addTrack(track: MediaStreamTrack): void;
1299
1298
  removeStream(stream: MediaStream): void;
1300
1299
  _setRemoteDescription(desc: SignalRTCSessionDescription): Promise<void>;
1301
1300
  handleOffer(offer: SignalRTCSessionDescription): Promise<SignalRTCSessionDescription>;
@@ -1345,6 +1344,8 @@ type P2PAnalytics = {
1345
1344
  P2PMicNotWorking: number;
1346
1345
  P2PLocalNetworkFailed: number;
1347
1346
  P2PRelayedIceCandidate: number;
1347
+ P2PSessionAddTrack: number;
1348
+ P2PAddTrackToPeerConnections: number;
1348
1349
  };
1349
1350
  type P2PAnalyticMetric = keyof P2PAnalytics;
1350
1351
  type P2PIncrementAnalyticMetric = (metric: P2PAnalyticMetric) => void;
@@ -1416,10 +1417,9 @@ declare class P2pRtcManager implements RtcManager {
1416
1417
  _cleanup(clientId: string): void;
1417
1418
  _forEachPeerConnection(func: any): void;
1418
1419
  _addStreamToPeerConnections(stream: MediaStream): void;
1419
- _addTrackToPeerConnections(track: MediaStreamTrack, stream?: MediaStream): void;
1420
+ _addTrackToPeerConnections(track: MediaStreamTrack): void;
1420
1421
  _replaceTrackToPeerConnections(oldTrack: any, newTrack: any): Promise<void | any[]>;
1421
1422
  _removeStreamFromPeerConnections(stream: MediaStream): void;
1422
- _removeTrackFromPeerConnections(track: MediaStreamTrack): void;
1423
1423
  _updateAndScheduleMediaServersRefresh({ iceServers, turnServers, mediaserverConfigTtlSeconds, }: SignalMediaServerConfig): void;
1424
1424
  _clearMediaServersRefresh(): void;
1425
1425
  _monitorAudioTrack(track: MediaStreamTrack): void;
package/dist/index.mjs CHANGED
@@ -523,25 +523,22 @@ class Session {
523
523
  this.pc.addTrack(track, stream);
524
524
  });
525
525
  }
526
- addTrack(track, stream) {
526
+ addTrack(track) {
527
527
  var _a;
528
528
  if (track.kind === "video" && ((_a = this._mediaPrefs) === null || _a === void 0 ? void 0 : _a.wantsVideo) === false) {
529
529
  return;
530
530
  }
531
- if (!stream) {
532
- stream = this.streams[0];
533
- }
531
+ const stream = this.streams[0];
532
+ this._incrementAnalyticMetric("P2PSessionAddTrack");
533
+ rtcStats.sendEvent("P2PSessionAddTrack", {
534
+ trackId: track.id,
535
+ kind: track.kind,
536
+ hasSessionStream: !!stream,
537
+ trackOfSameKindInStream: !!(stream === null || stream === void 0 ? void 0 : stream.getTracks().filter((t) => t.kind === track.kind && t.id !== track.id).length),
538
+ });
534
539
  stream === null || stream === void 0 ? void 0 : stream.addTrack(track);
535
540
  this.pc.addTrack(track, stream);
536
541
  }
537
- removeTrack(track) {
538
- const stream = this.streams[0];
539
- stream.removeTrack(track);
540
- const sender = this.pc.getSenders().find((sender) => sender.track === track);
541
- if (sender) {
542
- this.pc.removeTrack(sender);
543
- }
544
- }
545
542
  removeStream(stream) {
546
543
  const streamIdIndex = this.streamIds.indexOf(stream.id);
547
544
  if (streamIdIndex !== -1) {
@@ -2522,6 +2519,8 @@ class P2pRtcManager {
2522
2519
  P2PMicNotWorking: 0,
2523
2520
  P2PLocalNetworkFailed: 0,
2524
2521
  P2PRelayedIceCandidate: 0,
2522
+ P2PSessionAddTrack: 0,
2523
+ P2PAddTrackToPeerConnections: 0,
2525
2524
  };
2526
2525
  }
2527
2526
  numberOfPeerconnections() {
@@ -2815,7 +2814,6 @@ class P2pRtcManager {
2815
2814
  return this.peerConnections[clientId];
2816
2815
  }
2817
2816
  _createSession({ clientId, initialBandwidth, isOfferer }) {
2818
- var _a, _b;
2819
2817
  if (!clientId) {
2820
2818
  throw new Error("clientId is missing");
2821
2819
  }
@@ -3078,8 +3076,8 @@ class P2pRtcManager {
3078
3076
  if (this._features.increaseIncomingMediaBufferOn) {
3079
3077
  this._setJitterBufferTarget(pc);
3080
3078
  }
3081
- if (((_b = (_a = this._localCameraStream) === null || _a === void 0 ? void 0 : _a.getVideoTracks()) === null || _b === void 0 ? void 0 : _b.length) && this._stoppedVideoTrack) {
3082
- session.addTrack(this._stoppedVideoTrack, this._localCameraStream);
3079
+ if (this._localCameraStream && !this._localCameraStream.getVideoTracks().length && this._stoppedVideoTrack) {
3080
+ pc.addTrack(this._stoppedVideoTrack, this._localCameraStream);
3083
3081
  }
3084
3082
  return session;
3085
3083
  }
@@ -3103,9 +3101,15 @@ class P2pRtcManager {
3103
3101
  this._withForcedRenegotiation(session, () => session.addStream(stream));
3104
3102
  });
3105
3103
  }
3106
- _addTrackToPeerConnections(track, stream) {
3104
+ _addTrackToPeerConnections(track) {
3105
+ this.analytics.P2PAddTrackToPeerConnections++;
3106
+ rtcStats.sendEvent("P2PAddTrackToPeerConnections", {
3107
+ trackId: track.id,
3108
+ kind: track.kind,
3109
+ readyState: track.readyState,
3110
+ });
3107
3111
  this._forEachPeerConnection((session) => {
3108
- this._withForcedRenegotiation(session, () => session.addTrack(track, stream));
3112
+ this._withForcedRenegotiation(session, () => session.addTrack(track));
3109
3113
  });
3110
3114
  }
3111
3115
  _replaceTrackToPeerConnections(oldTrack, newTrack) {
@@ -3141,11 +3145,6 @@ class P2pRtcManager {
3141
3145
  this._withForcedRenegotiation(session, () => session.removeStream(stream));
3142
3146
  });
3143
3147
  }
3144
- _removeTrackFromPeerConnections(track) {
3145
- this._forEachPeerConnection((session) => {
3146
- this._withForcedRenegotiation(session, () => session.removeTrack(track));
3147
- });
3148
- }
3149
3148
  _updateAndScheduleMediaServersRefresh({ iceServers, turnServers, mediaserverConfigTtlSeconds, }) {
3150
3149
  this._iceServers = iceServers;
3151
3150
  this._turnServers = turnServers;
@@ -523,25 +523,22 @@ class Session {
523
523
  this.pc.addTrack(track, stream);
524
524
  });
525
525
  }
526
- addTrack(track, stream) {
526
+ addTrack(track) {
527
527
  var _a;
528
528
  if (track.kind === "video" && ((_a = this._mediaPrefs) === null || _a === void 0 ? void 0 : _a.wantsVideo) === false) {
529
529
  return;
530
530
  }
531
- if (!stream) {
532
- stream = this.streams[0];
533
- }
531
+ const stream = this.streams[0];
532
+ this._incrementAnalyticMetric("P2PSessionAddTrack");
533
+ rtcStats.sendEvent("P2PSessionAddTrack", {
534
+ trackId: track.id,
535
+ kind: track.kind,
536
+ hasSessionStream: !!stream,
537
+ trackOfSameKindInStream: !!(stream === null || stream === void 0 ? void 0 : stream.getTracks().filter((t) => t.kind === track.kind && t.id !== track.id).length),
538
+ });
534
539
  stream === null || stream === void 0 ? void 0 : stream.addTrack(track);
535
540
  this.pc.addTrack(track, stream);
536
541
  }
537
- removeTrack(track) {
538
- const stream = this.streams[0];
539
- stream.removeTrack(track);
540
- const sender = this.pc.getSenders().find((sender) => sender.track === track);
541
- if (sender) {
542
- this.pc.removeTrack(sender);
543
- }
544
- }
545
542
  removeStream(stream) {
546
543
  const streamIdIndex = this.streamIds.indexOf(stream.id);
547
544
  if (streamIdIndex !== -1) {
@@ -2522,6 +2519,8 @@ class P2pRtcManager {
2522
2519
  P2PMicNotWorking: 0,
2523
2520
  P2PLocalNetworkFailed: 0,
2524
2521
  P2PRelayedIceCandidate: 0,
2522
+ P2PSessionAddTrack: 0,
2523
+ P2PAddTrackToPeerConnections: 0,
2525
2524
  };
2526
2525
  }
2527
2526
  numberOfPeerconnections() {
@@ -2815,7 +2814,6 @@ class P2pRtcManager {
2815
2814
  return this.peerConnections[clientId];
2816
2815
  }
2817
2816
  _createSession({ clientId, initialBandwidth, isOfferer }) {
2818
- var _a, _b;
2819
2817
  if (!clientId) {
2820
2818
  throw new Error("clientId is missing");
2821
2819
  }
@@ -3078,8 +3076,8 @@ class P2pRtcManager {
3078
3076
  if (this._features.increaseIncomingMediaBufferOn) {
3079
3077
  this._setJitterBufferTarget(pc);
3080
3078
  }
3081
- if (((_b = (_a = this._localCameraStream) === null || _a === void 0 ? void 0 : _a.getVideoTracks()) === null || _b === void 0 ? void 0 : _b.length) && this._stoppedVideoTrack) {
3082
- session.addTrack(this._stoppedVideoTrack, this._localCameraStream);
3079
+ if (this._localCameraStream && !this._localCameraStream.getVideoTracks().length && this._stoppedVideoTrack) {
3080
+ pc.addTrack(this._stoppedVideoTrack, this._localCameraStream);
3083
3081
  }
3084
3082
  return session;
3085
3083
  }
@@ -3103,9 +3101,15 @@ class P2pRtcManager {
3103
3101
  this._withForcedRenegotiation(session, () => session.addStream(stream));
3104
3102
  });
3105
3103
  }
3106
- _addTrackToPeerConnections(track, stream) {
3104
+ _addTrackToPeerConnections(track) {
3105
+ this.analytics.P2PAddTrackToPeerConnections++;
3106
+ rtcStats.sendEvent("P2PAddTrackToPeerConnections", {
3107
+ trackId: track.id,
3108
+ kind: track.kind,
3109
+ readyState: track.readyState,
3110
+ });
3107
3111
  this._forEachPeerConnection((session) => {
3108
- this._withForcedRenegotiation(session, () => session.addTrack(track, stream));
3112
+ this._withForcedRenegotiation(session, () => session.addTrack(track));
3109
3113
  });
3110
3114
  }
3111
3115
  _replaceTrackToPeerConnections(oldTrack, newTrack) {
@@ -3141,11 +3145,6 @@ class P2pRtcManager {
3141
3145
  this._withForcedRenegotiation(session, () => session.removeStream(stream));
3142
3146
  });
3143
3147
  }
3144
- _removeTrackFromPeerConnections(track) {
3145
- this._forEachPeerConnection((session) => {
3146
- this._withForcedRenegotiation(session, () => session.removeTrack(track));
3147
- });
3148
- }
3149
3148
  _updateAndScheduleMediaServersRefresh({ iceServers, turnServers, mediaserverConfigTtlSeconds, }) {
3150
3149
  this._iceServers = iceServers;
3151
3150
  this._turnServers = turnServers;
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": "8.2.1",
4
+ "version": "8.2.3",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/whereby/sdk",
7
7
  "repository": {