livekit-client 2.13.7 → 2.13.8
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.
- package/dist/livekit-client.e2ee.worker.js +1 -1
- package/dist/livekit-client.e2ee.worker.js.map +1 -1
- package/dist/livekit-client.e2ee.worker.mjs +13 -7
- package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
- package/dist/livekit-client.esm.mjs +5 -3
- package/dist/livekit-client.esm.mjs.map +1 -1
- package/dist/livekit-client.umd.js +1 -1
- package/dist/livekit-client.umd.js.map +1 -1
- package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
- package/dist/src/e2ee/types.d.ts +7 -0
- package/dist/src/e2ee/types.d.ts.map +1 -1
- package/dist/src/e2ee/worker/FrameCryptor.d.ts +2 -1
- package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
- package/dist/ts4.2/src/e2ee/types.d.ts +7 -0
- package/dist/ts4.2/src/e2ee/worker/FrameCryptor.d.ts +2 -1
- package/package.json +1 -1
- package/src/e2ee/E2eeManager.ts +5 -1
- package/src/e2ee/types.ts +8 -0
- package/src/e2ee/worker/FrameCryptor.ts +15 -0
- package/src/e2ee/worker/e2ee.worker.ts +8 -5
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"E2eeManager.d.ts","sourceRoot":"","sources":["../../../src/e2ee/E2eeManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,iBAAiB,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AAWrC,OAAO,EAAE,KAAK,oBAAoB,EAAqC,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,
|
1
|
+
{"version":3,"file":"E2eeManager.d.ts","sourceRoot":"","sources":["../../../src/e2ee/E2eeManager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,iBAAiB,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,IAAI,MAAM,cAAc,CAAC;AAWrC,OAAO,EAAE,KAAK,oBAAoB,EAAqC,MAAM,UAAU,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAanB,MAAM,SAAS,CAAC;AAGjB,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAC;IACrC,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClF,aAAa,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC;IACzC,EAAE,CAAC,CAAC,SAAS,MAAM,oBAAoB,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CAC7F;gCAM0B,UAAU,iBAAiB,CAAC,oBAAoB,CAAC;AAJ5E;;GAEG;AACH,qBAAa,WACX,SAAQ,gBACR,YAAW,eAAe;IAE1B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC;IAEzB,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;IAEtB,OAAO,CAAC,iBAAiB,CAAU;IAEnC,OAAO,CAAC,WAAW,CAAkB;gBAEzB,OAAO,EAAE,kBAAkB;IAOvC;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,IAAI;IA2BhB;;OAEG;IACH,4BAA4B,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM;IAK1E;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,UAAU;IAQjC,OAAO,CAAC,eAAe,CAoDrB;IAEF,OAAO,CAAC,aAAa,CAGnB;IAEK,WAAW,CAAC,MAAM,EAAE,SAAS;IAMpC,OAAO,CAAC,mBAAmB;IAwD3B,OAAO,CAAC,kBAAkB;IAc1B,OAAO,CAAC,OAAO;IAgBf,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,eAAe;IAQvB;;;;OAIG;YACW,cAAc;IAmE5B;;;;OAIG;IACH,OAAO,CAAC,YAAY;CAwCrB"}
|
package/dist/src/e2ee/types.d.ts
CHANGED
@@ -43,6 +43,7 @@ export interface EncodeMessage extends BaseMessage {
|
|
43
43
|
writableStream: WritableStream;
|
44
44
|
trackId: string;
|
45
45
|
codec?: VideoCodec;
|
46
|
+
isReuse: boolean;
|
46
47
|
};
|
47
48
|
}
|
48
49
|
export interface RemoveTransformMessage extends BaseMessage {
|
@@ -129,4 +130,10 @@ export type DecodeRatchetOptions = {
|
|
129
130
|
/** ratcheted key to try */
|
130
131
|
encryptionKey?: CryptoKey;
|
131
132
|
};
|
133
|
+
export type ScriptTransformOptions = {
|
134
|
+
kind: 'decode' | 'encode';
|
135
|
+
participantIdentity: string;
|
136
|
+
trackId: string;
|
137
|
+
codec?: VideoCodec;
|
138
|
+
};
|
132
139
|
//# sourceMappingURL=types.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/e2ee/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QACJ,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,QAAQ,EAAE,QAAQ,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE;QACJ,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,WAAW,EAAE,OAAO,CAAC;QACrB,GAAG,EAAE,SAAS,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE;QACJ,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC7B,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CACH;AAED,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE;QACJ,OAAO,EAAE,UAAU,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC1B,IAAI,EAAE;QACJ,mBAAmB,EAAE,MAAM,CAAC;QAC5B,cAAc,EAAE,cAAc,CAAC;QAC/B,cAAc,EAAE,cAAc,CAAC;QAC/B,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,UAAU,CAAC;
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/e2ee/types.ts"],"names":[],"mappings":"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"}
|
@@ -36,6 +36,7 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
36
36
|
private sifTrailer;
|
37
37
|
private sifGuard;
|
38
38
|
private detectedCodec?;
|
39
|
+
private isTransformActive;
|
39
40
|
constructor(opts: {
|
40
41
|
keys: ParticipantKeyHandler;
|
41
42
|
participantIdentity: string;
|
@@ -64,7 +65,7 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
64
65
|
* @param map
|
65
66
|
*/
|
66
67
|
setRtpMap(map: Map<number, VideoCodec>): void;
|
67
|
-
setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string, codec?: VideoCodec): void;
|
68
|
+
setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string, isReuse: boolean, codec?: VideoCodec): void;
|
68
69
|
setSifTrailer(trailer: Uint8Array): void;
|
69
70
|
/**
|
70
71
|
* Function that will be injected in a stream and will encrypt the given encoded frames.
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"FrameCryptor.d.ts","sourceRoot":"","sources":["../../../../src/e2ee/worker/FrameCryptor.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,iBAAiB,MAAM,eAAe,CAAC;AAEnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAE,KAAK,gBAAgB,EAAgB,MAAM,WAAW,CAAC;AAChE,OAAO,KAAK,EAAwB,kBAAkB,EAAyB,MAAM,UAAU,CAAC;AAEhG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGrE,eAAO,MAAM,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAa,CAAC;AAEpE,MAAM,WAAW,uBAAuB;IACtC,KAAK,IAAI,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,cAAc,CAAC;IACzB,QAAQ,EAAE,cAAc,CAAC;IACzB,WAAW,EAAE,eAAe,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;CAClC;qCAEsD,UAAU,iBAAiB,CAAC,gBAAgB,CAAC;AAApG,qBAAa,gBAAiB,SAAQ,qBAA+D;IACnG,SAAS,CAAC,cAAc,CACtB,YAAY,EAAE,oBAAoB,GAAG,oBAAoB,EACzD,UAAU,EAAE,gCAAgC,GAC3C,OAAO,CAAC,GAAG,CAAC;IAIf,SAAS,CAAC,cAAc,CACtB,YAAY,EAAE,oBAAoB,GAAG,oBAAoB,EACzD,UAAU,EAAE,gCAAgC,GAC3C,OAAO,CAAC,GAAG,CAAC;CAGhB;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,gBAAgB;IAChD,OAAO,CAAC,UAAU,CAAsB;IAExC,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,OAAO,CAAC,OAAO,CAAqB;IAEpC,OAAO,CAAC,IAAI,CAAwB;IAEpC,OAAO,CAAC,UAAU,CAAC,CAAa;IAEhC,OAAO,CAAC,MAAM,CAA0B;IAExC,OAAO,CAAC,kBAAkB,CAAqB;IAE/C;;OAEG;IACH,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,QAAQ,CAAW;IAE3B,OAAO,CAAC,aAAa,CAAC,CAAa;
|
1
|
+
{"version":3,"file":"FrameCryptor.d.ts","sourceRoot":"","sources":["../../../../src/e2ee/worker/FrameCryptor.ts"],"names":[],"mappings":"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"}
|
@@ -43,6 +43,7 @@ export interface EncodeMessage extends BaseMessage {
|
|
43
43
|
writableStream: WritableStream;
|
44
44
|
trackId: string;
|
45
45
|
codec?: VideoCodec;
|
46
|
+
isReuse: boolean;
|
46
47
|
};
|
47
48
|
}
|
48
49
|
export interface RemoveTransformMessage extends BaseMessage {
|
@@ -129,4 +130,10 @@ export type DecodeRatchetOptions = {
|
|
129
130
|
/** ratcheted key to try */
|
130
131
|
encryptionKey?: CryptoKey;
|
131
132
|
};
|
133
|
+
export type ScriptTransformOptions = {
|
134
|
+
kind: 'decode' | 'encode';
|
135
|
+
participantIdentity: string;
|
136
|
+
trackId: string;
|
137
|
+
codec?: VideoCodec;
|
138
|
+
};
|
132
139
|
//# sourceMappingURL=types.d.ts.map
|
@@ -36,6 +36,7 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
36
36
|
private sifTrailer;
|
37
37
|
private sifGuard;
|
38
38
|
private detectedCodec?;
|
39
|
+
private isTransformActive;
|
39
40
|
constructor(opts: {
|
40
41
|
keys: ParticipantKeyHandler;
|
41
42
|
participantIdentity: string;
|
@@ -64,7 +65,7 @@ export declare class FrameCryptor extends BaseFrameCryptor {
|
|
64
65
|
* @param map
|
65
66
|
*/
|
66
67
|
setRtpMap(map: Map<number, VideoCodec>): void;
|
67
|
-
setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string, codec?: VideoCodec): void;
|
68
|
+
setupTransform(operation: 'encode' | 'decode', readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>, trackId: string, isReuse: boolean, codec?: VideoCodec): void;
|
68
69
|
setSifTrailer(trailer: Uint8Array): void;
|
69
70
|
/**
|
70
71
|
* Function that will be injected in a stream and will encrypt the given encoded frames.
|
package/package.json
CHANGED
package/src/e2ee/E2eeManager.ts
CHANGED
@@ -25,6 +25,7 @@ import type {
|
|
25
25
|
RTPVideoMapMessage,
|
26
26
|
RatchetRequestMessage,
|
27
27
|
RemoveTransformMessage,
|
28
|
+
ScriptTransformOptions,
|
28
29
|
SetKeyMessage,
|
29
30
|
SifTrailerMessage,
|
30
31
|
UpdateCodecMessage,
|
@@ -345,7 +346,7 @@ export class E2EEManager
|
|
345
346
|
}
|
346
347
|
|
347
348
|
if (isScriptTransformSupported()) {
|
348
|
-
const options = {
|
349
|
+
const options: ScriptTransformOptions = {
|
349
350
|
kind: 'decode',
|
350
351
|
participantIdentity,
|
351
352
|
trackId,
|
@@ -371,6 +372,7 @@ export class E2EEManager
|
|
371
372
|
let writable: WritableStream = receiver.writableStream;
|
372
373
|
// @ts-ignore
|
373
374
|
let readable: ReadableStream = receiver.readableStream;
|
375
|
+
|
374
376
|
if (!writable || !readable) {
|
375
377
|
// @ts-ignore
|
376
378
|
const receiverStreams = receiver.createEncodedStreams();
|
@@ -390,6 +392,7 @@ export class E2EEManager
|
|
390
392
|
trackId: trackId,
|
391
393
|
codec,
|
392
394
|
participantIdentity: participantIdentity,
|
395
|
+
isReuse: E2EE_FLAG in receiver,
|
393
396
|
},
|
394
397
|
};
|
395
398
|
this.worker.postMessage(msg, [readable, writable]);
|
@@ -435,6 +438,7 @@ export class E2EEManager
|
|
435
438
|
codec,
|
436
439
|
trackId,
|
437
440
|
participantIdentity: this.room.localParticipant.identity,
|
441
|
+
isReuse: false,
|
438
442
|
},
|
439
443
|
};
|
440
444
|
this.worker.postMessage(msg, [senderStreams.readable, senderStreams.writable]);
|
package/src/e2ee/types.ts
CHANGED
@@ -49,6 +49,7 @@ export interface EncodeMessage extends BaseMessage {
|
|
49
49
|
writableStream: WritableStream;
|
50
50
|
trackId: string;
|
51
51
|
codec?: VideoCodec;
|
52
|
+
isReuse: boolean;
|
52
53
|
};
|
53
54
|
}
|
54
55
|
|
@@ -162,3 +163,10 @@ export type DecodeRatchetOptions = {
|
|
162
163
|
/** ratcheted key to try */
|
163
164
|
encryptionKey?: CryptoKey;
|
164
165
|
};
|
166
|
+
|
167
|
+
export type ScriptTransformOptions = {
|
168
|
+
kind: 'decode' | 'encode';
|
169
|
+
participantIdentity: string;
|
170
|
+
trackId: string;
|
171
|
+
codec?: VideoCodec;
|
172
|
+
};
|
@@ -69,6 +69,8 @@ export class FrameCryptor extends BaseFrameCryptor {
|
|
69
69
|
|
70
70
|
private detectedCodec?: VideoCodec;
|
71
71
|
|
72
|
+
private isTransformActive: boolean = false;
|
73
|
+
|
72
74
|
constructor(opts: {
|
73
75
|
keys: ParticipantKeyHandler;
|
74
76
|
participantIdentity: string;
|
@@ -159,6 +161,7 @@ export class FrameCryptor extends BaseFrameCryptor {
|
|
159
161
|
readable: ReadableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>,
|
160
162
|
writable: WritableStream<RTCEncodedVideoFrame | RTCEncodedAudioFrame>,
|
161
163
|
trackId: string,
|
164
|
+
isReuse: boolean,
|
162
165
|
codec?: VideoCodec,
|
163
166
|
) {
|
164
167
|
if (codec) {
|
@@ -173,11 +176,20 @@ export class FrameCryptor extends BaseFrameCryptor {
|
|
173
176
|
...this.logContext,
|
174
177
|
});
|
175
178
|
|
179
|
+
if (isReuse && this.isTransformActive) {
|
180
|
+
workerLogger.debug('reuse transform', {
|
181
|
+
...this.logContext,
|
182
|
+
});
|
183
|
+
return;
|
184
|
+
}
|
185
|
+
|
176
186
|
const transformFn = operation === 'encode' ? this.encodeFunction : this.decodeFunction;
|
177
187
|
const transformStream = new TransformStream({
|
178
188
|
transform: transformFn.bind(this),
|
179
189
|
});
|
180
190
|
|
191
|
+
this.isTransformActive = true;
|
192
|
+
|
181
193
|
readable
|
182
194
|
.pipeThrough(transformStream)
|
183
195
|
.pipeTo(writable)
|
@@ -189,6 +201,9 @@ export class FrameCryptor extends BaseFrameCryptor {
|
|
189
201
|
? e
|
190
202
|
: new CryptorError(e.message, undefined, this.participantIdentity),
|
191
203
|
);
|
204
|
+
})
|
205
|
+
.finally(() => {
|
206
|
+
this.isTransformActive = false;
|
192
207
|
});
|
193
208
|
this.trackId = trackId;
|
194
209
|
}
|
@@ -12,6 +12,7 @@ import type {
|
|
12
12
|
RatchetMessage,
|
13
13
|
RatchetRequestMessage,
|
14
14
|
RatchetResult,
|
15
|
+
ScriptTransformOptions,
|
15
16
|
} from '../types';
|
16
17
|
import { FrameCryptor, encryptionEnabledMap } from './FrameCryptor';
|
17
18
|
import { ParticipantKeyHandler } from './ParticipantKeyHandler';
|
@@ -65,6 +66,7 @@ onmessage = (ev) => {
|
|
65
66
|
data.readableStream,
|
66
67
|
data.writableStream,
|
67
68
|
data.trackId,
|
69
|
+
data.isReuse,
|
68
70
|
data.codec,
|
69
71
|
);
|
70
72
|
break;
|
@@ -75,6 +77,7 @@ onmessage = (ev) => {
|
|
75
77
|
data.readableStream,
|
76
78
|
data.writableStream,
|
77
79
|
data.trackId,
|
80
|
+
data.isReuse,
|
78
81
|
data.codec,
|
79
82
|
);
|
80
83
|
break;
|
@@ -259,14 +262,14 @@ if (self.RTCTransformEvent) {
|
|
259
262
|
workerLogger.debug('setup transform event');
|
260
263
|
// @ts-ignore
|
261
264
|
self.onrtctransform = (event: RTCTransformEvent) => {
|
262
|
-
// @ts-ignore
|
265
|
+
// @ts-ignore
|
263
266
|
const transformer = event.transformer;
|
264
267
|
workerLogger.debug('transformer', transformer);
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
+
|
269
|
+
const { kind, participantIdentity, trackId, codec } =
|
270
|
+
transformer.options as ScriptTransformOptions;
|
268
271
|
const cryptor = getTrackCryptor(participantIdentity, trackId);
|
269
272
|
workerLogger.debug('transform', { codec });
|
270
|
-
cryptor.setupTransform(kind, transformer.readable, transformer.writable, trackId, codec);
|
273
|
+
cryptor.setupTransform(kind, transformer.readable, transformer.writable, trackId, false, codec);
|
271
274
|
};
|
272
275
|
}
|