livekit-client 2.22.1 → 2.22.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 (42) 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 +177 -39
  4. package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
  5. package/dist/livekit-client.esm.mjs +85 -60
  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.map +1 -1
  10. package/dist/src/e2ee/E2eeManager.d.ts +7 -0
  11. package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
  12. package/dist/src/e2ee/constants.d.ts +5 -0
  13. package/dist/src/e2ee/constants.d.ts.map +1 -1
  14. package/dist/src/e2ee/types.d.ts +9 -2
  15. package/dist/src/e2ee/types.d.ts.map +1 -1
  16. package/dist/src/e2ee/worker/FrameCryptor.d.ts +42 -1
  17. package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
  18. package/dist/src/room/PCTransportManager.d.ts +12 -0
  19. package/dist/src/room/PCTransportManager.d.ts.map +1 -1
  20. package/dist/src/room/data-stream/incoming/StreamReader.d.ts +17 -17
  21. package/dist/src/room/data-stream/incoming/StreamReader.d.ts.map +1 -1
  22. package/dist/ts4.2/e2ee/E2eeManager.d.ts +7 -0
  23. package/dist/ts4.2/e2ee/constants.d.ts +5 -0
  24. package/dist/ts4.2/e2ee/types.d.ts +9 -2
  25. package/dist/ts4.2/e2ee/worker/FrameCryptor.d.ts +42 -1
  26. package/dist/ts4.2/room/PCTransportManager.d.ts +12 -0
  27. package/dist/ts4.2/room/data-stream/incoming/StreamReader.d.ts +17 -17
  28. package/package.json +1 -1
  29. package/src/api/SignalClient.ts +2 -1
  30. package/src/e2ee/E2eeManager.ts +38 -14
  31. package/src/e2ee/constants.ts +6 -0
  32. package/src/e2ee/subscriberBlackScreen.test.ts +544 -0
  33. package/src/e2ee/types.ts +9 -2
  34. package/src/e2ee/worker/FrameCryptor.race.test.ts +9 -26
  35. package/src/e2ee/worker/FrameCryptor.test.ts +0 -1
  36. package/src/e2ee/worker/FrameCryptor.ts +185 -52
  37. package/src/e2ee/worker/e2ee.worker.ts +38 -6
  38. package/src/room/PCTransportManager.test.ts +35 -0
  39. package/src/room/PCTransportManager.ts +12 -4
  40. package/src/room/data-stream/incoming/IncomingDataStreamManager.test.ts +171 -0
  41. package/src/room/data-stream/incoming/IncomingDataStreamManager.ts +17 -18
  42. package/src/room/data-stream/incoming/StreamReader.ts +20 -50
