livekit-client 2.22.3 → 2.23.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 (272) hide show
  1. package/README.md +35 -0
  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 +71 -8
  5. package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
  6. package/dist/livekit-client.esm.mjs +1746 -547
  7. package/dist/livekit-client.esm.mjs.map +1 -1
  8. package/dist/livekit-client.fm.worker.js +1 -1
  9. package/dist/livekit-client.fm.worker.js.map +1 -1
  10. package/dist/livekit-client.fm.worker.mjs +2 -1
  11. package/dist/livekit-client.fm.worker.mjs.map +1 -1
  12. package/dist/livekit-client.umd.js +1 -1
  13. package/dist/livekit-client.umd.js.map +1 -1
  14. package/dist/src/api/SignalClient.d.ts +4 -2
  15. package/dist/src/api/SignalClient.d.ts.map +1 -1
  16. package/dist/src/api/WebSocketStream.d.ts +1 -0
  17. package/dist/src/api/WebSocketStream.d.ts.map +1 -1
  18. package/dist/src/api/utils.d.ts +1 -1
  19. package/dist/src/api/utils.d.ts.map +1 -1
  20. package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
  21. package/dist/src/e2ee/worker/FrameCryptor.d.ts.map +1 -1
  22. package/dist/src/e2ee/worker/naluUtils.d.ts +12 -1
  23. package/dist/src/e2ee/worker/naluUtils.d.ts.map +1 -1
  24. package/dist/src/index.d.ts +2 -2
  25. package/dist/src/index.d.ts.map +1 -1
  26. package/dist/src/options.d.ts +14 -0
  27. package/dist/src/options.d.ts.map +1 -1
  28. package/dist/src/room/DefaultReconnectPolicy.d.ts.map +1 -1
  29. package/dist/src/room/PCTransport.d.ts +100 -7
  30. package/dist/src/room/PCTransport.d.ts.map +1 -1
  31. package/dist/src/room/PCTransportManager.d.ts.map +1 -1
  32. package/dist/src/room/RTCEngine.d.ts +16 -0
  33. package/dist/src/room/RTCEngine.d.ts.map +1 -1
  34. package/dist/src/room/Room.d.ts +54 -1
  35. package/dist/src/room/Room.d.ts.map +1 -1
  36. package/dist/src/room/data-channel/DataChannelManager.d.ts +9 -8
  37. package/dist/src/room/data-channel/DataChannelManager.d.ts.map +1 -1
  38. package/dist/src/room/data-channel/FlowControlledDataChannel.d.ts +25 -12
  39. package/dist/src/room/data-channel/FlowControlledDataChannel.d.ts.map +1 -1
  40. package/dist/src/room/data-channel/LossyDataChannel.d.ts.map +1 -1
  41. package/dist/src/room/data-channel/ReliableDataChannel.d.ts.map +1 -1
  42. package/dist/src/room/data-stream/incoming/IncomingDataStreamManager.d.ts.map +1 -1
  43. package/dist/src/room/defaults.d.ts.map +1 -1
  44. package/dist/src/room/errors.d.ts +18 -0
  45. package/dist/src/room/errors.d.ts.map +1 -1
  46. package/dist/src/room/events.d.ts +3 -2
  47. package/dist/src/room/events.d.ts.map +1 -1
  48. package/dist/src/room/participant/LocalParticipant.d.ts +4 -0
  49. package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
  50. package/dist/src/room/participant/Participant.d.ts +1 -1
  51. package/dist/src/room/participant/Participant.d.ts.map +1 -1
  52. package/dist/src/room/participant/publishUtils.d.ts.map +1 -1
  53. package/dist/src/room/rpc/client/RpcClientManager.d.ts.map +1 -1
  54. package/dist/src/room/rpc/utils.d.ts.map +1 -1
  55. package/dist/src/room/track/LocalAudioTrack.d.ts +24 -1
  56. package/dist/src/room/track/LocalAudioTrack.d.ts.map +1 -1
  57. package/dist/src/room/track/LocalTrack.d.ts +18 -0
  58. package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
  59. package/dist/src/room/track/LocalVideoTrack.d.ts +9 -0
  60. package/dist/src/room/track/LocalVideoTrack.d.ts.map +1 -1
  61. package/dist/src/room/track/RemoteAudioTrack.d.ts +6 -0
  62. package/dist/src/room/track/RemoteAudioTrack.d.ts.map +1 -1
  63. package/dist/src/room/track/processor/types.d.ts +11 -0
  64. package/dist/src/room/track/processor/types.d.ts.map +1 -1
  65. package/dist/src/room/track/utils.d.ts +13 -0
  66. package/dist/src/room/track/utils.d.ts.map +1 -1
  67. package/dist/src/room/utils.d.ts +60 -1
  68. package/dist/src/room/utils.d.ts.map +1 -1
  69. package/dist/src/test/compressionStreamStubs.d.ts +12 -0
  70. package/dist/src/test/compressionStreamStubs.d.ts.map +1 -0
  71. package/dist/ts4.2/api/SignalClient.d.ts +187 -185
  72. package/dist/ts4.2/api/SignalClientStateMachine.d.ts +85 -85
  73. package/dist/ts4.2/api/WebSocketStream.d.ts +34 -33
  74. package/dist/ts4.2/api/utils.d.ts +9 -9
  75. package/dist/ts4.2/connectionHelper/ConnectionCheck.d.ts +30 -30
  76. package/dist/ts4.2/connectionHelper/checks/Checker.d.ts +62 -62
  77. package/dist/ts4.2/connectionHelper/checks/cloudRegion.d.ts +18 -18
  78. package/dist/ts4.2/connectionHelper/checks/connectionProtocol.d.ts +20 -20
  79. package/dist/ts4.2/connectionHelper/checks/publishAudio.d.ts +6 -6
  80. package/dist/ts4.2/connectionHelper/checks/publishVideo.d.ts +7 -7
  81. package/dist/ts4.2/connectionHelper/checks/reconnect.d.ts +6 -6
  82. package/dist/ts4.2/connectionHelper/checks/turn.d.ts +6 -6
  83. package/dist/ts4.2/connectionHelper/checks/webrtc.d.ts +6 -6
  84. package/dist/ts4.2/connectionHelper/checks/websocket.d.ts +6 -6
  85. package/dist/ts4.2/e2ee/E2eeManager.d.ts +111 -111
  86. package/dist/ts4.2/e2ee/KeyProvider.d.ts +54 -54
  87. package/dist/ts4.2/e2ee/constants.d.ts +21 -21
  88. package/dist/ts4.2/e2ee/errors.d.ts +12 -12
  89. package/dist/ts4.2/e2ee/events.d.ts +39 -39
  90. package/dist/ts4.2/e2ee/index.d.ts +6 -6
  91. package/dist/ts4.2/e2ee/types.d.ts +231 -231
  92. package/dist/ts4.2/e2ee/utils.d.ts +32 -32
  93. package/dist/ts4.2/e2ee/worker/DataCryptor.d.ts +16 -16
  94. package/dist/ts4.2/e2ee/worker/ErrorRateLimiter.d.ts +21 -21
  95. package/dist/ts4.2/e2ee/worker/FrameCryptor.d.ts +209 -209
  96. package/dist/ts4.2/e2ee/worker/ParticipantKeyHandler.d.ts +81 -84
  97. package/dist/ts4.2/e2ee/worker/e2ee.worker.d.ts +2 -2
  98. package/dist/ts4.2/e2ee/worker/naluUtils.d.ts +39 -28
  99. package/dist/ts4.2/e2ee/worker/sifPayload.d.ts +23 -23
  100. package/dist/ts4.2/frameMetadata/FrameMetadataManager.d.ts +53 -53
  101. package/dist/ts4.2/frameMetadata/frameMetadata.d.ts +33 -33
  102. package/dist/ts4.2/frameMetadata/types.d.ts +62 -62
  103. package/dist/ts4.2/frameMetadata/utils.d.ts +9 -9
  104. package/dist/ts4.2/frameMetadata/worker/frameMetadata.worker.d.ts +2 -2
  105. package/dist/ts4.2/index.d.ts +76 -76
  106. package/dist/ts4.2/logger.d.ts +66 -66
  107. package/dist/ts4.2/options.d.ts +163 -149
  108. package/dist/ts4.2/room/BackOffStrategy.d.ts +27 -27
  109. package/dist/ts4.2/room/DefaultReconnectPolicy.d.ts +8 -8
  110. package/dist/ts4.2/room/DeviceManager.d.ts +12 -12
  111. package/dist/ts4.2/room/PCTransport.d.ts +268 -175
  112. package/dist/ts4.2/room/PCTransportManager.d.ts +77 -77
  113. package/dist/ts4.2/room/RTCEngine.d.ts +277 -262
  114. package/dist/ts4.2/room/ReconnectPolicy.d.ts +24 -24
  115. package/dist/ts4.2/room/RegionUrlProvider.d.ts +36 -36
  116. package/dist/ts4.2/room/Room.d.ts +407 -365
  117. package/dist/ts4.2/room/attribute-typings.d.ts +35 -35
  118. package/dist/ts4.2/room/data-channel/DataChannelManager.d.ts +63 -62
  119. package/dist/ts4.2/room/data-channel/FlowControlledDataChannel.d.ts +107 -95
  120. package/dist/ts4.2/room/data-channel/LossyDataChannel.d.ts +41 -41
  121. package/dist/ts4.2/room/data-channel/ReliableDataChannel.d.ts +57 -57
  122. package/dist/ts4.2/room/data-channel/types.d.ts +12 -12
  123. package/dist/ts4.2/room/data-stream/compression.d.ts +49 -49
  124. package/dist/ts4.2/room/data-stream/constants.d.ts +18 -18
  125. package/dist/ts4.2/room/data-stream/incoming/IncomingDataStreamManager.d.ts +29 -29
  126. package/dist/ts4.2/room/data-stream/incoming/StreamReader.d.ts +80 -80
  127. package/dist/ts4.2/room/data-stream/outgoing/OutgoingDataStreamManager.d.ts +73 -73
  128. package/dist/ts4.2/room/data-stream/outgoing/StreamWriter.d.ts +16 -16
  129. package/dist/ts4.2/room/data-stream/outgoing/header-utils.d.ts +18 -18
  130. package/dist/ts4.2/room/data-track/LocalDataTrack.d.ts +79 -80
  131. package/dist/ts4.2/room/data-track/RemoteDataTrack.d.ts +50 -50
  132. package/dist/ts4.2/room/data-track/depacketizer.d.ts +59 -59
  133. package/dist/ts4.2/room/data-track/frame.d.ts +22 -22
  134. package/dist/ts4.2/room/data-track/handle.d.ts +27 -27
  135. package/dist/ts4.2/room/data-track/incoming/IncomingDataTrackManager.d.ts +124 -124
  136. package/dist/ts4.2/room/data-track/incoming/errors.d.ts +24 -24
  137. package/dist/ts4.2/room/data-track/incoming/pipeline.d.ts +41 -41
  138. package/dist/ts4.2/room/data-track/incoming/types.d.ts +20 -20
  139. package/dist/ts4.2/room/data-track/outgoing/OutgoingDataTrackManager.d.ts +126 -126
  140. package/dist/ts4.2/room/data-track/outgoing/errors.d.ts +74 -74
  141. package/dist/ts4.2/room/data-track/outgoing/pipeline.d.ts +23 -23
  142. package/dist/ts4.2/room/data-track/outgoing/types.d.ts +48 -48
  143. package/dist/ts4.2/room/data-track/packet/constants.d.ts +20 -20
  144. package/dist/ts4.2/room/data-track/packet/errors.d.ts +40 -40
  145. package/dist/ts4.2/room/data-track/packet/extensions.d.ts +69 -69
  146. package/dist/ts4.2/room/data-track/packet/index.d.ts +98 -98
  147. package/dist/ts4.2/room/data-track/packet/serializable.d.ts +13 -13
  148. package/dist/ts4.2/room/data-track/packetizer.d.ts +43 -43
  149. package/dist/ts4.2/room/data-track/track-interfaces.d.ts +23 -23
  150. package/dist/ts4.2/room/data-track/types.d.ts +22 -22
  151. package/dist/ts4.2/room/data-track/utils.d.ts +60 -60
  152. package/dist/ts4.2/room/debounce.d.ts +11 -11
  153. package/dist/ts4.2/room/defaults.d.ts +9 -9
  154. package/dist/ts4.2/room/errors.d.ts +180 -162
  155. package/dist/ts4.2/room/events.d.ts +638 -637
  156. package/dist/ts4.2/room/participant/LocalParticipant.d.ts +291 -287
  157. package/dist/ts4.2/room/participant/Participant.d.ts +142 -144
  158. package/dist/ts4.2/room/participant/ParticipantTrackPermission.d.ts +26 -26
  159. package/dist/ts4.2/room/participant/RemoteParticipant.d.ts +85 -86
  160. package/dist/ts4.2/room/participant/publishUtils.d.ts +53 -53
  161. package/dist/ts4.2/room/rpc/client/RpcClientManager.d.ts +43 -43
  162. package/dist/ts4.2/room/rpc/client/events.d.ts +8 -8
  163. package/dist/ts4.2/room/rpc/index.d.ts +7 -7
  164. package/dist/ts4.2/room/rpc/server/RpcServerManager.d.ts +44 -44
  165. package/dist/ts4.2/room/rpc/server/events.d.ts +8 -8
  166. package/dist/ts4.2/room/rpc/utils.d.ts +131 -131
  167. package/dist/ts4.2/room/stats.d.ts +71 -71
  168. package/dist/ts4.2/room/statsSummary.d.ts +13 -13
  169. package/dist/ts4.2/room/timers.d.ts +12 -12
  170. package/dist/ts4.2/room/token-source/TokenSource.d.ts +82 -82
  171. package/dist/ts4.2/room/token-source/types.d.ts +70 -70
  172. package/dist/ts4.2/room/token-source/utils.d.ts +8 -8
  173. package/dist/ts4.2/room/track/FrameMetadataExtractor.d.ts +19 -19
  174. package/dist/ts4.2/room/track/LocalAudioTrack.d.ts +62 -42
  175. package/dist/ts4.2/room/track/LocalTrack.d.ts +143 -125
  176. package/dist/ts4.2/room/track/LocalTrackPublication.d.ts +42 -42
  177. package/dist/ts4.2/room/track/LocalVideoTrack.d.ts +109 -100
  178. package/dist/ts4.2/room/track/RemoteAudioTrack.d.ts +61 -55
  179. package/dist/ts4.2/room/track/RemoteTrack.d.ts +38 -38
  180. package/dist/ts4.2/room/track/RemoteTrackPublication.d.ts +72 -75
  181. package/dist/ts4.2/room/track/RemoteVideoTrack.d.ts +73 -76
  182. package/dist/ts4.2/room/track/Track.d.ts +156 -166
  183. package/dist/ts4.2/room/track/TrackPublication.d.ts +75 -81
  184. package/dist/ts4.2/room/track/create.d.ts +25 -25
  185. package/dist/ts4.2/room/track/facingMode.d.ts +41 -41
  186. package/dist/ts4.2/room/track/options.d.ts +403 -403
  187. package/dist/ts4.2/room/track/processor/types.d.ts +42 -31
  188. package/dist/ts4.2/room/track/record.d.ts +13 -13
  189. package/dist/ts4.2/room/track/types.d.ts +28 -28
  190. package/dist/ts4.2/room/track/utils.d.ts +60 -47
  191. package/dist/ts4.2/room/types.d.ts +127 -127
  192. package/dist/ts4.2/room/utils.d.ts +273 -214
  193. package/dist/ts4.2/test/MockMediaStreamTrack.d.ts +26 -26
  194. package/dist/ts4.2/test/compressionStreamStubs.d.ts +12 -0
  195. package/dist/ts4.2/test/mocks.d.ts +12 -12
  196. package/dist/ts4.2/test/promiseState.d.ts +12 -12
  197. package/dist/ts4.2/test/signalToken.d.ts +26 -26
  198. package/dist/ts4.2/type-polyfills/non-shared-typed-arrays.d.ts +2 -2
  199. package/dist/ts4.2/utils/AsyncQueue.d.ts +23 -23
  200. package/dist/ts4.2/utils/TypedPromise.d.ts +17 -17
  201. package/dist/ts4.2/utils/abort-signal-polyfill.d.ts +13 -13
  202. package/dist/ts4.2/utils/browserParser.d.ts +13 -13
  203. package/dist/ts4.2/utils/camelToSnakeCase.d.ts +8 -8
  204. package/dist/ts4.2/utils/cloneDeep.d.ts +2 -2
  205. package/dist/ts4.2/utils/dataPacketBuffer.d.ts +34 -34
  206. package/dist/ts4.2/utils/deferrable-map.d.ts +32 -32
  207. package/dist/ts4.2/utils/machineInspector.d.ts +54 -54
  208. package/dist/ts4.2/utils/serializer.d.ts +48 -48
  209. package/dist/ts4.2/utils/subscribeToEvents.d.ts +15 -15
  210. package/dist/ts4.2/utils/ttlmap.d.ts +20 -20
  211. package/dist/ts4.2/version.d.ts +15 -15
  212. package/package.json +5 -4
  213. package/src/api/SignalClient.e2e.test.ts +1 -3
  214. package/src/api/SignalClient.test.ts +394 -10
  215. package/src/api/SignalClient.ts +132 -76
  216. package/src/api/WebSocketStream.test.ts +11 -0
  217. package/src/api/WebSocketStream.ts +22 -1
  218. package/src/api/utils.ts +1 -1
  219. package/src/e2ee/E2eeManager.test.ts +43 -0
  220. package/src/e2ee/E2eeManager.ts +6 -2
  221. package/src/e2ee/worker/FrameCryptor.test.ts +212 -90
  222. package/src/e2ee/worker/FrameCryptor.ts +21 -4
  223. package/src/e2ee/worker/naluUtils.test.ts +123 -0
  224. package/src/e2ee/worker/naluUtils.ts +57 -2
  225. package/src/index.ts +2 -0
  226. package/src/options.ts +16 -0
  227. package/src/room/DefaultReconnectPolicy.test.ts +58 -0
  228. package/src/room/DefaultReconnectPolicy.ts +14 -2
  229. package/src/room/PCTransport.test.ts +327 -9
  230. package/src/room/PCTransport.ts +339 -36
  231. package/src/room/PCTransportManager.ts +3 -1
  232. package/src/room/RTCEngine.test.ts +318 -2
  233. package/src/room/RTCEngine.ts +126 -12
  234. package/src/room/Room.test.ts +148 -6
  235. package/src/room/Room.ts +312 -80
  236. package/src/room/data-channel/DataChannelManager.test.ts +24 -7
  237. package/src/room/data-channel/DataChannelManager.ts +43 -38
  238. package/src/room/data-channel/FlowControlledDataChannel.test.ts +60 -18
  239. package/src/room/data-channel/FlowControlledDataChannel.ts +40 -22
  240. package/src/room/data-channel/LossyDataChannel.test.ts +38 -0
  241. package/src/room/data-channel/LossyDataChannel.ts +10 -1
  242. package/src/room/data-channel/ReliableDataChannel.test.ts +72 -0
  243. package/src/room/data-channel/ReliableDataChannel.ts +16 -5
  244. package/src/room/data-stream/incoming/IncomingDataStreamManager.test.ts +47 -20
  245. package/src/room/data-stream/incoming/IncomingDataStreamManager.ts +16 -5
  246. package/src/room/data-stream/outgoing/OutgoingDataStreamManager.test.ts +60 -39
  247. package/src/room/data-stream/outgoing/OutgoingDataStreamManager.ts +4 -4
  248. package/src/room/defaults.ts +1 -0
  249. package/src/room/errors.test.ts +36 -0
  250. package/src/room/errors.ts +27 -0
  251. package/src/room/events.ts +2 -1
  252. package/src/room/participant/LocalParticipant.test.ts +136 -1
  253. package/src/room/participant/LocalParticipant.ts +66 -17
  254. package/src/room/participant/Participant.ts +6 -3
  255. package/src/room/participant/publishUtils.ts +0 -19
  256. package/src/room/participant/restartOnDefaultAudioDevice.test.ts +177 -0
  257. package/src/room/rpc/client/RpcClientManager.test.ts +51 -0
  258. package/src/room/rpc/client/RpcClientManager.ts +32 -15
  259. package/src/room/rpc/utils.test.ts +32 -0
  260. package/src/room/rpc/utils.ts +7 -0
  261. package/src/room/track/LocalAudioTrack.ts +101 -10
  262. package/src/room/track/LocalTrack.ts +87 -19
  263. package/src/room/track/LocalVideoTrack.ts +17 -3
  264. package/src/room/track/RemoteAudioTrack.ts +59 -14
  265. package/src/room/track/RemoteVideoTrack.test.ts +210 -0
  266. package/src/room/track/RemoteVideoTrack.ts +29 -3
  267. package/src/room/track/processor/types.ts +11 -0
  268. package/src/room/track/utils.test.ts +206 -2
  269. package/src/room/track/utils.ts +117 -5
  270. package/src/room/utils.test.ts +250 -0
  271. package/src/room/utils.ts +152 -19
  272. package/src/test/compressionStreamStubs.ts +53 -0
