livekit-client 2.17.1 → 2.17.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.
Files changed (145) hide show
  1. package/README.md +7 -5
  2. package/dist/livekit-client.e2ee.worker.js +1 -1
  3. package/dist/livekit-client.e2ee.worker.js.map +1 -1
  4. package/dist/livekit-client.e2ee.worker.mjs +21 -14
  5. package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
  6. package/dist/livekit-client.esm.mjs +2087 -1920
  7. package/dist/livekit-client.esm.mjs.map +1 -1
  8. package/dist/livekit-client.umd.js +1 -1
  9. package/dist/livekit-client.umd.js.map +1 -1
  10. package/dist/src/e2ee/E2eeManager.d.ts +2 -0
  11. package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
  12. package/dist/src/e2ee/KeyProvider.d.ts +2 -0
  13. package/dist/src/e2ee/KeyProvider.d.ts.map +1 -1
  14. package/dist/src/e2ee/events.d.ts +1 -1
  15. package/dist/src/e2ee/events.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/worker/ParticipantKeyHandler.d.ts +2 -2
  19. package/dist/src/e2ee/worker/ParticipantKeyHandler.d.ts.map +1 -1
  20. package/dist/src/index.d.ts +7 -6
  21. package/dist/src/index.d.ts.map +1 -1
  22. package/dist/src/logger.d.ts +2 -1
  23. package/dist/src/logger.d.ts.map +1 -1
  24. package/dist/src/room/PCTransport.d.ts +1 -4
  25. package/dist/src/room/PCTransport.d.ts.map +1 -1
  26. package/dist/src/room/PCTransportManager.d.ts.map +1 -1
  27. package/dist/src/room/RTCEngine.d.ts.map +1 -1
  28. package/dist/src/room/Room.d.ts.map +1 -1
  29. package/dist/src/room/data-stream/incoming/IncomingDataStreamManager.d.ts.map +1 -1
  30. package/dist/src/room/data-stream/incoming/StreamReader.d.ts +2 -4
  31. package/dist/src/room/data-stream/incoming/StreamReader.d.ts.map +1 -1
  32. package/dist/src/room/data-track/depacketizer.d.ts +51 -0
  33. package/dist/src/room/data-track/depacketizer.d.ts.map +1 -0
  34. package/dist/src/room/data-track/e2ee.d.ts +12 -0
  35. package/dist/src/room/data-track/e2ee.d.ts.map +1 -0
  36. package/dist/src/room/data-track/frame.d.ts +7 -0
  37. package/dist/src/room/data-track/frame.d.ts.map +1 -0
  38. package/dist/src/room/data-track/handle.d.ts +6 -7
  39. package/dist/src/room/data-track/handle.d.ts.map +1 -1
  40. package/dist/src/room/data-track/outgoing/OutgoingDataTrackManager.d.ts +76 -0
  41. package/dist/src/room/data-track/outgoing/OutgoingDataTrackManager.d.ts.map +1 -0
  42. package/dist/src/room/data-track/outgoing/errors.d.ts +64 -0
  43. package/dist/src/room/data-track/outgoing/errors.d.ts.map +1 -0
  44. package/dist/src/room/data-track/outgoing/pipeline.d.ts +22 -0
  45. package/dist/src/room/data-track/outgoing/pipeline.d.ts.map +1 -0
  46. package/dist/src/room/data-track/outgoing/types.d.ts +31 -0
  47. package/dist/src/room/data-track/outgoing/types.d.ts.map +1 -0
  48. package/dist/src/room/data-track/packet/index.d.ts +3 -3
  49. package/dist/src/room/data-track/packet/index.d.ts.map +1 -1
  50. package/dist/src/room/data-track/packetizer.d.ts +43 -0
  51. package/dist/src/room/data-track/packetizer.d.ts.map +1 -0
  52. package/dist/src/room/data-track/track.d.ts +30 -0
  53. package/dist/src/room/data-track/track.d.ts.map +1 -0
  54. package/dist/src/room/data-track/utils.d.ts +34 -2
  55. package/dist/src/room/data-track/utils.d.ts.map +1 -1
  56. package/dist/src/room/debounce.d.ts +11 -0
  57. package/dist/src/room/debounce.d.ts.map +1 -0
  58. package/dist/src/room/events.d.ts +1 -1
  59. package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
  60. package/dist/src/room/track/LocalAudioTrack.d.ts +1 -1
  61. package/dist/src/room/track/LocalAudioTrack.d.ts.map +1 -1
  62. package/dist/src/room/track/LocalTrack.d.ts +2 -1
  63. package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
  64. package/dist/src/room/types.d.ts +0 -2
  65. package/dist/src/room/types.d.ts.map +1 -1
  66. package/dist/src/room/utils.d.ts +6 -1
  67. package/dist/src/room/utils.d.ts.map +1 -1
  68. package/dist/src/utils/subscribeToEvents.d.ts +12 -0
  69. package/dist/src/utils/subscribeToEvents.d.ts.map +1 -0
  70. package/dist/src/utils/throws.d.ts +4 -2
  71. package/dist/src/utils/throws.d.ts.map +1 -1
  72. package/dist/ts4.2/e2ee/E2eeManager.d.ts +2 -0
  73. package/dist/ts4.2/e2ee/KeyProvider.d.ts +2 -0
  74. package/dist/ts4.2/e2ee/events.d.ts +1 -1
  75. package/dist/ts4.2/e2ee/types.d.ts +1 -0
  76. package/dist/ts4.2/e2ee/worker/ParticipantKeyHandler.d.ts +2 -2
  77. package/dist/ts4.2/index.d.ts +7 -3
  78. package/dist/ts4.2/logger.d.ts +2 -1
  79. package/dist/ts4.2/room/PCTransport.d.ts +1 -6
  80. package/dist/ts4.2/room/data-stream/incoming/StreamReader.d.ts +2 -4
  81. package/dist/ts4.2/room/data-track/depacketizer.d.ts +51 -0
  82. package/dist/ts4.2/room/data-track/e2ee.d.ts +12 -0
  83. package/dist/ts4.2/room/data-track/frame.d.ts +7 -0
  84. package/dist/ts4.2/room/data-track/handle.d.ts +6 -7
  85. package/dist/ts4.2/room/data-track/outgoing/OutgoingDataTrackManager.d.ts +77 -0
  86. package/dist/ts4.2/room/data-track/outgoing/errors.d.ts +64 -0
  87. package/dist/ts4.2/room/data-track/outgoing/pipeline.d.ts +22 -0
  88. package/dist/ts4.2/room/data-track/outgoing/types.d.ts +31 -0
  89. package/dist/ts4.2/room/data-track/packet/index.d.ts +3 -3
  90. package/dist/ts4.2/room/data-track/packetizer.d.ts +43 -0
  91. package/dist/ts4.2/room/data-track/track.d.ts +30 -0
  92. package/dist/ts4.2/room/data-track/utils.d.ts +34 -2
  93. package/dist/ts4.2/room/debounce.d.ts +11 -0
  94. package/dist/ts4.2/room/events.d.ts +1 -1
  95. package/dist/ts4.2/room/track/LocalAudioTrack.d.ts +1 -1
  96. package/dist/ts4.2/room/track/LocalTrack.d.ts +2 -1
  97. package/dist/ts4.2/room/types.d.ts +0 -2
  98. package/dist/ts4.2/room/utils.d.ts +6 -1
  99. package/dist/ts4.2/utils/subscribeToEvents.d.ts +12 -0
  100. package/dist/ts4.2/utils/throws.d.ts +4 -2
  101. package/package.json +4 -5
  102. package/src/e2ee/E2eeManager.ts +9 -5
  103. package/src/e2ee/KeyProvider.ts +10 -1
  104. package/src/e2ee/events.ts +1 -1
  105. package/src/e2ee/types.ts +1 -0
  106. package/src/e2ee/worker/ParticipantKeyHandler.ts +7 -4
  107. package/src/e2ee/worker/e2ee.worker.ts +20 -10
  108. package/src/index.ts +15 -5
  109. package/src/logger.ts +1 -0
  110. package/src/room/PCTransport.ts +2 -1
  111. package/src/room/PCTransportManager.ts +27 -9
  112. package/src/room/RTCEngine.ts +13 -2
  113. package/src/room/Room.ts +11 -5
  114. package/src/room/data-stream/incoming/IncomingDataStreamManager.ts +5 -25
  115. package/src/room/data-stream/incoming/StreamReader.ts +56 -73
  116. package/src/room/data-track/depacketizer.test.ts +442 -0
  117. package/src/room/data-track/depacketizer.ts +298 -0
  118. package/src/room/data-track/e2ee.ts +14 -0
  119. package/src/room/data-track/frame.ts +8 -0
  120. package/src/room/data-track/handle.test.ts +1 -1
  121. package/src/room/data-track/handle.ts +9 -14
  122. package/src/room/data-track/outgoing/OutgoingDataTrackManager.test.ts +392 -0
  123. package/src/room/data-track/outgoing/OutgoingDataTrackManager.ts +302 -0
  124. package/src/room/data-track/outgoing/errors.ts +157 -0
  125. package/src/room/data-track/outgoing/pipeline.ts +76 -0
  126. package/src/room/data-track/outgoing/types.ts +37 -0
  127. package/src/room/data-track/packet/index.test.ts +9 -9
  128. package/src/room/data-track/packet/index.ts +11 -9
  129. package/src/room/data-track/packet/serializable.ts +1 -1
  130. package/src/room/data-track/packetizer.test.ts +131 -0
  131. package/src/room/data-track/packetizer.ts +132 -0
  132. package/src/room/data-track/track.ts +50 -0
  133. package/src/room/data-track/utils.test.ts +27 -1
  134. package/src/room/data-track/utils.ts +125 -5
  135. package/src/room/debounce.ts +115 -0
  136. package/src/room/events.ts +1 -1
  137. package/src/room/participant/LocalParticipant.ts +2 -0
  138. package/src/room/track/LocalAudioTrack.ts +10 -10
  139. package/src/room/track/LocalTrack.ts +14 -5
  140. package/src/room/track/LocalVideoTrack.ts +1 -1
  141. package/src/room/track/RemoteVideoTrack.ts +1 -1
  142. package/src/room/types.ts +0 -2
  143. package/src/room/utils.ts +7 -2
  144. package/src/utils/subscribeToEvents.ts +63 -0
  145. package/src/utils/throws.ts +3 -1