@@ -1 +1 @@
1
- {"version":3,"file":"SignalClient.d.ts","sourceRoot":"","sources":["../../../src/api/SignalClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SignalClient.d.ts","sourceRoot":"","sources":["../../../src/api/SignalClient.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,13 @@ export declare class E2EEManager extends E2EEManager_base implements BaseE2EEMan
59
59
  private postEnable;
60
60
  private postRTPMap;
61
61
  private postSifTrailer;
62
+ /**
63
+ * Derive the participant's encryption state from one of its publications.
64
+ * Publications without trackInfo are skipped rather than thrown on: throwing
65
+ * inside the forEach above would leave every remaining participant without an
66
+ * encryption state, and a cryptor with unknown state can no longer decrypt.
67
+ */
68
+ private setParticipantCryptorEnabledForPublication;
62
69
  private setupE2EEReceiver;
63
70
  private setupE2EESender;
64
71
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"E2eeManager.d.ts","sourceRoot":"","sources":["../../../src/e2ee/E2eeManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"E2eeManager.d.ts","sourceRoot":"","sources":["../../../src/e2ee/E2eeManager.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,11 @@ export declare const UNENCRYPTED_BYTES: {
9
9
  };
10
10
  export declare const IV_LENGTH = 12;
11
11
  export declare const E2EE_FLAG = "lk_e2ee";
12
+ /**
13
+ * trackId a receiver's/sender's encoded stream pipeline was last set up for.
14
+ * Needed to recover the right cryptor when a transceiver gets reused.
15
+ */
16
+ export declare const E2EE_TRACK_ID = "lk_e2ee_track_id";
12
17
  export declare const SALT = "LKFrameEncryptionKey";
13
18
  export declare const KEY_PROVIDER_DEFAULTS: KeyProviderOptions;
14
19
  export declare const MAX_SIF_COUNT = 100;
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/e2ee/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAG9C,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAY/C,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAIX,eAAO,MAAM,SAAS,KAAK,CAAC;AAG5B,eAAO,MAAM,SAAS,YAAY,CAAC;AAEnC,eAAO,MAAM,IAAI,yBAAyB,CAAC;AAE3C,eAAO,MAAM,qBAAqB,EAAE,kBAO1B,CAAC;AAEX,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,gBAAgB,OAAO,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/e2ee/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,eAAO,MAAM,oBAAoB,YAAY,CAAC;AAG9C,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAY/C,eAAO,MAAM,iBAAiB;;;;;CAKpB,CAAC;AAIX,eAAO,MAAM,SAAS,KAAK,CAAC;AAG5B,eAAO,MAAM,SAAS,YAAY,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAEhD,eAAO,MAAM,IAAI,yBAAyB,CAAC;AAE3C,eAAO,MAAM,qBAAqB,EAAE,kBAO1B,CAAC;AAEX,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,gBAAgB,OAAO,CAAC"}
@@ -47,7 +47,6 @@ export interface EncodeMessage extends BaseMessage {
47
47
  writableStream: WritableStream;
48
48
  trackId: string;
49
49
  codec?: VideoCodec;
50
- isReuse: boolean;
51
50
  /**
52
51
  * Whether the published track advertises packet trailer features.
53
52
  * When false, the cryptor skips the per-frame trailer extraction path
@@ -72,7 +71,15 @@ export interface UpdateCodecMessage extends BaseMessage {
72
71
  data: {
73
72
  participantIdentity: string;
74
73
  trackId: string;
75
- codec: VideoCodec;
74
+ /** undefined for audio tracks */
75
+ codec?: VideoCodec;
76
+ /**
77
+ * trackId this receiver's pipeline was previously set up for, set when a
78
+ * transceiver gets reused for a new track. Lets the worker find the cryptor
79
+ * that still owns the (already transferred) encoded streams and re-point it,
80
+ * rather than creating a fresh cryptor with no pipeline at all.
81
+ */
82
+ previousTrackId?: string;
76
83
  hasPacketTrailer: boolean;
77
84
  };
78
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/e2ee/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/e2ee/types.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,17 @@ export declare class FrameCryptor extends BaseFrameCryptor {
39
39
  private sifTrailer;
40
40
  private detectedCodec?;
41
41
  private currentTransform?;
42
+ /**
43
+ * The encoded streams this cryptor was last set up with, retained beyond the
44
+ * lifetime of {@link currentTransform}.
45
+ *
46
+ * The main thread transfers a receiver's encoded streams to the worker once and
47
+ * cannot transfer them again (a transferred stream is locked), and
48
+ * `createEncodedStreams()` may only be called once per receiver. So when a
49
+ * transceiver is reused, or when a pipe dies underneath us, re-establishing the
50
+ * transform is only possible from here. See {@link ensureTransform}.
51
+ */
52
+ private retainedStreams?;
42
53
  /**
43
54
  * Whether the subscribed track advertises packet trailer features.
44
55
  * When false, we skip the per-frame trailer extraction path entirely
@@ -55,6 +66,9 @@ export declare class FrameCryptor extends BaseFrameCryptor {
55
66
  private readonly ERROR_THROTTLE_MS;
56
67
  private readonly MAX_ERRORS_PER_MINUTE;
57
68
  private readonly ERROR_WINDOW_MS;
69
+ private undecryptedTrackTimeout?;
70
+ /** grace period for a teardown or a resubscribe to land before we report a stalled track */
71
+ private readonly UNDECRYPTED_TRACK_GRACE_MS;
58
72
  /**
59
73
  * Tracks (participant, trackId, payloadType) tuples for which we've already logged a NALU
60
74
  * fallback, so a persistent bad state doesn't flood the console (Firefox doesn't filter debug).
@@ -78,6 +92,33 @@ export declare class FrameCryptor extends BaseFrameCryptor {
78
92
  isEnabled(): boolean | undefined;
79
93
  getParticipantIdentity(): string | undefined;
80
94
  getTrackId(): string | undefined;
95
+ /**
96
+ * Re-point this cryptor at a new trackId, keeping its (already transferred)
97
+ * encoded streams. Used when a transceiver is reused for a new track.
98
+ */
99
+ setTrackId(trackId: string): void;
100
+ hasActiveTransform(): boolean;
101
+ /**
102
+ * A track that is subscribed and known to be encrypted, but has no transform to
103
+ * decrypt it, will never produce a decodable frame again. That state used to be
104
+ * completely silent (a black tile and endless PLIs), so report it.
105
+ *
106
+ * Deferred, because on teardown the encoded streams routinely close before the
107
+ * 'removeTransform' message arrives -- checking immediately would cry wolf on
108
+ * every unsubscribe.
109
+ *
110
+ * Only meaningful while decoding: a sender's pipe closing on unpublish is
111
+ * routine and has no 'removeTransform' equivalent to quiet it down.
112
+ */
113
+ private scheduleUndecryptedTrackWatchdog;
114
+ /**
115
+ * Re-establish the transform if it is gone while we still own the encoded
116
+ * streams, e.g. after a pipe died on its own (the swallowed
117
+ * 'Destination stream closed') or when a reused transceiver never got a new
118
+ * pipeline. Without this the frames pile up in a readable nobody reads and the
119
+ * decoder starves, which shows up as a permanently black tile.
120
+ */
121
+ ensureTransform(): boolean;
81
122
  /**
82
123
  * Update the video codec used by the mediaStreamTrack
83
124
  * @param codec
@@ -95,7 +136,7 @@ export declare class FrameCryptor extends BaseFrameCryptor {
95
136
  */
96
137
  setHasFrameMetadata(hasFrameMetadata: boolean): void;
97
138
  setFrameMetadataOpts(frameMetadata?: FrameMetadataPublishOptions): void;
98
- setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string, isReuse: boolean, codec?: VideoCodec, frameMetadata?: FrameMetadataPublishOptions): void;
139
+ setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string, codec?: VideoCodec, frameMetadata?: FrameMetadataPublishOptions): boolean;
99
140
  setSifTrailer(trailer: NonSharedUint8Array): void;
100
141
  /**
101
142
  * Checks if we should emit an error based on throttling rules to prevent memory leaks
@@ -1 +1 @@
1
- {"version":3,"file":"FrameCryptor.d.ts","sourceRoot":"","sources":["../../../../src/e2ee/worker/FrameCryptor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FrameCryptor.d.ts","sourceRoot":"","sources":["../../../../src/e2ee/worker/FrameCryptor.ts"],"names":[],"mappings":"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"}
@@ -41,6 +41,18 @@ export declare class PCTransportManager {
41
41
  setPublisherAnswer(sd: RTCSessionDescriptionInit, offerId: number): Promise<boolean>;
42
42
  removeTrack(sender: RTCRtpSender): void | undefined;
43
43
  close(): Promise<void>;
44
+ /**
45
+ * Restarts ICE on the transports that need it. Only the publisher: the server restarts the
46
+ * subscriber's ICE itself and follows with a fresh offer.
47
+ *
48
+ * The subscriber deliberately does NOT enter `restartingIce` here. Queueing its remote
49
+ * candidates would guard against candidates for a new generation arriving before the offer
50
+ * that introduces it, but the server does not send them in that order -- on a same-node
51
+ * resume it buffers them until the offer has gone out, and on a reconnect that lands on
52
+ * another node it withholds subscriber candidates until immediately before creating the
53
+ * offer. Setting the flag only risks withholding candidates during the window that decides
54
+ * whether the reconnect succeeded.
55
+ */
44
56
  triggerIceRestart(): Promise<void>;
45
57
  addIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget): Promise<void>;
46
58
  createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit, offerId: number): Promise<RTCSessionDescriptionInit | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"PCTransportManager.d.ts","sourceRoot":"","sources":["../../../src/room/PCTransportManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PCTransportManager.d.ts","sourceRoot":"","sources":["../../../src/room/PCTransportManager.ts"],"names":[],"mappings":"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"}
@@ -13,13 +13,19 @@ declare abstract class BaseStreamReader<T extends BaseStreamInfo> {
13
13
  /** @internal */
14
14
  protected validateBytesReceived(doneReceiving?: boolean): void;
15
15
  constructor(info: T, stream: ReadableStream<DataStream_Chunk>, totalByteSize?: number);
16
- protected abstract handleChunkReceived(chunk: DataStream_Chunk): void;
16
+ /**
17
+ * Counts a chunk's bytes against `totalByteSize` and reports progress. Chunk ordering and
18
+ * de-duplication happen upstream in the manager's `ensureOrderedChunks`, so every chunk reaching
19
+ * here is new and in order.
20
+ */
21
+ protected handleChunkReceived(chunk: DataStream_Chunk): void;
22
+ /**
23
+ * @param progress - progress of the stream between 0 and 1. Undefined for streams of unknown size
24
+ */
17
25
  onProgress?: (progress: number | undefined) => void;
18
26
  abstract readAll(opts?: BaseStreamReaderReadAllOpts): Promise<string | Array<Uint8Array>>;
19
27
  }
20
28
  export declare class ByteStreamReader extends BaseStreamReader<ByteStreamInfo> {
21
- protected handleChunkReceived(chunk: DataStream_Chunk): void;
22
- onProgress?: (progress: number | undefined) => void;
23
29
  signal?: AbortSignal;
24
30
  [Symbol.asyncIterator](): {
25
31
  next: () => Promise<IteratorResult<Uint8Array>>;
@@ -36,25 +42,19 @@ export declare class ByteStreamReader extends BaseStreamReader<ByteStreamInfo> {
36
42
  readAll(opts?: BaseStreamReaderReadAllOpts): Promise<Array<Uint8Array>>;
37
43
  }
38
44
  /**
39
- * A class to read chunks from a ReadableStream and provide them in a structured format.
45
+ * A class to read chunks from a ReadableStream and decode them as UTF-8 text.
46
+ *
47
+ * NOTE: chunk-level `version` (resending a chunk at an already-received `chunkIndex` to supersede
48
+ * it) is not supported. The reader used to rebuild the whole string from a per-index chunk map and
49
+ * yield it as `TextStreamChunk.collected`, which made superseding work; 5d4a6346 (#1410, text auto
50
+ * chunking) changed the iterator to yield each chunk's text as it arrives, and a streaming reader
51
+ * cannot retract text it has already handed to the consumer. No sender emits a versioned chunk.
40
52
  */
41
53
  export declare class TextStreamReader extends BaseStreamReader<TextStreamInfo> {
42
- private receivedChunks;
43
54
  signal?: AbortSignal;
44
- /**
45
- * A TextStreamReader instance can be used as an AsyncIterator that returns the entire string
46
- * that has been received up to the current point in time.
47
- */
48
- constructor(info: TextStreamInfo, stream: ReadableStream<DataStream_Chunk>, totalChunkCount?: number);
49
- protected handleChunkReceived(chunk: DataStream_Chunk): void;
50
- /**
51
- * @param progress - progress of the stream between 0 and 1. Undefined for streams of unknown size
52
- */
53
- onProgress?: (progress: number | undefined) => void;
54
55
  /**
55
56
  * Async iterator implementation to allow usage of `for await...of` syntax.
56
- * Yields structured chunks from the stream.
57
- *
57
+ * Yields each chunk's decoded text as it arrives - a delta, not the string accumulated so far.
58
58
  */
59
59
  [Symbol.asyncIterator](): {
60
60
  next: () => Promise<IteratorResult<string>>;
@@ -1 +1 @@
1
- {"version":3,"file":"StreamReader.d.ts","sourceRoot":"","sources":["../../../../../src/room/data-stream/incoming/StreamReader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StreamReader.d.ts","sourceRoot":"","sources":["../../../../../src/room/data-stream/incoming/StreamReader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElF,MAAM,MAAM,2BAA2B,GAAG;IACxC,2DAA2D;IAC3D,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,uBAAe,gBAAgB,CAAC,CAAC,SAAS,cAAc;IACtD,SAAS,CAAC,MAAM,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAEnD,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEjC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IAEnB,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAEhC,IAAI,IAAI,MAEP;IAED,gBAAgB;IAChB,SAAS,CAAC,qBAAqB,CAAC,aAAa,GAAE,OAAe;gBAkBlD,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM;IAOrF;;;;OAIG;IACH,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,gBAAgB;IAUrD;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAEpD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;CAC1F;AAED,qBAAa,gBAAiB,SAAQ,gBAAgB,CAAC,cAAc,CAAC;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB,CAAC,MAAM,CAAC,aAAa,CAAC;oBAYF,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;kBAwCnC,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;;IAOvD;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,WAAW;IAK7B,OAAO,CAAC,IAAI,GAAE,2BAAgC,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;CAQlF;AAED;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,gBAAgB,CAAC,cAAc,CAAC;IACpE,MAAM,CAAC,EAAE,WAAW,CAAC;IAErB;;;OAGG;IACH,CAAC,MAAM,CAAC,aAAa,CAAC;oBAcF,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;kBAqD/B,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;;IAOnD;;;;;;OAMG;IACH,eAAe,CAAC,MAAM,EAAE,WAAW;IAK7B,OAAO,CAAC,IAAI,GAAE,2BAAgC,GAAG,OAAO,CAAC,MAAM,CAAC;CAQvE;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,gBAAgB,EACxB,eAAe,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,KAClC,IAAI,CAAC;AAEV,MAAM,MAAM,iBAAiB,GAAG,CAC9B,MAAM,EAAE,gBAAgB,EACxB,eAAe,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,KAClC,IAAI,CAAC"}
@@ -59,6 +59,13 @@ export declare class E2EEManager extends E2EEManager_base implements BaseE2EEMan
59
59
  private postEnable;
60
60
  private postRTPMap;
61
61
  private postSifTrailer;
62
+ /**
63
+ * Derive the participant's encryption state from one of its publications.
64
+ * Publications without trackInfo are skipped rather than thrown on: throwing
65
+ * inside the forEach above would leave every remaining participant without an
66
+ * encryption state, and a cryptor with unknown state can no longer decrypt.
67
+ */
68
+ private setParticipantCryptorEnabledForPublication;
62
69
  private setupE2EEReceiver;
63
70
  private setupE2EESender;
64
71
  /**
@@ -9,6 +9,11 @@ export declare const UNENCRYPTED_BYTES: {
9
9
  };
10
10
  export declare const IV_LENGTH = 12;
11
11
  export declare const E2EE_FLAG = "lk_e2ee";
12
+ /**
13
+ * trackId a receiver's/sender's encoded stream pipeline was last set up for.
14
+ * Needed to recover the right cryptor when a transceiver gets reused.
15
+ */
16
+ export declare const E2EE_TRACK_ID = "lk_e2ee_track_id";
12
17
  export declare const SALT = "LKFrameEncryptionKey";
13
18
  export declare const KEY_PROVIDER_DEFAULTS: KeyProviderOptions;
14
19
  export declare const MAX_SIF_COUNT = 100;
@@ -47,7 +47,6 @@ export interface EncodeMessage extends BaseMessage {
47
47
  writableStream: WritableStream;
48
48
  trackId: string;
49
49
  codec?: VideoCodec;
50
- isReuse: boolean;
51
50
  /**
52
51
  * Whether the published track advertises packet trailer features.
53
52
  * When false, the cryptor skips the per-frame trailer extraction path
@@ -72,7 +71,15 @@ export interface UpdateCodecMessage extends BaseMessage {
72
71
  data: {
73
72
  participantIdentity: string;
74
73
  trackId: string;
75
- codec: VideoCodec;
74
+ /** undefined for audio tracks */
75
+ codec?: VideoCodec;
76
+ /**
77
+ * trackId this receiver's pipeline was previously set up for, set when a
78
+ * transceiver gets reused for a new track. Lets the worker find the cryptor
79
+ * that still owns the (already transferred) encoded streams and re-point it,
80
+ * rather than creating a fresh cryptor with no pipeline at all.
81
+ */
82
+ previousTrackId?: string;
76
83
  hasPacketTrailer: boolean;
77
84
  };
78
85
  }
@@ -39,6 +39,17 @@ export declare class FrameCryptor extends BaseFrameCryptor {
39
39
  private sifTrailer;
40
40
  private detectedCodec?;
41
41
  private currentTransform?;
42
+ /**
43
+ * The encoded streams this cryptor was last set up with, retained beyond the
44
+ * lifetime of {@link currentTransform}.
45
+ *
46
+ * The main thread transfers a receiver's encoded streams to the worker once and
47
+ * cannot transfer them again (a transferred stream is locked), and
48
+ * `createEncodedStreams()` may only be called once per receiver. So when a
49
+ * transceiver is reused, or when a pipe dies underneath us, re-establishing the
50
+ * transform is only possible from here. See {@link ensureTransform}.
51
+ */
52
+ private retainedStreams?;
42
53
  /**
43
54
  * Whether the subscribed track advertises packet trailer features.
44
55
  * When false, we skip the per-frame trailer extraction path entirely
@@ -55,6 +66,9 @@ export declare class FrameCryptor extends BaseFrameCryptor {
55
66
  private readonly ERROR_THROTTLE_MS;
56
67
  private readonly MAX_ERRORS_PER_MINUTE;
57
68
  private readonly ERROR_WINDOW_MS;
69
+ private undecryptedTrackTimeout?;
70
+ /** grace period for a teardown or a resubscribe to land before we report a stalled track */
71
+ private readonly UNDECRYPTED_TRACK_GRACE_MS;
58
72
  /**
59
73
  * Tracks (participant, trackId, payloadType) tuples for which we've already logged a NALU
60
74
  * fallback, so a persistent bad state doesn't flood the console (Firefox doesn't filter debug).
@@ -78,6 +92,33 @@ export declare class FrameCryptor extends BaseFrameCryptor {
78
92
  isEnabled(): boolean | undefined;
79
93
  getParticipantIdentity(): string | undefined;
80
94
  getTrackId(): string | undefined;
95
+ /**
96
+ * Re-point this cryptor at a new trackId, keeping its (already transferred)
97
+ * encoded streams. Used when a transceiver is reused for a new track.
98
+ */
99
+ setTrackId(trackId: string): void;
100
+ hasActiveTransform(): boolean;
101
+ /**
102
+ * A track that is subscribed and known to be encrypted, but has no transform to
103
+ * decrypt it, will never produce a decodable frame again. That state used to be
104
+ * completely silent (a black tile and endless PLIs), so report it.
105
+ *
106
+ * Deferred, because on teardown the encoded streams routinely close before the
107
+ * 'removeTransform' message arrives -- checking immediately would cry wolf on
108
+ * every unsubscribe.
109
+ *
110
+ * Only meaningful while decoding: a sender's pipe closing on unpublish is
111
+ * routine and has no 'removeTransform' equivalent to quiet it down.
112
+ */
113
+ private scheduleUndecryptedTrackWatchdog;
114
+ /**
115
+ * Re-establish the transform if it is gone while we still own the encoded
116
+ * streams, e.g. after a pipe died on its own (the swallowed
117
+ * 'Destination stream closed') or when a reused transceiver never got a new
118
+ * pipeline. Without this the frames pile up in a readable nobody reads and the
119
+ * decoder starves, which shows up as a permanently black tile.
120
+ */
121
+ ensureTransform(): boolean;
81
122
  /**
82
123
  * Update the video codec used by the mediaStreamTrack
83
124
  * @param codec
@@ -95,7 +136,7 @@ export declare class FrameCryptor extends BaseFrameCryptor {
95
136
  */
96
137
  setHasFrameMetadata(hasFrameMetadata: boolean): void;
97
138
  setFrameMetadataOpts(frameMetadata?: FrameMetadataPublishOptions): void;
98
- setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string, isReuse: boolean, codec?: VideoCodec, frameMetadata?: FrameMetadataPublishOptions): void;
139
+ setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string, codec?: VideoCodec, frameMetadata?: FrameMetadataPublishOptions): boolean;
99
140
  setSifTrailer(trailer: NonSharedUint8Array): void;
100
141
  /**
101
142
  * Checks if we should emit an error based on throttling rules to prevent memory leaks
@@ -41,6 +41,18 @@ export declare class PCTransportManager {
41
41
  setPublisherAnswer(sd: RTCSessionDescriptionInit, offerId: number): Promise<boolean>;
42
42
  removeTrack(sender: RTCRtpSender): void | undefined;
43
43
  close(): Promise<void>;
44
+ /**
45
+ * Restarts ICE on the transports that need it. Only the publisher: the server restarts the
46
+ * subscriber's ICE itself and follows with a fresh offer.
47
+ *
48
+ * The subscriber deliberately does NOT enter `restartingIce` here. Queueing its remote
49
+ * candidates would guard against candidates for a new generation arriving before the offer
50
+ * that introduces it, but the server does not send them in that order -- on a same-node
51
+ * resume it buffers them until the offer has gone out, and on a reconnect that lands on
52
+ * another node it withholds subscriber candidates until immediately before creating the
53
+ * offer. Setting the flag only risks withholding candidates during the window that decides
54
+ * whether the reconnect succeeded.
55
+ */
44
56
  triggerIceRestart(): Promise<void>;
45
57
  addIceCandidate(candidate: RTCIceCandidateInit, target: SignalTarget): Promise<void>;
46
58
  createSubscriberAnswerFromOffer(sd: RTCSessionDescriptionInit, offerId: number): Promise<RTCSessionDescriptionInit | undefined>;
@@ -13,13 +13,19 @@ declare abstract class BaseStreamReader<T extends BaseStreamInfo> {
13
13
  /** @internal */
14
14
  protected validateBytesReceived(doneReceiving?: boolean): void;
15
15
  constructor(info: T, stream: ReadableStream<DataStream_Chunk>, totalByteSize?: number);
16
- protected abstract handleChunkReceived(chunk: DataStream_Chunk): void;
16
+ /**
17
+ * Counts a chunk's bytes against `totalByteSize` and reports progress. Chunk ordering and
18
+ * de-duplication happen upstream in the manager's `ensureOrderedChunks`, so every chunk reaching
19
+ * here is new and in order.
20
+ */
21
+ protected handleChunkReceived(chunk: DataStream_Chunk): void;
22
+ /**
23
+ * @param progress - progress of the stream between 0 and 1. Undefined for streams of unknown size
24
+ */
17
25
  onProgress?: (progress: number | undefined) => void;
18
26
  abstract readAll(opts?: BaseStreamReaderReadAllOpts): Promise<string | Array<Uint8Array>>;
19
27
  }
20
28
  export declare class ByteStreamReader extends BaseStreamReader<ByteStreamInfo> {
21
- protected handleChunkReceived(chunk: DataStream_Chunk): void;
22
- onProgress?: (progress: number | undefined) => void;
23
29
  signal?: AbortSignal;
24
30
  [Symbol.asyncIterator](): {
25
31
  next: () => Promise<IteratorResult<Uint8Array>>;
@@ -36,25 +42,19 @@ export declare class ByteStreamReader extends BaseStreamReader<ByteStreamInfo> {
36
42
  readAll(opts?: BaseStreamReaderReadAllOpts): Promise<Array<Uint8Array>>;
37
43
  }
38
44
  /**
39
- * A class to read chunks from a ReadableStream and provide them in a structured format.
45
+ * A class to read chunks from a ReadableStream and decode them as UTF-8 text.
46
+ *
47
+ * NOTE: chunk-level `version` (resending a chunk at an already-received `chunkIndex` to supersede
48
+ * it) is not supported. The reader used to rebuild the whole string from a per-index chunk map and
49
+ * yield it as `TextStreamChunk.collected`, which made superseding work; 5d4a6346 (#1410, text auto
50
+ * chunking) changed the iterator to yield each chunk's text as it arrives, and a streaming reader
51
+ * cannot retract text it has already handed to the consumer. No sender emits a versioned chunk.
40
52
  */
41
53
  export declare class TextStreamReader extends BaseStreamReader<TextStreamInfo> {
42
- private receivedChunks;
43
54
  signal?: AbortSignal;
44
- /**
45
- * A TextStreamReader instance can be used as an AsyncIterator that returns the entire string
46
- * that has been received up to the current point in time.
47
- */
48
- constructor(info: TextStreamInfo, stream: ReadableStream<DataStream_Chunk>, totalChunkCount?: number);
49
- protected handleChunkReceived(chunk: DataStream_Chunk): void;
50
- /**
51
- * @param progress - progress of the stream between 0 and 1. Undefined for streams of unknown size
52
- */
53
- onProgress?: (progress: number | undefined) => void;
54
55
  /**
55
56
  * Async iterator implementation to allow usage of `for await...of` syntax.
56
- * Yields structured chunks from the stream.
57
- *
57
+ * Yields each chunk's decoded text as it arrives - a delta, not the string accumulated so far.
58
58
  */
59
59
  [Symbol.asyncIterator](): {
60
60
  next: () => Promise<IteratorResult<string>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "livekit-client",
3
- "version": "2.22.1",
3
+ "version": "2.22.2",
4
4
  "description": "JavaScript/TypeScript client SDK for LiveKit",
5
5
  "main": "./dist/livekit-client.umd.js",
6
6
  "unpkg": "./dist/livekit-client.umd.js",
@@ -667,6 +667,7 @@ export class SignalClient {
667
667
  if (firstMessage) {
668
668
  this.handleSignalResponse(firstMessage);
669
669
  }
670
+ const attemptId = this.attemptId;
670
671
  while (true) {
671
672
  if (this.signalLatency) {
672
673
  await sleep(this.signalLatency);
@@ -680,7 +681,7 @@ export class SignalClient {
680
681
  this.handleSignalResponse(resp);
681
682
  } catch (e) {
682
683
  this.log.error(`error reading from signal stream`, { error: e });
683
- await this.close(false, 'error in reading loop');
684
+ await this.handleOnClose('error in reading loop', attemptId);
684
685
  break;
685
686
  }
686
687
  }