livekit-client 2.13.7 → 2.14.0

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 (62) 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 +13 -7
  4. package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
  5. package/dist/livekit-client.esm.mjs +188 -90
  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/e2ee/E2eeManager.d.ts.map +1 -1
  10. package/dist/src/e2ee/types.d.ts +7 -0
  11. package/dist/src/e2ee/types.d.ts.map +1 -1
  12. package/dist/src/e2ee/worker/FrameCryptor.d.ts +2 -1
  13. package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
  14. package/dist/src/room/PCTransport.d.ts +1 -0
  15. package/dist/src/room/PCTransport.d.ts.map +1 -1
  16. package/dist/src/room/events.d.ts +18 -0
  17. package/dist/src/room/events.d.ts.map +1 -1
  18. package/dist/src/room/participant/LocalParticipant.d.ts +1 -0
  19. package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
  20. package/dist/src/room/participant/Participant.d.ts +3 -0
  21. package/dist/src/room/participant/Participant.d.ts.map +1 -1
  22. package/dist/src/room/track/LocalTrackPublication.d.ts +1 -0
  23. package/dist/src/room/track/LocalTrackPublication.d.ts.map +1 -1
  24. package/dist/src/room/track/LocalVideoTrack.d.ts +7 -0
  25. package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
  26. package/dist/src/room/track/Track.d.ts +1 -0
  27. package/dist/src/room/track/Track.d.ts.map +1 -1
  28. package/dist/src/room/track/TrackPublication.d.ts +1 -0
  29. package/dist/src/room/track/TrackPublication.d.ts.map +1 -1
  30. package/dist/src/room/track/options.d.ts +4 -0
  31. package/dist/src/room/track/options.d.ts.map +1 -1
  32. package/dist/src/room/utils.d.ts +1 -1
  33. package/dist/src/room/utils.d.ts.map +1 -1
  34. package/dist/ts4.2/src/e2ee/types.d.ts +7 -0
  35. package/dist/ts4.2/src/e2ee/worker/FrameCryptor.d.ts +2 -1
  36. package/dist/ts4.2/src/room/PCTransport.d.ts +1 -0
  37. package/dist/ts4.2/src/room/events.d.ts +18 -0
  38. package/dist/ts4.2/src/room/participant/LocalParticipant.d.ts +1 -0
  39. package/dist/ts4.2/src/room/participant/Participant.d.ts +3 -0
  40. package/dist/ts4.2/src/room/track/LocalTrackPublication.d.ts +1 -0
  41. package/dist/ts4.2/src/room/track/LocalVideoTrack.d.ts +7 -0
  42. package/dist/ts4.2/src/room/track/Track.d.ts +1 -0
  43. package/dist/ts4.2/src/room/track/TrackPublication.d.ts +1 -0
  44. package/dist/ts4.2/src/room/track/options.d.ts +4 -0
  45. package/dist/ts4.2/src/room/utils.d.ts +1 -1
  46. package/package.json +1 -1
  47. package/src/e2ee/E2eeManager.ts +8 -3
  48. package/src/e2ee/types.ts +8 -0
  49. package/src/e2ee/worker/FrameCryptor.ts +15 -0
  50. package/src/e2ee/worker/e2ee.worker.ts +8 -5
  51. package/src/room/PCTransport.ts +88 -77
  52. package/src/room/events.ts +21 -0
  53. package/src/room/participant/LocalParticipant.ts +14 -2
  54. package/src/room/participant/Participant.ts +3 -0
  55. package/src/room/participant/publishUtils.ts +2 -2
  56. package/src/room/track/LocalTrackPublication.ts +9 -1
  57. package/src/room/track/LocalVideoTrack.ts +68 -1
  58. package/src/room/track/Track.ts +1 -0
  59. package/src/room/track/TrackPublication.ts +1 -0
  60. package/src/room/track/create.ts +2 -2
  61. package/src/room/track/options.ts +5 -0
  62. package/src/room/utils.ts +19 -3
