livekit-client 2.15.7 → 2.15.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 +253 -118
- package/dist/livekit-client.e2ee.worker.mjs.map +1 -1
- package/dist/livekit-client.esm.mjs +1882 -138
- 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/connectionHelper/checks/publishVideo.d.ts.map +1 -1
- package/dist/src/e2ee/E2eeManager.d.ts +16 -2
- package/dist/src/e2ee/E2eeManager.d.ts.map +1 -1
- package/dist/src/e2ee/types.d.ts +35 -1
- package/dist/src/e2ee/types.d.ts.map +1 -1
- package/dist/src/e2ee/utils.d.ts +2 -0
- package/dist/src/e2ee/utils.d.ts.map +1 -1
- package/dist/src/e2ee/worker/DataCryptor.d.ts +15 -0
- package/dist/src/e2ee/worker/DataCryptor.d.ts.map +1 -0
- package/dist/src/e2ee/worker/ParticipantKeyHandler.d.ts +3 -2
- package/dist/src/e2ee/worker/ParticipantKeyHandler.d.ts.map +1 -1
- package/dist/src/e2ee/worker/sifPayload.d.ts +6 -6
- package/dist/src/e2ee/worker/sifPayload.d.ts.map +1 -1
- package/dist/src/index.d.ts +5 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/logger.d.ts +1 -0
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/options.d.ts +4 -2
- package/dist/src/options.d.ts.map +1 -1
- package/dist/src/room/RTCEngine.d.ts +5 -2
- package/dist/src/room/RTCEngine.d.ts.map +1 -1
- package/dist/src/room/Room.d.ts +3 -2
- package/dist/src/room/Room.d.ts.map +1 -1
- package/dist/src/room/data-stream/incoming/IncomingDataStreamManager.d.ts +2 -2
- package/dist/src/room/data-stream/incoming/IncomingDataStreamManager.d.ts.map +1 -1
- package/dist/src/room/data-stream/outgoing/OutgoingDataStreamManager.d.ts.map +1 -1
- package/dist/src/room/errors.d.ts +2 -1
- package/dist/src/room/errors.d.ts.map +1 -1
- package/dist/src/room/participant/LocalParticipant.d.ts.map +1 -1
- package/dist/src/room/participant/Participant.d.ts +2 -2
- package/dist/src/room/participant/Participant.d.ts.map +1 -1
- package/dist/src/room/token-source/TokenSource.d.ts +70 -0
- package/dist/src/room/token-source/TokenSource.d.ts.map +1 -0
- package/dist/src/room/token-source/types.d.ts +68 -0
- package/dist/src/room/token-source/types.d.ts.map +1 -0
- package/dist/src/room/token-source/utils.d.ts +5 -0
- package/dist/src/room/token-source/utils.d.ts.map +1 -0
- package/dist/src/room/track/LocalTrack.d.ts +1 -1
- package/dist/src/room/track/LocalTrack.d.ts.map +1 -1
- package/dist/src/room/track/options.d.ts +7 -3
- package/dist/src/room/track/options.d.ts.map +1 -1
- package/dist/src/room/track/utils.d.ts.map +1 -1
- package/dist/src/room/types.d.ts +1 -0
- package/dist/src/room/types.d.ts.map +1 -1
- package/dist/src/room/utils.d.ts +2 -1
- package/dist/src/room/utils.d.ts.map +1 -1
- package/dist/src/utils/camelToSnakeCase.d.ts +8 -0
- package/dist/src/utils/camelToSnakeCase.d.ts.map +1 -0
- package/dist/ts4.2/{src/e2ee → e2ee}/E2eeManager.d.ts +16 -2
- package/dist/ts4.2/{src/e2ee → e2ee}/types.d.ts +35 -1
- package/dist/ts4.2/{src/e2ee → e2ee}/utils.d.ts +3 -0
- package/dist/ts4.2/e2ee/worker/DataCryptor.d.ts +15 -0
- package/dist/ts4.2/{src/e2ee → e2ee}/worker/ParticipantKeyHandler.d.ts +3 -2
- package/dist/ts4.2/{src/e2ee → e2ee}/worker/sifPayload.d.ts +6 -6
- package/dist/ts4.2/{src/index.d.ts → index.d.ts} +5 -3
- package/dist/ts4.2/{src/logger.d.ts → logger.d.ts} +1 -0
- package/dist/ts4.2/{src/options.d.ts → options.d.ts} +4 -2
- package/dist/ts4.2/{src/room → room}/RTCEngine.d.ts +5 -2
- package/dist/ts4.2/{src/room → room}/Room.d.ts +3 -2
- package/dist/ts4.2/{src/room → room}/data-stream/incoming/IncomingDataStreamManager.d.ts +2 -1
- package/dist/ts4.2/{src/room → room}/errors.d.ts +2 -1
- package/dist/ts4.2/{src/room → room}/participant/Participant.d.ts +2 -2
- package/dist/ts4.2/room/token-source/TokenSource.d.ts +71 -0
- package/dist/ts4.2/room/token-source/types.d.ts +68 -0
- package/dist/ts4.2/room/token-source/utils.d.ts +5 -0
- package/dist/ts4.2/{src/room → room}/track/LocalTrack.d.ts +1 -1
- package/dist/ts4.2/{src/room → room}/track/options.d.ts +10 -3
- package/dist/ts4.2/{src/room → room}/types.d.ts +1 -0
- package/dist/ts4.2/{src/room → room}/utils.d.ts +2 -1
- package/dist/ts4.2/utils/camelToSnakeCase.d.ts +8 -0
- package/package.json +11 -10
- package/src/connectionHelper/checks/publishVideo.ts +5 -0
- package/src/e2ee/E2eeManager.ts +94 -2
- package/src/e2ee/types.ts +44 -1
- package/src/e2ee/utils.ts +16 -0
- package/src/e2ee/worker/DataCryptor.test.ts +271 -0
- package/src/e2ee/worker/DataCryptor.ts +147 -0
- package/src/e2ee/worker/ParticipantKeyHandler.ts +4 -3
- package/src/e2ee/worker/e2ee.worker.ts +47 -0
- package/src/e2ee/worker/sifPayload.ts +10 -6
- package/src/index.ts +14 -1
- package/src/logger.ts +1 -0
- package/src/options.ts +8 -2
- package/src/room/RTCEngine.ts +55 -6
- package/src/room/Room.ts +38 -16
- package/src/room/data-stream/incoming/IncomingDataStreamManager.ts +64 -17
- package/src/room/data-stream/outgoing/OutgoingDataStreamManager.ts +7 -0
- package/src/room/errors.ts +3 -0
- package/src/room/participant/LocalParticipant.ts +8 -6
- package/src/room/participant/Participant.ts +6 -1
- package/src/room/token-source/TokenSource.ts +285 -0
- package/src/room/token-source/types.ts +84 -0
- package/src/room/token-source/utils.ts +35 -0
- package/src/room/track/LocalAudioTrack.ts +1 -1
- package/src/room/track/LocalTrack.ts +1 -1
- package/src/room/track/options.ts +12 -4
- package/src/room/track/utils.ts +10 -2
- package/src/room/types.ts +1 -0
- package/src/room/utils.ts +8 -4
- package/src/utils/camelToSnakeCase.ts +16 -0
- /package/dist/ts4.2/{src/api → api}/SignalClient.d.ts +0 -0
- /package/dist/ts4.2/{src/api → api}/utils.d.ts +0 -0
- /package/dist/ts4.2/{src/connectionHelper → connectionHelper}/ConnectionCheck.d.ts +0 -0
- /package/dist/ts4.2/{src/connectionHelper → connectionHelper}/checks/Checker.d.ts +0 -0
- /package/dist/ts4.2/{src/connectionHelper → connectionHelper}/checks/cloudRegion.d.ts +0 -0
- /package/dist/ts4.2/{src/connectionHelper → connectionHelper}/checks/connectionProtocol.d.ts +0 -0
- /package/dist/ts4.2/{src/connectionHelper → connectionHelper}/checks/publishAudio.d.ts +0 -0
- /package/dist/ts4.2/{src/connectionHelper → connectionHelper}/checks/publishVideo.d.ts +0 -0
- /package/dist/ts4.2/{src/connectionHelper → connectionHelper}/checks/reconnect.d.ts +0 -0
- /package/dist/ts4.2/{src/connectionHelper → connectionHelper}/checks/turn.d.ts +0 -0
- /package/dist/ts4.2/{src/connectionHelper → connectionHelper}/checks/webrtc.d.ts +0 -0
- /package/dist/ts4.2/{src/connectionHelper → connectionHelper}/checks/websocket.d.ts +0 -0
- /package/dist/ts4.2/{src/e2ee → e2ee}/KeyProvider.d.ts +0 -0
- /package/dist/ts4.2/{src/e2ee → e2ee}/constants.d.ts +0 -0
- /package/dist/ts4.2/{src/e2ee → e2ee}/errors.d.ts +0 -0
- /package/dist/ts4.2/{src/e2ee → e2ee}/events.d.ts +0 -0
- /package/dist/ts4.2/{src/e2ee → e2ee}/index.d.ts +0 -0
- /package/dist/ts4.2/{src/e2ee → e2ee}/worker/FrameCryptor.d.ts +0 -0
- /package/dist/ts4.2/{src/e2ee → e2ee}/worker/e2ee.worker.d.ts +0 -0
- /package/dist/ts4.2/{src/e2ee → e2ee}/worker/naluUtils.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/DefaultReconnectPolicy.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/DeviceManager.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/PCTransport.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/PCTransportManager.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/ReconnectPolicy.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/RegionUrlProvider.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/attribute-typings.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/data-stream/incoming/StreamReader.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/data-stream/outgoing/OutgoingDataStreamManager.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/data-stream/outgoing/StreamWriter.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/defaults.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/events.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/participant/LocalParticipant.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/participant/ParticipantTrackPermission.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/participant/RemoteParticipant.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/participant/publishUtils.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/rpc.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/stats.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/timers.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/LocalAudioTrack.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/LocalTrackPublication.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/LocalVideoTrack.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/RemoteAudioTrack.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/RemoteTrack.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/RemoteTrackPublication.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/RemoteVideoTrack.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/Track.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/TrackPublication.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/create.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/facingMode.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/processor/types.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/record.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/types.d.ts +0 -0
- /package/dist/ts4.2/{src/room → room}/track/utils.d.ts +0 -0
- /package/dist/ts4.2/{src/test → test}/MockMediaStreamTrack.d.ts +0 -0
- /package/dist/ts4.2/{src/test → test}/mocks.d.ts +0 -0
- /package/dist/ts4.2/{src/utils → utils}/AsyncQueue.d.ts +0 -0
- /package/dist/ts4.2/{src/utils → utils}/browserParser.d.ts +0 -0
- /package/dist/ts4.2/{src/utils → utils}/cloneDeep.d.ts +0 -0
- /package/dist/ts4.2/{src/utils → utils}/dataPacketBuffer.d.ts +0 -0
- /package/dist/ts4.2/{src/utils → utils}/ttlmap.d.ts +0 -0
- /package/dist/ts4.2/{src/version.d.ts → version.d.ts} +0 -0
@@ -3780,6 +3780,42 @@ const EventMetric = /* @__PURE__ */proto3.makeMessageType("livekit.EventMetric",
|
|
3780
3780
|
T: 13
|
3781
3781
|
/* ScalarType.UINT32 */
|
3782
3782
|
}]);
|
3783
|
+
const AudioCodec = /* @__PURE__ */proto3.makeEnum("livekit.AudioCodec", [{
|
3784
|
+
no: 0,
|
3785
|
+
name: "DEFAULT_AC"
|
3786
|
+
}, {
|
3787
|
+
no: 1,
|
3788
|
+
name: "OPUS"
|
3789
|
+
}, {
|
3790
|
+
no: 2,
|
3791
|
+
name: "AAC"
|
3792
|
+
}, {
|
3793
|
+
no: 3,
|
3794
|
+
name: "AC_MP3"
|
3795
|
+
}]);
|
3796
|
+
const VideoCodec = /* @__PURE__ */proto3.makeEnum("livekit.VideoCodec", [{
|
3797
|
+
no: 0,
|
3798
|
+
name: "DEFAULT_VC"
|
3799
|
+
}, {
|
3800
|
+
no: 1,
|
3801
|
+
name: "H264_BASELINE"
|
3802
|
+
}, {
|
3803
|
+
no: 2,
|
3804
|
+
name: "H264_MAIN"
|
3805
|
+
}, {
|
3806
|
+
no: 3,
|
3807
|
+
name: "H264_HIGH"
|
3808
|
+
}, {
|
3809
|
+
no: 4,
|
3810
|
+
name: "VP8"
|
3811
|
+
}]);
|
3812
|
+
const ImageCodec = /* @__PURE__ */proto3.makeEnum("livekit.ImageCodec", [{
|
3813
|
+
no: 0,
|
3814
|
+
name: "IC_DEFAULT"
|
3815
|
+
}, {
|
3816
|
+
no: 1,
|
3817
|
+
name: "IC_JPEG"
|
3818
|
+
}]);
|
3783
3819
|
const BackupCodecPolicy$1 = /* @__PURE__ */proto3.makeEnum("livekit.BackupCodecPolicy", [{
|
3784
3820
|
no: 0,
|
3785
3821
|
name: "PREFER_REGRESSION"
|
@@ -4268,6 +4304,17 @@ const SimulcastCodecInfo = /* @__PURE__ */proto3.makeMessageType("livekit.Simulc
|
|
4268
4304
|
kind: "message",
|
4269
4305
|
T: VideoLayer,
|
4270
4306
|
repeated: true
|
4307
|
+
}, {
|
4308
|
+
no: 5,
|
4309
|
+
name: "video_layer_mode",
|
4310
|
+
kind: "enum",
|
4311
|
+
T: proto3.getEnumType(VideoLayer_Mode)
|
4312
|
+
}, {
|
4313
|
+
no: 6,
|
4314
|
+
name: "sdp_cid",
|
4315
|
+
kind: "scalar",
|
4316
|
+
T: 9
|
4317
|
+
/* ScalarType.STRING */
|
4271
4318
|
}]);
|
4272
4319
|
const TrackInfo = /* @__PURE__ */proto3.makeMessageType("livekit.TrackInfo", () => [{
|
4273
4320
|
no: 1,
|
@@ -4427,6 +4474,19 @@ const VideoLayer = /* @__PURE__ */proto3.makeMessageType("livekit.VideoLayer", (
|
|
4427
4474
|
T: 9
|
4428
4475
|
/* ScalarType.STRING */
|
4429
4476
|
}]);
|
4477
|
+
const VideoLayer_Mode = /* @__PURE__ */proto3.makeEnum("livekit.VideoLayer.Mode", [{
|
4478
|
+
no: 0,
|
4479
|
+
name: "MODE_UNUSED"
|
4480
|
+
}, {
|
4481
|
+
no: 1,
|
4482
|
+
name: "ONE_SPATIAL_LAYER_PER_STREAM"
|
4483
|
+
}, {
|
4484
|
+
no: 2,
|
4485
|
+
name: "MULTIPLE_SPATIAL_LAYERS_PER_STREAM"
|
4486
|
+
}, {
|
4487
|
+
no: 3,
|
4488
|
+
name: "ONE_SPATIAL_LAYER_PER_STREAM_INCOMPLETE_RTCP_SR"
|
4489
|
+
}]);
|
4430
4490
|
const DataPacket = /* @__PURE__ */proto3.makeMessageType("livekit.DataPacket", () => [{
|
4431
4491
|
no: 1,
|
4432
4492
|
name: "kind",
|
@@ -4516,6 +4576,12 @@ const DataPacket = /* @__PURE__ */proto3.makeMessageType("livekit.DataPacket", (
|
|
4516
4576
|
kind: "message",
|
4517
4577
|
T: DataStream_Trailer,
|
4518
4578
|
oneof: "value"
|
4579
|
+
}, {
|
4580
|
+
no: 18,
|
4581
|
+
name: "encrypted_packet",
|
4582
|
+
kind: "message",
|
4583
|
+
T: EncryptedPacket,
|
4584
|
+
oneof: "value"
|
4519
4585
|
}, {
|
4520
4586
|
no: 16,
|
4521
4587
|
name: "sequence",
|
@@ -4536,6 +4602,79 @@ const DataPacket_Kind = /* @__PURE__ */proto3.makeEnum("livekit.DataPacket.Kind"
|
|
4536
4602
|
no: 1,
|
4537
4603
|
name: "LOSSY"
|
4538
4604
|
}]);
|
4605
|
+
const EncryptedPacket = /* @__PURE__ */proto3.makeMessageType("livekit.EncryptedPacket", () => [{
|
4606
|
+
no: 1,
|
4607
|
+
name: "encryption_type",
|
4608
|
+
kind: "enum",
|
4609
|
+
T: proto3.getEnumType(Encryption_Type)
|
4610
|
+
}, {
|
4611
|
+
no: 2,
|
4612
|
+
name: "iv",
|
4613
|
+
kind: "scalar",
|
4614
|
+
T: 12
|
4615
|
+
/* ScalarType.BYTES */
|
4616
|
+
}, {
|
4617
|
+
no: 3,
|
4618
|
+
name: "key_index",
|
4619
|
+
kind: "scalar",
|
4620
|
+
T: 13
|
4621
|
+
/* ScalarType.UINT32 */
|
4622
|
+
}, {
|
4623
|
+
no: 4,
|
4624
|
+
name: "encrypted_value",
|
4625
|
+
kind: "scalar",
|
4626
|
+
T: 12
|
4627
|
+
/* ScalarType.BYTES */
|
4628
|
+
}]);
|
4629
|
+
const EncryptedPacketPayload = /* @__PURE__ */proto3.makeMessageType("livekit.EncryptedPacketPayload", () => [{
|
4630
|
+
no: 1,
|
4631
|
+
name: "user",
|
4632
|
+
kind: "message",
|
4633
|
+
T: UserPacket,
|
4634
|
+
oneof: "value"
|
4635
|
+
}, {
|
4636
|
+
no: 3,
|
4637
|
+
name: "chat_message",
|
4638
|
+
kind: "message",
|
4639
|
+
T: ChatMessage,
|
4640
|
+
oneof: "value"
|
4641
|
+
}, {
|
4642
|
+
no: 4,
|
4643
|
+
name: "rpc_request",
|
4644
|
+
kind: "message",
|
4645
|
+
T: RpcRequest,
|
4646
|
+
oneof: "value"
|
4647
|
+
}, {
|
4648
|
+
no: 5,
|
4649
|
+
name: "rpc_ack",
|
4650
|
+
kind: "message",
|
4651
|
+
T: RpcAck,
|
4652
|
+
oneof: "value"
|
4653
|
+
}, {
|
4654
|
+
no: 6,
|
4655
|
+
name: "rpc_response",
|
4656
|
+
kind: "message",
|
4657
|
+
T: RpcResponse,
|
4658
|
+
oneof: "value"
|
4659
|
+
}, {
|
4660
|
+
no: 7,
|
4661
|
+
name: "stream_header",
|
4662
|
+
kind: "message",
|
4663
|
+
T: DataStream_Header,
|
4664
|
+
oneof: "value"
|
4665
|
+
}, {
|
4666
|
+
no: 8,
|
4667
|
+
name: "stream_chunk",
|
4668
|
+
kind: "message",
|
4669
|
+
T: DataStream_Chunk,
|
4670
|
+
oneof: "value"
|
4671
|
+
}, {
|
4672
|
+
no: 9,
|
4673
|
+
name: "stream_trailer",
|
4674
|
+
kind: "message",
|
4675
|
+
T: DataStream_Trailer,
|
4676
|
+
oneof: "value"
|
4677
|
+
}]);
|
4539
4678
|
const ActiveSpeakerUpdate = /* @__PURE__ */proto3.makeMessageType("livekit.ActiveSpeakerUpdate", () => [{
|
4540
4679
|
no: 1,
|
4541
4680
|
name: "speakers",
|
@@ -5099,116 +5238,895 @@ const DataStream_Header = /* @__PURE__ */proto3.makeMessageType("livekit.DataStr
|
|
5099
5238
|
/* ScalarType.STRING */
|
5100
5239
|
}, {
|
5101
5240
|
no: 2,
|
5102
|
-
name: "timestamp",
|
5103
|
-
kind: "scalar",
|
5104
|
-
T: 3
|
5105
|
-
/* ScalarType.INT64 */
|
5241
|
+
name: "timestamp",
|
5242
|
+
kind: "scalar",
|
5243
|
+
T: 3
|
5244
|
+
/* ScalarType.INT64 */
|
5245
|
+
}, {
|
5246
|
+
no: 3,
|
5247
|
+
name: "topic",
|
5248
|
+
kind: "scalar",
|
5249
|
+
T: 9
|
5250
|
+
/* ScalarType.STRING */
|
5251
|
+
}, {
|
5252
|
+
no: 4,
|
5253
|
+
name: "mime_type",
|
5254
|
+
kind: "scalar",
|
5255
|
+
T: 9
|
5256
|
+
/* ScalarType.STRING */
|
5257
|
+
}, {
|
5258
|
+
no: 5,
|
5259
|
+
name: "total_length",
|
5260
|
+
kind: "scalar",
|
5261
|
+
T: 4,
|
5262
|
+
opt: true
|
5263
|
+
}, {
|
5264
|
+
no: 7,
|
5265
|
+
name: "encryption_type",
|
5266
|
+
kind: "enum",
|
5267
|
+
T: proto3.getEnumType(Encryption_Type)
|
5268
|
+
}, {
|
5269
|
+
no: 8,
|
5270
|
+
name: "attributes",
|
5271
|
+
kind: "map",
|
5272
|
+
K: 9,
|
5273
|
+
V: {
|
5274
|
+
kind: "scalar",
|
5275
|
+
T: 9
|
5276
|
+
/* ScalarType.STRING */
|
5277
|
+
}
|
5278
|
+
}, {
|
5279
|
+
no: 9,
|
5280
|
+
name: "text_header",
|
5281
|
+
kind: "message",
|
5282
|
+
T: DataStream_TextHeader,
|
5283
|
+
oneof: "content_header"
|
5284
|
+
}, {
|
5285
|
+
no: 10,
|
5286
|
+
name: "byte_header",
|
5287
|
+
kind: "message",
|
5288
|
+
T: DataStream_ByteHeader,
|
5289
|
+
oneof: "content_header"
|
5290
|
+
}], {
|
5291
|
+
localName: "DataStream_Header"
|
5292
|
+
});
|
5293
|
+
const DataStream_Chunk = /* @__PURE__ */proto3.makeMessageType("livekit.DataStream.Chunk", () => [{
|
5294
|
+
no: 1,
|
5295
|
+
name: "stream_id",
|
5296
|
+
kind: "scalar",
|
5297
|
+
T: 9
|
5298
|
+
/* ScalarType.STRING */
|
5299
|
+
}, {
|
5300
|
+
no: 2,
|
5301
|
+
name: "chunk_index",
|
5302
|
+
kind: "scalar",
|
5303
|
+
T: 4
|
5304
|
+
/* ScalarType.UINT64 */
|
5305
|
+
}, {
|
5306
|
+
no: 3,
|
5307
|
+
name: "content",
|
5308
|
+
kind: "scalar",
|
5309
|
+
T: 12
|
5310
|
+
/* ScalarType.BYTES */
|
5311
|
+
}, {
|
5312
|
+
no: 4,
|
5313
|
+
name: "version",
|
5314
|
+
kind: "scalar",
|
5315
|
+
T: 5
|
5316
|
+
/* ScalarType.INT32 */
|
5317
|
+
}, {
|
5318
|
+
no: 5,
|
5319
|
+
name: "iv",
|
5320
|
+
kind: "scalar",
|
5321
|
+
T: 12,
|
5322
|
+
opt: true
|
5323
|
+
}], {
|
5324
|
+
localName: "DataStream_Chunk"
|
5325
|
+
});
|
5326
|
+
const DataStream_Trailer = /* @__PURE__ */proto3.makeMessageType("livekit.DataStream.Trailer", () => [{
|
5327
|
+
no: 1,
|
5328
|
+
name: "stream_id",
|
5329
|
+
kind: "scalar",
|
5330
|
+
T: 9
|
5331
|
+
/* ScalarType.STRING */
|
5332
|
+
}, {
|
5333
|
+
no: 2,
|
5334
|
+
name: "reason",
|
5335
|
+
kind: "scalar",
|
5336
|
+
T: 9
|
5337
|
+
/* ScalarType.STRING */
|
5338
|
+
}, {
|
5339
|
+
no: 3,
|
5340
|
+
name: "attributes",
|
5341
|
+
kind: "map",
|
5342
|
+
K: 9,
|
5343
|
+
V: {
|
5344
|
+
kind: "scalar",
|
5345
|
+
T: 9
|
5346
|
+
/* ScalarType.STRING */
|
5347
|
+
}
|
5348
|
+
}], {
|
5349
|
+
localName: "DataStream_Trailer"
|
5350
|
+
});
|
5351
|
+
const WebhookConfig = /* @__PURE__ */proto3.makeMessageType("livekit.WebhookConfig", () => [{
|
5352
|
+
no: 1,
|
5353
|
+
name: "url",
|
5354
|
+
kind: "scalar",
|
5355
|
+
T: 9
|
5356
|
+
/* ScalarType.STRING */
|
5357
|
+
}, {
|
5358
|
+
no: 2,
|
5359
|
+
name: "signing_key",
|
5360
|
+
kind: "scalar",
|
5361
|
+
T: 9
|
5362
|
+
/* ScalarType.STRING */
|
5363
|
+
}]);
|
5364
|
+
const SubscribedAudioCodec = /* @__PURE__ */proto3.makeMessageType("livekit.SubscribedAudioCodec", () => [{
|
5365
|
+
no: 1,
|
5366
|
+
name: "codec",
|
5367
|
+
kind: "scalar",
|
5368
|
+
T: 9
|
5369
|
+
/* ScalarType.STRING */
|
5370
|
+
}, {
|
5371
|
+
no: 2,
|
5372
|
+
name: "enabled",
|
5373
|
+
kind: "scalar",
|
5374
|
+
T: 8
|
5375
|
+
/* ScalarType.BOOL */
|
5376
|
+
}]);
|
5377
|
+
const RoomAgentDispatch = /* @__PURE__ */proto3.makeMessageType("livekit.RoomAgentDispatch", () => [{
|
5378
|
+
no: 1,
|
5379
|
+
name: "agent_name",
|
5380
|
+
kind: "scalar",
|
5381
|
+
T: 9
|
5382
|
+
/* ScalarType.STRING */
|
5383
|
+
}, {
|
5384
|
+
no: 2,
|
5385
|
+
name: "metadata",
|
5386
|
+
kind: "scalar",
|
5387
|
+
T: 9
|
5388
|
+
/* ScalarType.STRING */
|
5389
|
+
}]);
|
5390
|
+
const EncodedFileType = /* @__PURE__ */proto3.makeEnum("livekit.EncodedFileType", [{
|
5391
|
+
no: 0,
|
5392
|
+
name: "DEFAULT_FILETYPE"
|
5393
|
+
}, {
|
5394
|
+
no: 1,
|
5395
|
+
name: "MP4"
|
5396
|
+
}, {
|
5397
|
+
no: 2,
|
5398
|
+
name: "OGG"
|
5399
|
+
}, {
|
5400
|
+
no: 3,
|
5401
|
+
name: "MP3"
|
5402
|
+
}]);
|
5403
|
+
const SegmentedFileProtocol = /* @__PURE__ */proto3.makeEnum("livekit.SegmentedFileProtocol", [{
|
5404
|
+
no: 0,
|
5405
|
+
name: "DEFAULT_SEGMENTED_FILE_PROTOCOL"
|
5406
|
+
}, {
|
5407
|
+
no: 1,
|
5408
|
+
name: "HLS_PROTOCOL"
|
5409
|
+
}]);
|
5410
|
+
const SegmentedFileSuffix = /* @__PURE__ */proto3.makeEnum("livekit.SegmentedFileSuffix", [{
|
5411
|
+
no: 0,
|
5412
|
+
name: "INDEX"
|
5413
|
+
}, {
|
5414
|
+
no: 1,
|
5415
|
+
name: "TIMESTAMP"
|
5416
|
+
}]);
|
5417
|
+
const ImageFileSuffix = /* @__PURE__ */proto3.makeEnum("livekit.ImageFileSuffix", [{
|
5418
|
+
no: 0,
|
5419
|
+
name: "IMAGE_SUFFIX_INDEX"
|
5420
|
+
}, {
|
5421
|
+
no: 1,
|
5422
|
+
name: "IMAGE_SUFFIX_TIMESTAMP"
|
5423
|
+
}, {
|
5424
|
+
no: 2,
|
5425
|
+
name: "IMAGE_SUFFIX_NONE_OVERWRITE"
|
5426
|
+
}]);
|
5427
|
+
const StreamProtocol = /* @__PURE__ */proto3.makeEnum("livekit.StreamProtocol", [{
|
5428
|
+
no: 0,
|
5429
|
+
name: "DEFAULT_PROTOCOL"
|
5430
|
+
}, {
|
5431
|
+
no: 1,
|
5432
|
+
name: "RTMP"
|
5433
|
+
}, {
|
5434
|
+
no: 2,
|
5435
|
+
name: "SRT"
|
5436
|
+
}]);
|
5437
|
+
const AudioMixing = /* @__PURE__ */proto3.makeEnum("livekit.AudioMixing", [{
|
5438
|
+
no: 0,
|
5439
|
+
name: "DEFAULT_MIXING"
|
5440
|
+
}, {
|
5441
|
+
no: 1,
|
5442
|
+
name: "DUAL_CHANNEL_AGENT"
|
5443
|
+
}, {
|
5444
|
+
no: 2,
|
5445
|
+
name: "DUAL_CHANNEL_ALTERNATE"
|
5446
|
+
}]);
|
5447
|
+
const EncodingOptionsPreset = /* @__PURE__ */proto3.makeEnum("livekit.EncodingOptionsPreset", [{
|
5448
|
+
no: 0,
|
5449
|
+
name: "H264_720P_30"
|
5450
|
+
}, {
|
5451
|
+
no: 1,
|
5452
|
+
name: "H264_720P_60"
|
5453
|
+
}, {
|
5454
|
+
no: 2,
|
5455
|
+
name: "H264_1080P_30"
|
5456
|
+
}, {
|
5457
|
+
no: 3,
|
5458
|
+
name: "H264_1080P_60"
|
5459
|
+
}, {
|
5460
|
+
no: 4,
|
5461
|
+
name: "PORTRAIT_H264_720P_30"
|
5462
|
+
}, {
|
5463
|
+
no: 5,
|
5464
|
+
name: "PORTRAIT_H264_720P_60"
|
5465
|
+
}, {
|
5466
|
+
no: 6,
|
5467
|
+
name: "PORTRAIT_H264_1080P_30"
|
5468
|
+
}, {
|
5469
|
+
no: 7,
|
5470
|
+
name: "PORTRAIT_H264_1080P_60"
|
5471
|
+
}]);
|
5472
|
+
const RoomCompositeEgressRequest = /* @__PURE__ */proto3.makeMessageType("livekit.RoomCompositeEgressRequest", () => [{
|
5473
|
+
no: 1,
|
5474
|
+
name: "room_name",
|
5475
|
+
kind: "scalar",
|
5476
|
+
T: 9
|
5477
|
+
/* ScalarType.STRING */
|
5478
|
+
}, {
|
5479
|
+
no: 2,
|
5480
|
+
name: "layout",
|
5481
|
+
kind: "scalar",
|
5482
|
+
T: 9
|
5483
|
+
/* ScalarType.STRING */
|
5484
|
+
}, {
|
5485
|
+
no: 3,
|
5486
|
+
name: "audio_only",
|
5487
|
+
kind: "scalar",
|
5488
|
+
T: 8
|
5489
|
+
/* ScalarType.BOOL */
|
5490
|
+
}, {
|
5491
|
+
no: 15,
|
5492
|
+
name: "audio_mixing",
|
5493
|
+
kind: "enum",
|
5494
|
+
T: proto3.getEnumType(AudioMixing)
|
5495
|
+
}, {
|
5496
|
+
no: 4,
|
5497
|
+
name: "video_only",
|
5498
|
+
kind: "scalar",
|
5499
|
+
T: 8
|
5500
|
+
/* ScalarType.BOOL */
|
5501
|
+
}, {
|
5502
|
+
no: 5,
|
5503
|
+
name: "custom_base_url",
|
5504
|
+
kind: "scalar",
|
5505
|
+
T: 9
|
5506
|
+
/* ScalarType.STRING */
|
5507
|
+
}, {
|
5508
|
+
no: 6,
|
5509
|
+
name: "file",
|
5510
|
+
kind: "message",
|
5511
|
+
T: EncodedFileOutput,
|
5512
|
+
oneof: "output"
|
5513
|
+
}, {
|
5514
|
+
no: 7,
|
5515
|
+
name: "stream",
|
5516
|
+
kind: "message",
|
5517
|
+
T: StreamOutput,
|
5518
|
+
oneof: "output"
|
5519
|
+
}, {
|
5520
|
+
no: 10,
|
5521
|
+
name: "segments",
|
5522
|
+
kind: "message",
|
5523
|
+
T: SegmentedFileOutput,
|
5524
|
+
oneof: "output"
|
5525
|
+
}, {
|
5526
|
+
no: 8,
|
5527
|
+
name: "preset",
|
5528
|
+
kind: "enum",
|
5529
|
+
T: proto3.getEnumType(EncodingOptionsPreset),
|
5530
|
+
oneof: "options"
|
5531
|
+
}, {
|
5532
|
+
no: 9,
|
5533
|
+
name: "advanced",
|
5534
|
+
kind: "message",
|
5535
|
+
T: EncodingOptions,
|
5536
|
+
oneof: "options"
|
5537
|
+
}, {
|
5538
|
+
no: 11,
|
5539
|
+
name: "file_outputs",
|
5540
|
+
kind: "message",
|
5541
|
+
T: EncodedFileOutput,
|
5542
|
+
repeated: true
|
5543
|
+
}, {
|
5544
|
+
no: 12,
|
5545
|
+
name: "stream_outputs",
|
5546
|
+
kind: "message",
|
5547
|
+
T: StreamOutput,
|
5548
|
+
repeated: true
|
5549
|
+
}, {
|
5550
|
+
no: 13,
|
5551
|
+
name: "segment_outputs",
|
5552
|
+
kind: "message",
|
5553
|
+
T: SegmentedFileOutput,
|
5554
|
+
repeated: true
|
5555
|
+
}, {
|
5556
|
+
no: 14,
|
5557
|
+
name: "image_outputs",
|
5558
|
+
kind: "message",
|
5559
|
+
T: ImageOutput,
|
5560
|
+
repeated: true
|
5561
|
+
}, {
|
5562
|
+
no: 16,
|
5563
|
+
name: "webhooks",
|
5564
|
+
kind: "message",
|
5565
|
+
T: WebhookConfig,
|
5566
|
+
repeated: true
|
5567
|
+
}]);
|
5568
|
+
const EncodedFileOutput = /* @__PURE__ */proto3.makeMessageType("livekit.EncodedFileOutput", () => [{
|
5569
|
+
no: 1,
|
5570
|
+
name: "file_type",
|
5571
|
+
kind: "enum",
|
5572
|
+
T: proto3.getEnumType(EncodedFileType)
|
5573
|
+
}, {
|
5574
|
+
no: 2,
|
5575
|
+
name: "filepath",
|
5576
|
+
kind: "scalar",
|
5577
|
+
T: 9
|
5578
|
+
/* ScalarType.STRING */
|
5579
|
+
}, {
|
5580
|
+
no: 6,
|
5581
|
+
name: "disable_manifest",
|
5582
|
+
kind: "scalar",
|
5583
|
+
T: 8
|
5584
|
+
/* ScalarType.BOOL */
|
5585
|
+
}, {
|
5586
|
+
no: 3,
|
5587
|
+
name: "s3",
|
5588
|
+
kind: "message",
|
5589
|
+
T: S3Upload,
|
5590
|
+
oneof: "output"
|
5591
|
+
}, {
|
5592
|
+
no: 4,
|
5593
|
+
name: "gcp",
|
5594
|
+
kind: "message",
|
5595
|
+
T: GCPUpload,
|
5596
|
+
oneof: "output"
|
5597
|
+
}, {
|
5598
|
+
no: 5,
|
5599
|
+
name: "azure",
|
5600
|
+
kind: "message",
|
5601
|
+
T: AzureBlobUpload,
|
5602
|
+
oneof: "output"
|
5603
|
+
}, {
|
5604
|
+
no: 7,
|
5605
|
+
name: "aliOSS",
|
5606
|
+
kind: "message",
|
5607
|
+
T: AliOSSUpload,
|
5608
|
+
oneof: "output"
|
5609
|
+
}]);
|
5610
|
+
const SegmentedFileOutput = /* @__PURE__ */proto3.makeMessageType("livekit.SegmentedFileOutput", () => [{
|
5611
|
+
no: 1,
|
5612
|
+
name: "protocol",
|
5613
|
+
kind: "enum",
|
5614
|
+
T: proto3.getEnumType(SegmentedFileProtocol)
|
5615
|
+
}, {
|
5616
|
+
no: 2,
|
5617
|
+
name: "filename_prefix",
|
5618
|
+
kind: "scalar",
|
5619
|
+
T: 9
|
5620
|
+
/* ScalarType.STRING */
|
5621
|
+
}, {
|
5622
|
+
no: 3,
|
5623
|
+
name: "playlist_name",
|
5624
|
+
kind: "scalar",
|
5625
|
+
T: 9
|
5626
|
+
/* ScalarType.STRING */
|
5627
|
+
}, {
|
5628
|
+
no: 11,
|
5629
|
+
name: "live_playlist_name",
|
5630
|
+
kind: "scalar",
|
5631
|
+
T: 9
|
5632
|
+
/* ScalarType.STRING */
|
5633
|
+
}, {
|
5634
|
+
no: 4,
|
5635
|
+
name: "segment_duration",
|
5636
|
+
kind: "scalar",
|
5637
|
+
T: 13
|
5638
|
+
/* ScalarType.UINT32 */
|
5639
|
+
}, {
|
5640
|
+
no: 10,
|
5641
|
+
name: "filename_suffix",
|
5642
|
+
kind: "enum",
|
5643
|
+
T: proto3.getEnumType(SegmentedFileSuffix)
|
5644
|
+
}, {
|
5645
|
+
no: 8,
|
5646
|
+
name: "disable_manifest",
|
5647
|
+
kind: "scalar",
|
5648
|
+
T: 8
|
5649
|
+
/* ScalarType.BOOL */
|
5650
|
+
}, {
|
5651
|
+
no: 5,
|
5652
|
+
name: "s3",
|
5653
|
+
kind: "message",
|
5654
|
+
T: S3Upload,
|
5655
|
+
oneof: "output"
|
5656
|
+
}, {
|
5657
|
+
no: 6,
|
5658
|
+
name: "gcp",
|
5659
|
+
kind: "message",
|
5660
|
+
T: GCPUpload,
|
5661
|
+
oneof: "output"
|
5662
|
+
}, {
|
5663
|
+
no: 7,
|
5664
|
+
name: "azure",
|
5665
|
+
kind: "message",
|
5666
|
+
T: AzureBlobUpload,
|
5667
|
+
oneof: "output"
|
5668
|
+
}, {
|
5669
|
+
no: 9,
|
5670
|
+
name: "aliOSS",
|
5671
|
+
kind: "message",
|
5672
|
+
T: AliOSSUpload,
|
5673
|
+
oneof: "output"
|
5674
|
+
}]);
|
5675
|
+
const ImageOutput = /* @__PURE__ */proto3.makeMessageType("livekit.ImageOutput", () => [{
|
5676
|
+
no: 1,
|
5677
|
+
name: "capture_interval",
|
5678
|
+
kind: "scalar",
|
5679
|
+
T: 13
|
5680
|
+
/* ScalarType.UINT32 */
|
5681
|
+
}, {
|
5682
|
+
no: 2,
|
5683
|
+
name: "width",
|
5684
|
+
kind: "scalar",
|
5685
|
+
T: 5
|
5686
|
+
/* ScalarType.INT32 */
|
5687
|
+
}, {
|
5688
|
+
no: 3,
|
5689
|
+
name: "height",
|
5690
|
+
kind: "scalar",
|
5691
|
+
T: 5
|
5692
|
+
/* ScalarType.INT32 */
|
5693
|
+
}, {
|
5694
|
+
no: 4,
|
5695
|
+
name: "filename_prefix",
|
5696
|
+
kind: "scalar",
|
5697
|
+
T: 9
|
5698
|
+
/* ScalarType.STRING */
|
5699
|
+
}, {
|
5700
|
+
no: 5,
|
5701
|
+
name: "filename_suffix",
|
5702
|
+
kind: "enum",
|
5703
|
+
T: proto3.getEnumType(ImageFileSuffix)
|
5704
|
+
}, {
|
5705
|
+
no: 6,
|
5706
|
+
name: "image_codec",
|
5707
|
+
kind: "enum",
|
5708
|
+
T: proto3.getEnumType(ImageCodec)
|
5709
|
+
}, {
|
5710
|
+
no: 7,
|
5711
|
+
name: "disable_manifest",
|
5712
|
+
kind: "scalar",
|
5713
|
+
T: 8
|
5714
|
+
/* ScalarType.BOOL */
|
5715
|
+
}, {
|
5716
|
+
no: 8,
|
5717
|
+
name: "s3",
|
5718
|
+
kind: "message",
|
5719
|
+
T: S3Upload,
|
5720
|
+
oneof: "output"
|
5721
|
+
}, {
|
5722
|
+
no: 9,
|
5723
|
+
name: "gcp",
|
5724
|
+
kind: "message",
|
5725
|
+
T: GCPUpload,
|
5726
|
+
oneof: "output"
|
5727
|
+
}, {
|
5728
|
+
no: 10,
|
5729
|
+
name: "azure",
|
5730
|
+
kind: "message",
|
5731
|
+
T: AzureBlobUpload,
|
5732
|
+
oneof: "output"
|
5733
|
+
}, {
|
5734
|
+
no: 11,
|
5735
|
+
name: "aliOSS",
|
5736
|
+
kind: "message",
|
5737
|
+
T: AliOSSUpload,
|
5738
|
+
oneof: "output"
|
5739
|
+
}]);
|
5740
|
+
const S3Upload = /* @__PURE__ */proto3.makeMessageType("livekit.S3Upload", () => [{
|
5741
|
+
no: 1,
|
5742
|
+
name: "access_key",
|
5743
|
+
kind: "scalar",
|
5744
|
+
T: 9
|
5745
|
+
/* ScalarType.STRING */
|
5746
|
+
}, {
|
5747
|
+
no: 2,
|
5748
|
+
name: "secret",
|
5749
|
+
kind: "scalar",
|
5750
|
+
T: 9
|
5751
|
+
/* ScalarType.STRING */
|
5752
|
+
}, {
|
5753
|
+
no: 11,
|
5754
|
+
name: "session_token",
|
5755
|
+
kind: "scalar",
|
5756
|
+
T: 9
|
5757
|
+
/* ScalarType.STRING */
|
5758
|
+
}, {
|
5759
|
+
no: 12,
|
5760
|
+
name: "assume_role_arn",
|
5761
|
+
kind: "scalar",
|
5762
|
+
T: 9
|
5763
|
+
/* ScalarType.STRING */
|
5764
|
+
}, {
|
5765
|
+
no: 13,
|
5766
|
+
name: "assume_role_external_id",
|
5767
|
+
kind: "scalar",
|
5768
|
+
T: 9
|
5769
|
+
/* ScalarType.STRING */
|
5770
|
+
}, {
|
5771
|
+
no: 3,
|
5772
|
+
name: "region",
|
5773
|
+
kind: "scalar",
|
5774
|
+
T: 9
|
5775
|
+
/* ScalarType.STRING */
|
5776
|
+
}, {
|
5777
|
+
no: 4,
|
5778
|
+
name: "endpoint",
|
5779
|
+
kind: "scalar",
|
5780
|
+
T: 9
|
5781
|
+
/* ScalarType.STRING */
|
5782
|
+
}, {
|
5783
|
+
no: 5,
|
5784
|
+
name: "bucket",
|
5785
|
+
kind: "scalar",
|
5786
|
+
T: 9
|
5787
|
+
/* ScalarType.STRING */
|
5788
|
+
}, {
|
5789
|
+
no: 6,
|
5790
|
+
name: "force_path_style",
|
5791
|
+
kind: "scalar",
|
5792
|
+
T: 8
|
5793
|
+
/* ScalarType.BOOL */
|
5794
|
+
}, {
|
5795
|
+
no: 7,
|
5796
|
+
name: "metadata",
|
5797
|
+
kind: "map",
|
5798
|
+
K: 9,
|
5799
|
+
V: {
|
5800
|
+
kind: "scalar",
|
5801
|
+
T: 9
|
5802
|
+
/* ScalarType.STRING */
|
5803
|
+
}
|
5804
|
+
}, {
|
5805
|
+
no: 8,
|
5806
|
+
name: "tagging",
|
5807
|
+
kind: "scalar",
|
5808
|
+
T: 9
|
5809
|
+
/* ScalarType.STRING */
|
5810
|
+
}, {
|
5811
|
+
no: 9,
|
5812
|
+
name: "content_disposition",
|
5813
|
+
kind: "scalar",
|
5814
|
+
T: 9
|
5815
|
+
/* ScalarType.STRING */
|
5816
|
+
}, {
|
5817
|
+
no: 10,
|
5818
|
+
name: "proxy",
|
5819
|
+
kind: "message",
|
5820
|
+
T: ProxyConfig
|
5821
|
+
}]);
|
5822
|
+
const GCPUpload = /* @__PURE__ */proto3.makeMessageType("livekit.GCPUpload", () => [{
|
5823
|
+
no: 1,
|
5824
|
+
name: "credentials",
|
5825
|
+
kind: "scalar",
|
5826
|
+
T: 9
|
5827
|
+
/* ScalarType.STRING */
|
5828
|
+
}, {
|
5829
|
+
no: 2,
|
5830
|
+
name: "bucket",
|
5831
|
+
kind: "scalar",
|
5832
|
+
T: 9
|
5833
|
+
/* ScalarType.STRING */
|
5834
|
+
}, {
|
5835
|
+
no: 3,
|
5836
|
+
name: "proxy",
|
5837
|
+
kind: "message",
|
5838
|
+
T: ProxyConfig
|
5839
|
+
}]);
|
5840
|
+
const AzureBlobUpload = /* @__PURE__ */proto3.makeMessageType("livekit.AzureBlobUpload", () => [{
|
5841
|
+
no: 1,
|
5842
|
+
name: "account_name",
|
5843
|
+
kind: "scalar",
|
5844
|
+
T: 9
|
5845
|
+
/* ScalarType.STRING */
|
5846
|
+
}, {
|
5847
|
+
no: 2,
|
5848
|
+
name: "account_key",
|
5849
|
+
kind: "scalar",
|
5850
|
+
T: 9
|
5851
|
+
/* ScalarType.STRING */
|
5852
|
+
}, {
|
5853
|
+
no: 3,
|
5854
|
+
name: "container_name",
|
5855
|
+
kind: "scalar",
|
5856
|
+
T: 9
|
5857
|
+
/* ScalarType.STRING */
|
5858
|
+
}]);
|
5859
|
+
const AliOSSUpload = /* @__PURE__ */proto3.makeMessageType("livekit.AliOSSUpload", () => [{
|
5860
|
+
no: 1,
|
5861
|
+
name: "access_key",
|
5862
|
+
kind: "scalar",
|
5863
|
+
T: 9
|
5864
|
+
/* ScalarType.STRING */
|
5865
|
+
}, {
|
5866
|
+
no: 2,
|
5867
|
+
name: "secret",
|
5868
|
+
kind: "scalar",
|
5869
|
+
T: 9
|
5870
|
+
/* ScalarType.STRING */
|
5871
|
+
}, {
|
5872
|
+
no: 3,
|
5873
|
+
name: "region",
|
5874
|
+
kind: "scalar",
|
5875
|
+
T: 9
|
5876
|
+
/* ScalarType.STRING */
|
5877
|
+
}, {
|
5878
|
+
no: 4,
|
5879
|
+
name: "endpoint",
|
5880
|
+
kind: "scalar",
|
5881
|
+
T: 9
|
5882
|
+
/* ScalarType.STRING */
|
5883
|
+
}, {
|
5884
|
+
no: 5,
|
5885
|
+
name: "bucket",
|
5886
|
+
kind: "scalar",
|
5887
|
+
T: 9
|
5888
|
+
/* ScalarType.STRING */
|
5889
|
+
}]);
|
5890
|
+
const ProxyConfig = /* @__PURE__ */proto3.makeMessageType("livekit.ProxyConfig", () => [{
|
5891
|
+
no: 1,
|
5892
|
+
name: "url",
|
5893
|
+
kind: "scalar",
|
5894
|
+
T: 9
|
5895
|
+
/* ScalarType.STRING */
|
5896
|
+
}, {
|
5897
|
+
no: 2,
|
5898
|
+
name: "username",
|
5899
|
+
kind: "scalar",
|
5900
|
+
T: 9
|
5901
|
+
/* ScalarType.STRING */
|
5902
|
+
}, {
|
5903
|
+
no: 3,
|
5904
|
+
name: "password",
|
5905
|
+
kind: "scalar",
|
5906
|
+
T: 9
|
5907
|
+
/* ScalarType.STRING */
|
5908
|
+
}]);
|
5909
|
+
const StreamOutput = /* @__PURE__ */proto3.makeMessageType("livekit.StreamOutput", () => [{
|
5910
|
+
no: 1,
|
5911
|
+
name: "protocol",
|
5912
|
+
kind: "enum",
|
5913
|
+
T: proto3.getEnumType(StreamProtocol)
|
5914
|
+
}, {
|
5915
|
+
no: 2,
|
5916
|
+
name: "urls",
|
5917
|
+
kind: "scalar",
|
5918
|
+
T: 9,
|
5919
|
+
repeated: true
|
5920
|
+
}]);
|
5921
|
+
const EncodingOptions = /* @__PURE__ */proto3.makeMessageType("livekit.EncodingOptions", () => [{
|
5922
|
+
no: 1,
|
5923
|
+
name: "width",
|
5924
|
+
kind: "scalar",
|
5925
|
+
T: 5
|
5926
|
+
/* ScalarType.INT32 */
|
5927
|
+
}, {
|
5928
|
+
no: 2,
|
5929
|
+
name: "height",
|
5930
|
+
kind: "scalar",
|
5931
|
+
T: 5
|
5932
|
+
/* ScalarType.INT32 */
|
5933
|
+
}, {
|
5934
|
+
no: 3,
|
5935
|
+
name: "depth",
|
5936
|
+
kind: "scalar",
|
5937
|
+
T: 5
|
5938
|
+
/* ScalarType.INT32 */
|
5939
|
+
}, {
|
5940
|
+
no: 4,
|
5941
|
+
name: "framerate",
|
5942
|
+
kind: "scalar",
|
5943
|
+
T: 5
|
5944
|
+
/* ScalarType.INT32 */
|
5945
|
+
}, {
|
5946
|
+
no: 5,
|
5947
|
+
name: "audio_codec",
|
5948
|
+
kind: "enum",
|
5949
|
+
T: proto3.getEnumType(AudioCodec)
|
5950
|
+
}, {
|
5951
|
+
no: 6,
|
5952
|
+
name: "audio_bitrate",
|
5953
|
+
kind: "scalar",
|
5954
|
+
T: 5
|
5955
|
+
/* ScalarType.INT32 */
|
5956
|
+
}, {
|
5957
|
+
no: 11,
|
5958
|
+
name: "audio_quality",
|
5959
|
+
kind: "scalar",
|
5960
|
+
T: 5
|
5961
|
+
/* ScalarType.INT32 */
|
5962
|
+
}, {
|
5963
|
+
no: 7,
|
5964
|
+
name: "audio_frequency",
|
5965
|
+
kind: "scalar",
|
5966
|
+
T: 5
|
5967
|
+
/* ScalarType.INT32 */
|
5968
|
+
}, {
|
5969
|
+
no: 8,
|
5970
|
+
name: "video_codec",
|
5971
|
+
kind: "enum",
|
5972
|
+
T: proto3.getEnumType(VideoCodec)
|
5973
|
+
}, {
|
5974
|
+
no: 9,
|
5975
|
+
name: "video_bitrate",
|
5976
|
+
kind: "scalar",
|
5977
|
+
T: 5
|
5978
|
+
/* ScalarType.INT32 */
|
5979
|
+
}, {
|
5980
|
+
no: 12,
|
5981
|
+
name: "video_quality",
|
5982
|
+
kind: "scalar",
|
5983
|
+
T: 5
|
5984
|
+
/* ScalarType.INT32 */
|
5985
|
+
}, {
|
5986
|
+
no: 10,
|
5987
|
+
name: "key_frame_interval",
|
5988
|
+
kind: "scalar",
|
5989
|
+
T: 1
|
5990
|
+
/* ScalarType.DOUBLE */
|
5991
|
+
}]);
|
5992
|
+
const AutoParticipantEgress = /* @__PURE__ */proto3.makeMessageType("livekit.AutoParticipantEgress", () => [{
|
5993
|
+
no: 1,
|
5994
|
+
name: "preset",
|
5995
|
+
kind: "enum",
|
5996
|
+
T: proto3.getEnumType(EncodingOptionsPreset),
|
5997
|
+
oneof: "options"
|
5998
|
+
}, {
|
5999
|
+
no: 2,
|
6000
|
+
name: "advanced",
|
6001
|
+
kind: "message",
|
6002
|
+
T: EncodingOptions,
|
6003
|
+
oneof: "options"
|
5106
6004
|
}, {
|
5107
6005
|
no: 3,
|
5108
|
-
name: "
|
5109
|
-
kind: "
|
5110
|
-
T:
|
5111
|
-
|
6006
|
+
name: "file_outputs",
|
6007
|
+
kind: "message",
|
6008
|
+
T: EncodedFileOutput,
|
6009
|
+
repeated: true
|
5112
6010
|
}, {
|
5113
6011
|
no: 4,
|
5114
|
-
name: "
|
6012
|
+
name: "segment_outputs",
|
6013
|
+
kind: "message",
|
6014
|
+
T: SegmentedFileOutput,
|
6015
|
+
repeated: true
|
6016
|
+
}]);
|
6017
|
+
const AutoTrackEgress = /* @__PURE__ */proto3.makeMessageType("livekit.AutoTrackEgress", () => [{
|
6018
|
+
no: 1,
|
6019
|
+
name: "filepath",
|
5115
6020
|
kind: "scalar",
|
5116
6021
|
T: 9
|
5117
6022
|
/* ScalarType.STRING */
|
5118
6023
|
}, {
|
5119
6024
|
no: 5,
|
5120
|
-
name: "
|
6025
|
+
name: "disable_manifest",
|
5121
6026
|
kind: "scalar",
|
5122
|
-
T:
|
5123
|
-
|
6027
|
+
T: 8
|
6028
|
+
/* ScalarType.BOOL */
|
5124
6029
|
}, {
|
5125
|
-
no:
|
5126
|
-
name: "
|
5127
|
-
kind: "
|
5128
|
-
T:
|
6030
|
+
no: 2,
|
6031
|
+
name: "s3",
|
6032
|
+
kind: "message",
|
6033
|
+
T: S3Upload,
|
6034
|
+
oneof: "output"
|
5129
6035
|
}, {
|
5130
|
-
no:
|
5131
|
-
name: "
|
5132
|
-
kind: "
|
5133
|
-
|
5134
|
-
|
5135
|
-
kind: "scalar",
|
5136
|
-
T: 9
|
5137
|
-
/* ScalarType.STRING */
|
5138
|
-
}
|
6036
|
+
no: 3,
|
6037
|
+
name: "gcp",
|
6038
|
+
kind: "message",
|
6039
|
+
T: GCPUpload,
|
6040
|
+
oneof: "output"
|
5139
6041
|
}, {
|
5140
|
-
no:
|
5141
|
-
name: "
|
6042
|
+
no: 4,
|
6043
|
+
name: "azure",
|
5142
6044
|
kind: "message",
|
5143
|
-
T:
|
5144
|
-
oneof: "
|
6045
|
+
T: AzureBlobUpload,
|
6046
|
+
oneof: "output"
|
5145
6047
|
}, {
|
5146
|
-
no:
|
5147
|
-
name: "
|
6048
|
+
no: 6,
|
6049
|
+
name: "aliOSS",
|
5148
6050
|
kind: "message",
|
5149
|
-
T:
|
5150
|
-
oneof: "
|
5151
|
-
}]
|
5152
|
-
|
5153
|
-
});
|
5154
|
-
const DataStream_Chunk = /* @__PURE__ */proto3.makeMessageType("livekit.DataStream.Chunk", () => [{
|
6051
|
+
T: AliOSSUpload,
|
6052
|
+
oneof: "output"
|
6053
|
+
}]);
|
6054
|
+
const RoomEgress = /* @__PURE__ */proto3.makeMessageType("livekit.RoomEgress", () => [{
|
5155
6055
|
no: 1,
|
5156
|
-
name: "
|
6056
|
+
name: "room",
|
6057
|
+
kind: "message",
|
6058
|
+
T: RoomCompositeEgressRequest
|
6059
|
+
}, {
|
6060
|
+
no: 3,
|
6061
|
+
name: "participant",
|
6062
|
+
kind: "message",
|
6063
|
+
T: AutoParticipantEgress
|
6064
|
+
}, {
|
6065
|
+
no: 2,
|
6066
|
+
name: "tracks",
|
6067
|
+
kind: "message",
|
6068
|
+
T: AutoTrackEgress
|
6069
|
+
}]);
|
6070
|
+
const RoomConfiguration = /* @__PURE__ */proto3.makeMessageType("livekit.RoomConfiguration", () => [{
|
6071
|
+
no: 1,
|
6072
|
+
name: "name",
|
5157
6073
|
kind: "scalar",
|
5158
6074
|
T: 9
|
5159
6075
|
/* ScalarType.STRING */
|
5160
6076
|
}, {
|
5161
6077
|
no: 2,
|
5162
|
-
name: "
|
6078
|
+
name: "empty_timeout",
|
5163
6079
|
kind: "scalar",
|
5164
|
-
T:
|
5165
|
-
/* ScalarType.
|
6080
|
+
T: 13
|
6081
|
+
/* ScalarType.UINT32 */
|
5166
6082
|
}, {
|
5167
6083
|
no: 3,
|
5168
|
-
name: "
|
6084
|
+
name: "departure_timeout",
|
5169
6085
|
kind: "scalar",
|
5170
|
-
T:
|
5171
|
-
/* ScalarType.
|
6086
|
+
T: 13
|
6087
|
+
/* ScalarType.UINT32 */
|
5172
6088
|
}, {
|
5173
6089
|
no: 4,
|
5174
|
-
name: "
|
6090
|
+
name: "max_participants",
|
5175
6091
|
kind: "scalar",
|
5176
|
-
T:
|
5177
|
-
/* ScalarType.
|
6092
|
+
T: 13
|
6093
|
+
/* ScalarType.UINT32 */
|
5178
6094
|
}, {
|
5179
|
-
no:
|
5180
|
-
name: "
|
5181
|
-
kind: "scalar",
|
5182
|
-
T: 12,
|
5183
|
-
opt: true
|
5184
|
-
}], {
|
5185
|
-
localName: "DataStream_Chunk"
|
5186
|
-
});
|
5187
|
-
const DataStream_Trailer = /* @__PURE__ */proto3.makeMessageType("livekit.DataStream.Trailer", () => [{
|
5188
|
-
no: 1,
|
5189
|
-
name: "stream_id",
|
6095
|
+
no: 11,
|
6096
|
+
name: "metadata",
|
5190
6097
|
kind: "scalar",
|
5191
6098
|
T: 9
|
5192
6099
|
/* ScalarType.STRING */
|
5193
6100
|
}, {
|
5194
|
-
no:
|
5195
|
-
name: "
|
6101
|
+
no: 5,
|
6102
|
+
name: "egress",
|
6103
|
+
kind: "message",
|
6104
|
+
T: RoomEgress
|
6105
|
+
}, {
|
6106
|
+
no: 7,
|
6107
|
+
name: "min_playout_delay",
|
5196
6108
|
kind: "scalar",
|
5197
|
-
T:
|
5198
|
-
/* ScalarType.
|
6109
|
+
T: 13
|
6110
|
+
/* ScalarType.UINT32 */
|
5199
6111
|
}, {
|
5200
|
-
no:
|
5201
|
-
name: "
|
5202
|
-
kind: "
|
5203
|
-
|
5204
|
-
|
5205
|
-
|
5206
|
-
|
5207
|
-
|
5208
|
-
|
5209
|
-
|
5210
|
-
|
5211
|
-
}
|
6112
|
+
no: 8,
|
6113
|
+
name: "max_playout_delay",
|
6114
|
+
kind: "scalar",
|
6115
|
+
T: 13
|
6116
|
+
/* ScalarType.UINT32 */
|
6117
|
+
}, {
|
6118
|
+
no: 9,
|
6119
|
+
name: "sync_streams",
|
6120
|
+
kind: "scalar",
|
6121
|
+
T: 8
|
6122
|
+
/* ScalarType.BOOL */
|
6123
|
+
}, {
|
6124
|
+
no: 10,
|
6125
|
+
name: "agents",
|
6126
|
+
kind: "message",
|
6127
|
+
T: RoomAgentDispatch,
|
6128
|
+
repeated: true
|
6129
|
+
}]);
|
5212
6130
|
const SignalTarget = /* @__PURE__ */proto3.makeEnum("livekit.SignalTarget", [{
|
5213
6131
|
no: 0,
|
5214
6132
|
name: "PUBLISHER"
|
@@ -5474,6 +6392,18 @@ const SignalResponse = /* @__PURE__ */proto3.makeMessageType("livekit.SignalResp
|
|
5474
6392
|
kind: "message",
|
5475
6393
|
T: RoomMovedResponse,
|
5476
6394
|
oneof: "message"
|
6395
|
+
}, {
|
6396
|
+
no: 25,
|
6397
|
+
name: "media_sections_requirement",
|
6398
|
+
kind: "message",
|
6399
|
+
T: MediaSectionsRequirement,
|
6400
|
+
oneof: "message"
|
6401
|
+
}, {
|
6402
|
+
no: 26,
|
6403
|
+
name: "subscribed_audio_codec_update",
|
6404
|
+
kind: "message",
|
6405
|
+
T: SubscribedAudioCodecUpdate,
|
6406
|
+
oneof: "message"
|
5477
6407
|
}]);
|
5478
6408
|
const SimulcastCodec = /* @__PURE__ */proto3.makeMessageType("livekit.SimulcastCodec", () => [{
|
5479
6409
|
no: 1,
|
@@ -5487,6 +6417,17 @@ const SimulcastCodec = /* @__PURE__ */proto3.makeMessageType("livekit.SimulcastC
|
|
5487
6417
|
kind: "scalar",
|
5488
6418
|
T: 9
|
5489
6419
|
/* ScalarType.STRING */
|
6420
|
+
}, {
|
6421
|
+
no: 4,
|
6422
|
+
name: "layers",
|
6423
|
+
kind: "message",
|
6424
|
+
T: VideoLayer,
|
6425
|
+
repeated: true
|
6426
|
+
}, {
|
6427
|
+
no: 5,
|
6428
|
+
name: "video_layer_mode",
|
6429
|
+
kind: "enum",
|
6430
|
+
T: proto3.getEnumType(VideoLayer_Mode)
|
5490
6431
|
}]);
|
5491
6432
|
const AddTrackRequest = /* @__PURE__ */proto3.makeMessageType("livekit.AddTrackRequest", () => [{
|
5492
6433
|
no: 1,
|
@@ -6066,6 +7007,19 @@ const SubscribedQualityUpdate = /* @__PURE__ */proto3.makeMessageType("livekit.S
|
|
6066
7007
|
T: SubscribedCodec,
|
6067
7008
|
repeated: true
|
6068
7009
|
}]);
|
7010
|
+
const SubscribedAudioCodecUpdate = /* @__PURE__ */proto3.makeMessageType("livekit.SubscribedAudioCodecUpdate", () => [{
|
7011
|
+
no: 1,
|
7012
|
+
name: "track_sid",
|
7013
|
+
kind: "scalar",
|
7014
|
+
T: 9
|
7015
|
+
/* ScalarType.STRING */
|
7016
|
+
}, {
|
7017
|
+
no: 2,
|
7018
|
+
name: "subscribed_audio_codecs",
|
7019
|
+
kind: "message",
|
7020
|
+
T: SubscribedAudioCodec,
|
7021
|
+
repeated: true
|
7022
|
+
}]);
|
6069
7023
|
const TrackPermission = /* @__PURE__ */proto3.makeMessageType("livekit.TrackPermission", () => [{
|
6070
7024
|
no: 1,
|
6071
7025
|
name: "participant_sid",
|
@@ -6353,6 +7307,42 @@ const RequestResponse = /* @__PURE__ */proto3.makeMessageType("livekit.RequestRe
|
|
6353
7307
|
kind: "scalar",
|
6354
7308
|
T: 9
|
6355
7309
|
/* ScalarType.STRING */
|
7310
|
+
}, {
|
7311
|
+
no: 4,
|
7312
|
+
name: "trickle",
|
7313
|
+
kind: "message",
|
7314
|
+
T: TrickleRequest,
|
7315
|
+
oneof: "request"
|
7316
|
+
}, {
|
7317
|
+
no: 5,
|
7318
|
+
name: "add_track",
|
7319
|
+
kind: "message",
|
7320
|
+
T: AddTrackRequest,
|
7321
|
+
oneof: "request"
|
7322
|
+
}, {
|
7323
|
+
no: 6,
|
7324
|
+
name: "mute",
|
7325
|
+
kind: "message",
|
7326
|
+
T: MuteTrackRequest,
|
7327
|
+
oneof: "request"
|
7328
|
+
}, {
|
7329
|
+
no: 7,
|
7330
|
+
name: "update_metadata",
|
7331
|
+
kind: "message",
|
7332
|
+
T: UpdateParticipantMetadata,
|
7333
|
+
oneof: "request"
|
7334
|
+
}, {
|
7335
|
+
no: 8,
|
7336
|
+
name: "update_audio_track",
|
7337
|
+
kind: "message",
|
7338
|
+
T: UpdateLocalAudioTrack,
|
7339
|
+
oneof: "request"
|
7340
|
+
}, {
|
7341
|
+
no: 9,
|
7342
|
+
name: "update_video_track",
|
7343
|
+
kind: "message",
|
7344
|
+
T: UpdateLocalVideoTrack,
|
7345
|
+
oneof: "request"
|
6356
7346
|
}]);
|
6357
7347
|
const RequestResponse_Reason = /* @__PURE__ */proto3.makeEnum("livekit.RequestResponse.Reason", [{
|
6358
7348
|
no: 0,
|
@@ -6366,6 +7356,15 @@ const RequestResponse_Reason = /* @__PURE__ */proto3.makeEnum("livekit.RequestRe
|
|
6366
7356
|
}, {
|
6367
7357
|
no: 3,
|
6368
7358
|
name: "LIMIT_EXCEEDED"
|
7359
|
+
}, {
|
7360
|
+
no: 4,
|
7361
|
+
name: "QUEUED"
|
7362
|
+
}, {
|
7363
|
+
no: 5,
|
7364
|
+
name: "UNSUPPORTED_TYPE"
|
7365
|
+
}, {
|
7366
|
+
no: 6,
|
7367
|
+
name: "UNCLASSIFIED_ERROR"
|
6369
7368
|
}]);
|
6370
7369
|
const TrackSubscribed = /* @__PURE__ */proto3.makeMessageType("livekit.TrackSubscribed", () => [{
|
6371
7370
|
no: 1,
|
@@ -6374,6 +7373,73 @@ const TrackSubscribed = /* @__PURE__ */proto3.makeMessageType("livekit.TrackSubs
|
|
6374
7373
|
T: 9
|
6375
7374
|
/* ScalarType.STRING */
|
6376
7375
|
}]);
|
7376
|
+
const MediaSectionsRequirement = /* @__PURE__ */proto3.makeMessageType("livekit.MediaSectionsRequirement", () => [{
|
7377
|
+
no: 1,
|
7378
|
+
name: "num_audios",
|
7379
|
+
kind: "scalar",
|
7380
|
+
T: 13
|
7381
|
+
/* ScalarType.UINT32 */
|
7382
|
+
}, {
|
7383
|
+
no: 2,
|
7384
|
+
name: "num_videos",
|
7385
|
+
kind: "scalar",
|
7386
|
+
T: 13
|
7387
|
+
/* ScalarType.UINT32 */
|
7388
|
+
}]);
|
7389
|
+
const TokenSourceRequest = /* @__PURE__ */proto3.makeMessageType("livekit.TokenSourceRequest", () => [{
|
7390
|
+
no: 1,
|
7391
|
+
name: "room_name",
|
7392
|
+
kind: "scalar",
|
7393
|
+
T: 9,
|
7394
|
+
opt: true
|
7395
|
+
}, {
|
7396
|
+
no: 2,
|
7397
|
+
name: "participant_name",
|
7398
|
+
kind: "scalar",
|
7399
|
+
T: 9,
|
7400
|
+
opt: true
|
7401
|
+
}, {
|
7402
|
+
no: 3,
|
7403
|
+
name: "participant_identity",
|
7404
|
+
kind: "scalar",
|
7405
|
+
T: 9,
|
7406
|
+
opt: true
|
7407
|
+
}, {
|
7408
|
+
no: 4,
|
7409
|
+
name: "participant_metadata",
|
7410
|
+
kind: "scalar",
|
7411
|
+
T: 9,
|
7412
|
+
opt: true
|
7413
|
+
}, {
|
7414
|
+
no: 5,
|
7415
|
+
name: "participant_attributes",
|
7416
|
+
kind: "map",
|
7417
|
+
K: 9,
|
7418
|
+
V: {
|
7419
|
+
kind: "scalar",
|
7420
|
+
T: 9
|
7421
|
+
/* ScalarType.STRING */
|
7422
|
+
}
|
7423
|
+
}, {
|
7424
|
+
no: 6,
|
7425
|
+
name: "room_config",
|
7426
|
+
kind: "message",
|
7427
|
+
T: RoomConfiguration,
|
7428
|
+
opt: true
|
7429
|
+
}]);
|
7430
|
+
const TokenSourceResponse = /* @__PURE__ */proto3.makeMessageType("livekit.TokenSourceResponse", () => [{
|
7431
|
+
no: 1,
|
7432
|
+
name: "server_url",
|
7433
|
+
kind: "scalar",
|
7434
|
+
T: 9
|
7435
|
+
/* ScalarType.STRING */
|
7436
|
+
}, {
|
7437
|
+
no: 2,
|
7438
|
+
name: "participant_token",
|
7439
|
+
kind: "scalar",
|
7440
|
+
T: 9
|
7441
|
+
/* ScalarType.STRING */
|
7442
|
+
}]);
|
6377
7443
|
|
6378
7444
|
function getDefaultExportFromCjs (x) {
|
6379
7445
|
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
@@ -6718,6 +7784,7 @@ var LoggerNames;
|
|
6718
7784
|
(function (LoggerNames) {
|
6719
7785
|
LoggerNames["Default"] = "livekit";
|
6720
7786
|
LoggerNames["Room"] = "livekit-room";
|
7787
|
+
LoggerNames["TokenSource"] = "livekit-token-source";
|
6721
7788
|
LoggerNames["Participant"] = "livekit-participant";
|
6722
7789
|
LoggerNames["Track"] = "livekit-track";
|
6723
7790
|
LoggerNames["Publication"] = "livekit-track-publication";
|
@@ -7432,7 +8499,7 @@ function detectBrowser(window) {
|
|
7432
8499
|
* @param {*} val The something you want to check.
|
7433
8500
|
* @return true if val is an object, false otherwise.
|
7434
8501
|
*/
|
7435
|
-
function isObject(val) {
|
8502
|
+
function isObject$1(val) {
|
7436
8503
|
return Object.prototype.toString.call(val) === '[object Object]';
|
7437
8504
|
}
|
7438
8505
|
|
@@ -7442,11 +8509,11 @@ function isObject(val) {
|
|
7442
8509
|
* of Lodash's `compact`.
|
7443
8510
|
*/
|
7444
8511
|
function compactObject(data) {
|
7445
|
-
if (!isObject(data)) {
|
8512
|
+
if (!isObject$1(data)) {
|
7446
8513
|
return data;
|
7447
8514
|
}
|
7448
8515
|
return Object.keys(data).reduce(function (accumulator, key) {
|
7449
|
-
const isObj = isObject(data[key]);
|
8516
|
+
const isObj = isObject$1(data[key]);
|
7450
8517
|
const value = isObj ? compactObject(data[key]) : data[key];
|
7451
8518
|
const isEmptyObject = isObj && !Object.keys(value).length;
|
7452
8519
|
if (value === undefined || isEmptyObject) {
|
@@ -10451,7 +11518,16 @@ function writeRbsp(data_in) {
|
|
10451
11518
|
numConsecutiveZeros = 0;
|
10452
11519
|
}
|
10453
11520
|
}
|
10454
|
-
return new Uint8Array(dataOut);
|
11521
|
+
return new Uint8Array(dataOut);
|
11522
|
+
}
|
11523
|
+
function asEncryptablePacket(packet) {
|
11524
|
+
var _a, _b, _c, _d, _e;
|
11525
|
+
if (((_a = packet.value) === null || _a === void 0 ? void 0 : _a.case) !== 'sipDtmf' && ((_b = packet.value) === null || _b === void 0 ? void 0 : _b.case) !== 'metrics' && ((_c = packet.value) === null || _c === void 0 ? void 0 : _c.case) !== 'speaker' && ((_d = packet.value) === null || _d === void 0 ? void 0 : _d.case) !== 'transcription' && ((_e = packet.value) === null || _e === void 0 ? void 0 : _e.case) !== 'encryptedPacket') {
|
11526
|
+
return new EncryptedPacketPayload({
|
11527
|
+
value: packet.value
|
11528
|
+
});
|
11529
|
+
}
|
11530
|
+
return undefined;
|
10455
11531
|
}
|
10456
11532
|
|
10457
11533
|
/**
|
@@ -10632,6 +11708,8 @@ var DataStreamErrorReason;
|
|
10632
11708
|
DataStreamErrorReason[DataStreamErrorReason["Incomplete"] = 4] = "Incomplete";
|
10633
11709
|
// Unable to register a stream handler more than once.
|
10634
11710
|
DataStreamErrorReason[DataStreamErrorReason["HandlerAlreadyRegistered"] = 7] = "HandlerAlreadyRegistered";
|
11711
|
+
// Encryption type mismatch.
|
11712
|
+
DataStreamErrorReason[DataStreamErrorReason["EncryptionTypeMismatch"] = 8] = "EncryptionTypeMismatch";
|
10635
11713
|
})(DataStreamErrorReason || (DataStreamErrorReason = {}));
|
10636
11714
|
class DataStreamError extends LivekitError {
|
10637
11715
|
constructor(message, reason) {
|
@@ -11388,7 +12466,7 @@ function getOSVersion(ua) {
|
|
11388
12466
|
return ua.includes('mac os') ? getMatch(/\(.+?(\d+_\d+(:?_\d+)?)/, ua, 1).replace(/_/g, '.') : undefined;
|
11389
12467
|
}
|
11390
12468
|
|
11391
|
-
var version$1 = "2.15.
|
12469
|
+
var version$1 = "2.15.8";
|
11392
12470
|
|
11393
12471
|
const version = version$1;
|
11394
12472
|
const protocolVersion = 16;
|
@@ -11828,11 +12906,15 @@ class VideoPreset {
|
|
11828
12906
|
};
|
11829
12907
|
}
|
11830
12908
|
}
|
11831
|
-
|
12909
|
+
// `red` is not technically a codec, but treated as one in signalling protocol
|
12910
|
+
const audioCodecs = ['opus', 'red'];
|
12911
|
+
const backupVideoCodecs = ['vp8', 'h264'];
|
11832
12912
|
const videoCodecs = ['vp8', 'h264', 'vp9', 'av1', 'h265'];
|
11833
|
-
function
|
11834
|
-
return !!
|
12913
|
+
function isBackupVideoCodec(codec) {
|
12914
|
+
return !!backupVideoCodecs.find(backup => backup === codec);
|
11835
12915
|
}
|
12916
|
+
/** @deprecated Use {@link isBackupVideoCodec} instead */
|
12917
|
+
const isBackupCodec = isBackupVideoCodec;
|
11836
12918
|
var BackupCodecPolicy;
|
11837
12919
|
(function (BackupCodecPolicy) {
|
11838
12920
|
// codec regression is preferred, the sfu will try to regress codec if possible but not guaranteed
|
@@ -11944,7 +13026,7 @@ function supportsAV1() {
|
|
11944
13026
|
let hasAV1 = false;
|
11945
13027
|
if (capabilities) {
|
11946
13028
|
for (const codec of capabilities.codecs) {
|
11947
|
-
if (codec.mimeType === 'video/
|
13029
|
+
if (codec.mimeType.toLowerCase() === 'video/av1') {
|
11948
13030
|
hasAV1 = true;
|
11949
13031
|
break;
|
11950
13032
|
}
|
@@ -11976,7 +13058,7 @@ function supportsVP9() {
|
|
11976
13058
|
let hasVP9 = false;
|
11977
13059
|
if (capabilities) {
|
11978
13060
|
for (const codec of capabilities.codecs) {
|
11979
|
-
if (codec.mimeType === 'video/
|
13061
|
+
if (codec.mimeType.toLowerCase() === 'video/vp9') {
|
11980
13062
|
hasVP9 = true;
|
11981
13063
|
break;
|
11982
13064
|
}
|
@@ -12276,6 +13358,9 @@ function createAudioAnalyser(track, options) {
|
|
12276
13358
|
cleanup
|
12277
13359
|
};
|
12278
13360
|
}
|
13361
|
+
function isAudioCodec(maybeCodec) {
|
13362
|
+
return audioCodecs.includes(maybeCodec);
|
13363
|
+
}
|
12279
13364
|
function isVideoCodec(maybeCodec) {
|
12280
13365
|
return videoCodecs.includes(maybeCodec);
|
12281
13366
|
}
|
@@ -12570,8 +13655,16 @@ function getNewAudioContext() {
|
|
12570
13655
|
}
|
12571
13656
|
} catch (e) {
|
12572
13657
|
console.warn('Error trying to auto-resume audio context', e);
|
13658
|
+
} finally {
|
13659
|
+
(_a = window.document.body) === null || _a === void 0 ? void 0 : _a.removeEventListener('click', handleResume);
|
13660
|
+
}
|
13661
|
+
});
|
13662
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/BaseAudioContext/statechange_event
|
13663
|
+
audioContext.addEventListener('statechange', () => {
|
13664
|
+
var _a;
|
13665
|
+
if (audioContext.state === 'closed') {
|
13666
|
+
(_a = window.document.body) === null || _a === void 0 ? void 0 : _a.removeEventListener('click', handleResume);
|
12573
13667
|
}
|
12574
|
-
(_a = window.document.body) === null || _a === void 0 ? void 0 : _a.removeEventListener('click', handleResume);
|
12575
13668
|
});
|
12576
13669
|
window.document.body.addEventListener('click', handleResume);
|
12577
13670
|
}
|
@@ -12754,8 +13847,10 @@ function layerDimensionsFor(trackInfo, quality) {
|
|
12754
13847
|
* @experimental
|
12755
13848
|
*/
|
12756
13849
|
class E2EEManager extends eventsExports.EventEmitter {
|
12757
|
-
constructor(options) {
|
13850
|
+
constructor(options, dcEncryptionEnabled) {
|
12758
13851
|
super();
|
13852
|
+
this.decryptDataRequests = new Map();
|
13853
|
+
this.encryptDataRequests = new Map();
|
12759
13854
|
this.onWorkerMessage = ev => {
|
12760
13855
|
var _a, _b;
|
12761
13856
|
const {
|
@@ -12794,6 +13889,18 @@ class E2EEManager extends eventsExports.EventEmitter {
|
|
12794
13889
|
case 'ratchetKey':
|
12795
13890
|
this.keyProvider.emit(KeyProviderEvent.KeyRatcheted, data.ratchetResult, data.participantIdentity, data.keyIndex);
|
12796
13891
|
break;
|
13892
|
+
case 'decryptDataResponse':
|
13893
|
+
const decryptFuture = this.decryptDataRequests.get(data.uuid);
|
13894
|
+
if (decryptFuture === null || decryptFuture === void 0 ? void 0 : decryptFuture.resolve) {
|
13895
|
+
decryptFuture.resolve(data);
|
13896
|
+
}
|
13897
|
+
break;
|
13898
|
+
case 'encryptDataResponse':
|
13899
|
+
const encryptFuture = this.encryptDataRequests.get(data.uuid);
|
13900
|
+
if (encryptFuture === null || encryptFuture === void 0 ? void 0 : encryptFuture.resolve) {
|
13901
|
+
encryptFuture.resolve(data);
|
13902
|
+
}
|
13903
|
+
break;
|
12797
13904
|
}
|
12798
13905
|
};
|
12799
13906
|
this.onWorkerError = ev => {
|
@@ -12805,6 +13912,13 @@ class E2EEManager extends eventsExports.EventEmitter {
|
|
12805
13912
|
this.keyProvider = options.keyProvider;
|
12806
13913
|
this.worker = options.worker;
|
12807
13914
|
this.encryptionEnabled = false;
|
13915
|
+
this.dataChannelEncryptionEnabled = dcEncryptionEnabled;
|
13916
|
+
}
|
13917
|
+
get isEnabled() {
|
13918
|
+
return this.encryptionEnabled;
|
13919
|
+
}
|
13920
|
+
get isDataChannelEncryptionEnabled() {
|
13921
|
+
return this.isEnabled && this.dataChannelEncryptionEnabled;
|
12808
13922
|
}
|
12809
13923
|
/**
|
12810
13924
|
* @internal
|
@@ -12908,6 +14022,52 @@ class E2EEManager extends eventsExports.EventEmitter {
|
|
12908
14022
|
});
|
12909
14023
|
keyProvider.on(KeyProviderEvent.SetKey, keyInfo => this.postKey(keyInfo)).on(KeyProviderEvent.RatchetRequest, (participantId, keyIndex) => this.postRatchetRequest(participantId, keyIndex));
|
12910
14024
|
}
|
14025
|
+
encryptData(data) {
|
14026
|
+
return __awaiter(this, void 0, void 0, function* () {
|
14027
|
+
if (!this.worker) {
|
14028
|
+
throw Error('could not encrypt data, worker is missing');
|
14029
|
+
}
|
14030
|
+
const uuid = crypto.randomUUID();
|
14031
|
+
const msg = {
|
14032
|
+
kind: 'encryptDataRequest',
|
14033
|
+
data: {
|
14034
|
+
uuid,
|
14035
|
+
payload: data,
|
14036
|
+
participantIdentity: this.room.localParticipant.identity
|
14037
|
+
}
|
14038
|
+
};
|
14039
|
+
const future = new Future();
|
14040
|
+
future.onFinally = () => {
|
14041
|
+
this.encryptDataRequests.delete(uuid);
|
14042
|
+
};
|
14043
|
+
this.encryptDataRequests.set(uuid, future);
|
14044
|
+
this.worker.postMessage(msg);
|
14045
|
+
return future.promise;
|
14046
|
+
});
|
14047
|
+
}
|
14048
|
+
handleEncryptedData(payload, iv, participantIdentity, keyIndex) {
|
14049
|
+
if (!this.worker) {
|
14050
|
+
throw Error('could not handle encrypted data, worker is missing');
|
14051
|
+
}
|
14052
|
+
const uuid = crypto.randomUUID();
|
14053
|
+
const msg = {
|
14054
|
+
kind: 'decryptDataRequest',
|
14055
|
+
data: {
|
14056
|
+
uuid,
|
14057
|
+
payload,
|
14058
|
+
iv,
|
14059
|
+
participantIdentity,
|
14060
|
+
keyIndex
|
14061
|
+
}
|
14062
|
+
};
|
14063
|
+
const future = new Future();
|
14064
|
+
future.onFinally = () => {
|
14065
|
+
this.decryptDataRequests.delete(uuid);
|
14066
|
+
};
|
14067
|
+
this.decryptDataRequests.set(uuid, future);
|
14068
|
+
this.worker.postMessage(msg);
|
14069
|
+
return future.promise;
|
14070
|
+
}
|
12911
14071
|
postRatchetRequest(participantIdentity, keyIndex) {
|
12912
14072
|
if (!this.worker) {
|
12913
14073
|
throw Error('could not ratchet key, worker is missing');
|
@@ -16768,7 +17928,7 @@ class LocalAudioTrack extends LocalTrack {
|
|
16768
17928
|
const trackIsSilent = yield detectSilence(this);
|
16769
17929
|
if (trackIsSilent) {
|
16770
17930
|
if (!this.isMuted) {
|
16771
|
-
this.log.
|
17931
|
+
this.log.debug('silence detected on local audio track', this.logContext);
|
16772
17932
|
}
|
16773
17933
|
this.emit(TrackEvent.AudioSilenceDetected);
|
16774
17934
|
}
|
@@ -17856,7 +19016,7 @@ class RTCEngine extends eventsExports.EventEmitter {
|
|
17856
19016
|
}();
|
17857
19017
|
});
|
17858
19018
|
this.handleDataMessage = message => __awaiter(this, void 0, void 0, function* () {
|
17859
|
-
var _a, _b;
|
19019
|
+
var _a, _b, _c, _d, _e;
|
17860
19020
|
// make sure to respect incoming data message order by processing message events one after the other
|
17861
19021
|
const unlock = yield this.dataProcessLock.lock();
|
17862
19022
|
try {
|
@@ -17884,12 +19044,27 @@ class RTCEngine extends eventsExports.EventEmitter {
|
|
17884
19044
|
if (((_a = dp.value) === null || _a === void 0 ? void 0 : _a.case) === 'speaker') {
|
17885
19045
|
// dispatch speaker updates
|
17886
19046
|
this.emit(EngineEvent.ActiveSpeakersUpdate, dp.value.value.speakers);
|
19047
|
+
} else if (((_b = dp.value) === null || _b === void 0 ? void 0 : _b.case) === 'encryptedPacket') {
|
19048
|
+
if (!this.e2eeManager) {
|
19049
|
+
this.log.error('Received encrypted packet but E2EE not set up', this.logContext);
|
19050
|
+
return;
|
19051
|
+
}
|
19052
|
+
const decryptedData = yield (_c = this.e2eeManager) === null || _c === void 0 ? void 0 : _c.handleEncryptedData(dp.value.value.encryptedValue, dp.value.value.iv, dp.participantIdentity, dp.value.value.keyIndex);
|
19053
|
+
const decryptedPacket = EncryptedPacketPayload.fromBinary(decryptedData.payload);
|
19054
|
+
const newDp = new DataPacket({
|
19055
|
+
value: decryptedPacket.value
|
19056
|
+
});
|
19057
|
+
if (((_d = newDp.value) === null || _d === void 0 ? void 0 : _d.case) === 'user') {
|
19058
|
+
// compatibility
|
19059
|
+
applyUserDataCompat(newDp, newDp.value.value);
|
19060
|
+
}
|
19061
|
+
this.emit(EngineEvent.DataPacketReceived, newDp, dp.value.value.encryptionType);
|
17887
19062
|
} else {
|
17888
|
-
if (((
|
19063
|
+
if (((_e = dp.value) === null || _e === void 0 ? void 0 : _e.case) === 'user') {
|
17889
19064
|
// compatibility
|
17890
19065
|
applyUserDataCompat(dp, dp.value.value);
|
17891
19066
|
}
|
17892
|
-
this.emit(EngineEvent.DataPacketReceived, dp);
|
19067
|
+
this.emit(EngineEvent.DataPacketReceived, dp, Encryption_Type.NONE);
|
17893
19068
|
}
|
17894
19069
|
} finally {
|
17895
19070
|
unlock();
|
@@ -18002,7 +19177,6 @@ class RTCEngine extends eventsExports.EventEmitter {
|
|
18002
19177
|
this.client = new SignalClient(undefined, this.loggerOptions);
|
18003
19178
|
this.client.signalLatency = this.options.expSignalLatency;
|
18004
19179
|
this.reconnectPolicy = this.options.reconnectPolicy;
|
18005
|
-
this.registerOnLineListener();
|
18006
19180
|
this.closingLock = new _();
|
18007
19181
|
this.dataProcessLock = new _();
|
18008
19182
|
this.dcBufferStatus = new Map([[DataPacket_Kind.LOSSY, true], [DataPacket_Kind.RELIABLE, true]]);
|
@@ -18043,8 +19217,11 @@ class RTCEngine extends eventsExports.EventEmitter {
|
|
18043
19217
|
}
|
18044
19218
|
// create offer
|
18045
19219
|
if (!this.subscriberPrimary || joinResponse.fastPublish) {
|
18046
|
-
this.negotiate()
|
19220
|
+
this.negotiate().catch(err => {
|
19221
|
+
livekitLogger.error(err, this.logContext);
|
19222
|
+
});
|
18047
19223
|
}
|
19224
|
+
this.registerOnLineListener();
|
18048
19225
|
this.clientConfiguration = joinResponse.clientConfiguration;
|
18049
19226
|
this.emit(EngineEvent.SignalConnected, joinResponse);
|
18050
19227
|
return joinResponse;
|
@@ -18213,7 +19390,7 @@ class RTCEngine extends eventsExports.EventEmitter {
|
|
18213
19390
|
}
|
18214
19391
|
} else if (connectionState === PCTransportState.FAILED) {
|
18215
19392
|
// on Safari, PeerConnection will switch to 'disconnected' during renegotiation
|
18216
|
-
if (this.pcState === PCState.Connected) {
|
19393
|
+
if (this.pcState === PCState.Connected || this.pcState === PCState.Reconnecting) {
|
18217
19394
|
this.pcState = PCState.Disconnected;
|
18218
19395
|
this.handleDisconnect('peerconnection failed', subscriberState === 'failed' ? ReconnectReason.RR_SUBSCRIBER_FAILED : ReconnectReason.RR_PUBLISHER_FAILED);
|
18219
19396
|
}
|
@@ -18734,6 +19911,20 @@ class RTCEngine extends eventsExports.EventEmitter {
|
|
18734
19911
|
return __awaiter(this, void 0, void 0, function* () {
|
18735
19912
|
// make sure we do have a data connection
|
18736
19913
|
yield this.ensurePublisherConnected(kind);
|
19914
|
+
if (this.e2eeManager && this.e2eeManager.isDataChannelEncryptionEnabled) {
|
19915
|
+
const encryptablePacket = asEncryptablePacket(packet);
|
19916
|
+
if (encryptablePacket) {
|
19917
|
+
const encryptedData = yield this.e2eeManager.encryptData(encryptablePacket.toBinary());
|
19918
|
+
packet.value = {
|
19919
|
+
case: 'encryptedPacket',
|
19920
|
+
value: new EncryptedPacket({
|
19921
|
+
encryptedValue: encryptedData.payload,
|
19922
|
+
iv: encryptedData.iv,
|
19923
|
+
keyIndex: encryptedData.keyIndex
|
19924
|
+
})
|
19925
|
+
};
|
19926
|
+
}
|
19927
|
+
}
|
18737
19928
|
if (kind === DataPacket_Kind.RELIABLE) {
|
18738
19929
|
packet.sequence = this.reliableDataSequence;
|
18739
19930
|
this.reliableDataSequence += 1;
|
@@ -18810,7 +20001,9 @@ class RTCEngine extends eventsExports.EventEmitter {
|
|
18810
20001
|
}
|
18811
20002
|
if (needNegotiation) {
|
18812
20003
|
// start negotiation
|
18813
|
-
_this2.negotiate()
|
20004
|
+
_this2.negotiate().catch(err => {
|
20005
|
+
livekitLogger.error(err, _this2.logContext);
|
20006
|
+
});
|
18814
20007
|
}
|
18815
20008
|
const targetChannel = _this2.dataChannelForKind(kind, subscriber);
|
18816
20009
|
if ((targetChannel === null || targetChannel === void 0 ? void 0 : targetChannel.readyState) === 'open') {
|
@@ -19427,21 +20620,21 @@ class IncomingDataStreamManager {
|
|
19427
20620
|
}
|
19428
20621
|
}
|
19429
20622
|
}
|
19430
|
-
handleDataStreamPacket(packet) {
|
20623
|
+
handleDataStreamPacket(packet, encryptionType) {
|
19431
20624
|
return __awaiter(this, void 0, void 0, function* () {
|
19432
20625
|
switch (packet.value.case) {
|
19433
20626
|
case 'streamHeader':
|
19434
|
-
return this.handleStreamHeader(packet.value.value, packet.participantIdentity);
|
20627
|
+
return this.handleStreamHeader(packet.value.value, packet.participantIdentity, encryptionType);
|
19435
20628
|
case 'streamChunk':
|
19436
|
-
return this.handleStreamChunk(packet.value.value);
|
20629
|
+
return this.handleStreamChunk(packet.value.value, encryptionType);
|
19437
20630
|
case 'streamTrailer':
|
19438
|
-
return this.handleStreamTrailer(packet.value.value);
|
20631
|
+
return this.handleStreamTrailer(packet.value.value, encryptionType);
|
19439
20632
|
default:
|
19440
20633
|
throw new Error("DataPacket of value \"".concat(packet.value.case, "\" is not data stream related!"));
|
19441
20634
|
}
|
19442
20635
|
});
|
19443
20636
|
}
|
19444
|
-
handleStreamHeader(streamHeader, participantIdentity) {
|
20637
|
+
handleStreamHeader(streamHeader, participantIdentity, encryptionType) {
|
19445
20638
|
return __awaiter(this, void 0, void 0, function* () {
|
19446
20639
|
var _a;
|
19447
20640
|
if (streamHeader.contentHeader.case === 'byteHeader') {
|
@@ -19452,6 +20645,9 @@ class IncomingDataStreamManager {
|
|
19452
20645
|
}
|
19453
20646
|
let streamController;
|
19454
20647
|
const outOfBandFailureRejectingFuture = new Future();
|
20648
|
+
outOfBandFailureRejectingFuture.promise.catch(err => {
|
20649
|
+
this.log.error(err);
|
20650
|
+
});
|
19455
20651
|
const info = {
|
19456
20652
|
id: streamHeader.streamId,
|
19457
20653
|
name: (_a = streamHeader.contentHeader.value.name) !== null && _a !== void 0 ? _a : 'unknown',
|
@@ -19459,7 +20655,8 @@ class IncomingDataStreamManager {
|
|
19459
20655
|
size: streamHeader.totalLength ? Number(streamHeader.totalLength) : undefined,
|
19460
20656
|
topic: streamHeader.topic,
|
19461
20657
|
timestamp: bigIntToNumber(streamHeader.timestamp),
|
19462
|
-
attributes: streamHeader.attributes
|
20658
|
+
attributes: streamHeader.attributes,
|
20659
|
+
encryptionType
|
19463
20660
|
};
|
19464
20661
|
const stream = new ReadableStream({
|
19465
20662
|
start: controller => {
|
@@ -19487,13 +20684,17 @@ class IncomingDataStreamManager {
|
|
19487
20684
|
}
|
19488
20685
|
let streamController;
|
19489
20686
|
const outOfBandFailureRejectingFuture = new Future();
|
20687
|
+
outOfBandFailureRejectingFuture.promise.catch(err => {
|
20688
|
+
this.log.error(err);
|
20689
|
+
});
|
19490
20690
|
const info = {
|
19491
20691
|
id: streamHeader.streamId,
|
19492
20692
|
mimeType: streamHeader.mimeType,
|
19493
20693
|
size: streamHeader.totalLength ? Number(streamHeader.totalLength) : undefined,
|
19494
20694
|
topic: streamHeader.topic,
|
19495
20695
|
timestamp: Number(streamHeader.timestamp),
|
19496
|
-
attributes: streamHeader.attributes
|
20696
|
+
attributes: streamHeader.attributes,
|
20697
|
+
encryptionType
|
19497
20698
|
};
|
19498
20699
|
const stream = new ReadableStream({
|
19499
20700
|
start: controller => {
|
@@ -19516,34 +20717,46 @@ class IncomingDataStreamManager {
|
|
19516
20717
|
}
|
19517
20718
|
});
|
19518
20719
|
}
|
19519
|
-
handleStreamChunk(chunk) {
|
20720
|
+
handleStreamChunk(chunk, encryptionType) {
|
19520
20721
|
const fileBuffer = this.byteStreamControllers.get(chunk.streamId);
|
19521
20722
|
if (fileBuffer) {
|
19522
|
-
if (
|
20723
|
+
if (fileBuffer.info.encryptionType !== encryptionType) {
|
20724
|
+
fileBuffer.controller.error(new DataStreamError("Encryption type mismatch for stream ".concat(chunk.streamId, ". Expected ").concat(encryptionType, ", got ").concat(fileBuffer.info.encryptionType), DataStreamErrorReason.EncryptionTypeMismatch));
|
20725
|
+
this.byteStreamControllers.delete(chunk.streamId);
|
20726
|
+
} else if (chunk.content.length > 0) {
|
19523
20727
|
fileBuffer.controller.enqueue(chunk);
|
19524
20728
|
}
|
19525
20729
|
}
|
19526
20730
|
const textBuffer = this.textStreamControllers.get(chunk.streamId);
|
19527
20731
|
if (textBuffer) {
|
19528
|
-
if (
|
20732
|
+
if (textBuffer.info.encryptionType !== encryptionType) {
|
20733
|
+
textBuffer.controller.error(new DataStreamError("Encryption type mismatch for stream ".concat(chunk.streamId, ". Expected ").concat(encryptionType, ", got ").concat(textBuffer.info.encryptionType), DataStreamErrorReason.EncryptionTypeMismatch));
|
20734
|
+
this.textStreamControllers.delete(chunk.streamId);
|
20735
|
+
} else if (chunk.content.length > 0) {
|
19529
20736
|
textBuffer.controller.enqueue(chunk);
|
19530
20737
|
}
|
19531
20738
|
}
|
19532
20739
|
}
|
19533
|
-
handleStreamTrailer(trailer) {
|
20740
|
+
handleStreamTrailer(trailer, encryptionType) {
|
19534
20741
|
const textBuffer = this.textStreamControllers.get(trailer.streamId);
|
19535
20742
|
if (textBuffer) {
|
19536
|
-
textBuffer.info.
|
19537
|
-
|
19538
|
-
|
20743
|
+
if (textBuffer.info.encryptionType !== encryptionType) {
|
20744
|
+
textBuffer.controller.error(new DataStreamError("Encryption type mismatch for stream ".concat(trailer.streamId, ". Expected ").concat(encryptionType, ", got ").concat(textBuffer.info.encryptionType), DataStreamErrorReason.EncryptionTypeMismatch));
|
20745
|
+
} else {
|
20746
|
+
textBuffer.info.attributes = Object.assign(Object.assign({}, textBuffer.info.attributes), trailer.attributes);
|
20747
|
+
textBuffer.controller.close();
|
20748
|
+
this.textStreamControllers.delete(trailer.streamId);
|
20749
|
+
}
|
19539
20750
|
}
|
19540
20751
|
const fileBuffer = this.byteStreamControllers.get(trailer.streamId);
|
19541
20752
|
if (fileBuffer) {
|
19542
|
-
{
|
20753
|
+
if (fileBuffer.info.encryptionType !== encryptionType) {
|
20754
|
+
fileBuffer.controller.error(new DataStreamError("Encryption type mismatch for stream ".concat(trailer.streamId, ". Expected ").concat(encryptionType, ", got ").concat(fileBuffer.info.encryptionType), DataStreamErrorReason.EncryptionTypeMismatch));
|
20755
|
+
} else {
|
19543
20756
|
fileBuffer.info.attributes = Object.assign(Object.assign({}, fileBuffer.info.attributes), trailer.attributes);
|
19544
20757
|
fileBuffer.controller.close();
|
19545
|
-
this.byteStreamControllers.delete(trailer.streamId);
|
19546
20758
|
}
|
20759
|
+
this.byteStreamControllers.delete(trailer.streamId);
|
19547
20760
|
}
|
19548
20761
|
}
|
19549
20762
|
}
|
@@ -19630,7 +20843,7 @@ class OutgoingDataStreamManager {
|
|
19630
20843
|
*/
|
19631
20844
|
streamText(options) {
|
19632
20845
|
return __awaiter(this, void 0, void 0, function* () {
|
19633
|
-
var _a, _b;
|
20846
|
+
var _a, _b, _c;
|
19634
20847
|
const streamId = (_a = options === null || options === void 0 ? void 0 : options.streamId) !== null && _a !== void 0 ? _a : crypto.randomUUID();
|
19635
20848
|
const info = {
|
19636
20849
|
id: streamId,
|
@@ -19638,7 +20851,8 @@ class OutgoingDataStreamManager {
|
|
19638
20851
|
timestamp: Date.now(),
|
19639
20852
|
topic: (_b = options === null || options === void 0 ? void 0 : options.topic) !== null && _b !== void 0 ? _b : '',
|
19640
20853
|
size: options === null || options === void 0 ? void 0 : options.totalSize,
|
19641
|
-
attributes: options === null || options === void 0 ? void 0 : options.attributes
|
20854
|
+
attributes: options === null || options === void 0 ? void 0 : options.attributes,
|
20855
|
+
encryptionType: ((_c = this.engine.e2eeManager) === null || _c === void 0 ? void 0 : _c.isDataChannelEncryptionEnabled) ? Encryption_Type.GCM : Encryption_Type.NONE
|
19642
20856
|
};
|
19643
20857
|
const header = new DataStream_Header({
|
19644
20858
|
streamId,
|
@@ -19756,7 +20970,7 @@ class OutgoingDataStreamManager {
|
|
19756
20970
|
}
|
19757
20971
|
streamBytes(options) {
|
19758
20972
|
return __awaiter(this, void 0, void 0, function* () {
|
19759
|
-
var _a, _b, _c, _d, _e;
|
20973
|
+
var _a, _b, _c, _d, _e, _f;
|
19760
20974
|
const streamId = (_a = options === null || options === void 0 ? void 0 : options.streamId) !== null && _a !== void 0 ? _a : crypto.randomUUID();
|
19761
20975
|
const destinationIdentities = options === null || options === void 0 ? void 0 : options.destinationIdentities;
|
19762
20976
|
const info = {
|
@@ -19766,10 +20980,11 @@ class OutgoingDataStreamManager {
|
|
19766
20980
|
timestamp: Date.now(),
|
19767
20981
|
attributes: options === null || options === void 0 ? void 0 : options.attributes,
|
19768
20982
|
size: options === null || options === void 0 ? void 0 : options.totalSize,
|
19769
|
-
name: (_d = options === null || options === void 0 ? void 0 : options.name) !== null && _d !== void 0 ? _d : 'unknown'
|
20983
|
+
name: (_d = options === null || options === void 0 ? void 0 : options.name) !== null && _d !== void 0 ? _d : 'unknown',
|
20984
|
+
encryptionType: ((_e = this.engine.e2eeManager) === null || _e === void 0 ? void 0 : _e.isDataChannelEncryptionEnabled) ? Encryption_Type.GCM : Encryption_Type.NONE
|
19770
20985
|
};
|
19771
20986
|
const header = new DataStream_Header({
|
19772
|
-
totalLength: numberToBigInt((
|
20987
|
+
totalLength: numberToBigInt((_f = info.size) !== null && _f !== void 0 ? _f : 0),
|
19773
20988
|
mimeType: info.mimeType,
|
19774
20989
|
streamId,
|
19775
20990
|
topic: info.topic,
|
@@ -22523,16 +23738,17 @@ class LocalParticipant extends Participant {
|
|
22523
23738
|
const kind = options.reliable ? DataPacket_Kind.RELIABLE : DataPacket_Kind.LOSSY;
|
22524
23739
|
const destinationIdentities = options.destinationIdentities;
|
22525
23740
|
const topic = options.topic;
|
23741
|
+
let userPacket = new UserPacket({
|
23742
|
+
participantIdentity: _this4.identity,
|
23743
|
+
payload: data,
|
23744
|
+
destinationIdentities,
|
23745
|
+
topic
|
23746
|
+
});
|
22526
23747
|
const packet = new DataPacket({
|
22527
23748
|
kind: kind,
|
22528
23749
|
value: {
|
22529
23750
|
case: 'user',
|
22530
|
-
value:
|
22531
|
-
participantIdentity: _this4.identity,
|
22532
|
-
payload: data,
|
22533
|
-
destinationIdentities,
|
22534
|
-
topic
|
22535
|
-
})
|
23751
|
+
value: userPacket
|
22536
23752
|
}
|
22537
23753
|
});
|
22538
23754
|
yield _this4.engine.sendDataPacket(packet, kind);
|
@@ -23457,6 +24673,9 @@ const connectionReconcileFrequency = 4 * 1000;
|
|
23457
24673
|
* @noInheritDoc
|
23458
24674
|
*/
|
23459
24675
|
class Room extends eventsExports.EventEmitter {
|
24676
|
+
get hasE2EESetup() {
|
24677
|
+
return this.e2eeManager !== undefined;
|
24678
|
+
}
|
23460
24679
|
/**
|
23461
24680
|
* Creates a new Room, the primary construct for a LiveKit session.
|
23462
24681
|
* @param options
|
@@ -23617,7 +24836,7 @@ class Room extends eventsExports.EventEmitter {
|
|
23617
24836
|
this.localParticipant.sid = pi.sid;
|
23618
24837
|
this.localParticipant.identity = pi.identity;
|
23619
24838
|
this.localParticipant.setEnabledPublishCodecs(joinResponse.enabledPublishCodecs);
|
23620
|
-
if (this.
|
24839
|
+
if (this.e2eeManager) {
|
23621
24840
|
try {
|
23622
24841
|
this.e2eeManager.setSifTrailer(joinResponse.sifTrailer);
|
23623
24842
|
} catch (e) {
|
@@ -24005,11 +25224,11 @@ class Room extends eventsExports.EventEmitter {
|
|
24005
25224
|
}
|
24006
25225
|
pub.setSubscriptionError(update.err);
|
24007
25226
|
};
|
24008
|
-
this.handleDataPacket = packet => {
|
25227
|
+
this.handleDataPacket = (packet, encryptionType) => {
|
24009
25228
|
// find the participant
|
24010
25229
|
const participant = this.remoteParticipants.get(packet.participantIdentity);
|
24011
25230
|
if (packet.value.case === 'user') {
|
24012
|
-
this.handleUserPacket(participant, packet.value.value, packet.kind);
|
25231
|
+
this.handleUserPacket(participant, packet.value.value, packet.kind, encryptionType);
|
24013
25232
|
} else if (packet.value.case === 'transcription') {
|
24014
25233
|
this.handleTranscription(participant, packet.value.value);
|
24015
25234
|
} else if (packet.value.case === 'sipDtmf') {
|
@@ -24019,16 +25238,16 @@ class Room extends eventsExports.EventEmitter {
|
|
24019
25238
|
} else if (packet.value.case === 'metrics') {
|
24020
25239
|
this.handleMetrics(packet.value.value, participant);
|
24021
25240
|
} else if (packet.value.case === 'streamHeader' || packet.value.case === 'streamChunk' || packet.value.case === 'streamTrailer') {
|
24022
|
-
this.handleDataStream(packet);
|
25241
|
+
this.handleDataStream(packet, encryptionType);
|
24023
25242
|
} else if (packet.value.case === 'rpcRequest') {
|
24024
25243
|
const rpc = packet.value.value;
|
24025
25244
|
this.handleIncomingRpcRequest(packet.participantIdentity, rpc.id, rpc.method, rpc.payload, rpc.responseTimeoutMs, rpc.version);
|
24026
25245
|
}
|
24027
25246
|
};
|
24028
|
-
this.handleUserPacket = (participant, userPacket, kind) => {
|
24029
|
-
this.emit(RoomEvent.DataReceived, userPacket.payload, participant, kind, userPacket.topic);
|
25247
|
+
this.handleUserPacket = (participant, userPacket, kind, encryptionType) => {
|
25248
|
+
this.emit(RoomEvent.DataReceived, userPacket.payload, participant, kind, userPacket.topic, encryptionType);
|
24030
25249
|
// also emit on the participant
|
24031
|
-
participant === null || participant === void 0 ? void 0 : participant.emit(ParticipantEvent.DataReceived, userPacket.payload, kind);
|
25250
|
+
participant === null || participant === void 0 ? void 0 : participant.emit(ParticipantEvent.DataReceived, userPacket.payload, kind, encryptionType);
|
24032
25251
|
};
|
24033
25252
|
this.handleSipDtmf = (participant, dtmf) => {
|
24034
25253
|
this.emit(RoomEvent.SipDTMFReceived, dtmf, participant);
|
@@ -24051,8 +25270,8 @@ class Room extends eventsExports.EventEmitter {
|
|
24051
25270
|
this.handleMetrics = (metrics, participant) => {
|
24052
25271
|
this.emit(RoomEvent.MetricsReceived, metrics, participant);
|
24053
25272
|
};
|
24054
|
-
this.handleDataStream = packet => {
|
24055
|
-
this.incomingDataStreamManager.handleDataStreamPacket(packet);
|
25273
|
+
this.handleDataStream = (packet, encryptionType) => {
|
25274
|
+
this.incomingDataStreamManager.handleDataStreamPacket(packet, encryptionType);
|
24056
25275
|
};
|
24057
25276
|
this.bufferedSegments = new Map();
|
24058
25277
|
this.handleAudioPlaybackStarted = () => {
|
@@ -24193,6 +25412,10 @@ class Room extends eventsExports.EventEmitter {
|
|
24193
25412
|
this.outgoingDataStreamManager = new OutgoingDataStreamManager(this.engine, this.log);
|
24194
25413
|
this.disconnectLock = new _();
|
24195
25414
|
this.localParticipant = new LocalParticipant('', '', this.engine, this.options, this.rpcHandlers, this.outgoingDataStreamManager);
|
25415
|
+
if (this.options.e2ee || this.options.encryption) {
|
25416
|
+
this.setupE2EE();
|
25417
|
+
}
|
25418
|
+
this.engine.e2eeManager = this.e2eeManager;
|
24196
25419
|
if (this.options.videoCaptureDefaults.deviceId) {
|
24197
25420
|
this.localParticipant.activeDeviceMap.set('videoinput', unwrapConstraint(this.options.videoCaptureDefaults.deviceId));
|
24198
25421
|
}
|
@@ -24202,9 +25425,6 @@ class Room extends eventsExports.EventEmitter {
|
|
24202
25425
|
if ((_b = this.options.audioOutput) === null || _b === void 0 ? void 0 : _b.deviceId) {
|
24203
25426
|
this.switchActiveDevice('audiooutput', unwrapConstraint(this.options.audioOutput.deviceId)).catch(e => this.log.warn("Could not set audio output: ".concat(e.message), this.logContext));
|
24204
25427
|
}
|
24205
|
-
if (this.options.e2ee) {
|
24206
|
-
this.setupE2EE();
|
24207
|
-
}
|
24208
25428
|
if (isWeb()) {
|
24209
25429
|
const abortController = new AbortController();
|
24210
25430
|
// in order to catch device changes prior to room connection we need to register the event in the constructor
|
@@ -24286,12 +25506,15 @@ class Room extends eventsExports.EventEmitter {
|
|
24286
25506
|
});
|
24287
25507
|
}
|
24288
25508
|
setupE2EE() {
|
25509
|
+
// when encryption is enabled via `options.encryption`, we enable data channel encryption
|
24289
25510
|
var _a;
|
24290
|
-
|
24291
|
-
|
24292
|
-
|
25511
|
+
const dcEncryptionEnabled = !!this.options.encryption;
|
25512
|
+
const e2eeOptions = this.options.encryption || this.options.e2ee;
|
25513
|
+
if (e2eeOptions) {
|
25514
|
+
if ('e2eeManager' in e2eeOptions) {
|
25515
|
+
this.e2eeManager = e2eeOptions.e2eeManager;
|
24293
25516
|
} else {
|
24294
|
-
this.e2eeManager = new E2EEManager(
|
25517
|
+
this.e2eeManager = new E2EEManager(e2eeOptions, dcEncryptionEnabled);
|
24295
25518
|
}
|
24296
25519
|
this.e2eeManager.on(EncryptionEvent.ParticipantEncryptionStatusChanged, (enabled, participant) => {
|
24297
25520
|
if (isLocalParticipant(participant)) {
|
@@ -24369,6 +25592,7 @@ class Room extends eventsExports.EventEmitter {
|
|
24369
25592
|
return;
|
24370
25593
|
}
|
24371
25594
|
this.engine = new RTCEngine(this.options);
|
25595
|
+
this.engine.e2eeManager = this.e2eeManager;
|
24372
25596
|
this.engine.on(EngineEvent.ParticipantUpdate, this.handleParticipantUpdates).on(EngineEvent.RoomUpdate, this.handleRoomUpdate).on(EngineEvent.SpeakersChanged, this.handleSpeakersChanged).on(EngineEvent.StreamStateChanged, this.handleStreamStateUpdate).on(EngineEvent.ConnectionQualityUpdate, this.handleConnectionQualityUpdate).on(EngineEvent.SubscriptionError, this.handleSubscriptionError).on(EngineEvent.SubscriptionPermissionUpdate, this.handleSubscriptionPermissionUpdate).on(EngineEvent.MediaTrackAdded, (mediaTrack, stream, receiver) => {
|
24373
25597
|
this.onTrackAdded(mediaTrack, stream, receiver);
|
24374
25598
|
}).on(EngineEvent.Disconnected, reason => {
|
@@ -25769,6 +26993,11 @@ class PublishVideoCheck extends Checker {
|
|
25769
26993
|
const video = document.createElement('video');
|
25770
26994
|
video.srcObject = stream;
|
25771
26995
|
video.muted = true;
|
26996
|
+
video.autoplay = true;
|
26997
|
+
video.playsInline = true;
|
26998
|
+
// For iOS Safari
|
26999
|
+
video.setAttribute('playsinline', 'true');
|
27000
|
+
document.body.appendChild(video);
|
25772
27001
|
yield new Promise(resolve => {
|
25773
27002
|
video.onplay = () => {
|
25774
27003
|
setTimeout(() => {
|
@@ -26088,6 +27317,521 @@ class ConnectionCheck extends eventsExports.EventEmitter {
|
|
26088
27317
|
}
|
26089
27318
|
}
|
26090
27319
|
|
27320
|
+
/** A Fixed TokenSource is a token source that takes no parameters and returns a completely
|
27321
|
+
* independently derived value on each fetch() call.
|
27322
|
+
*
|
27323
|
+
* The most common downstream implementer is {@link TokenSourceLiteral}.
|
27324
|
+
*/
|
27325
|
+
class TokenSourceFixed {}
|
27326
|
+
/** A Configurable TokenSource is a token source that takes a
|
27327
|
+
* {@link TokenSourceFetchOptions} object as input and returns a deterministic
|
27328
|
+
* {@link TokenSourceResponseObject} output based on the options specified.
|
27329
|
+
*
|
27330
|
+
* For example, if options.participantName is set, it should be expected that
|
27331
|
+
* all tokens that are generated will have participant name field set to the
|
27332
|
+
* provided value.
|
27333
|
+
*
|
27334
|
+
* A few common downstream implementers are {@link TokenSourceEndpoint}
|
27335
|
+
* and {@link TokenSourceCustom}.
|
27336
|
+
*/
|
27337
|
+
class TokenSourceConfigurable {}
|
27338
|
+
|
27339
|
+
function _defineProperty(e, r, t) {
|
27340
|
+
return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
|
27341
|
+
value: t,
|
27342
|
+
enumerable: true,
|
27343
|
+
configurable: true,
|
27344
|
+
writable: true
|
27345
|
+
}) : e[r] = t, e;
|
27346
|
+
}
|
27347
|
+
function _toPrimitive(t, r) {
|
27348
|
+
if ("object" != typeof t || !t) return t;
|
27349
|
+
var e = t[Symbol.toPrimitive];
|
27350
|
+
if (void 0 !== e) {
|
27351
|
+
var i = e.call(t, r);
|
27352
|
+
if ("object" != typeof i) return i;
|
27353
|
+
throw new TypeError("@@toPrimitive must return a primitive value.");
|
27354
|
+
}
|
27355
|
+
return ("string" === r ? String : Number)(t);
|
27356
|
+
}
|
27357
|
+
function _toPropertyKey(t) {
|
27358
|
+
var i = _toPrimitive(t, "string");
|
27359
|
+
return "symbol" == typeof i ? i : i + "";
|
27360
|
+
}
|
27361
|
+
|
27362
|
+
new TextEncoder();
|
27363
|
+
const decoder = new TextDecoder();
|
27364
|
+
|
27365
|
+
function decodeBase64(encoded) {
|
27366
|
+
if (Uint8Array.fromBase64) {
|
27367
|
+
return Uint8Array.fromBase64(encoded);
|
27368
|
+
}
|
27369
|
+
const binary = atob(encoded);
|
27370
|
+
const bytes = new Uint8Array(binary.length);
|
27371
|
+
for (let i = 0; i < binary.length; i++) {
|
27372
|
+
bytes[i] = binary.charCodeAt(i);
|
27373
|
+
}
|
27374
|
+
return bytes;
|
27375
|
+
}
|
27376
|
+
|
27377
|
+
function decode(input) {
|
27378
|
+
if (Uint8Array.fromBase64) {
|
27379
|
+
return Uint8Array.fromBase64(typeof input === 'string' ? input : decoder.decode(input), {
|
27380
|
+
alphabet: 'base64url'
|
27381
|
+
});
|
27382
|
+
}
|
27383
|
+
let encoded = input;
|
27384
|
+
if (encoded instanceof Uint8Array) {
|
27385
|
+
encoded = decoder.decode(encoded);
|
27386
|
+
}
|
27387
|
+
encoded = encoded.replace(/-/g, '+').replace(/_/g, '/').replace(/\s/g, '');
|
27388
|
+
try {
|
27389
|
+
return decodeBase64(encoded);
|
27390
|
+
} catch (_unused) {
|
27391
|
+
throw new TypeError('The input to be decoded is not correctly encoded.');
|
27392
|
+
}
|
27393
|
+
}
|
27394
|
+
|
27395
|
+
class JOSEError extends Error {
|
27396
|
+
constructor(message, options) {
|
27397
|
+
var _Error$captureStackTr;
|
27398
|
+
super(message, options);
|
27399
|
+
_defineProperty(this, "code", 'ERR_JOSE_GENERIC');
|
27400
|
+
this.name = this.constructor.name;
|
27401
|
+
(_Error$captureStackTr = Error.captureStackTrace) === null || _Error$captureStackTr === void 0 || _Error$captureStackTr.call(Error, this, this.constructor);
|
27402
|
+
}
|
27403
|
+
}
|
27404
|
+
_defineProperty(JOSEError, "code", 'ERR_JOSE_GENERIC');
|
27405
|
+
class JWTClaimValidationFailed extends JOSEError {
|
27406
|
+
constructor(message, payload) {
|
27407
|
+
let claim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'unspecified';
|
27408
|
+
let reason = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unspecified';
|
27409
|
+
super(message, {
|
27410
|
+
cause: {
|
27411
|
+
claim,
|
27412
|
+
reason,
|
27413
|
+
payload
|
27414
|
+
}
|
27415
|
+
});
|
27416
|
+
_defineProperty(this, "code", 'ERR_JWT_CLAIM_VALIDATION_FAILED');
|
27417
|
+
_defineProperty(this, "claim", void 0);
|
27418
|
+
_defineProperty(this, "reason", void 0);
|
27419
|
+
_defineProperty(this, "payload", void 0);
|
27420
|
+
this.claim = claim;
|
27421
|
+
this.reason = reason;
|
27422
|
+
this.payload = payload;
|
27423
|
+
}
|
27424
|
+
}
|
27425
|
+
_defineProperty(JWTClaimValidationFailed, "code", 'ERR_JWT_CLAIM_VALIDATION_FAILED');
|
27426
|
+
class JWTExpired extends JOSEError {
|
27427
|
+
constructor(message, payload) {
|
27428
|
+
let claim = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'unspecified';
|
27429
|
+
let reason = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'unspecified';
|
27430
|
+
super(message, {
|
27431
|
+
cause: {
|
27432
|
+
claim,
|
27433
|
+
reason,
|
27434
|
+
payload
|
27435
|
+
}
|
27436
|
+
});
|
27437
|
+
_defineProperty(this, "code", 'ERR_JWT_EXPIRED');
|
27438
|
+
_defineProperty(this, "claim", void 0);
|
27439
|
+
_defineProperty(this, "reason", void 0);
|
27440
|
+
_defineProperty(this, "payload", void 0);
|
27441
|
+
this.claim = claim;
|
27442
|
+
this.reason = reason;
|
27443
|
+
this.payload = payload;
|
27444
|
+
}
|
27445
|
+
}
|
27446
|
+
_defineProperty(JWTExpired, "code", 'ERR_JWT_EXPIRED');
|
27447
|
+
class JOSEAlgNotAllowed extends JOSEError {
|
27448
|
+
constructor() {
|
27449
|
+
super(...arguments);
|
27450
|
+
_defineProperty(this, "code", 'ERR_JOSE_ALG_NOT_ALLOWED');
|
27451
|
+
}
|
27452
|
+
}
|
27453
|
+
_defineProperty(JOSEAlgNotAllowed, "code", 'ERR_JOSE_ALG_NOT_ALLOWED');
|
27454
|
+
class JOSENotSupported extends JOSEError {
|
27455
|
+
constructor() {
|
27456
|
+
super(...arguments);
|
27457
|
+
_defineProperty(this, "code", 'ERR_JOSE_NOT_SUPPORTED');
|
27458
|
+
}
|
27459
|
+
}
|
27460
|
+
_defineProperty(JOSENotSupported, "code", 'ERR_JOSE_NOT_SUPPORTED');
|
27461
|
+
class JWEDecryptionFailed extends JOSEError {
|
27462
|
+
constructor() {
|
27463
|
+
let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'decryption operation failed';
|
27464
|
+
let options = arguments.length > 1 ? arguments[1] : undefined;
|
27465
|
+
super(message, options);
|
27466
|
+
_defineProperty(this, "code", 'ERR_JWE_DECRYPTION_FAILED');
|
27467
|
+
}
|
27468
|
+
}
|
27469
|
+
_defineProperty(JWEDecryptionFailed, "code", 'ERR_JWE_DECRYPTION_FAILED');
|
27470
|
+
class JWEInvalid extends JOSEError {
|
27471
|
+
constructor() {
|
27472
|
+
super(...arguments);
|
27473
|
+
_defineProperty(this, "code", 'ERR_JWE_INVALID');
|
27474
|
+
}
|
27475
|
+
}
|
27476
|
+
_defineProperty(JWEInvalid, "code", 'ERR_JWE_INVALID');
|
27477
|
+
class JWSInvalid extends JOSEError {
|
27478
|
+
constructor() {
|
27479
|
+
super(...arguments);
|
27480
|
+
_defineProperty(this, "code", 'ERR_JWS_INVALID');
|
27481
|
+
}
|
27482
|
+
}
|
27483
|
+
_defineProperty(JWSInvalid, "code", 'ERR_JWS_INVALID');
|
27484
|
+
class JWTInvalid extends JOSEError {
|
27485
|
+
constructor() {
|
27486
|
+
super(...arguments);
|
27487
|
+
_defineProperty(this, "code", 'ERR_JWT_INVALID');
|
27488
|
+
}
|
27489
|
+
}
|
27490
|
+
_defineProperty(JWTInvalid, "code", 'ERR_JWT_INVALID');
|
27491
|
+
class JWKInvalid extends JOSEError {
|
27492
|
+
constructor() {
|
27493
|
+
super(...arguments);
|
27494
|
+
_defineProperty(this, "code", 'ERR_JWK_INVALID');
|
27495
|
+
}
|
27496
|
+
}
|
27497
|
+
_defineProperty(JWKInvalid, "code", 'ERR_JWK_INVALID');
|
27498
|
+
class JWKSInvalid extends JOSEError {
|
27499
|
+
constructor() {
|
27500
|
+
super(...arguments);
|
27501
|
+
_defineProperty(this, "code", 'ERR_JWKS_INVALID');
|
27502
|
+
}
|
27503
|
+
}
|
27504
|
+
_defineProperty(JWKSInvalid, "code", 'ERR_JWKS_INVALID');
|
27505
|
+
class JWKSNoMatchingKey extends JOSEError {
|
27506
|
+
constructor() {
|
27507
|
+
let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'no applicable key found in the JSON Web Key Set';
|
27508
|
+
let options = arguments.length > 1 ? arguments[1] : undefined;
|
27509
|
+
super(message, options);
|
27510
|
+
_defineProperty(this, "code", 'ERR_JWKS_NO_MATCHING_KEY');
|
27511
|
+
}
|
27512
|
+
}
|
27513
|
+
_defineProperty(JWKSNoMatchingKey, "code", 'ERR_JWKS_NO_MATCHING_KEY');
|
27514
|
+
class JWKSMultipleMatchingKeys extends JOSEError {
|
27515
|
+
constructor() {
|
27516
|
+
let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'multiple matching keys found in the JSON Web Key Set';
|
27517
|
+
let options = arguments.length > 1 ? arguments[1] : undefined;
|
27518
|
+
super(message, options);
|
27519
|
+
_defineProperty(this, Symbol.asyncIterator, void 0);
|
27520
|
+
_defineProperty(this, "code", 'ERR_JWKS_MULTIPLE_MATCHING_KEYS');
|
27521
|
+
}
|
27522
|
+
}
|
27523
|
+
_defineProperty(JWKSMultipleMatchingKeys, "code", 'ERR_JWKS_MULTIPLE_MATCHING_KEYS');
|
27524
|
+
class JWKSTimeout extends JOSEError {
|
27525
|
+
constructor() {
|
27526
|
+
let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'request timed out';
|
27527
|
+
let options = arguments.length > 1 ? arguments[1] : undefined;
|
27528
|
+
super(message, options);
|
27529
|
+
_defineProperty(this, "code", 'ERR_JWKS_TIMEOUT');
|
27530
|
+
}
|
27531
|
+
}
|
27532
|
+
_defineProperty(JWKSTimeout, "code", 'ERR_JWKS_TIMEOUT');
|
27533
|
+
class JWSSignatureVerificationFailed extends JOSEError {
|
27534
|
+
constructor() {
|
27535
|
+
let message = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'signature verification failed';
|
27536
|
+
let options = arguments.length > 1 ? arguments[1] : undefined;
|
27537
|
+
super(message, options);
|
27538
|
+
_defineProperty(this, "code", 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED');
|
27539
|
+
}
|
27540
|
+
}
|
27541
|
+
_defineProperty(JWSSignatureVerificationFailed, "code", 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED');
|
27542
|
+
|
27543
|
+
function isObjectLike(value) {
|
27544
|
+
return typeof value === 'object' && value !== null;
|
27545
|
+
}
|
27546
|
+
var isObject = input => {
|
27547
|
+
if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {
|
27548
|
+
return false;
|
27549
|
+
}
|
27550
|
+
if (Object.getPrototypeOf(input) === null) {
|
27551
|
+
return true;
|
27552
|
+
}
|
27553
|
+
let proto = input;
|
27554
|
+
while (Object.getPrototypeOf(proto) !== null) {
|
27555
|
+
proto = Object.getPrototypeOf(proto);
|
27556
|
+
}
|
27557
|
+
return Object.getPrototypeOf(input) === proto;
|
27558
|
+
};
|
27559
|
+
|
27560
|
+
function decodeJwt(jwt) {
|
27561
|
+
if (typeof jwt !== 'string') throw new JWTInvalid('JWTs must use Compact JWS serialization, JWT must be a string');
|
27562
|
+
const {
|
27563
|
+
1: payload,
|
27564
|
+
length
|
27565
|
+
} = jwt.split('.');
|
27566
|
+
if (length === 5) throw new JWTInvalid('Only JWTs using Compact JWS serialization can be decoded');
|
27567
|
+
if (length !== 3) throw new JWTInvalid('Invalid JWT');
|
27568
|
+
if (!payload) throw new JWTInvalid('JWTs must contain a payload');
|
27569
|
+
let decoded;
|
27570
|
+
try {
|
27571
|
+
decoded = decode(payload);
|
27572
|
+
} catch (_unused) {
|
27573
|
+
throw new JWTInvalid('Failed to base64url decode the payload');
|
27574
|
+
}
|
27575
|
+
let result;
|
27576
|
+
try {
|
27577
|
+
result = JSON.parse(decoder.decode(decoded));
|
27578
|
+
} catch (_unused2) {
|
27579
|
+
throw new JWTInvalid('Failed to parse the decoded payload as JSON');
|
27580
|
+
}
|
27581
|
+
if (!isObject(result)) throw new JWTInvalid('Invalid JWT Claims Set');
|
27582
|
+
return result;
|
27583
|
+
}
|
27584
|
+
|
27585
|
+
const ONE_SECOND_IN_MILLISECONDS = 1000;
|
27586
|
+
const ONE_MINUTE_IN_MILLISECONDS = 60 * ONE_SECOND_IN_MILLISECONDS;
|
27587
|
+
function isResponseExpired(response) {
|
27588
|
+
const jwtPayload = decodeTokenPayload(response.participantToken);
|
27589
|
+
if (!(jwtPayload === null || jwtPayload === void 0 ? void 0 : jwtPayload.exp)) {
|
27590
|
+
return true;
|
27591
|
+
}
|
27592
|
+
const expInMilliseconds = jwtPayload.exp * ONE_SECOND_IN_MILLISECONDS;
|
27593
|
+
const expiresAt = new Date(expInMilliseconds - ONE_MINUTE_IN_MILLISECONDS);
|
27594
|
+
const now = new Date();
|
27595
|
+
return expiresAt >= now;
|
27596
|
+
}
|
27597
|
+
function decodeTokenPayload(token) {
|
27598
|
+
const payload = decodeJwt(token);
|
27599
|
+
const {
|
27600
|
+
roomConfig
|
27601
|
+
} = payload,
|
27602
|
+
rest = __rest(payload, ["roomConfig"]);
|
27603
|
+
const mappedPayload = Object.assign(Object.assign({}, rest), {
|
27604
|
+
roomConfig: payload.roomConfig ? RoomConfiguration.fromJson(payload.roomConfig) : undefined
|
27605
|
+
});
|
27606
|
+
return mappedPayload;
|
27607
|
+
}
|
27608
|
+
|
27609
|
+
/** A TokenSourceCached is a TokenSource which caches the last {@link TokenSourceResponseObject} value and returns it
|
27610
|
+
* until a) it expires or b) the {@link TokenSourceFetchOptions} provided to .fetch(...) change. */
|
27611
|
+
class TokenSourceCached extends TokenSourceConfigurable {
|
27612
|
+
constructor() {
|
27613
|
+
super(...arguments);
|
27614
|
+
this.cachedFetchOptions = null;
|
27615
|
+
this.cachedResponse = null;
|
27616
|
+
this.fetchMutex = new _();
|
27617
|
+
}
|
27618
|
+
isSameAsCachedFetchOptions(options) {
|
27619
|
+
if (!this.cachedFetchOptions) {
|
27620
|
+
return false;
|
27621
|
+
}
|
27622
|
+
for (const key of Object.keys(this.cachedFetchOptions)) {
|
27623
|
+
switch (key) {
|
27624
|
+
case 'roomName':
|
27625
|
+
case 'participantName':
|
27626
|
+
case 'participantIdentity':
|
27627
|
+
case 'participantMetadata':
|
27628
|
+
case 'participantAttributes':
|
27629
|
+
case 'agentName':
|
27630
|
+
case 'agentMetadata':
|
27631
|
+
if (this.cachedFetchOptions[key] !== options[key]) {
|
27632
|
+
return false;
|
27633
|
+
}
|
27634
|
+
break;
|
27635
|
+
default:
|
27636
|
+
// ref: https://stackoverflow.com/a/58009992
|
27637
|
+
const exhaustiveCheckedKey = key;
|
27638
|
+
throw new Error("Options key ".concat(exhaustiveCheckedKey, " not being checked for equality!"));
|
27639
|
+
}
|
27640
|
+
}
|
27641
|
+
return true;
|
27642
|
+
}
|
27643
|
+
shouldReturnCachedValueFromFetch(fetchOptions) {
|
27644
|
+
if (!this.cachedResponse) {
|
27645
|
+
return false;
|
27646
|
+
}
|
27647
|
+
if (isResponseExpired(this.cachedResponse)) {
|
27648
|
+
return false;
|
27649
|
+
}
|
27650
|
+
if (this.isSameAsCachedFetchOptions(fetchOptions)) {
|
27651
|
+
return false;
|
27652
|
+
}
|
27653
|
+
return true;
|
27654
|
+
}
|
27655
|
+
getCachedResponseJwtPayload() {
|
27656
|
+
if (!this.cachedResponse) {
|
27657
|
+
return null;
|
27658
|
+
}
|
27659
|
+
return decodeTokenPayload(this.cachedResponse.participantToken);
|
27660
|
+
}
|
27661
|
+
fetch(options) {
|
27662
|
+
return __awaiter(this, void 0, void 0, function* () {
|
27663
|
+
const unlock = yield this.fetchMutex.lock();
|
27664
|
+
try {
|
27665
|
+
if (this.shouldReturnCachedValueFromFetch(options)) {
|
27666
|
+
return this.cachedResponse.toJson();
|
27667
|
+
}
|
27668
|
+
this.cachedFetchOptions = options;
|
27669
|
+
const tokenResponse = yield this.update(options);
|
27670
|
+
this.cachedResponse = tokenResponse;
|
27671
|
+
return tokenResponse.toJson();
|
27672
|
+
} finally {
|
27673
|
+
unlock();
|
27674
|
+
}
|
27675
|
+
});
|
27676
|
+
}
|
27677
|
+
}
|
27678
|
+
class TokenSourceLiteral extends TokenSourceFixed {
|
27679
|
+
constructor(literalOrFn) {
|
27680
|
+
super();
|
27681
|
+
this.literalOrFn = literalOrFn;
|
27682
|
+
}
|
27683
|
+
fetch() {
|
27684
|
+
return __awaiter(this, void 0, void 0, function* () {
|
27685
|
+
if (typeof this.literalOrFn === 'function') {
|
27686
|
+
return this.literalOrFn();
|
27687
|
+
} else {
|
27688
|
+
return this.literalOrFn;
|
27689
|
+
}
|
27690
|
+
});
|
27691
|
+
}
|
27692
|
+
}
|
27693
|
+
class TokenSourceCustom extends TokenSourceCached {
|
27694
|
+
constructor(customFn) {
|
27695
|
+
super();
|
27696
|
+
this.customFn = customFn;
|
27697
|
+
}
|
27698
|
+
update(options) {
|
27699
|
+
return __awaiter(this, void 0, void 0, function* () {
|
27700
|
+
const resultMaybePromise = this.customFn(options);
|
27701
|
+
let result;
|
27702
|
+
if (resultMaybePromise instanceof Promise) {
|
27703
|
+
result = yield resultMaybePromise;
|
27704
|
+
} else {
|
27705
|
+
result = resultMaybePromise;
|
27706
|
+
}
|
27707
|
+
return TokenSourceResponse.fromJson(result, {
|
27708
|
+
// NOTE: it could be possible that the response body could contain more fields than just
|
27709
|
+
// what's in TokenSourceResponse depending on the implementation
|
27710
|
+
ignoreUnknownFields: true
|
27711
|
+
});
|
27712
|
+
});
|
27713
|
+
}
|
27714
|
+
}
|
27715
|
+
class TokenSourceEndpoint extends TokenSourceCached {
|
27716
|
+
constructor(url) {
|
27717
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
27718
|
+
super();
|
27719
|
+
this.url = url;
|
27720
|
+
this.endpointOptions = options;
|
27721
|
+
}
|
27722
|
+
createRequestFromOptions(options) {
|
27723
|
+
var _a, _b, _c;
|
27724
|
+
const request = new TokenSourceRequest();
|
27725
|
+
for (const key of Object.keys(options)) {
|
27726
|
+
switch (key) {
|
27727
|
+
case 'roomName':
|
27728
|
+
case 'participantName':
|
27729
|
+
case 'participantIdentity':
|
27730
|
+
case 'participantMetadata':
|
27731
|
+
request[key] = options[key];
|
27732
|
+
break;
|
27733
|
+
case 'participantAttributes':
|
27734
|
+
request.participantAttributes = (_a = options.participantAttributes) !== null && _a !== void 0 ? _a : {};
|
27735
|
+
break;
|
27736
|
+
case 'agentName':
|
27737
|
+
request.roomConfig = (_b = request.roomConfig) !== null && _b !== void 0 ? _b : new RoomConfiguration();
|
27738
|
+
if (request.roomConfig.agents.length === 0) {
|
27739
|
+
request.roomConfig.agents.push(new RoomAgentDispatch());
|
27740
|
+
}
|
27741
|
+
request.roomConfig.agents[0].agentName = options.agentName;
|
27742
|
+
break;
|
27743
|
+
case 'agentMetadata':
|
27744
|
+
request.roomConfig = (_c = request.roomConfig) !== null && _c !== void 0 ? _c : new RoomConfiguration();
|
27745
|
+
if (request.roomConfig.agents.length === 0) {
|
27746
|
+
request.roomConfig.agents.push(new RoomAgentDispatch());
|
27747
|
+
}
|
27748
|
+
request.roomConfig.agents[0].metadata = options.agentMetadata;
|
27749
|
+
break;
|
27750
|
+
default:
|
27751
|
+
// ref: https://stackoverflow.com/a/58009992
|
27752
|
+
const exhaustiveCheckedKey = key;
|
27753
|
+
throw new Error("Options key ".concat(exhaustiveCheckedKey, " not being included in forming request!"));
|
27754
|
+
}
|
27755
|
+
}
|
27756
|
+
return request;
|
27757
|
+
}
|
27758
|
+
update(options) {
|
27759
|
+
return __awaiter(this, void 0, void 0, function* () {
|
27760
|
+
var _a;
|
27761
|
+
const request = this.createRequestFromOptions(options);
|
27762
|
+
const response = yield fetch(this.url, Object.assign(Object.assign({}, this.endpointOptions), {
|
27763
|
+
method: (_a = this.endpointOptions.method) !== null && _a !== void 0 ? _a : 'POST',
|
27764
|
+
headers: Object.assign({
|
27765
|
+
'Content-Type': 'application/json'
|
27766
|
+
}, this.endpointOptions.headers),
|
27767
|
+
body: request.toJsonString({
|
27768
|
+
useProtoFieldName: true
|
27769
|
+
})
|
27770
|
+
}));
|
27771
|
+
if (!response.ok) {
|
27772
|
+
throw new Error("Error generating token from endpoint ".concat(this.url, ": received ").concat(response.status, " / ").concat(yield response.text()));
|
27773
|
+
}
|
27774
|
+
const body = yield response.json();
|
27775
|
+
return TokenSourceResponse.fromJson(body, {
|
27776
|
+
// NOTE: it could be possible that the response body could contain more fields than just
|
27777
|
+
// what's in TokenSourceResponse depending on the implementation (ie, SandboxTokenServer)
|
27778
|
+
ignoreUnknownFields: true
|
27779
|
+
});
|
27780
|
+
});
|
27781
|
+
}
|
27782
|
+
}
|
27783
|
+
class TokenSourceSandboxTokenServer extends TokenSourceEndpoint {
|
27784
|
+
constructor(sandboxId, options) {
|
27785
|
+
const {
|
27786
|
+
baseUrl = 'https://cloud-api.livekit.io'
|
27787
|
+
} = options,
|
27788
|
+
rest = __rest(options, ["baseUrl"]);
|
27789
|
+
super("".concat(baseUrl, "/api/v2/sandbox/connection-details"), Object.assign(Object.assign({}, rest), {
|
27790
|
+
headers: {
|
27791
|
+
'X-Sandbox-ID': sandboxId
|
27792
|
+
}
|
27793
|
+
}));
|
27794
|
+
}
|
27795
|
+
}
|
27796
|
+
const TokenSource = {
|
27797
|
+
/** TokenSource.literal contains a single, literal set of {@link TokenSourceResponseObject}
|
27798
|
+
* credentials, either provided directly or returned from a provided function. */
|
27799
|
+
literal(literalOrFn) {
|
27800
|
+
return new TokenSourceLiteral(literalOrFn);
|
27801
|
+
},
|
27802
|
+
/**
|
27803
|
+
* TokenSource.custom allows a user to define a manual function which generates new
|
27804
|
+
* {@link TokenSourceResponseObject} values on demand.
|
27805
|
+
*
|
27806
|
+
* Use this to get credentials from custom backends / etc.
|
27807
|
+
*/
|
27808
|
+
custom(customFn) {
|
27809
|
+
return new TokenSourceCustom(customFn);
|
27810
|
+
},
|
27811
|
+
/**
|
27812
|
+
* TokenSource.endpoint creates a token source that fetches credentials from a given URL using
|
27813
|
+
* the standard endpoint format:
|
27814
|
+
* FIXME: add docs link here in the future!
|
27815
|
+
*/
|
27816
|
+
endpoint(url) {
|
27817
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
27818
|
+
return new TokenSourceEndpoint(url, options);
|
27819
|
+
},
|
27820
|
+
/**
|
27821
|
+
* TokenSource.sandboxTokenServer queries a sandbox token server for credentials,
|
27822
|
+
* which supports quick prototyping / getting started types of use cases.
|
27823
|
+
*
|
27824
|
+
* This token provider is INSECURE and should NOT be used in production.
|
27825
|
+
*
|
27826
|
+
* For more info:
|
27827
|
+
* @see https://cloud.livekit.io/projects/p_/sandbox/templates/token-server
|
27828
|
+
*/
|
27829
|
+
sandboxTokenServer(sandboxId) {
|
27830
|
+
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
27831
|
+
return new TokenSourceSandboxTokenServer(sandboxId, options);
|
27832
|
+
}
|
27833
|
+
};
|
27834
|
+
|
26091
27835
|
/**
|
26092
27836
|
* Try to analyze the local track to determine the facing mode of a track.
|
26093
27837
|
*
|
@@ -26169,5 +27913,5 @@ function isFacingModeValue(item) {
|
|
26169
27913
|
return item === undefined || allowedValues.includes(item);
|
26170
27914
|
}
|
26171
27915
|
|
26172
|
-
export { AudioPresets, BackupCodecPolicy, BaseKeyProvider, CheckStatus, Checker, ConnectionCheck, ConnectionError, ConnectionErrorReason, ConnectionQuality, ConnectionState, CriticalTimers, CryptorError, CryptorErrorReason, CryptorEvent, DataPacket_Kind, DataStreamError, DataStreamErrorReason, DefaultReconnectPolicy, DeviceUnsupportedError, DisconnectReason, EncryptionEvent, EngineEvent, ExternalE2EEKeyProvider, KeyHandlerEvent, KeyProviderEvent, LivekitError, LocalAudioTrack, LocalParticipant, LocalTrack, LocalTrackPublication, LocalTrackRecorder, LocalVideoTrack, LogLevel, LoggerNames, MediaDeviceFailure, _ as Mutex, NegotiationError, Participant, ParticipantEvent, ParticipantInfo_Kind as ParticipantKind, PublishDataError, PublishTrackError, RemoteAudioTrack, RemoteParticipant, RemoteTrack, RemoteTrackPublication, RemoteVideoTrack, Room, RoomEvent, RpcError, ScreenSharePresets, SignalRequestError, SubscriptionError, Track, TrackEvent, TrackInvalidError, TrackPublication, TrackType, UnexpectedConnectionState, UnsupportedServer, VideoPreset, VideoPresets, VideoPresets43, VideoQuality, attachToElement, attributeTypings as attributes, compareVersions, createAudioAnalyser, createE2EEKey, createKeyMaterialFromBuffer, createKeyMaterialFromString, createLocalAudioTrack, createLocalScreenTracks, createLocalTracks, createLocalVideoTrack, deriveKeys, detachTrack, facingModeFromDeviceLabel, facingModeFromLocalTrack, getBrowser, getEmptyAudioStreamTrack, getEmptyVideoStreamTrack, getLogger, importKey, isAudioTrack, isBackupCodec, isBrowserSupported, isE2EESupported, isInsertableStreamSupported, isLocalParticipant, isLocalTrack, isRemoteParticipant, isRemoteTrack, isScriptTransformSupported, isVideoFrame, isVideoTrack, needsRbspUnescaping, parseRbsp, protocolVersion, ratchet, setLogExtension, setLogLevel, supportsAV1, supportsAdaptiveStream, supportsDynacast, supportsVP9, version, videoCodecs, writeRbsp };
|
27916
|
+
export { AudioPresets, BackupCodecPolicy, BaseKeyProvider, CheckStatus, Checker, ConnectionCheck, ConnectionError, ConnectionErrorReason, ConnectionQuality, ConnectionState, CriticalTimers, CryptorError, CryptorErrorReason, CryptorEvent, DataPacket_Kind, DataStreamError, DataStreamErrorReason, DefaultReconnectPolicy, DeviceUnsupportedError, DisconnectReason, EncryptionEvent, Encryption_Type, EngineEvent, ExternalE2EEKeyProvider, KeyHandlerEvent, KeyProviderEvent, LivekitError, LocalAudioTrack, LocalParticipant, LocalTrack, LocalTrackPublication, LocalTrackRecorder, LocalVideoTrack, LogLevel, LoggerNames, MediaDeviceFailure, _ as Mutex, NegotiationError, Participant, ParticipantEvent, ParticipantInfo_Kind as ParticipantKind, PublishDataError, PublishTrackError, RemoteAudioTrack, RemoteParticipant, RemoteTrack, RemoteTrackPublication, RemoteVideoTrack, Room, RoomEvent, RpcError, ScreenSharePresets, SignalRequestError, SubscriptionError, TokenSource, TokenSourceConfigurable, TokenSourceCustom, TokenSourceEndpoint, TokenSourceFixed, TokenSourceLiteral, TokenSourceSandboxTokenServer, Track, TrackEvent, TrackInvalidError, TrackPublication, TrackType, UnexpectedConnectionState, UnsupportedServer, VideoPreset, VideoPresets, VideoPresets43, VideoQuality, asEncryptablePacket, attachToElement, attributeTypings as attributes, audioCodecs, compareVersions, createAudioAnalyser, createE2EEKey, createKeyMaterialFromBuffer, createKeyMaterialFromString, createLocalAudioTrack, createLocalScreenTracks, createLocalTracks, createLocalVideoTrack, deriveKeys, detachTrack, facingModeFromDeviceLabel, facingModeFromLocalTrack, getBrowser, getEmptyAudioStreamTrack, getEmptyVideoStreamTrack, getLogger, importKey, isAudioCodec, isAudioTrack, isBackupCodec, isBackupVideoCodec, isBrowserSupported, isE2EESupported, isInsertableStreamSupported, isLocalParticipant, isLocalTrack, isRemoteParticipant, isRemoteTrack, isScriptTransformSupported, isVideoCodec, isVideoFrame, isVideoTrack, needsRbspUnescaping, parseRbsp, protocolVersion, ratchet, setLogExtension, setLogLevel, supportsAV1, supportsAdaptiveStream, supportsDynacast, supportsVP9, version, videoCodecs, writeRbsp };
|
26173
27917
|
//# sourceMappingURL=livekit-client.esm.mjs.map
|