livekit-client 2.7.3 → 2.7.5

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 (32) hide show
  1. package/dist/livekit-client.esm.mjs +37 -14
  2. package/dist/livekit-client.esm.mjs.map +1 -1
  3. package/dist/livekit-client.umd.js +1 -1
  4. package/dist/livekit-client.umd.js.map +1 -1
  5. package/dist/src/e2ee/E2eeManager.d.ts +10 -3
  6. package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
  7. package/dist/src/e2ee/types.d.ts +6 -1
  8. package/dist/src/e2ee/types.d.ts.map +1 -1
  9. package/dist/src/index.d.ts +1 -0
  10. package/dist/src/index.d.ts.map +1 -1
  11. package/dist/src/room/PCTransport.d.ts.map +1 -1
  12. package/dist/src/room/Room.d.ts.map +1 -1
  13. package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
  14. package/dist/src/room/participant/Participant.d.ts +1 -1
  15. package/dist/src/room/participant/Participant.d.ts.map +1 -1
  16. package/dist/src/room/participant/RemoteParticipant.d.ts +1 -1
  17. package/dist/src/room/participant/RemoteParticipant.d.ts.map +1 -1
  18. package/dist/ts4.2/src/e2ee/E2eeManager.d.ts +10 -3
  19. package/dist/ts4.2/src/e2ee/types.d.ts +6 -1
  20. package/dist/ts4.2/src/index.d.ts +1 -0
  21. package/dist/ts4.2/src/room/participant/Participant.d.ts +1 -1
  22. package/dist/ts4.2/src/room/participant/RemoteParticipant.d.ts +1 -1
  23. package/package.json +2 -2
  24. package/src/e2ee/E2eeManager.ts +14 -3
  25. package/src/e2ee/types.ts +8 -1
  26. package/src/index.ts +1 -0
  27. package/src/room/PCTransport.ts +16 -0
  28. package/src/room/Room.ts +27 -11
  29. package/src/room/participant/LocalParticipant.test.ts +4 -0
  30. package/src/room/participant/LocalParticipant.ts +3 -1
  31. package/src/room/participant/Participant.ts +2 -1
  32. package/src/room/participant/RemoteParticipant.ts +3 -1
@@ -11119,7 +11119,7 @@ function getOSVersion(ua) {
11119
11119
  return ua.includes('mac os') ? getMatch(/\(.+?(\d+_\d+(:?_\d+)?)/, ua, 1).replace(/_/g, '.') : undefined;
11120
11120
  }
11121
11121
 
11122
- var version$1 = "2.7.3";
11122
+ var version$1 = "2.7.5";
11123
11123
 
11124
11124
  const version = version$1;
11125
11125
  const protocolVersion = 15;
@@ -14870,6 +14870,7 @@ class PCTransport extends eventsExports.EventEmitter {
14870
14870
  }, this.logContext));
14871
14871
  const sdpParsed = libExports.parse((_a = offer.sdp) !== null && _a !== void 0 ? _a : '');