@@ -1,111 +1,111 @@
1
- import type TypedEventEmitter from 'typed-emitter';
2
- import type RTCEngine from '../room/RTCEngine';
3
- import type Room from '../room/Room';
4
- import type { NonSharedUint8Array } from '../type-polyfills/non-shared-typed-arrays';
5
- import type { E2EEManagerCallbacks } from './events';
6
- import type { DecryptDataResponseMessage, E2EEManagerOptions, EncryptDataResponseMessage } from './types';
7
- export interface BaseE2EEManager {
8
- setup(room: Room): void;
9
- setupEngine(engine: RTCEngine): void;
10
- isEnabled: boolean;
11
- isDataChannelEncryptionEnabled: boolean;
12
- setParticipantCryptorEnabled(enabled: boolean, participantIdentity: string): void;
13
- setSifTrailer(trailer: NonSharedUint8Array): void;
14
- encryptData(data: NonSharedUint8Array): Promise<EncryptDataResponseMessage['data']>;
15
- handleEncryptedData(payload: NonSharedUint8Array, iv: NonSharedUint8Array, participantIdentity: string, keyIndex: number): Promise<DecryptDataResponseMessage['data']>;
16
- on<E extends keyof E2EEManagerCallbacks>(event: E, listener: E2EEManagerCallbacks[E]): this;
17
- dispose?(): void;
18
- }
19
- declare const E2EEManager_base: new () => TypedEventEmitter<E2EEManagerCallbacks>;
20
- /**
21
- * @experimental
22
- */
23
- export declare class E2EEManager extends E2EEManager_base implements BaseE2EEManager {
24
- protected worker: Worker;
25
- protected room?: Room;
26
- private encryptionEnabled;
27
- private keyProvider;
28
- private decryptDataRequests;
29
- private encryptDataRequests;
30
- private dataChannelEncryptionEnabled;
31
- private unsubscribeLogLevel?;
32
- private log;
33
- get logContext(): {
34
- room: string | undefined;
35
- participant: string | undefined;
36
- };
37
- /**
38
- * Runs a cleanup callback once this manager is garbage collected. Lets the
39
- * log-level listener (held in a module-global Set on the main-thread logger)
40
- * fall out of scope even when the consumer forgets to call `dispose()`.
41
- */
42
- private static disposeRegistry;
43
- constructor(options: E2EEManagerOptions, dcEncryptionEnabled: boolean);
44
- get isEnabled(): boolean;
45
- get isDataChannelEncryptionEnabled(): boolean;
46
- /**
47
- * @internal
48
- */
49
- setup(room: Room): void;
50
- /**
51
- * Subscribe the current worker to main-thread `workerLogger` level changes,
52
- * without strongly retaining `this` or `this.worker` from the module-global
53
- * listener Set on the logger. See {@link disposeRegistry}.
54
- */
55
- private subscribeToLogLevelChanges;
56
- /**
57
- * @internal
58
- * Release the log-level subscription, reject any pending encrypt/decrypt
59
- * futures, and detach the worker message handlers. The worker itself is
60
- * caller-owned and is not terminated. Idempotent.
61
- */
62
- dispose(): void;
63
- /**
64
- * @internal
65
- */
66
- setParticipantCryptorEnabled(enabled: boolean, participantIdentity: string): void;
67
- /**
68
- * @internal
69
- */
70
- setSifTrailer(trailer: NonSharedUint8Array): void;
71
- private onWorkerMessage;
72
- private onWorkerError;
73
- private handleFrameMetadata;
74
- setupEngine(engine: RTCEngine): void;
75
- private setupEventListeners;
76
- encryptData(data: NonSharedUint8Array): Promise<EncryptDataResponseMessage['data']>;
77
- handleEncryptedData(payload: NonSharedUint8Array, iv: NonSharedUint8Array, participantIdentity: string, keyIndex: number): Promise<{
78
- uuid: string;
79
- payload: NonSharedUint8Array;
80
- } & {
81
- readonly __throws?: Error | undefined;
82
- }>;
83
- private postRatchetRequest;
84
- private postKey;
85
- private postEnable;
86
- private postRTPMap;
87
- private postSifTrailer;
88
- /**
89
- * Derive the participant's encryption state from one of its publications.
90
- * Publications without trackInfo are skipped rather than thrown on: throwing
91
- * inside the forEach above would leave every remaining participant without an
92
- * encryption state, and a cryptor with unknown state can no longer decrypt.
93
- */
94
- private setParticipantCryptorEnabledForPublication;
95
- private setupE2EEReceiver;
96
- private setupE2EESender;
97
- /**
98
- * Handles the given {@code RTCRtpReceiver} by creating a {@code TransformStream} which will inject
99
- * a frame decoder.
100
- *
101
- */
102
- private handleReceiver;
103
- /**
104
- * Handles the given {@code RTCRtpSender} by creating a {@code TransformStream} which will inject
105
- * a frame encoder.
106
- *
107
- */
108
- private handleSender;
109
- }
110
- export {};
111
- //# sourceMappingURL=E2eeManager.d.ts.map
1
+ import type TypedEventEmitter from 'typed-emitter';
2
+ import type RTCEngine from '../room/RTCEngine';
3
+ import type Room from '../room/Room';
4
+ import type { NonSharedUint8Array } from '../type-polyfills/non-shared-typed-arrays';
5
+ import type { E2EEManagerCallbacks } from './events';
6
+ import type { DecryptDataResponseMessage, E2EEManagerOptions, EncryptDataResponseMessage } from './types';
7
+ export interface BaseE2EEManager {
8
+ setup(room: Room): void;
9
+ setupEngine(engine: RTCEngine): void;
10
+ isEnabled: boolean;
11
+ isDataChannelEncryptionEnabled: boolean;
12
+ setParticipantCryptorEnabled(enabled: boolean, participantIdentity: string): void;
13
+ setSifTrailer(trailer: NonSharedUint8Array): void;
14
+ encryptData(data: NonSharedUint8Array): Promise<EncryptDataResponseMessage['data']>;
15
+ handleEncryptedData(payload: NonSharedUint8Array, iv: NonSharedUint8Array, participantIdentity: string, keyIndex: number): Promise<DecryptDataResponseMessage['data']>;
16
+ on<E extends keyof E2EEManagerCallbacks>(event: E, listener: E2EEManagerCallbacks[E]): this;
17
+ dispose?(): void;
18
+ }
19
+ declare const E2EEManager_base: new () => TypedEventEmitter<E2EEManagerCallbacks>;
20
+ /**
21
+ * @experimental
22
+ */
23
+ export declare class E2EEManager extends E2EEManager_base implements BaseE2EEManager {
24
+ protected worker: Worker;
25
+ protected room?: Room;
26
+ private encryptionEnabled;
27
+ private keyProvider;
28
+ private decryptDataRequests;
29
+ private encryptDataRequests;
30
+ private dataChannelEncryptionEnabled;
31
+ private unsubscribeLogLevel?;
32
+ private log;
33
+ get logContext(): {
34
+ room: string | undefined;
35
+ participant: string | undefined;
36
+ };
37
+ /**
38
+ * Runs a cleanup callback once this manager is garbage collected. Lets the
39
+ * log-level listener (held in a module-global Set on the main-thread logger)
40
+ * fall out of scope even when the consumer forgets to call `dispose()`.
41
+ */
42
+ private static disposeRegistry;
43
+ constructor(options: E2EEManagerOptions, dcEncryptionEnabled: boolean);
44
+ get isEnabled(): boolean;
45
+ get isDataChannelEncryptionEnabled(): boolean;
46
+ /**
47
+ * @internal
48
+ */
49
+ setup(room: Room): void;
50
+ /**
51
+ * Subscribe the current worker to main-thread `workerLogger` level changes,
52
+ * without strongly retaining `this` or `this.worker` from the module-global
53
+ * listener Set on the logger. See {@link disposeRegistry}.
54
+ */
55
+ private subscribeToLogLevelChanges;
56
+ /**
57
+ * @internal
58
+ * Release the log-level subscription, reject any pending encrypt/decrypt
59
+ * futures, and detach the worker message handlers. The worker itself is
60
+ * caller-owned and is not terminated. Idempotent.
61
+ */
62
+ dispose(): void;
63
+ /**
64
+ * @internal
65
+ */
66
+ setParticipantCryptorEnabled(enabled: boolean, participantIdentity: string): void;
67
+ /**
68
+ * @internal
69
+ */
70
+ setSifTrailer(trailer: NonSharedUint8Array): void;
71
+ private onWorkerMessage;
72
+ private onWorkerError;
73
+ private handleFrameMetadata;
74
+ setupEngine(engine: RTCEngine): void;
75
+ private setupEventListeners;
76
+ encryptData(data: NonSharedUint8Array): Promise<EncryptDataResponseMessage['data']>;
77
+ handleEncryptedData(payload: NonSharedUint8Array, iv: NonSharedUint8Array, participantIdentity: string, keyIndex: number): Promise<{
78
+ uuid: string;
79
+ payload: NonSharedUint8Array;
80
+ } & {
81
+ readonly __throws?: Error | undefined;
82
+ }>;
83
+ private postRatchetRequest;
84
+ private postKey;
85
+ private postEnable;
86
+ private postRTPMap;
87
+ private postSifTrailer;
88
+ /**
89
+ * Derive the participant's encryption state from one of its publications.
90
+ * Publications without trackInfo are skipped rather than thrown on: throwing
91
+ * inside the forEach above would leave every remaining participant without an
92
+ * encryption state, and a cryptor with unknown state can no longer decrypt.
93
+ */
94
+ private setParticipantCryptorEnabledForPublication;
95
+ private setupE2EEReceiver;
96
+ private setupE2EESender;
97
+ /**
98
+ * Handles the given {@code RTCRtpReceiver} by creating a {@code TransformStream} which will inject
99
+ * a frame decoder.
100
+ *
101
+ */
102
+ private handleReceiver;
103
+ /**
104
+ * Handles the given {@code RTCRtpSender} by creating a {@code TransformStream} which will inject
105
+ * a frame encoder.
106
+ *
107
+ */
108
+ private handleSender;
109
+ }
110
+ export {};
111
+ //# sourceMappingURL=E2eeManager.d.ts.map
@@ -1,54 +1,54 @@
1
- import type TypedEventEmitter from 'typed-emitter';
2
- import type { KeyProviderCallbacks } from './events';
3
- import type { KeyInfo, KeyProviderOptions, RatchetResult } from './types';
4
- declare const BaseKeyProvider_base: new () => TypedEventEmitter<KeyProviderCallbacks>;
5
- /**
6
- * @experimental
7
- */
8
- export declare class BaseKeyProvider extends BaseKeyProvider_base {
9
- private keyInfoMap;
10
- private readonly options;
11
- private latestManuallySetKeyIndex;
12
- constructor(options?: Partial<KeyProviderOptions>);
13
- /**
14
- * callback to invoke once a key has been set for a participant
15
- * @param key
16
- * @param participantIdentity
17
- * @param keyIndex
18
- */
19
- protected onSetEncryptionKey(key: CryptoKey, participantIdentity?: string, keyIndex?: number): void;
20
- /**
21
- * Callback being invoked after a key has been ratcheted.
22
- * Can happen when:
23
- * - A decryption failure occurs and the key is auto-ratcheted
24
- * - A ratchet request is sent (see {@link ratchetKey()})
25
- * @param ratchetResult Contains the ratcheted chain key (exportable to other participants) and the derived new key material.
26
- * @param participantId
27
- * @param keyIndex
28
- */
29
- protected onKeyRatcheted: (ratchetResult: RatchetResult, participantId?: string, keyIndex?: number) => void;
30
- getKeys(): KeyInfo[];
31
- getLatestManuallySetKeyIndex(): number;
32
- getOptions(): KeyProviderOptions;
33
- ratchetKey(participantIdentity?: string, keyIndex?: number): void;
34
- }
35
- /**
36
- * A basic KeyProvider implementation intended for a single shared
37
- * passphrase between all participants
38
- * @experimental
39
- */
40
- export declare class ExternalE2EEKeyProvider extends BaseKeyProvider {
41
- ratchetInterval: number | undefined;
42
- constructor(options?: Partial<Omit<KeyProviderOptions, 'sharedKey'>>);
43
- /**
44
- * Accepts a passphrase that's used to create the crypto keys.
45
- * When passing in a string, PBKDF2 is used. (recommended for maximum compatibility across SDKs)
46
- * When passing in an ArrayBuffer of cryptographically random numbers, HKDF is used.
47
- *
48
- * Note: Not all client SDKS support HKDF.
49
- * @param key
50
- */
51
- setKey(key: string | ArrayBuffer): Promise<void>;
52
- }
53
- export {};
54
- //# sourceMappingURL=KeyProvider.d.ts.map
1
+ import type TypedEventEmitter from 'typed-emitter';
2
+ import type { KeyProviderCallbacks } from './events';
3
+ import type { KeyInfo, KeyProviderOptions, RatchetResult } from './types';
4
+ declare const BaseKeyProvider_base: new () => TypedEventEmitter<KeyProviderCallbacks>;
5
+ /**
6
+ * @experimental
7
+ */
8
+ export declare class BaseKeyProvider extends BaseKeyProvider_base {
9
+ private keyInfoMap;
10
+ private readonly options;
11
+ private latestManuallySetKeyIndex;
12
+ constructor(options?: Partial<KeyProviderOptions>);
13
+ /**
14
+ * callback to invoke once a key has been set for a participant
15
+ * @param key
16
+ * @param participantIdentity
17
+ * @param keyIndex
18
+ */
19
+ protected onSetEncryptionKey(key: CryptoKey, participantIdentity?: string, keyIndex?: number): void;
20
+ /**
21
+ * Callback being invoked after a key has been ratcheted.
22
+ * Can happen when:
23
+ * - A decryption failure occurs and the key is auto-ratcheted
24
+ * - A ratchet request is sent (see {@link ratchetKey()})
25
+ * @param ratchetResult Contains the ratcheted chain key (exportable to other participants) and the derived new key material.
26
+ * @param participantId
27
+ * @param keyIndex
28
+ */
29
+ protected onKeyRatcheted: (ratchetResult: RatchetResult, participantId?: string, keyIndex?: number) => void;
30
+ getKeys(): KeyInfo[];
31
+ getLatestManuallySetKeyIndex(): number;
32
+ getOptions(): KeyProviderOptions;
33
+ ratchetKey(participantIdentity?: string, keyIndex?: number): void;
34
+ }
35
+ /**
36
+ * A basic KeyProvider implementation intended for a single shared
37
+ * passphrase between all participants
38
+ * @experimental
39
+ */
40
+ export declare class ExternalE2EEKeyProvider extends BaseKeyProvider {
41
+ ratchetInterval: number | undefined;
42
+ constructor(options?: Partial<Omit<KeyProviderOptions, 'sharedKey'>>);
43
+ /**
44
+ * Accepts a passphrase that's used to create the crypto keys.
45
+ * When passing in a string, PBKDF2 is used. (recommended for maximum compatibility across SDKs)
46
+ * When passing in an ArrayBuffer of cryptographically random numbers, HKDF is used.
47
+ *
48
+ * Note: Not all client SDKS support HKDF.
49
+ * @param key
50
+ */
51
+ setKey(key: string | ArrayBuffer): Promise<void>;
52
+ }
53
+ export {};
54
+ //# sourceMappingURL=KeyProvider.d.ts.map
@@ -1,21 +1,21 @@
1
- import type { KeyProviderOptions } from './types';
2
- export declare const ENCRYPTION_ALGORITHM = "AES-GCM";
3
- export declare const DECRYPTION_FAILURE_TOLERANCE = 10;
4
- export declare const UNENCRYPTED_BYTES: {
5
- readonly key: 10;
6
- readonly delta: 3;
7
- readonly audio: 1;
8
- readonly empty: 0;
9
- };
10
- export declare const IV_LENGTH = 12;
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";
17
- export declare const SALT = "LKFrameEncryptionKey";
18
- export declare const KEY_PROVIDER_DEFAULTS: KeyProviderOptions;
19
- export declare const MAX_SIF_COUNT = 100;
20
- export declare const MAX_SIF_DURATION = 2000;
21
- //# sourceMappingURL=constants.d.ts.map
1
+ import type { KeyProviderOptions } from './types';
2
+ export declare const ENCRYPTION_ALGORITHM = "AES-GCM";
3
+ export declare const DECRYPTION_FAILURE_TOLERANCE = 10;
4
+ export declare const UNENCRYPTED_BYTES: {
5
+ readonly key: 10;
6
+ readonly delta: 3;
7
+ readonly audio: 1;
8
+ readonly empty: 0;
9
+ };
10
+ export declare const IV_LENGTH = 12;
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";
17
+ export declare const SALT = "LKFrameEncryptionKey";
18
+ export declare const KEY_PROVIDER_DEFAULTS: KeyProviderOptions;
19
+ export declare const MAX_SIF_COUNT = 100;
20
+ export declare const MAX_SIF_DURATION = 2000;
21
+ //# sourceMappingURL=constants.d.ts.map
@@ -1,12 +1,12 @@
1
- import { LivekitError } from '../room/errors';
2
- export declare enum CryptorErrorReason {
3
- InvalidKey = 0,
4
- MissingKey = 1,
5
- InternalError = 2
6
- }
7
- export declare class CryptorError extends LivekitError {
8
- reason: CryptorErrorReason;
9
- participantIdentity?: string;
10
- constructor(message?: string, reason?: CryptorErrorReason, participantIdentity?: string);
11
- }
12
- //# sourceMappingURL=errors.d.ts.map
1
+ import { LivekitError } from '../room/errors';
2
+ export declare enum CryptorErrorReason {
3
+ InvalidKey = 0,
4
+ MissingKey = 1,
5
+ InternalError = 2
6
+ }
7
+ export declare class CryptorError extends LivekitError {
8
+ reason: CryptorErrorReason;
9
+ participantIdentity?: string;
10
+ constructor(message?: string, reason?: CryptorErrorReason, participantIdentity?: string);
11
+ }
12
+ //# sourceMappingURL=errors.d.ts.map
@@ -1,39 +1,39 @@
1
- import type Participant from '../room/participant/Participant';
2
- import type { CryptorError } from './errors';
3
- import type { KeyInfo, RatchetResult } from './types';
4
- export declare enum KeyProviderEvent {
5
- SetKey = "setKey",
6
- /** Event for requesting to ratchet the key used to encrypt the stream */
7
- RatchetRequest = "ratchetRequest",
8
- /** Emitted when a key is ratcheted. Could be after auto-ratcheting on decryption failure or
9
- * following a `RatchetRequest`, will contain the ratcheted key material */
10
- KeyRatcheted = "keyRatcheted"
11
- }
12
- export type KeyProviderCallbacks = {
13
- [KeyProviderEvent.SetKey]: (keyInfo: KeyInfo, updateCurrentKeyIndex: boolean) => void;
14
- [KeyProviderEvent.RatchetRequest]: (participantIdentity?: string, keyIndex?: number) => void;
15
- [KeyProviderEvent.KeyRatcheted]: (ratchetedResult: RatchetResult, participantIdentity?: string, keyIndex?: number) => void;
16
- };
17
- export declare enum KeyHandlerEvent {
18
- /** Emitted when a key has been ratcheted. Is emitted when any key has been ratcheted
19
- * i.e. when the FrameCryptor tried to ratchet when decryption is failing */
20
- KeyRatcheted = "keyRatcheted"
21
- }
22
- export type ParticipantKeyHandlerCallbacks = {
23
- [KeyHandlerEvent.KeyRatcheted]: (ratchetResult: RatchetResult, participantIdentity: string, keyIndex?: number) => void;
24
- };
25
- export declare enum EncryptionEvent {
26
- ParticipantEncryptionStatusChanged = "participantEncryptionStatusChanged",
27
- EncryptionError = "encryptionError"
28
- }
29
- export type E2EEManagerCallbacks = {
30
- [EncryptionEvent.ParticipantEncryptionStatusChanged]: (enabled: boolean, participant: Participant) => void;
31
- [EncryptionEvent.EncryptionError]: (error: Error, participantIdentity?: string) => void;
32
- };
33
- export type CryptorCallbacks = {
34
- [CryptorEvent.Error]: (error: CryptorError) => void;
35
- };
36
- export declare enum CryptorEvent {
37
- Error = "cryptorError"
38
- }
39
- //# sourceMappingURL=events.d.ts.map
1
+ import type Participant from '../room/participant/Participant';
2
+ import type { CryptorError } from './errors';
3
+ import type { KeyInfo, RatchetResult } from './types';
4
+ export declare enum KeyProviderEvent {
5
+ SetKey = "setKey",
6
+ /** Event for requesting to ratchet the key used to encrypt the stream */
7
+ RatchetRequest = "ratchetRequest",
8
+ /** Emitted when a key is ratcheted. Could be after auto-ratcheting on decryption failure or
9
+ * following a `RatchetRequest`, will contain the ratcheted key material */
10
+ KeyRatcheted = "keyRatcheted"
11
+ }
12
+ export type KeyProviderCallbacks = {
13
+ [KeyProviderEvent.SetKey]: (keyInfo: KeyInfo, updateCurrentKeyIndex: boolean) => void;
14
+ [KeyProviderEvent.RatchetRequest]: (participantIdentity?: string, keyIndex?: number) => void;
15
+ [KeyProviderEvent.KeyRatcheted]: (ratchetedResult: RatchetResult, participantIdentity?: string, keyIndex?: number) => void;
16
+ };
17
+ export declare enum KeyHandlerEvent {
18
+ /** Emitted when a key has been ratcheted. Is emitted when any key has been ratcheted
19
+ * i.e. when the FrameCryptor tried to ratchet when decryption is failing */
20
+ KeyRatcheted = "keyRatcheted"
21
+ }
22
+ export type ParticipantKeyHandlerCallbacks = {
23
+ [KeyHandlerEvent.KeyRatcheted]: (ratchetResult: RatchetResult, participantIdentity: string, keyIndex?: number) => void;
24
+ };
25
+ export declare enum EncryptionEvent {
26
+ ParticipantEncryptionStatusChanged = "participantEncryptionStatusChanged",
27
+ EncryptionError = "encryptionError"
28
+ }
29
+ export type E2EEManagerCallbacks = {
30
+ [EncryptionEvent.ParticipantEncryptionStatusChanged]: (enabled: boolean, participant: Participant) => void;
31
+ [EncryptionEvent.EncryptionError]: (error: Error, participantIdentity?: string) => void;
32
+ };
33
+ export type CryptorCallbacks = {
34
+ [CryptorEvent.Error]: (error: CryptorError) => void;
35
+ };
36
+ export declare enum CryptorEvent {
37
+ Error = "cryptorError"
38
+ }
39
+ //# sourceMappingURL=events.d.ts.map
@@ -1,6 +1,6 @@
1
- export * from './KeyProvider';
2
- export * from './utils';
3
- export * from './types';
4
- export * from './events';
5
- export * from './errors';
6
- //# sourceMappingURL=index.d.ts.map
1
+ export * from './KeyProvider';
2
+ export * from './utils';
3
+ export * from './types';
4
+ export * from './events';
5
+ export * from './errors';
6
+ //# sourceMappingURL=index.d.ts.map