@@ -378,6 +378,7 @@ var LoggerNames;
378
378
  LoggerNames["PCManager"] = "livekit-pc-manager";
379
379
  LoggerNames["PCTransport"] = "livekit-pc-transport";
380
380
  LoggerNames["E2EE"] = "lk-e2ee";
381
+ LoggerNames["DataTracks"] = "livekit-data-tracks";
381
382
  })(LoggerNames || (LoggerNames = {}));
382
383
  let livekitLogger = loglevelExports.getLogger('livekit');
383
384
  Object.values(LoggerNames).map(name => loglevelExports.getLogger(name));
@@ -2185,9 +2186,12 @@ class ParticipantKeyHandler extends eventsExports.EventEmitter {
2185
2186
  return __awaiter(this, arguments, void 0, function (material) {
2186
2187
  var _this = this;
2187
2188
  let keyIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
2189
+ let updateCurrentKeyIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
2188
2190
  return function* () {
2189
- yield _this.setKeyFromMaterial(material, keyIndex);
2190
- _this.resetKeyStatus(keyIndex);
2191
+ yield _this.setKeyFromMaterial(material, keyIndex, null, updateCurrentKeyIndex);
2192
+ if (updateCurrentKeyIndex) {
2193
+ _this.resetKeyStatus(keyIndex);
2194
+ }
2191
2195
  }();
2192
2196
  });
2193
2197
  }
