livekit-client 2.5.4 → 2.5.6
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 +5180 -494
- package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
- package/dist/livekit-client.esm.mjs +10 -8
- 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/worker/FrameCryptor.d.ts.map +1 -1
- package/dist/src/room/events.d.ts +2 -0
- package/dist/src/room/events.d.ts.map +1 -1
- package/dist/ts4.2/src/room/events.d.ts +2 -0
- package/package.json +1 -1
- package/src/e2ee/E2eeManager.ts +8 -8
- package/src/e2ee/worker/FrameCryptor.ts +10 -4
- package/src/e2ee/worker/e2ee.worker.ts +81 -77
- package/src/room/events.ts +2 -0
- package/src/room/participant/Participant.ts +1 -1
@@ -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,gBAAgB,EAAgB,MAAM,WAAW,CAAC;AAC3D,OAAO,KAAK,EAAwB,kBAAkB,EAAU,MAAM,UAAU,CAAC;AAEjF,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;+CAEgE,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;gBAEvB,IAAI,EAAE;QAChB,IAAI,EAAE,qBAAqB,CAAC;QAC5B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,kBAAkB,EAAE,kBAAkB,CAAC;QACvC,UAAU,CAAC,EAAE,UAAU,CAAC;KACzB;IAWD,OAAO,KAAK,UAAU,GAMrB;IAED;;;;;OAKG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB;IAkBtD,gBAAgB;IAKhB,SAAS;IAQT,sBAAsB;IAItB,UAAU;IAIV;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,UAAU;IAI/B;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC;IAItC,cAAc,CACZ,SAAS,EAAE,QAAQ,GAAG,QAAQ,EAC9B,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,cAAc,EACxB,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,UAAU;IAkCpB,aAAa,CAAC,OAAO,EAAE,UAAU;IAKjC;;;;;;;;;;;;;;;;;;;;;OAqBG;cACa,cAAc,CAC5B,YAAY,EAAE,oBAAoB,GAAG,oBAAoB,EACzD,UAAU,EAAE,gCAAgC;
|
1
|
+
{"version":3,"file":"FrameCryptor.d.ts","sourceRoot":"","sources":["../../../../src/e2ee/worker/FrameCryptor.ts"],"names":[],"mappings":"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"}
|
@@ -166,6 +166,7 @@ export declare enum RoomEvent {
|
|
166
166
|
* Participant attributes is an app-specific key value state to be pushed to
|
167
167
|
* all users.
|
168
168
|
* When a participant's attributes changed, this event will be emitted with the changed attributes and the participant
|
169
|
+
* args: (changedAttributes: [[Record<string, string]], participant: [[Participant]])
|
169
170
|
*/
|
170
171
|
ParticipantAttributesChanged = "participantAttributesChanged",
|
171
172
|
/**
|
@@ -446,6 +447,7 @@ export declare enum ParticipantEvent {
|
|
446
447
|
* Participant attributes is an app-specific key value state to be pushed to
|
447
448
|
* all users.
|
448
449
|
* When a participant's attributes changed, this event will be emitted with the changed attributes
|
450
|
+
* args: (changedAttributes: [[Record<string, string]])
|
449
451
|
*/
|
450
452
|
AttributesChanged = "attributesChanged",
|
451
453
|
/**
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/room/events.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,oBAAY,SAAS;IACnB;;OAEG;IACH,SAAS,cAAc;IAEvB;;;OAGG;IACH,YAAY,iBAAiB;IAE7B;;;;OAIG;IACH,kBAAkB,uBAAuB;IAEzC;;OAEG;IACH,WAAW,gBAAgB;IAE3B;;;;;;;;;;OAUG;IACH,YAAY,iBAAiB;IAE7B;;;;OAIG;IACH,sBAAsB,2BAA2B;IAEjD;;OAEG;IACH,mBAAmB,wBAAwB;IAE3C;;;;;;OAMG;IACH,oBAAoB,yBAAyB;IAE7C;;;;;OAKG;IACH,uBAAuB,4BAA4B;IAEnD;;;;;;;;OAQG;IACH,cAAc,mBAAmB;IAEjC;;;;;OAKG;IACH,eAAe,oBAAoB;IAEnC;;;;OAIG;IACH,uBAAuB,4BAA4B;IAEnD;;;;OAIG;IACH,gBAAgB,qBAAqB;IAErC;;;;;OAKG;IACH,iBAAiB,sBAAsB;IAEvC;;;;OAIG;IACH,UAAU,eAAe;IAEzB;;;;OAIG;IACH,YAAY,iBAAiB;IAE7B;;;;;OAKG;IACH,mBAAmB,wBAAwB;IAE3C;;;;;;;;OAQG;IACH,qBAAqB,0BAA0B;IAE/C;;;;;OAKG;IACH,yBAAyB,8BAA8B;IAEvD;;;;;;;OAOG;IACH,qBAAqB,0BAA0B;IAE/C;;;;;;;;OAQG;IACH,0BAA0B,+BAA+B;IAEzD;;;;;OAKG;IACH,sBAAsB,2BAA2B;IAEjD
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/room/events.ts"],"names":[],"mappings":"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"}
|
@@ -166,6 +166,7 @@ export declare enum RoomEvent {
|
|
166
166
|
* Participant attributes is an app-specific key value state to be pushed to
|
167
167
|
* all users.
|
168
168
|
* When a participant's attributes changed, this event will be emitted with the changed attributes and the participant
|
169
|
+
* args: (changedAttributes: [[Record<string, string]], participant: [[Participant]])
|
169
170
|
*/
|
170
171
|
ParticipantAttributesChanged = "participantAttributesChanged",
|
171
172
|
/**
|
@@ -446,6 +447,7 @@ export declare enum ParticipantEvent {
|
|
446
447
|
* Participant attributes is an app-specific key value state to be pushed to
|
447
448
|
* all users.
|
448
449
|
* When a participant's attributes changed, this event will be emitted with the changed attributes
|
450
|
+
* args: (changedAttributes: [[Record<string, string]])
|
449
451
|
*/
|
450
452
|
AttributesChanged = "attributesChanged",
|
451
453
|
/**
|
package/package.json
CHANGED
package/src/e2ee/E2eeManager.ts
CHANGED
@@ -115,6 +115,11 @@ export class E2EEManager extends (EventEmitter as new () => TypedEventEmitter<E2
|
|
115
115
|
break;
|
116
116
|
|
117
117
|
case 'enable':
|
118
|
+
if (data.enabled) {
|
119
|
+
this.keyProvider.getKeys().forEach((keyInfo) => {
|
120
|
+
this.postKey(keyInfo);
|
121
|
+
});
|
122
|
+
}
|
118
123
|
if (
|
119
124
|
this.encryptionEnabled !== data.enabled &&
|
120
125
|
data.participantIdentity === this.room?.localParticipant.identity
|
@@ -134,11 +139,6 @@ export class E2EEManager extends (EventEmitter as new () => TypedEventEmitter<E2
|
|
134
139
|
}
|
135
140
|
this.emit(EncryptionEvent.ParticipantEncryptionStatusChanged, data.enabled, participant);
|
136
141
|
}
|
137
|
-
if (this.encryptionEnabled) {
|
138
|
-
this.keyProvider.getKeys().forEach((keyInfo) => {
|
139
|
-
this.postKey(keyInfo);
|
140
|
-
});
|
141
|
-
}
|
142
142
|
break;
|
143
143
|
case 'ratchetKey':
|
144
144
|
this.keyProvider.emit(KeyProviderEvent.KeyRatcheted, data.material, data.keyIndex);
|
@@ -196,13 +196,13 @@ export class E2EEManager extends (EventEmitter as new () => TypedEventEmitter<E2
|
|
196
196
|
if (!this.room) {
|
197
197
|
throw new TypeError(`expected room to be present on signal connect`);
|
198
198
|
}
|
199
|
+
keyProvider.getKeys().forEach((keyInfo) => {
|
200
|
+
this.postKey(keyInfo);
|
201
|
+
});
|
199
202
|
this.setParticipantCryptorEnabled(
|
200
203
|
this.room.localParticipant.isE2EEEnabled,
|
201
204
|
this.room.localParticipant.identity,
|
202
205
|
);
|
203
|
-
keyProvider.getKeys().forEach((keyInfo) => {
|
204
|
-
this.postKey(keyInfo);
|
205
|
-
});
|
206
206
|
});
|
207
207
|
room.localParticipant.on(ParticipantEvent.LocalTrackPublished, async (publication) => {
|
208
208
|
this.setupE2EESender(publication.track!, publication.track!.sender!);
|
@@ -233,11 +233,17 @@ export class FrameCryptor extends BaseFrameCryptor {
|
|
233
233
|
}
|
234
234
|
const keySet = this.keys.getKeySet();
|
235
235
|
if (!keySet) {
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
236
|
+
this.emit(
|
237
|
+
CryptorEvent.Error,
|
238
|
+
new CryptorError(
|
239
|
+
`key set not found for ${
|
240
|
+
this.participantIdentity
|
241
|
+
} at index ${this.keys.getCurrentKeyIndex()}`,
|
242
|
+
CryptorErrorReason.MissingKey,
|
243
|
+
this.participantIdentity,
|
244
|
+
),
|
240
245
|
);
|
246
|
+
return;
|
241
247
|
}
|
242
248
|
const { encryptionKey } = keySet;
|
243
249
|
const keyIndex = this.keys.getCurrentKeyIndex();
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { workerLogger } from '../../logger';
|
2
2
|
import { VideoCodec } from '../../room/track/options';
|
3
|
+
import { AsyncQueue } from '../../utils/AsyncQueue';
|
3
4
|
import { KEY_PROVIDER_DEFAULTS } from '../constants';
|
4
5
|
import { CryptorErrorReason } from '../errors';
|
5
6
|
import { CryptorEvent, KeyHandlerEvent } from '../events';
|
@@ -17,6 +18,7 @@ import { ParticipantKeyHandler } from './ParticipantKeyHandler';
|
|
17
18
|
const participantCryptors: FrameCryptor[] = [];
|
18
19
|
const participantKeys: Map<string, ParticipantKeyHandler> = new Map();
|
19
20
|
let sharedKeyHandler: ParticipantKeyHandler | undefined;
|
21
|
+
let messageQueue = new AsyncQueue();
|
20
22
|
|
21
23
|
let isEncryptionEnabled: boolean = false;
|
22
24
|
|
@@ -31,85 +33,87 @@ let rtpMap: Map<number, VideoCodec> = new Map();
|
|
31
33
|
workerLogger.setDefaultLevel('info');
|
32
34
|
|
33
35
|
onmessage = (ev) => {
|
34
|
-
|
36
|
+
messageQueue.run(async () => {
|
37
|
+
const { kind, data }: E2EEWorkerMessage = ev.data;
|
35
38
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
workerLogger.info(
|
52
|
-
`updated e2ee enabled status for ${data.participantIdentity} to ${data.enabled}`,
|
53
|
-
);
|
54
|
-
// acknowledge enable call successful
|
55
|
-
postMessage(ev.data);
|
56
|
-
break;
|
57
|
-
case 'decode':
|
58
|
-
let cryptor = getTrackCryptor(data.participantIdentity, data.trackId);
|
59
|
-
cryptor.setupTransform(
|
60
|
-
kind,
|
61
|
-
data.readableStream,
|
62
|
-
data.writableStream,
|
63
|
-
data.trackId,
|
64
|
-
data.codec,
|
65
|
-
);
|
66
|
-
break;
|
67
|
-
case 'encode':
|
68
|
-
let pubCryptor = getTrackCryptor(data.participantIdentity, data.trackId);
|
69
|
-
pubCryptor.setupTransform(
|
70
|
-
kind,
|
71
|
-
data.readableStream,
|
72
|
-
data.writableStream,
|
73
|
-
data.trackId,
|
74
|
-
data.codec,
|
75
|
-
);
|
76
|
-
break;
|
77
|
-
case 'setKey':
|
78
|
-
if (useSharedKey) {
|
79
|
-
setSharedKey(data.key, data.keyIndex);
|
80
|
-
} else if (data.participantIdentity) {
|
39
|
+
switch (kind) {
|
40
|
+
case 'init':
|
41
|
+
workerLogger.setLevel(data.loglevel);
|
42
|
+
workerLogger.info('worker initialized');
|
43
|
+
keyProviderOptions = data.keyProviderOptions;
|
44
|
+
useSharedKey = !!data.keyProviderOptions.sharedKey;
|
45
|
+
// acknowledge init successful
|
46
|
+
const ackMsg: InitAck = {
|
47
|
+
kind: 'initAck',
|
48
|
+
data: { enabled: isEncryptionEnabled },
|
49
|
+
};
|
50
|
+
postMessage(ackMsg);
|
51
|
+
break;
|
52
|
+
case 'enable':
|
53
|
+
setEncryptionEnabled(data.enabled, data.participantIdentity);
|
81
54
|
workerLogger.info(
|
82
|
-
`
|
55
|
+
`updated e2ee enabled status for ${data.participantIdentity} to ${data.enabled}`,
|
83
56
|
);
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
57
|
+
// acknowledge enable call successful
|
58
|
+
postMessage(ev.data);
|
59
|
+
break;
|
60
|
+
case 'decode':
|
61
|
+
let cryptor = getTrackCryptor(data.participantIdentity, data.trackId);
|
62
|
+
cryptor.setupTransform(
|
63
|
+
kind,
|
64
|
+
data.readableStream,
|
65
|
+
data.writableStream,
|
66
|
+
data.trackId,
|
67
|
+
data.codec,
|
68
|
+
);
|
69
|
+
break;
|
70
|
+
case 'encode':
|
71
|
+
let pubCryptor = getTrackCryptor(data.participantIdentity, data.trackId);
|
72
|
+
pubCryptor.setupTransform(
|
73
|
+
kind,
|
74
|
+
data.readableStream,
|
75
|
+
data.writableStream,
|
76
|
+
data.trackId,
|
77
|
+
data.codec,
|
78
|
+
);
|
79
|
+
break;
|
80
|
+
case 'setKey':
|
81
|
+
if (useSharedKey) {
|
82
|
+
await setSharedKey(data.key, data.keyIndex);
|
83
|
+
} else if (data.participantIdentity) {
|
84
|
+
workerLogger.info(
|
85
|
+
`set participant sender key ${data.participantIdentity} index ${data.keyIndex}`,
|
86
|
+
);
|
87
|
+
await getParticipantKeyHandler(data.participantIdentity).setKey(data.key, data.keyIndex);
|
88
|
+
} else {
|
89
|
+
workerLogger.error('no participant Id was provided and shared key usage is disabled');
|
101
90
|
}
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
91
|
+
break;
|
92
|
+
case 'removeTransform':
|
93
|
+
unsetCryptorParticipant(data.trackId, data.participantIdentity);
|
94
|
+
break;
|
95
|
+
case 'updateCodec':
|
96
|
+
getTrackCryptor(data.participantIdentity, data.trackId).setVideoCodec(data.codec);
|
97
|
+
break;
|
98
|
+
case 'setRTPMap':
|
99
|
+
// this is only used for the local participant
|
100
|
+
rtpMap = data.map;
|
101
|
+
participantCryptors.forEach((cr) => {
|
102
|
+
if (cr.getParticipantIdentity() === data.participantIdentity) {
|
103
|
+
cr.setRtpMap(data.map);
|
104
|
+
}
|
105
|
+
});
|
106
|
+
break;
|
107
|
+
case 'ratchetRequest':
|
108
|
+
handleRatchetRequest(data);
|
109
|
+
break;
|
110
|
+
case 'setSifTrailer':
|
111
|
+
handleSifTrailer(data.trailer);
|
112
|
+
break;
|
113
|
+
default:
|
114
|
+
break;
|
115
|
+
}
|
116
|
+
});
|
113
117
|
};
|
114
118
|
|
115
119
|
async function handleRatchetRequest(data: RatchetRequestMessage['data']) {
|
@@ -210,9 +214,9 @@ function setEncryptionEnabled(enable: boolean, participantIdentity: string) {
|
|
210
214
|
encryptionEnabledMap.set(participantIdentity, enable);
|
211
215
|
}
|
212
216
|
|
213
|
-
function setSharedKey(key: CryptoKey, index?: number) {
|
217
|
+
async function setSharedKey(key: CryptoKey, index?: number) {
|
214
218
|
workerLogger.info('set shared key', { index });
|
215
|
-
getSharedKeyHandler().setKey(key, index);
|
219
|
+
await getSharedKeyHandler().setKey(key, index);
|
216
220
|
}
|
217
221
|
|
218
222
|
function setupCryptorErrorEvents(cryptor: FrameCryptor) {
|
package/src/room/events.ts
CHANGED
@@ -189,6 +189,7 @@ export enum RoomEvent {
|
|
189
189
|
* Participant attributes is an app-specific key value state to be pushed to
|
190
190
|
* all users.
|
191
191
|
* When a participant's attributes changed, this event will be emitted with the changed attributes and the participant
|
192
|
+
* args: (changedAttributes: [[Record<string, string]], participant: [[Participant]])
|
192
193
|
*/
|
193
194
|
ParticipantAttributesChanged = 'participantAttributesChanged',
|
194
195
|
|
@@ -513,6 +514,7 @@ export enum ParticipantEvent {
|
|
513
514
|
* Participant attributes is an app-specific key value state to be pushed to
|
514
515
|
* all users.
|
515
516
|
* When a participant's attributes changed, this event will be emitted with the changed attributes
|
517
|
+
* args: (changedAttributes: [[Record<string, string]])
|
516
518
|
*/
|
517
519
|
AttributesChanged = 'attributesChanged',
|
518
520
|
|
@@ -259,7 +259,7 @@ export default class Participant extends (EventEmitter as new () => TypedEmitter
|
|
259
259
|
* Updates metadata from server
|
260
260
|
**/
|
261
261
|
private _setAttributes(attributes: Record<string, string>) {
|
262
|
-
const diff = diffAttributes(attributes,
|
262
|
+
const diff = diffAttributes(this.attributes, attributes);
|
263
263
|
this._attributes = attributes;
|
264
264
|
|
265
265
|
if (Object.keys(diff).length > 0) {
|