livekit-client 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. package/dist/livekit-client.e2ee.worker.js +1 -1
  2. package/dist/livekit-client.e2ee.worker.js.map +1 -1
  3. package/dist/livekit-client.e2ee.worker.mjs +10 -8
  4. package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
  5. package/dist/livekit-client.esm.mjs +77 -52
  6. package/dist/livekit-client.esm.mjs.map +1 -1
  7. package/dist/livekit-client.umd.js +1 -1
  8. package/dist/livekit-client.umd.js.map +1 -1
  9. package/dist/src/api/SignalClient.d.ts +1 -1
  10. package/dist/src/api/SignalClient.d.ts.map +1 -1
  11. package/dist/src/e2ee/worker/FrameCryptor.d.ts +1 -0
  12. package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
  13. package/dist/src/logger.d.ts +2 -2
  14. package/dist/src/logger.d.ts.map +1 -1
  15. package/dist/src/room/RTCEngine.d.ts +3 -2
  16. package/dist/src/room/RTCEngine.d.ts.map +1 -1
  17. package/dist/src/room/Room.d.ts.map +1 -1
  18. package/dist/src/room/participant/Participant.d.ts +1 -2
  19. package/dist/src/room/participant/Participant.d.ts.map +1 -1
  20. package/dist/src/room/participant/RemoteParticipant.d.ts +4 -0
  21. package/dist/src/room/participant/RemoteParticipant.d.ts.map +1 -1
  22. package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
  23. package/dist/src/room/track/utils.d.ts.map +1 -1
  24. package/dist/src/room/utils.d.ts.map +1 -1
  25. package/dist/ts4.2/src/api/SignalClient.d.ts +1 -1
  26. package/dist/ts4.2/src/e2ee/worker/FrameCryptor.d.ts +1 -0
  27. package/dist/ts4.2/src/logger.d.ts +2 -2
  28. package/dist/ts4.2/src/room/RTCEngine.d.ts +3 -2
  29. package/dist/ts4.2/src/room/participant/Participant.d.ts +1 -2
  30. package/dist/ts4.2/src/room/participant/RemoteParticipant.d.ts +4 -0
  31. package/package.json +1 -1
  32. package/src/api/SignalClient.ts +9 -5
  33. package/src/e2ee/worker/FrameCryptor.ts +12 -6
  34. package/src/logger.ts +21 -18
  35. package/src/room/RTCEngine.ts +12 -8
  36. package/src/room/Room.ts +15 -2
  37. package/src/room/participant/Participant.ts +0 -2
  38. package/src/room/participant/RemoteParticipant.ts +8 -0
  39. package/src/room/track/LocalVideoTrack.ts +5 -1
  40. package/src/room/track/utils.ts +18 -11
  41. package/src/room/utils.ts +3 -0
@@ -309,6 +309,7 @@ var LoggerNames;
309
309
  LoggerNames["E2EE"] = "lk-e2ee";
310
310
  })(LoggerNames || (LoggerNames = {}));
311
311
  let livekitLogger = loglevelExports.getLogger('livekit');
312
+ const livekitLoggers = Object.values(LoggerNames).map(name => loglevelExports.getLogger(name));
312
313
  livekitLogger.setDefaultLevel(LogLevel.info);
313
314
  /**
314
315
  * @internal
@@ -322,13 +323,7 @@ function setLogLevel(level, loggerName) {
322
323
  if (loggerName) {
323
324
  loglevelExports.getLogger(loggerName).setLevel(level);
324
325
  }
325
- for (const logger of Object.entries(loglevelExports.getLoggers()).filter(_ref => {
326
- let [logrName] = _ref;
327
- return logrName.startsWith('livekit');
328
- }).map(_ref2 => {
329
- let [, logr] = _ref2;
330
- return logr;
331
- })) {
326
+ for (const logger of livekitLoggers) {
332
327
  logger.setLevel(level);
333
328
  }
334
329
  }
@@ -336,21 +331,23 @@ function setLogLevel(level, loggerName) {
336
331
  * use this to hook into the logging function to allow sending internal livekit logs to third party services
337
332
  * if set, the browser logs will lose their stacktrace information (see https://github.com/pimterry/loglevel#writing-plugins)
338
333
  */