@@ -2201,6 +2205,7 @@ class ParticipantKeyHandler extends eventsExports.EventEmitter {
2201
2205
  return __awaiter(this, arguments, void 0, function (material, keyIndex) {
2202
2206
  var _this2 = this;
2203
2207
  let ratchetedResult = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
2208
+ let updateCurrentKeyIndex = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
2204
2209
  return function* () {
2205
2210
  const keySet = yield deriveKeys(material, _this2.keyProviderOptions.ratchetSalt);
2206
2211
  const newIndex = keyIndex >= 0 ? keyIndex % _this2.cryptoKeyRing.length : _this2.currentKeyIndex;
@@ -2210,7 +2215,7 @@ class ParticipantKeyHandler extends eventsExports.EventEmitter {
2210
2215
  ratchetSalt: _this2.keyProviderOptions.ratchetSalt
2211
2216
  });
2212
2217
  _this2.setKeySet(keySet, newIndex, ratchetedResult);
2213
- if (newIndex >= 0) _this2.currentKeyIndex = newIndex;
2218
+ if (newIndex >= 0 && updateCurrentKeyIndex) _this2.currentKeyIndex = newIndex;
2214
2219
  }();
2215
2220
  });
2216
2221
  }
@@ -2336,10 +2341,10 @@ onmessage = ev => {
2336
2341
  break;
2337
2342
  case 'setKey':
2338
2343
  if (useSharedKey) {
2339
- yield setSharedKey(data.key, data.keyIndex);
2344
+ yield setSharedKey(data.key, data.keyIndex, data.updateCurrentKeyIndex);
2340
2345
  } else if (data.participantIdentity) {
2341
2346
  workerLogger.info("set participant sender key ".concat(data.participantIdentity, " index ").concat(data.keyIndex));
2342
- yield getParticipantKeyHandler(data.participantIdentity).setKey(data.key, data.keyIndex);
2347
+ yield getParticipantKeyHandler(data.participantIdentity).setKey(data.key, data.keyIndex, data.updateCurrentKeyIndex);
2343
2348
  } else {
2344
2349
  workerLogger.error('no participant Id was provided and shared key usage is disabled');
2345
2350
  }
@@ -2467,12 +2472,12 @@ function setEncryptionEnabled(enable, participantIdentity) {
2467
2472
  });