14872
14872
  sdpParsed.media.forEach(media => {
14873
+ ensureIPAddrMatchVersion(media);
14873
14874
  if (media.type === 'audio') {
14874
14875
  ensureAudioNackAndStereo(media, [], []);
14875
14876
  } else if (media.type === 'video') {
@@ -14922,6 +14923,7 @@ class PCTransport extends eventsExports.EventEmitter {
14922
14923
  const answer = yield this.pc.createAnswer();
14923
14924
  const sdpParsed = libExports.parse((_a = answer.sdp) !== null && _a !== void 0 ? _a : '');
14924
14925
  sdpParsed.media.forEach(media => {
14926
+ ensureIPAddrMatchVersion(media);
14925
14927
  if (media.type === 'audio') {
14926
14928
  ensureAudioNackAndStereo(media, this.remoteStereoMids, this.remoteNackMids);
14927
14929
  }
@@ -15176,6 +15178,19 @@ function extractStereoAndNackAudioFromOffer(offer) {
15176
15178
  nackMids
15177
15179
  };
15178
15180
  }
15181
+ function ensureIPAddrMatchVersion(media) {
15182
+ // Chrome could generate sdp with c = IN IP4 <ipv6 addr>
15183
+ // in edge case and return error when set sdp.This is not a
15184
+ // sdk error but correct it if the issue detected.
15185
+ if (media.connection) {
15186
+ const isV6 = media.connection.ip.indexOf(':') >= 0;
15187
+ if (media.connection.version === 4 && isV6 || media.connection.version === 6 && !isV6) {
15188
+ // fallback to dummy address
15189
+ media.connection.ip = '0.0.0.0';
15190
+ media.connection.version = 4;
15191
+ }
15192
+ }
15193
+ }
15179
15194
 
15180
15195
  const defaultVideoCodec = 'vp8';
15181
15196
  const publishDefaults = {
@@ -18883,8 +18898,8 @@ class Participant extends eventsExports.EventEmitter {
18883
18898
  return Object.freeze(Object.assign({}, this._attributes));
18884
18899
  }
18885
18900
  /** @internal */
18886
- constructor(sid, identity, name, metadata, loggerOptions) {
18887
- let kind = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : ParticipantInfo_Kind.STANDARD;
18901
+ constructor(sid, identity, name, metadata, attributes, loggerOptions) {
18902
+ let kind = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : ParticipantInfo_Kind.STANDARD;
18888
18903
  var _a;
18889
18904
  super();
18890
18905
  /** audio level between 0-1.0, 1 being loudest, 0 being softest */
@@ -18904,7 +18919,7 @@ class Participant extends eventsExports.EventEmitter {
18904
18919
  this.videoTrackPublications = new Map();
18905
18920
  this.trackPublications = new Map();
18906
18921
  this._kind = kind;
18907
- this._attributes = {};
18922
+ this._attributes = attributes !== null && attributes !== void 0 ? attributes : {};
18908
18923
  }
18909
18924
  getTrackPublications() {
18910
18925
  return Array.from(this.trackPublications.values());
@@ -19091,7 +19106,7 @@ function trackPermissionToProto(perms) {
19091
19106
  class LocalParticipant extends Participant {
19092
19107
  /** @internal */
19093
19108
  constructor(sid, identity, engine, options) {
19094
- super(sid, identity, undefined, undefined, {
19109
+ super(sid, identity, undefined, undefined, undefined, {
19095
19110
  loggerName: options.loggerName,
19096
19111
  loggerContextCb: () => this.engine.logContext
19097
19112
  });
@@ -20147,6 +20162,8 @@ class LocalParticipant extends Participant {
20147
20162
  }
20148
20163
  if (stopOnUnpublish) {
20149
20164
  track.stop();
20165
+ } else {
20166
+ track.stopMonitor();
20150
20167
  }
20151
20168
  let negotiationNeeded = false;
20152
20169
  const trackSender = track.sender;
@@ -20912,7 +20929,7 @@ class RemoteTrackPublication extends TrackPublication {
20912
20929
  class RemoteParticipant extends Participant {
20913
20930
  /** @internal */
20914
20931
  static fromParticipantInfo(signalClient, pi, loggerOptions) {
20915
- return new RemoteParticipant(signalClient, pi.sid, pi.identity, pi.name, pi.metadata, loggerOptions, pi.kind);
20932
+ return new RemoteParticipant(signalClient, pi.sid, pi.identity, pi.name, pi.metadata, pi.attributes, loggerOptions, pi.kind);
20916
20933
  }
20917
20934
  get logContext() {
20918
20935
  return Object.assign(Object.assign({}, super.logContext), {
@@ -20921,9 +20938,9 @@ class RemoteParticipant extends Participant {
20921
20938
  });
20922
20939
  }
20923
20940
  /** @internal */
20924
- constructor(signalClient, sid, identity, name, metadata, loggerOptions) {
20925
- let kind = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : ParticipantInfo_Kind.STANDARD;
20926
- super(sid, identity || '', name, metadata, loggerOptions, kind);
20941
+ constructor(signalClient, sid, identity, name, metadata, attributes, loggerOptions) {
20942
+ let kind = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : ParticipantInfo_Kind.STANDARD;
20943
+ super(sid, identity || '', name, metadata, attributes, loggerOptions, kind);
20927
20944
  this.signalClient = signalClient;
20928
20945
  this.trackPublications = new Map();
20929
20946
  this.audioTrackPublications = new Map();
@@ -21955,7 +21972,11 @@ class Room extends eventsExports.EventEmitter {
21955
21972
  setupE2EE() {
21956
21973
  var _a;
21957
21974
  if (this.options.e2ee) {
21958
- this.e2eeManager = new E2EEManager(this.options.e2ee);
21975
+ if ('e2eeManager' in this.options.e2ee) {
21976
+ this.e2eeManager = this.options.e2ee.e2eeManager;
21977
+ } else {
21978
+ this.e2eeManager = new E2EEManager(this.options.e2ee);
21979
+ }
21959
21980
  this.e2eeManager.on(EncryptionEvent.ParticipantEncryptionStatusChanged, (enabled, participant) => {
21960
21981
  if (participant instanceof LocalParticipant) {
21961
21982
  this.isE2EEEnabled = enabled;
@@ -22456,13 +22477,15 @@ class Room extends eventsExports.EventEmitter {
22456
22477
  });
22457
22478
  });
22458
22479
  this.localParticipant.trackPublications.forEach(pub => {
22459
- var _a, _b;
22480
+ var _a, _b, _c;
22460
22481
  if (pub.track) {
22461
22482
  this.localParticipant.unpublishTrack(pub.track, shouldStopTracks);
22462
22483
  }
22463
22484
  if (shouldStopTracks) {
22464
22485
  (_a = pub.track) === null || _a === void 0 ? void 0 : _a.detach();
22465
22486
  (_b = pub.track) === null || _b === void 0 ? void 0 : _b.stop();
22487
+ } else {
22488
+ (_c = pub.track) === null || _c === void 0 ? void 0 : _c.stopMonitor();
22466
22489
  }
22467
22490
  });
22468
22491
  this.localParticipant.off(ParticipantEvent.ParticipantMetadataChanged, this.onLocalParticipantMetadataChanged).off(ParticipantEvent.ParticipantNameChanged, this.onLocalParticipantNameChanged).off(ParticipantEvent.AttributesChanged, this.onLocalAttributesChanged).off(ParticipantEvent.TrackMuted, this.onLocalTrackMuted).off(ParticipantEvent.TrackUnmuted, this.onLocalTrackUnmuted).off(ParticipantEvent.LocalTrackPublished, this.onLocalTrackPublished).off(ParticipantEvent.LocalTrackUnpublished, this.onLocalTrackUnpublished).off(ParticipantEvent.ConnectionQualityChanged, this.onLocalConnectionQualityChanged).off(ParticipantEvent.MediaDevicesError, this.onMediaDevicesError).off(ParticipantEvent.AudioStreamAcquired, this.startAudio).off(ParticipantEvent.ChatMessage, this.onLocalChatMessageSent).off(ParticipantEvent.ParticipantPermissionsChanged, this.onLocalParticipantPermissionsChanged);
@@ -22542,7 +22565,7 @@ class Room extends eventsExports.EventEmitter {
22542
22565
  loggerName: this.options.loggerName
22543
22566
  });
22544
22567
  } else {
22545
- participant = new RemoteParticipant(this.engine.client, '', identity, undefined, undefined, {
22568
+ participant = new RemoteParticipant(this.engine.client, '', identity, undefined, undefined, undefined, {
22546
22569
  loggerContextCb: () => this.logContext,
22547
22570
  loggerName: this.options.loggerName
22548
22571
  });
@@ -22661,10 +22684,10 @@ class Room extends eventsExports.EventEmitter {
22661
22684
  consecutiveFailures++;
22662
22685
  this.log.warn('detected connection state mismatch', Object.assign(Object.assign({}, this.logContext), {
22663
22686
  numFailures: consecutiveFailures,
22664
- engine: {
22687
+ engine: this.engine ? {
22665
22688
  closed: this.engine.isClosed,
22666
22689
  transportsConnected: this.engine.verifyTransport()
22667
- }
22690
+ } : undefined
22668
22691
  }));
22669
22692
  if (consecutiveFailures >= 3) {
22670
22693
  this.recreateEngine();