livekit-client 2.20.0 → 2.20.2

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 (155) 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 +41 -11
  4. package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
  5. package/dist/livekit-client.esm.mjs +744 -178
  6. package/dist/livekit-client.esm.mjs.map +1 -1
  7. package/dist/livekit-client.fm.worker.js +1 -1
  8. package/dist/livekit-client.fm.worker.js.map +1 -1
  9. package/dist/livekit-client.fm.worker.mjs +41 -7
  10. package/dist/livekit-client.fm.worker.mjs.map +1 -1
  11. package/dist/livekit-client.umd.js +1 -1
  12. package/dist/livekit-client.umd.js.map +1 -1
  13. package/dist/src/api/SignalClient.d.ts.map +1 -1
  14. package/dist/src/e2ee/E2eeManager.d.ts +1 -0
  15. package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
  16. package/dist/src/e2ee/types.d.ts +1 -0
  17. package/dist/src/e2ee/types.d.ts.map +1 -1
  18. package/dist/src/e2ee/utils.d.ts +1 -0
  19. package/dist/src/e2ee/utils.d.ts.map +1 -1
  20. package/dist/src/e2ee/worker/DataCryptor.d.ts +1 -0
  21. package/dist/src/e2ee/worker/DataCryptor.d.ts.map +1 -1
  22. package/dist/src/e2ee/worker/FrameCryptor.d.ts +1 -0
  23. package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
  24. package/dist/src/e2ee/worker/naluUtils.d.ts +1 -0
  25. package/dist/src/e2ee/worker/naluUtils.d.ts.map +1 -1
  26. package/dist/src/e2ee/worker/sifPayload.d.ts +1 -0
  27. package/dist/src/e2ee/worker/sifPayload.d.ts.map +1 -1
  28. package/dist/src/frameMetadata/frameMetadata.d.ts +1 -0
  29. package/dist/src/frameMetadata/frameMetadata.d.ts.map +1 -1
  30. package/dist/src/frameMetadata/types.d.ts +1 -0
  31. package/dist/src/frameMetadata/types.d.ts.map +1 -1
  32. package/dist/src/logger.d.ts +3 -1
  33. package/dist/src/logger.d.ts.map +1 -1
  34. package/dist/src/room/PCTransport.d.ts +42 -1
  35. package/dist/src/room/PCTransport.d.ts.map +1 -1
  36. package/dist/src/room/PCTransportManager.d.ts +1 -0
  37. package/dist/src/room/PCTransportManager.d.ts.map +1 -1
  38. package/dist/src/room/RTCEngine.d.ts +46 -4
  39. package/dist/src/room/RTCEngine.d.ts.map +1 -1
  40. package/dist/src/room/RegionUrlProvider.d.ts.map +1 -1
  41. package/dist/src/room/Room.d.ts +1 -0
  42. package/dist/src/room/Room.d.ts.map +1 -1
  43. package/dist/src/room/data-track/depacketizer.d.ts.map +1 -1
  44. package/dist/src/room/data-track/frame.d.ts +1 -0
  45. package/dist/src/room/data-track/frame.d.ts.map +1 -1
  46. package/dist/src/room/data-track/incoming/IncomingDataTrackManager.d.ts +7 -0
  47. package/dist/src/room/data-track/incoming/IncomingDataTrackManager.d.ts.map +1 -1
  48. package/dist/src/room/data-track/outgoing/OutgoingDataTrackManager.d.ts.map +1 -1
  49. package/dist/src/room/data-track/outgoing/types.d.ts +1 -0
  50. package/dist/src/room/data-track/outgoing/types.d.ts.map +1 -1
  51. package/dist/src/room/data-track/packet/extensions.d.ts +1 -0
  52. package/dist/src/room/data-track/packet/extensions.d.ts.map +1 -1
  53. package/dist/src/room/data-track/packet/index.d.ts +1 -0
  54. package/dist/src/room/data-track/packet/index.d.ts.map +1 -1
  55. package/dist/src/room/data-track/packet/serializable.d.ts +1 -0
  56. package/dist/src/room/data-track/packet/serializable.d.ts.map +1 -1
  57. package/dist/src/room/participant/LocalParticipant.d.ts +1 -0
  58. package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
  59. package/dist/src/room/participant/Participant.d.ts +1 -0
  60. package/dist/src/room/participant/Participant.d.ts.map +1 -1
  61. package/dist/src/room/participant/publishUtils.d.ts +7 -0
  62. package/dist/src/room/participant/publishUtils.d.ts.map +1 -1
  63. package/dist/src/room/track/LocalAudioTrack.d.ts +1 -0
  64. package/dist/src/room/track/LocalAudioTrack.d.ts.map +1 -1
  65. package/dist/src/room/track/Track.d.ts +1 -0
  66. package/dist/src/room/track/Track.d.ts.map +1 -1
  67. package/dist/src/room/track/options.d.ts +11 -1
  68. package/dist/src/room/track/options.d.ts.map +1 -1
  69. package/dist/src/room/track/record.d.ts.map +1 -1
  70. package/dist/src/room/utils.d.ts +1 -0
  71. package/dist/src/room/utils.d.ts.map +1 -1
  72. package/dist/src/test/signalToken.d.ts +26 -0
  73. package/dist/src/test/signalToken.d.ts.map +1 -0
  74. package/dist/src/type-polyfills/non-shared-typed-arrays.d.ts +2 -0
  75. package/dist/src/type-polyfills/non-shared-typed-arrays.d.ts.map +1 -0
  76. package/dist/src/utils/dataPacketBuffer.d.ts +19 -0
  77. package/dist/src/utils/dataPacketBuffer.d.ts.map +1 -1
  78. package/dist/ts4.2/e2ee/E2eeManager.d.ts +1 -0
  79. package/dist/ts4.2/e2ee/types.d.ts +1 -0
  80. package/dist/ts4.2/e2ee/utils.d.ts +1 -0
  81. package/dist/ts4.2/e2ee/worker/DataCryptor.d.ts +1 -0
  82. package/dist/ts4.2/e2ee/worker/FrameCryptor.d.ts +1 -0
  83. package/dist/ts4.2/e2ee/worker/naluUtils.d.ts +1 -0
  84. package/dist/ts4.2/e2ee/worker/sifPayload.d.ts +1 -0
  85. package/dist/ts4.2/frameMetadata/frameMetadata.d.ts +1 -0
  86. package/dist/ts4.2/frameMetadata/types.d.ts +1 -0
  87. package/dist/ts4.2/logger.d.ts +3 -1
  88. package/dist/ts4.2/room/PCTransport.d.ts +42 -1
  89. package/dist/ts4.2/room/PCTransportManager.d.ts +1 -0
  90. package/dist/ts4.2/room/RTCEngine.d.ts +46 -4
  91. package/dist/ts4.2/room/Room.d.ts +1 -0
  92. package/dist/ts4.2/room/data-track/frame.d.ts +1 -0
  93. package/dist/ts4.2/room/data-track/incoming/IncomingDataTrackManager.d.ts +7 -0
  94. package/dist/ts4.2/room/data-track/outgoing/types.d.ts +1 -0
  95. package/dist/ts4.2/room/data-track/packet/extensions.d.ts +1 -0
  96. package/dist/ts4.2/room/data-track/packet/index.d.ts +1 -0
  97. package/dist/ts4.2/room/data-track/packet/serializable.d.ts +1 -0
  98. package/dist/ts4.2/room/participant/LocalParticipant.d.ts +1 -0
  99. package/dist/ts4.2/room/participant/Participant.d.ts +1 -0
  100. package/dist/ts4.2/room/participant/publishUtils.d.ts +7 -0
  101. package/dist/ts4.2/room/track/LocalAudioTrack.d.ts +1 -0
  102. package/dist/ts4.2/room/track/Track.d.ts +1 -0
  103. package/dist/ts4.2/room/track/options.d.ts +11 -1
  104. package/dist/ts4.2/room/utils.d.ts +1 -0
  105. package/dist/ts4.2/test/signalToken.d.ts +26 -0
  106. package/dist/ts4.2/type-polyfills/non-shared-typed-arrays.d.ts +2 -0
  107. package/dist/ts4.2/utils/dataPacketBuffer.d.ts +19 -0
  108. package/package.json +8 -4
  109. package/src/api/SignalClient.e2e.test.ts +264 -0
  110. package/src/api/SignalClient.ts +35 -2
  111. package/src/e2ee/E2eeManager.ts +3 -1
  112. package/src/e2ee/types.ts +1 -0
  113. package/src/e2ee/utils.ts +1 -0
  114. package/src/e2ee/worker/DataCryptor.ts +1 -0
  115. package/src/e2ee/worker/FrameCryptor.test.ts +1 -0
  116. package/src/e2ee/worker/FrameCryptor.ts +1 -0
  117. package/src/e2ee/worker/ParticipantKeyHandler.test.ts +1 -0
  118. package/src/e2ee/worker/e2ee.worker.ts +1 -0
  119. package/src/e2ee/worker/naluUtils.ts +1 -0
  120. package/src/e2ee/worker/sifPayload.ts +1 -0
  121. package/src/frameMetadata/frameMetadata.test.ts +83 -0
  122. package/src/frameMetadata/frameMetadata.ts +8 -0
  123. package/src/frameMetadata/types.ts +1 -0
  124. package/src/logger.ts +2 -0
  125. package/src/room/PCTransport.test.ts +150 -0
  126. package/src/room/PCTransport.ts +179 -31
  127. package/src/room/PCTransportManager.ts +10 -6
  128. package/src/room/RTCEngine.test.ts +275 -2
  129. package/src/room/RTCEngine.ts +277 -71
  130. package/src/room/RegionUrlProvider.ts +4 -2
  131. package/src/room/Room.ts +8 -1
  132. package/src/room/data-track/depacketizer.ts +1 -0
  133. package/src/room/data-track/frame.ts +1 -0
  134. package/src/room/data-track/incoming/IncomingDataTrackManager.test.ts +303 -0
  135. package/src/room/data-track/incoming/IncomingDataTrackManager.ts +70 -8
  136. package/src/room/data-track/outgoing/OutgoingDataTrackManager.ts +2 -0
  137. package/src/room/data-track/outgoing/types.ts +1 -0
  138. package/src/room/data-track/packet/extensions.ts +1 -0
  139. package/src/room/data-track/packet/index.ts +1 -0
  140. package/src/room/data-track/packet/serializable.ts +1 -0
  141. package/src/room/errors.ts +4 -4
  142. package/src/room/participant/LocalParticipant.ts +17 -6
  143. package/src/room/participant/Participant.ts +6 -0
  144. package/src/room/participant/publishUtils.ts +14 -11
  145. package/src/room/track/LocalAudioTrack.ts +16 -0
  146. package/src/room/track/Track.ts +11 -6
  147. package/src/room/track/options.ts +11 -1
  148. package/src/room/track/record.ts +1 -0
  149. package/src/room/utils.ts +1 -0
  150. package/src/test/signalServerSetup.ts +151 -0
  151. package/src/test/signalToken.ts +59 -0
  152. package/src/test/vitest-context.d.ts +10 -0
  153. package/src/type-polyfills/{non-shared-typed-arrays.d.ts → non-shared-typed-arrays.ts} +6 -1
  154. package/src/utils/dataPacketBuffer.test.ts +100 -0
  155. package/src/utils/dataPacketBuffer.ts +48 -1