339
- function setLogExtension(extension) {
340
- let logger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : livekitLogger;
341
- const originalFactory = logger.methodFactory;
342
- logger.methodFactory = (methodName, configLevel, loggerName) => {
343
- const rawMethod = originalFactory(methodName, configLevel, loggerName);
344
- const logLevel = LogLevel[methodName];
345
- const needLog = logLevel >= configLevel && logLevel < LogLevel.silent;
346
- return (msg, context) => {
347
- if (context) rawMethod(msg, context);else rawMethod(msg);
348
- if (needLog) {
349
- extension(logLevel, msg, context);
350
- }
334
+ function setLogExtension(extension, logger) {
335
+ const loggers = logger ? [logger] : livekitLoggers;
336
+ loggers.forEach(logR => {
337
+ const originalFactory = logR.methodFactory;
338
+ logR.methodFactory = (methodName, configLevel, loggerName) => {
339
+ const rawMethod = originalFactory(methodName, configLevel, loggerName);
340
+ const logLevel = LogLevel[methodName];
341
+ const needLog = logLevel >= configLevel && logLevel < LogLevel.silent;
342
+ return (msg, context) => {
343
+ if (context) rawMethod(msg, context);else rawMethod(msg);
344
+ if (needLog) {
345
+ extension(logLevel, msg, context);
346
+ }
347
+ };
351
348
  };
352
- };
353
- logger.setLevel(logger.getLevel()); // Be sure to call setLevel method in order to apply plugin
349
+ logR.setLevel(logR.getLevel());
350
+ });
354
351
  }
355
352
  const workerLogger = loglevelExports.getLogger('lk-e2ee');
356
353
 
@@ -10711,7 +10708,7 @@ function getMatch(exp, ua) {
10711
10708
  return match && match.length >= id && match[id] || '';
10712
10709
  }
10713
10710
 
10714
- var version$1 = "2.0.4";
10711
+ var version$1 = "2.0.5";
10715
10712
 
10716
10713
  const version = version$1;
10717
10714
  const protocolVersion = 12;
@@ -13700,20 +13697,26 @@ function getTrackPublicationInfo(tracks) {
13700
13697
  function getLogContextFromTrack(track) {
13701
13698
  if (track instanceof Track) {
13702
13699
  return {
13703
- trackSid: track.sid,
13704
- trackSource: track.source,
13705
- trackMuted: track.isMuted,
13706
- trackEnabled: track.mediaStreamTrack.enabled,
13707
- trackKind: track.kind
13700
+ trackID: track.sid,
13701
+ source: track.source,
13702
+ muted: track.isMuted,
13703
+ enabled: track.mediaStreamTrack.enabled,
13704
+ kind: track.kind,
13705
+ streamID: track.mediaStreamID,
13706
+ streamTrackID: track.mediaStreamTrack.id
13708
13707
  };
13709
13708
  } else {
13710
13709
  return {
13711
- trackSid: track.trackSid,
13712
- trackName: track.trackName,
13713
- track: track.track ? getLogContextFromTrack(track.track) : undefined,
13714
- trackEnabled: track.isEnabled,
13715
- trackEncrypted: track.isEncrypted,
13716
- trackMimeType: track.mimeType
13710
+ trackID: track.trackSid,
13711
+ enabled: track.isEnabled,
13712
+ muted: track.isMuted,
13713
+ trackInfo: Object.assign({
13714
+ mimeType: track.mimeType,
13715
+ name: track.trackName,
13716
+ encrypted: track.isEncrypted,
13717
+ kind: track.kind,
13718
+ source: track.source
13719
+ }, track.track ? getLogContextFromTrack(track.track) : {})
13717
13720
  };
13718
13721
  }
13719
13722
  }
@@ -13830,6 +13833,9 @@ function supportsSetCodecPreferences(transceiver) {
13830
13833
  return false;
13831
13834
  }
13832
13835
  function isBrowserSupported() {
13836
+ if (typeof RTCPeerConnection === 'undefined') {
13837
+ return false;
13838
+ }
13833
13839
  return supportsTransceiver() || supportsAddTrack();
13834
13840
  }
13835
13841
  function isFireFox() {
@@ -15174,7 +15180,7 @@ class SignalClient {
15174
15180
  this.handleWSError(ev);
15175
15181
  });
15176
15182
  this.ws.onmessage = ev => __awaiter(this, void 0, void 0, function* () {
15177
- var _a, _b, _c, _d;
15183
+ var _a, _b, _c;
15178
15184
  // not considered connected until JoinResponse is received
15179
15185
  let resp;
15180
15186
  if (typeof ev.data === 'string') {
@@ -15210,16 +15216,17 @@ class SignalClient {
15210
15216
  abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.removeEventListener('abort', abortHandler);
15211
15217
  this.startPingInterval();
15212
15218
  if (((_b = resp.message) === null || _b === void 0 ? void 0 : _b.case) === 'reconnect') {
15213
- resolve((_c = resp.message) === null || _c === void 0 ? void 0 : _c.value);
15219
+ resolve(resp.message.value);
15214
15220
  } else {
15215
- resolve();
15221
+ this.log.debug('declaring signal reconnected without reconnect response received', this.logContext);
15222
+ resolve(undefined);
15216
15223
  shouldProcessMessage = true;
15217
15224
  }
15218
15225
  } else if (this.isEstablishingConnection && resp.message.case === 'leave') {
15219
15226
  reject(new ConnectionError('Received leave request while trying to (re)connect', 4 /* ConnectionErrorReason.LeaveRequest */));
15220
15227
  } else if (!opts.reconnect) {
15221
15228
  // non-reconnect case, should receive join response first
15222
- reject(new ConnectionError("did not receive join response, got ".concat((_d = resp.message) === null || _d === void 0 ? void 0 : _d.case, " instead")));
15229
+ reject(new ConnectionError("did not receive join response, got ".concat((_c = resp.message) === null || _c === void 0 ? void 0 : _c.case, " instead")));
15223
15230
  }
15224
15231
  if (!shouldProcessMessage) {
15225
15232
  return;
@@ -17374,11 +17381,12 @@ class RTCEngine extends eventsExports.EventEmitter {
17374
17381
  }
17375
17382
  /** @internal */
17376
17383
  get logContext() {
17377
- var _a, _b, _c, _d, _e, _f;
17384
+ var _a, _b, _c, _d, _e, _f, _g, _h;
17378
17385
  return {
17379
17386
  room: (_b = (_a = this.latestJoinResponse) === null || _a === void 0 ? void 0 : _a.room) === null || _b === void 0 ? void 0 : _b.name,
17380
- roomSid: (_d = (_c = this.latestJoinResponse) === null || _c === void 0 ? void 0 : _c.room) === null || _d === void 0 ? void 0 : _d.sid,
17381
- identity: (_f = (_e = this.latestJoinResponse) === null || _e === void 0 ? void 0 : _e.participant) === null || _f === void 0 ? void 0 : _f.identity
17387
+ roomID: (_d = (_c = this.latestJoinResponse) === null || _c === void 0 ? void 0 : _c.room) === null || _d === void 0 ? void 0 : _d.sid,
17388
+ participant: (_f = (_e = this.latestJoinResponse) === null || _e === void 0 ? void 0 : _e.participant) === null || _f === void 0 ? void 0 : _f.identity,
17389
+ pID: (_h = (_g = this.latestJoinResponse) === null || _g === void 0 ? void 0 : _g.participant) === null || _h === void 0 ? void 0 : _h.sid
17382
17390
  };
17383
17391
  }
17384
17392
  join(url, token, opts, abortSignal) {
@@ -17974,13 +17982,10 @@ class RTCEngine extends eventsExports.EventEmitter {
17974
17982
  }
17975
17983
  this.log.info("resuming signal connection, attempt ".concat(this.reconnectAttempts), this.logContext);
17976
17984
  this.emit(EngineEvent.Resuming);
17985
+ let res;
17977
17986
  try {
17978
17987
  this.setupSignalClientCallbacks();
17979
- const res = yield this.client.reconnect(this.url, this.token, this.participantSid, reason);
17980
- if (res) {
17981
- const rtcConfig = this.makeRTCConfiguration(res);
17982
- this.pcManager.updateConfiguration(rtcConfig);
17983
- }
17988
+ res = yield this.client.reconnect(this.url, this.token, this.participantSid, reason);
17984
17989
  } catch (error) {
17985
17990
  let message = '';
17986
17991
  if (error instanceof Error) {
@@ -17998,6 +18003,12 @@ class RTCEngine extends eventsExports.EventEmitter {
17998
18003
  throw new SignalReconnectError(message);
17999
18004
  }
18000
18005
  this.emit(EngineEvent.SignalResumed);
18006
+ if (res) {
18007
+ const rtcConfig = this.makeRTCConfiguration(res);
18008
+ this.pcManager.updateConfiguration(rtcConfig);
18009
+ } else {
18010
+ this.log.warn('Did not receive reconnect response', this.logContext);
18011
+ }
18001
18012
  if (this.shouldFailNext) {
18002
18013
  this.shouldFailNext = false;
18003
18014
  throw new Error('simulated failure');
@@ -19315,7 +19326,10 @@ function setPublishingLayersForSender(sender, senderEncodings, qualities, sender
19315
19326
  return;
19316
19327
  }
19317
19328
  if (encodings.length !== senderEncodings.length) {
19318
- log.warn('cannot set publishing layers, encodings mismatch');
19329
+ log.warn('cannot set publishing layers, encodings mismatch', Object.assign(Object.assign({}, logContext), {
19330
+ encodings,
19331
+ senderEncodings
19332
+ }));
19319
19333
  return;
19320
19334
  }
19321
19335
  let hasChanged = false;
@@ -20207,10 +20221,7 @@ function qualityFromProto(q) {
20207
20221
  class Participant extends eventsExports.EventEmitter {
20208
20222
  get logContext() {
20209
20223
  var _a, _b;
20210
- return Object.assign(Object.assign({}, (_b = (_a = this.loggerOptions) === null || _a === void 0 ? void 0 : _a.loggerContextCb) === null || _b === void 0 ? void 0 : _b.call(_a)), {
20211
- participantSid: this.sid,
20212
- participantId: this.identity
20213
- });
20224
+ return Object.assign({}, (_b = (_a = this.loggerOptions) === null || _a === void 0 ? void 0 : _a.loggerContextCb) === null || _b === void 0 ? void 0 : _b.call(_a));
20214
20225
  }
20215
20226
  get isEncrypted() {
20216
20227
  return this.trackPublications.size > 0 && Array.from(this.trackPublications.values()).every(tr => tr.isEncrypted);
@@ -21700,6 +21711,12 @@ class RemoteParticipant extends Participant {
21700
21711
  static fromParticipantInfo(signalClient, pi) {
21701
21712
  return new RemoteParticipant(signalClient, pi.sid, pi.identity, pi.name, pi.metadata);
21702
21713
  }
21714
+ get logContext() {
21715
+ return Object.assign(Object.assign({}, super.logContext), {
21716
+ rpID: this.sid,
21717
+ remoteParticipant: this.identity
21718
+ });
21719
+ }
21703
21720
  /** @internal */
21704
21721
  constructor(signalClient, sid, identity, name, metadata, loggerOptions) {
21705
21722
  super(sid, identity || '', name, metadata, loggerOptions);
@@ -21994,6 +22011,13 @@ class Room extends eventsExports.EventEmitter {
21994
22011
  this.isResuming = false;
21995
22012
  this.connect = (url, token, opts) => __awaiter(this, void 0, void 0, function* () {
21996
22013
  var _c;
22014
+ if (!isBrowserSupported()) {
22015
+ if (isReactNative()) {
22016
+ throw Error("WebRTC isn't detected, have you called registerGlobals?");
22017
+ } else {
22018
+ throw Error("LiveKit doesn't seem to be supported on this browser. Try to update your browser and make sure no browser extensions are disabling webRTC.");
22019
+ }
22020
+ }
21997
22021
  // In case a disconnect called happened right before the connect call, make sure the disconnect is completed first by awaiting its lock
21998
22022
  const unlockDisconnect = yield this.disconnectLock.lock();
21999
22023
  if (this.state === ConnectionState.Connected) {
@@ -22654,8 +22678,9 @@ class Room extends eventsExports.EventEmitter {
22654
22678
  var _a;
22655
22679
  return {
22656
22680
  room: this.name,
22657
- roomSid: (_a = this.roomInfo) === null || _a === void 0 ? void 0 : _a.sid,
22658
- identity: this.localParticipant.identity
22681
+ roomID: (_a = this.roomInfo) === null || _a === void 0 ? void 0 : _a.sid,
22682
+ participant: this.localParticipant.identity,
22683
+ pID: this.localParticipant.sid
22659
22684
  };
22660
22685
  }
22661
22686
  /**