@@ -1130,6 +1130,7 @@ class FrameCryptor extends BaseFrameCryptor {
1130
1130
  constructor(opts) {
1131
1131
  var _a;
1132
1132
  super();
1133
+ this.isTransformActive = false;
1133
1134
  this.sendCounts = new Map();
1134
1135
  this.keys = opts.keys;
1135
1136
  this.participantIdentity = opts.participantIdentity;
@@ -1193,7 +1194,7 @@ class FrameCryptor extends BaseFrameCryptor {
1193
1194
  setRtpMap(map) {
1194
1195
  this.rtpMap = map;
1195
1196
  }
1196
- setupTransform(operation, readable, writable, trackId, codec) {
1197
+ setupTransform(operation, readable, writable, trackId, isReuse, codec) {
1197
1198
  if (codec) {
1198
1199
  workerLogger.info('setting codec on cryptor to', {
1199
1200
  codec
@@ -1205,13 +1206,20 @@ class FrameCryptor extends BaseFrameCryptor {
1205
1206
  passedTrackId: trackId,
1206
1207
  codec
1207
1208
  }, this.logContext));
1209
+ if (isReuse && this.isTransformActive) {
1210
+ workerLogger.debug('reuse transform', Object.assign({}, this.logContext));
1211
+ return;
1212
+ }
1208
1213
  const transformFn = operation === 'encode' ? this.encodeFunction : this.decodeFunction;
1209
1214
  const transformStream = new TransformStream({
1210
1215
  transform: transformFn.bind(this)
1211
1216
  });
1217
+ this.isTransformActive = true;
1212
1218
  readable.pipeThrough(transformStream).pipeTo(writable).catch(e => {
1213
1219
  workerLogger.warn(e);
1214
1220
  this.emit(CryptorEvent.Error, e instanceof CryptorError ? e : new CryptorError(e.message, undefined, this.participantIdentity));
1221
+ }).finally(() => {
1222
+ this.isTransformActive = false;
1215
1223
  });
1216
1224
  this.trackId = trackId;
1217
1225
  }
@@ -1865,11 +1873,11 @@ onmessage = ev => {
1865
1873
  break;
1866
1874
  case 'decode':
1867
1875
  let cryptor = getTrackCryptor(data.participantIdentity, data.trackId);
1868
- cryptor.setupTransform(kind, data.readableStream, data.writableStream, data.trackId, data.codec);
1876
+ cryptor.setupTransform(kind, data.readableStream, data.writableStream, data.trackId, data.isReuse, data.codec);
1869
1877
  break;
1870
1878
  case 'encode':
1871
1879
  let pubCryptor = getTrackCryptor(data.participantIdentity, data.trackId);
1872
- pubCryptor.setupTransform(kind, data.readableStream, data.writableStream, data.trackId, data.codec);
1880
+ pubCryptor.setupTransform(kind, data.readableStream, data.writableStream, data.trackId, data.isReuse, data.codec);
1873
1881
  break;
1874
1882
  case 'setKey':
1875
1883
  if (useSharedKey) {
@@ -2040,11 +2048,9 @@ if (self.RTCTransformEvent) {
2040
2048
  workerLogger.debug('setup transform event');
2041
2049
  // @ts-ignore
2042
2050
  self.onrtctransform = event => {
2043
- // @ts-ignore .transformer property is part of RTCTransformEvent
2051
+ // @ts-ignore
2044
2052
  const transformer = event.transformer;
2045
2053
  workerLogger.debug('transformer', transformer);
2046
- // @ts-ignore monkey patching non standard flag
2047
- transformer.handled = true;
2048
2054
  const {
2049
2055
  kind,
2050
2056
  participantIdentity,
@@ -2055,7 +2061,7 @@ if (self.RTCTransformEvent) {
2055
2061
  workerLogger.debug('transform', {
2056
2062
  codec
2057
2063
  });
2058
- cryptor.setupTransform(kind, transformer.readable, transformer.writable, trackId, codec);
2064
+ cryptor.setupTransform(kind, transformer.readable, transformer.writable, trackId, false, codec);
2059
2065
  };
2060
2066
  }
2061
2067
  //# sourceMappingURL=livekit-client.e2ee.worker.mjs.map