2468
2473
  encryptionEnabledMap.set(participantIdentity, enable);
2469
2474
  }
2470
- function setSharedKey(key, index) {
2475
+ function setSharedKey(key, index, updateCurrentKeyIndex) {
2471
2476
  return __awaiter(this, void 0, void 0, function* () {
2472
2477
  workerLogger.info('set shared key', {
2473
2478
  index
2474
2479
  });
2475
- yield getSharedKeyHandler().setKey(key, index);
2480
+ yield getSharedKeyHandler().setKey(key, index, updateCurrentKeyIndex);
2476
2481
  });
2477
2482
  }
2478
2483
  function setupCryptorErrorEvents(cryptor) {
@@ -2507,23 +2512,25 @@ function handleSifTrailer(trailer) {
2507
2512
  // Operations using RTCRtpScriptTransform.
2508
2513
  // @ts-ignore
2509
2514
  if (self.RTCTransformEvent) {
2510
- workerLogger.debug('setup transform event');
2511
2515
  // @ts-ignore
2512
2516
  self.onrtctransform = event => {
2513
2517
  // @ts-ignore
2514
2518
  const transformer = event.transformer;
2515
- workerLogger.debug('transformer', transformer);
2516
2519
  const {
2517
2520
  kind,
2518
2521
  participantIdentity,
2519
2522
  trackId,
2520
2523
  codec
2521
2524
  } = transformer.options;
2522
- const cryptor = getTrackCryptor(participantIdentity, trackId);
2523
- workerLogger.debug('transform', {
2524
- codec
2525
- });
2526
- cryptor.setupTransform(kind, transformer.readable, transformer.writable, trackId, false, codec);
2525
+ messageQueue.run(() => __awaiter(void 0, void 0, void 0, function* () {
2526
+ const cryptor = getTrackCryptor(participantIdentity, trackId);
2527
+ workerLogger.debug('onrtctransform setup', {
2528
+ participantIdentity,
2529
+ trackId,
2530
+ codec
2531
+ });
2532
+ cryptor.setupTransform(kind, transformer.readable, transformer.writable, trackId, false, codec);
2533
+ }));
2527
2534
  };
2528
2535
  }
2529
2536
  //# sourceMappingURL=livekit-client.e2ee.worker.mjs.map