@@ -4377,6 +4377,8 @@ var LoggerNames;
4377
4377
  LoggerNames["PCTransport"] = "livekit-pc-transport";
4378
4378
  LoggerNames["E2EE"] = "lk-e2ee";
4379
4379
  LoggerNames["DataTracks"] = "livekit-data-tracks";
4380
+ LoggerNames["Region"] = "livekit-region";
4381
+ LoggerNames["ICE"] = "livekit-ice";
4380
4382
  })(LoggerNames || (LoggerNames = {}));
4381
4383
  let livekitLogger = loglevelExports.getLogger(LoggerNames.Default);
4382
4384
  Object.values(LoggerNames).map(name => loglevelExports.getLogger(name));
@@ -4396,9 +4398,27 @@ livekitLogger.setDefaultLevel(LogLevel.info);
4396
4398
  function getLogger(name, ctxFn) {
4397
4399
  const logger = loglevelExports.getLogger(name);
4398
4400
  logger.setDefaultLevel(livekitLogger.getLevel());
4399
- {
4401
+ if (!ctxFn) {
4400
4402
  return logger;
4401
4403
  }
4404
+ return wrapWithContext(logger, ctxFn);
4405
+ }
4406
+ function wrapWithContext(base, ctxFn) {
4407
+ // Resolve the underlying method on every call so that later
4408
+ // setLogExtension installations (which replace the base logger's
4409
+ // methods via loglevel's methodFactory) are picked up.
4410
+ const wrap = method => (msg, extra) => {
4411
+ const ctx = ctxFn();
4412
+ const merged = ctx || extra ? Object.assign(Object.assign({}, ctx), extra) : undefined;
4413
+ base[method](msg, merged);
4414
+ };
4415
+ const proxy = Object.create(base);
4416
+ proxy.trace = wrap('trace');
4417
+ proxy.debug = wrap('debug');
4418
+ proxy.info = wrap('info');
4419
+ proxy.warn = wrap('warn');
4420
+ proxy.error = wrap('error');
4421
+ return proxy;
4402
4422
  }
4403
4423
  loglevelExports.getLogger(LoggerNames.E2EE);
4404
4424
 
@@ -5195,6 +5215,9 @@ class Track extends eventsExports.EventEmitter {
5195
5215
  }
5196
5216
  /** @internal */
5197
5217
  setStreamState(value) {
5218
+ if (this._streamState !== value) {
5219
+ this.log.debug("stream state changed: ".concat(this._streamState, " -> ").concat(value));
5220
+ }
5198
5221
  this._streamState = value;
5199
5222
  }
5200
5223
  constructor(mediaTrack, kind) {
@@ -5219,8 +5242,8 @@ class Track extends eventsExports.EventEmitter {
5219
5242
  this.handleAppVisibilityChanged();
5220
5243
  }
5221
5244
  };
5222
- this.log = getLogger((_a = loggerOptions.loggerName) !== null && _a !== void 0 ? _a : LoggerNames.Track);
5223
5245
  this.loggerContextCb = loggerOptions.loggerContextCb;
5246
+ this.log = getLogger((_a = loggerOptions.loggerName) !== null && _a !== void 0 ? _a : LoggerNames.Track, () => this.logContext);
5224
5247
  this.setMaxListeners(100);
5225
5248
  this.kind = kind;
5226
5249
  this._mediaStreamTrack = mediaTrack;
@@ -5288,9 +5311,11 @@ class Track extends eventsExports.EventEmitter {
5288
5311
  this.emit(hasAudio ? TrackEvent.AudioPlaybackFailed : TrackEvent.VideoPlaybackFailed, e);
5289
5312
  } else if (e.name === 'AbortError') {
5290
5313
  // commonly triggered by another `play` request, only log for debugging purposes
5291
- livekitLogger.debug("".concat(hasAudio ? 'audio' : 'video', " playback aborted, likely due to new play request"));
5314
+ this.log.debug("".concat(hasAudio ? 'audio' : 'video', " playback aborted, likely due to new play request"));
5292
5315
  } else {
5293
- livekitLogger.warn("could not playback ".concat(hasAudio ? 'audio' : 'video'), e);
5316
+ this.log.warn("could not playback ".concat(hasAudio ? 'audio' : 'video'), {
5317
+ error: e
5318
+ });
5294
5319
  }
5295
5320
  // If audio playback isn't allowed make sure we still play back the video
5296
5321
  if (hasAudio && element && allMediaStreamTracks.some(tr => tr.kind === 'video') && e.name === 'NotAllowedError') {
@@ -5333,6 +5358,7 @@ class Track extends eventsExports.EventEmitter {
5333
5358
  }
5334
5359
  }
5335
5360
  stop() {
5361
+ this.log.debug('stopping track');
5336
5362
  this.stopMonitor();
5337
5363
  this._mediaStreamTrack.stop();
5338
5364
  }
@@ -5353,12 +5379,12 @@ class Track extends eventsExports.EventEmitter {
5353
5379
  }
5354
5380
  /** @internal */
5355
5381
  updateLoggerOptions(loggerOptions) {
5356
- if (loggerOptions.loggerName) {
5357
- this.log = getLogger(loggerOptions.loggerName);
5358
- }
5359
5382
  if (loggerOptions.loggerContextCb) {
5360
5383
  this.loggerContextCb = loggerOptions.loggerContextCb;
5361
5384
  }
5385
+ if (loggerOptions.loggerName) {
5386
+ this.log = getLogger(loggerOptions.loggerName, () => this.logContext);
5387
+ }
5362
5388
  }
5363
5389
  recycleElement(element) {
5364
5390
  if (element instanceof HTMLAudioElement) {
@@ -5575,6 +5601,7 @@ function hasFrameMetadataPublishOptions(options) {
5575
5601
  const PACKET_TRAILER_MAGIC = Uint8Array.from(['L'.charCodeAt(0), 'K'.charCodeAt(0), 'T'.charCodeAt(0), 'S'.charCodeAt(0)]);
5576
5602
  const PACKET_TRAILER_TIMESTAMP_TAG = 0x01;
5577
5603
  const PACKET_TRAILER_FRAME_ID_TAG = 0x02;
5604
+ const PACKET_TRAILER_USER_DATA_TAG = 0x03;
5578
5605
  const PACKET_TRAILER_ENVELOPE_SIZE = 5;
5579
5606
  const TIMESTAMP_TLV_SIZE = 10;
5580
5607
  const FRAME_ID_TLV_SIZE = 6;
@@ -5659,6 +5686,13 @@ function extractPacketTrailer(data) {
5659
5686
  } else if (tag === PACKET_TRAILER_FRAME_ID_TAG && length === 4) {
5660
5687
  metadata.frameId = readUint32Xor(bytes, offset, length);
5661
5688
  foundAny = true;
5689
+ } else if (tag === PACKET_TRAILER_USER_DATA_TAG) {
5690
+ const userData = new Uint8Array(length);
5691
+ for (let index = 0; index < length; index += 1) {
5692
+ userData[index] = bytes[offset + index] ^ 0xff;
5693
+ }
5694
+ metadata.userData = userData;
5695
+ foundAny = true;
5662
5696
  }
5663
5697
  offset += length;
5664
5698
  }