@livekit/rtc-node 0.13.22 → 0.13.23
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/audio_frame.cjs +5 -0
- package/dist/audio_frame.cjs.map +1 -1
- package/dist/audio_frame.d.cts +3 -0
- package/dist/audio_frame.d.ts +3 -0
- package/dist/audio_frame.d.ts.map +1 -1
- package/dist/audio_frame.js +5 -0
- package/dist/audio_frame.js.map +1 -1
- package/dist/audio_stream.cjs +18 -5
- package/dist/audio_stream.cjs.map +1 -1
- package/dist/audio_stream.d.cts +4 -3
- package/dist/audio_stream.d.ts +4 -3
- package/dist/audio_stream.d.ts.map +1 -1
- package/dist/audio_stream.js +18 -5
- package/dist/audio_stream.js.map +1 -1
- package/dist/data_streams/stream_reader.cjs.map +1 -1
- package/dist/data_streams/stream_reader.js.map +1 -1
- package/dist/frame_processor.cjs +38 -0
- package/dist/frame_processor.cjs.map +1 -0
- package/dist/frame_processor.d.cts +29 -0
- package/dist/frame_processor.d.ts +29 -0
- package/dist/frame_processor.d.ts.map +1 -0
- package/dist/frame_processor.js +14 -0
- package/dist/frame_processor.js.map +1 -0
- package/dist/index.cjs +3 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/proto/audio_frame_pb.cjs.map +1 -1
- package/dist/proto/audio_frame_pb.js.map +1 -1
- package/dist/proto/e2ee_pb.cjs.map +1 -1
- package/dist/proto/e2ee_pb.js.map +1 -1
- package/dist/proto/ffi_pb.cjs +4 -2
- package/dist/proto/ffi_pb.cjs.map +1 -1
- package/dist/proto/ffi_pb.d.cts +13 -1
- package/dist/proto/ffi_pb.d.ts +13 -1
- package/dist/proto/ffi_pb.d.ts.map +1 -1
- package/dist/proto/ffi_pb.js +5 -3
- package/dist/proto/ffi_pb.js.map +1 -1
- package/dist/proto/handle_pb.cjs.map +1 -1
- package/dist/proto/handle_pb.js.map +1 -1
- package/dist/proto/participant_pb.cjs +26 -4
- package/dist/proto/participant_pb.cjs.map +1 -1
- package/dist/proto/participant_pb.d.cts +31 -2
- package/dist/proto/participant_pb.d.ts +31 -2
- package/dist/proto/participant_pb.d.ts.map +1 -1
- package/dist/proto/participant_pb.js +24 -3
- package/dist/proto/participant_pb.js.map +1 -1
- package/dist/proto/room_pb.cjs +29 -2
- package/dist/proto/room_pb.cjs.map +1 -1
- package/dist/proto/room_pb.d.cts +30 -7
- package/dist/proto/room_pb.d.ts +30 -7
- package/dist/proto/room_pb.d.ts.map +1 -1
- package/dist/proto/room_pb.js +28 -2
- package/dist/proto/room_pb.js.map +1 -1
- package/dist/proto/rpc_pb.cjs.map +1 -1
- package/dist/proto/rpc_pb.js.map +1 -1
- package/dist/proto/stats_pb.cjs.map +1 -1
- package/dist/proto/stats_pb.js.map +1 -1
- package/dist/proto/track_pb.cjs.map +1 -1
- package/dist/proto/track_pb.js.map +1 -1
- package/dist/proto/track_publication_pb.cjs +66 -2
- package/dist/proto/track_publication_pb.cjs.map +1 -1
- package/dist/proto/track_publication_pb.d.cts +56 -1
- package/dist/proto/track_publication_pb.d.ts +56 -1
- package/dist/proto/track_publication_pb.d.ts.map +1 -1
- package/dist/proto/track_publication_pb.js +62 -1
- package/dist/proto/track_publication_pb.js.map +1 -1
- package/dist/proto/video_frame_pb.cjs +3 -1
- package/dist/proto/video_frame_pb.cjs.map +1 -1
- package/dist/proto/video_frame_pb.d.cts +5 -1
- package/dist/proto/video_frame_pb.d.ts +5 -1
- package/dist/proto/video_frame_pb.d.ts.map +1 -1
- package/dist/proto/video_frame_pb.js +3 -1
- package/dist/proto/video_frame_pb.js.map +1 -1
- package/dist/room.cjs +10 -10
- package/dist/room.cjs.map +1 -1
- package/dist/room.d.cts +10 -10
- package/dist/room.d.ts +10 -10
- package/dist/room.d.ts.map +1 -1
- package/dist/room.js +11 -11
- package/dist/room.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.cts +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +6 -6
- package/src/audio_frame.ts +7 -0
- package/src/audio_stream.ts +22 -7
- package/src/data_streams/stream_reader.ts +4 -4
- package/src/frame_processor.ts +29 -0
- package/src/index.ts +5 -0
- package/src/proto/audio_frame_pb.ts +1 -1
- package/src/proto/e2ee_pb.ts +1 -1
- package/src/proto/ffi_pb.ts +16 -2
- package/src/proto/handle_pb.ts +1 -1
- package/src/proto/participant_pb.ts +45 -1
- package/src/proto/room_pb.ts +52 -8
- package/src/proto/rpc_pb.ts +1 -1
- package/src/proto/stats_pb.ts +1 -1
- package/src/proto/track_pb.ts +1 -1
- package/src/proto/track_publication_pb.ts +105 -1
- package/src/proto/video_frame_pb.ts +7 -1
- package/src/room.ts +33 -33
- package/src/version.ts +1 -1
package/src/index.ts
CHANGED
|
@@ -50,3 +50,8 @@ export type { ChatMessage } from './types.js';
|
|
|
50
50
|
export { VideoFrame } from './video_frame.js';
|
|
51
51
|
export { VideoSource } from './video_source.js';
|
|
52
52
|
export { VideoStream, type VideoFrameEvent } from './video_stream.js';
|
|
53
|
+
export {
|
|
54
|
+
FrameProcessor,
|
|
55
|
+
type FrameProcessorStreamInfo,
|
|
56
|
+
type FrameProcessorCredentials,
|
|
57
|
+
} from './frame_processor.js';
|
package/src/proto/e2ee_pb.ts
CHANGED
package/src/proto/ffi_pb.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2025 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
// you may not use this file except in compliance with the License.
|
|
@@ -25,7 +25,7 @@ import { CaptureVideoFrameRequest, CaptureVideoFrameResponse, NewVideoSourceRequ
|
|
|
25
25
|
import { ApmProcessReverseStreamRequest, ApmProcessReverseStreamResponse, ApmProcessStreamRequest, ApmProcessStreamResponse, ApmSetStreamDelayRequest, ApmSetStreamDelayResponse, AudioStreamEvent, AudioStreamFromParticipantRequest, AudioStreamFromParticipantResponse, CaptureAudioFrameCallback, CaptureAudioFrameRequest, CaptureAudioFrameResponse, ClearAudioBufferRequest, ClearAudioBufferResponse, FlushSoxResamplerRequest, FlushSoxResamplerResponse, LoadAudioFilterPluginRequest, LoadAudioFilterPluginResponse, NewApmRequest, NewApmResponse, NewAudioResamplerRequest, NewAudioResamplerResponse, NewAudioSourceRequest, NewAudioSourceResponse, NewAudioStreamRequest, NewAudioStreamResponse, NewSoxResamplerRequest, NewSoxResamplerResponse, PushSoxResamplerRequest, PushSoxResamplerResponse, RemixAndResampleRequest, RemixAndResampleResponse } from "./audio_frame_pb.js";
|
|
26
26
|
import { E2eeRequest, E2eeResponse } from "./e2ee_pb.js";
|
|
27
27
|
import { PerformRpcCallback, PerformRpcRequest, PerformRpcResponse, RegisterRpcMethodRequest, RegisterRpcMethodResponse, RpcMethodInvocationEvent, RpcMethodInvocationResponseRequest, RpcMethodInvocationResponseResponse, UnregisterRpcMethodRequest, UnregisterRpcMethodResponse } from "./rpc_pb.js";
|
|
28
|
-
import { EnableRemoteTrackPublicationRequest, EnableRemoteTrackPublicationResponse, UpdateRemoteTrackPublicationDimensionRequest, UpdateRemoteTrackPublicationDimensionResponse } from "./track_publication_pb.js";
|
|
28
|
+
import { EnableRemoteTrackPublicationRequest, EnableRemoteTrackPublicationResponse, SetRemoteTrackPublicationQualityRequest, SetRemoteTrackPublicationQualityResponse, UpdateRemoteTrackPublicationDimensionRequest, UpdateRemoteTrackPublicationDimensionResponse } from "./track_publication_pb.js";
|
|
29
29
|
import { ByteStreamOpenCallback, ByteStreamOpenRequest, ByteStreamOpenResponse, ByteStreamReaderEvent, ByteStreamReaderReadAllCallback, ByteStreamReaderReadAllRequest, ByteStreamReaderReadAllResponse, ByteStreamReaderReadIncrementalRequest, ByteStreamReaderReadIncrementalResponse, ByteStreamReaderWriteToFileCallback, ByteStreamReaderWriteToFileRequest, ByteStreamReaderWriteToFileResponse, ByteStreamWriterCloseCallback, ByteStreamWriterCloseRequest, ByteStreamWriterCloseResponse, ByteStreamWriterWriteCallback, ByteStreamWriterWriteRequest, ByteStreamWriterWriteResponse, StreamSendBytesCallback, StreamSendBytesRequest, StreamSendBytesResponse, StreamSendFileCallback, StreamSendFileRequest, StreamSendFileResponse, StreamSendTextCallback, StreamSendTextRequest, StreamSendTextResponse, TextStreamOpenCallback, TextStreamOpenRequest, TextStreamOpenResponse, TextStreamReaderEvent, TextStreamReaderReadAllCallback, TextStreamReaderReadAllRequest, TextStreamReaderReadAllResponse, TextStreamReaderReadIncrementalRequest, TextStreamReaderReadIncrementalResponse, TextStreamWriterCloseCallback, TextStreamWriterCloseRequest, TextStreamWriterCloseResponse, TextStreamWriterWriteCallback, TextStreamWriterWriteRequest, TextStreamWriterWriteResponse } from "./data_stream_pb.js";
|
|
30
30
|
|
|
31
31
|
/**
|
|
@@ -492,6 +492,12 @@ export class FfiRequest extends Message<FfiRequest> {
|
|
|
492
492
|
*/
|
|
493
493
|
value: StreamSendBytesRequest;
|
|
494
494
|
case: "sendBytes";
|
|
495
|
+
} | {
|
|
496
|
+
/**
|
|
497
|
+
* @generated from field: livekit.proto.SetRemoteTrackPublicationQualityRequest set_remote_track_publication_quality = 68;
|
|
498
|
+
*/
|
|
499
|
+
value: SetRemoteTrackPublicationQualityRequest;
|
|
500
|
+
case: "setRemoteTrackPublicationQuality";
|
|
495
501
|
} | { case: undefined; value?: undefined } = { case: undefined };
|
|
496
502
|
|
|
497
503
|
constructor(data?: PartialMessage<FfiRequest>) {
|
|
@@ -568,6 +574,7 @@ export class FfiRequest extends Message<FfiRequest> {
|
|
|
568
574
|
{ no: 65, name: "text_stream_write", kind: "message", T: TextStreamWriterWriteRequest, oneof: "message" },
|
|
569
575
|
{ no: 66, name: "text_stream_close", kind: "message", T: TextStreamWriterCloseRequest, oneof: "message" },
|
|
570
576
|
{ no: 67, name: "send_bytes", kind: "message", T: StreamSendBytesRequest, oneof: "message" },
|
|
577
|
+
{ no: 68, name: "set_remote_track_publication_quality", kind: "message", T: SetRemoteTrackPublicationQualityRequest, oneof: "message" },
|
|
571
578
|
]);
|
|
572
579
|
|
|
573
580
|
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FfiRequest {
|
|
@@ -1006,6 +1013,12 @@ export class FfiResponse extends Message<FfiResponse> {
|
|
|
1006
1013
|
*/
|
|
1007
1014
|
value: StreamSendBytesResponse;
|
|
1008
1015
|
case: "sendBytes";
|
|
1016
|
+
} | {
|
|
1017
|
+
/**
|
|
1018
|
+
* @generated from field: livekit.proto.SetRemoteTrackPublicationQualityResponse set_remote_track_publication_quality = 67;
|
|
1019
|
+
*/
|
|
1020
|
+
value: SetRemoteTrackPublicationQualityResponse;
|
|
1021
|
+
case: "setRemoteTrackPublicationQuality";
|
|
1009
1022
|
} | { case: undefined; value?: undefined } = { case: undefined };
|
|
1010
1023
|
|
|
1011
1024
|
constructor(data?: PartialMessage<FfiResponse>) {
|
|
@@ -1081,6 +1094,7 @@ export class FfiResponse extends Message<FfiResponse> {
|
|
|
1081
1094
|
{ no: 64, name: "text_stream_write", kind: "message", T: TextStreamWriterWriteResponse, oneof: "message" },
|
|
1082
1095
|
{ no: 65, name: "text_stream_close", kind: "message", T: TextStreamWriterCloseResponse, oneof: "message" },
|
|
1083
1096
|
{ no: 66, name: "send_bytes", kind: "message", T: StreamSendBytesResponse, oneof: "message" },
|
|
1097
|
+
{ no: 67, name: "set_remote_track_publication_quality", kind: "message", T: SetRemoteTrackPublicationQualityResponse, oneof: "message" },
|
|
1084
1098
|
]);
|
|
1085
1099
|
|
|
1086
1100
|
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): FfiResponse {
|
package/src/proto/handle_pb.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2025 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
// you may not use this file except in compliance with the License.
|
|
@@ -49,6 +49,11 @@ export enum ParticipantKind {
|
|
|
49
49
|
* @generated from enum value: PARTICIPANT_KIND_AGENT = 4;
|
|
50
50
|
*/
|
|
51
51
|
AGENT = 4,
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* @generated from enum value: PARTICIPANT_KIND_CONNECTOR = 5;
|
|
55
|
+
*/
|
|
56
|
+
CONNECTOR = 5,
|
|
52
57
|
}
|
|
53
58
|
// Retrieve enum metadata with: proto2.getEnumType(ParticipantKind)
|
|
54
59
|
proto2.util.setEnumType(ParticipantKind, "livekit.proto.ParticipantKind", [
|
|
@@ -57,6 +62,39 @@ proto2.util.setEnumType(ParticipantKind, "livekit.proto.ParticipantKind", [
|
|
|
57
62
|
{ no: 2, name: "PARTICIPANT_KIND_EGRESS" },
|
|
58
63
|
{ no: 3, name: "PARTICIPANT_KIND_SIP" },
|
|
59
64
|
{ no: 4, name: "PARTICIPANT_KIND_AGENT" },
|
|
65
|
+
{ no: 5, name: "PARTICIPANT_KIND_CONNECTOR" },
|
|
66
|
+
]);
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* @generated from enum livekit.proto.ParticipantKindDetail
|
|
70
|
+
*/
|
|
71
|
+
export enum ParticipantKindDetail {
|
|
72
|
+
/**
|
|
73
|
+
* @generated from enum value: PARTICIPANT_KIND_DETAIL_CLOUD_AGENT = 0;
|
|
74
|
+
*/
|
|
75
|
+
CLOUD_AGENT = 0,
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* @generated from enum value: PARTICIPANT_KIND_DETAIL_FORWARDED = 1;
|
|
79
|
+
*/
|
|
80
|
+
FORWARDED = 1,
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @generated from enum value: PARTICIPANT_KIND_DETAIL_CONNECTOR_WHATSAPP = 2;
|
|
84
|
+
*/
|
|
85
|
+
CONNECTOR_WHATSAPP = 2,
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* @generated from enum value: PARTICIPANT_KIND_DETAIL_CONNECTOR_TWILIO = 3;
|
|
89
|
+
*/
|
|
90
|
+
CONNECTOR_TWILIO = 3,
|
|
91
|
+
}
|
|
92
|
+
// Retrieve enum metadata with: proto2.getEnumType(ParticipantKindDetail)
|
|
93
|
+
proto2.util.setEnumType(ParticipantKindDetail, "livekit.proto.ParticipantKindDetail", [
|
|
94
|
+
{ no: 0, name: "PARTICIPANT_KIND_DETAIL_CLOUD_AGENT" },
|
|
95
|
+
{ no: 1, name: "PARTICIPANT_KIND_DETAIL_FORWARDED" },
|
|
96
|
+
{ no: 2, name: "PARTICIPANT_KIND_DETAIL_CONNECTOR_WHATSAPP" },
|
|
97
|
+
{ no: 3, name: "PARTICIPANT_KIND_DETAIL_CONNECTOR_TWILIO" },
|
|
60
98
|
]);
|
|
61
99
|
|
|
62
100
|
/**
|
|
@@ -228,6 +266,11 @@ export class ParticipantInfo extends Message<ParticipantInfo> {
|
|
|
228
266
|
*/
|
|
229
267
|
disconnectReason?: DisconnectReason;
|
|
230
268
|
|
|
269
|
+
/**
|
|
270
|
+
* @generated from field: repeated livekit.proto.ParticipantKindDetail kind_details = 8;
|
|
271
|
+
*/
|
|
272
|
+
kindDetails: ParticipantKindDetail[] = [];
|
|
273
|
+
|
|
231
274
|
constructor(data?: PartialMessage<ParticipantInfo>) {
|
|
232
275
|
super();
|
|
233
276
|
proto2.util.initPartial(data, this);
|
|
@@ -243,6 +286,7 @@ export class ParticipantInfo extends Message<ParticipantInfo> {
|
|
|
243
286
|
{ no: 5, name: "attributes", kind: "map", K: 9 /* ScalarType.STRING */, V: {kind: "scalar", T: 9 /* ScalarType.STRING */} },
|
|
244
287
|
{ no: 6, name: "kind", kind: "enum", T: proto2.getEnumType(ParticipantKind), req: true },
|
|
245
288
|
{ no: 7, name: "disconnect_reason", kind: "enum", T: proto2.getEnumType(DisconnectReason), req: true },
|
|
289
|
+
{ no: 8, name: "kind_details", kind: "enum", T: proto2.getEnumType(ParticipantKindDetail), repeated: true },
|
|
246
290
|
]);
|
|
247
291
|
|
|
248
292
|
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ParticipantInfo {
|
package/src/proto/room_pb.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2025 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
// you may not use this file except in compliance with the License.
|
|
@@ -2700,12 +2700,6 @@ export class RoomEvent extends Message<RoomEvent> {
|
|
|
2700
2700
|
*/
|
|
2701
2701
|
value: ParticipantAttributesChanged;
|
|
2702
2702
|
case: "participantAttributesChanged";
|
|
2703
|
-
} | {
|
|
2704
|
-
/**
|
|
2705
|
-
* @generated from field: livekit.proto.ParticipantEncryptionStatusChanged participant_encryption_status_changed = 39;
|
|
2706
|
-
*/
|
|
2707
|
-
value: ParticipantEncryptionStatusChanged;
|
|
2708
|
-
case: "participantEncryptionStatusChanged";
|
|
2709
2703
|
} | {
|
|
2710
2704
|
/**
|
|
2711
2705
|
* @generated from field: livekit.proto.ConnectionQualityChanged connection_quality_changed = 20;
|
|
@@ -2834,6 +2828,18 @@ export class RoomEvent extends Message<RoomEvent> {
|
|
|
2834
2828
|
*/
|
|
2835
2829
|
value: ParticipantsUpdated;
|
|
2836
2830
|
case: "participantsUpdated";
|
|
2831
|
+
} | {
|
|
2832
|
+
/**
|
|
2833
|
+
* @generated from field: livekit.proto.ParticipantEncryptionStatusChanged participant_encryption_status_changed = 39;
|
|
2834
|
+
*/
|
|
2835
|
+
value: ParticipantEncryptionStatusChanged;
|
|
2836
|
+
case: "participantEncryptionStatusChanged";
|
|
2837
|
+
} | {
|
|
2838
|
+
/**
|
|
2839
|
+
* @generated from field: livekit.proto.TokenRefreshed token_refreshed = 40;
|
|
2840
|
+
*/
|
|
2841
|
+
value: TokenRefreshed;
|
|
2842
|
+
case: "tokenRefreshed";
|
|
2837
2843
|
} | { case: undefined; value?: undefined } = { case: undefined };
|
|
2838
2844
|
|
|
2839
2845
|
constructor(data?: PartialMessage<RoomEvent>) {
|
|
@@ -2863,7 +2869,6 @@ export class RoomEvent extends Message<RoomEvent> {
|
|
|
2863
2869
|
{ no: 17, name: "participant_metadata_changed", kind: "message", T: ParticipantMetadataChanged, oneof: "message" },
|
|
2864
2870
|
{ no: 18, name: "participant_name_changed", kind: "message", T: ParticipantNameChanged, oneof: "message" },
|
|
2865
2871
|
{ no: 19, name: "participant_attributes_changed", kind: "message", T: ParticipantAttributesChanged, oneof: "message" },
|
|
2866
|
-
{ no: 39, name: "participant_encryption_status_changed", kind: "message", T: ParticipantEncryptionStatusChanged, oneof: "message" },
|
|
2867
2872
|
{ no: 20, name: "connection_quality_changed", kind: "message", T: ConnectionQualityChanged, oneof: "message" },
|
|
2868
2873
|
{ no: 21, name: "connection_state_changed", kind: "message", T: ConnectionStateChanged, oneof: "message" },
|
|
2869
2874
|
{ no: 22, name: "disconnected", kind: "message", T: Disconnected, oneof: "message" },
|
|
@@ -2883,6 +2888,8 @@ export class RoomEvent extends Message<RoomEvent> {
|
|
|
2883
2888
|
{ no: 36, name: "room_updated", kind: "message", T: RoomInfo, oneof: "message" },
|
|
2884
2889
|
{ no: 37, name: "moved", kind: "message", T: RoomInfo, oneof: "message" },
|
|
2885
2890
|
{ no: 38, name: "participants_updated", kind: "message", T: ParticipantsUpdated, oneof: "message" },
|
|
2891
|
+
{ no: 39, name: "participant_encryption_status_changed", kind: "message", T: ParticipantEncryptionStatusChanged, oneof: "message" },
|
|
2892
|
+
{ no: 40, name: "token_refreshed", kind: "message", T: TokenRefreshed, oneof: "message" },
|
|
2886
2893
|
]);
|
|
2887
2894
|
|
|
2888
2895
|
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): RoomEvent {
|
|
@@ -4444,6 +4451,43 @@ export class Reconnected extends Message<Reconnected> {
|
|
|
4444
4451
|
}
|
|
4445
4452
|
}
|
|
4446
4453
|
|
|
4454
|
+
/**
|
|
4455
|
+
* @generated from message livekit.proto.TokenRefreshed
|
|
4456
|
+
*/
|
|
4457
|
+
export class TokenRefreshed extends Message<TokenRefreshed> {
|
|
4458
|
+
/**
|
|
4459
|
+
* @generated from field: required string token = 1;
|
|
4460
|
+
*/
|
|
4461
|
+
token?: string;
|
|
4462
|
+
|
|
4463
|
+
constructor(data?: PartialMessage<TokenRefreshed>) {
|
|
4464
|
+
super();
|
|
4465
|
+
proto2.util.initPartial(data, this);
|
|
4466
|
+
}
|
|
4467
|
+
|
|
4468
|
+
static readonly runtime: typeof proto2 = proto2;
|
|
4469
|
+
static readonly typeName = "livekit.proto.TokenRefreshed";
|
|
4470
|
+
static readonly fields: FieldList = proto2.util.newFieldList(() => [
|
|
4471
|
+
{ no: 1, name: "token", kind: "scalar", T: 9 /* ScalarType.STRING */, req: true },
|
|
4472
|
+
]);
|
|
4473
|
+
|
|
4474
|
+
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TokenRefreshed {
|
|
4475
|
+
return new TokenRefreshed().fromBinary(bytes, options);
|
|
4476
|
+
}
|
|
4477
|
+
|
|
4478
|
+
static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TokenRefreshed {
|
|
4479
|
+
return new TokenRefreshed().fromJson(jsonValue, options);
|
|
4480
|
+
}
|
|
4481
|
+
|
|
4482
|
+
static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TokenRefreshed {
|
|
4483
|
+
return new TokenRefreshed().fromJsonString(jsonString, options);
|
|
4484
|
+
}
|
|
4485
|
+
|
|
4486
|
+
static equals(a: TokenRefreshed | PlainMessage<TokenRefreshed> | undefined, b: TokenRefreshed | PlainMessage<TokenRefreshed> | undefined): boolean {
|
|
4487
|
+
return proto2.util.equals(TokenRefreshed, a, b);
|
|
4488
|
+
}
|
|
4489
|
+
}
|
|
4490
|
+
|
|
4447
4491
|
/**
|
|
4448
4492
|
* @generated from message livekit.proto.RoomEOS
|
|
4449
4493
|
*/
|
package/src/proto/rpc_pb.ts
CHANGED
package/src/proto/stats_pb.ts
CHANGED
package/src/proto/track_pb.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2025 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
// you may not use this file except in compliance with the License.
|
|
@@ -20,6 +20,34 @@
|
|
|
20
20
|
import type { BinaryReadOptions, FieldList, JsonReadOptions, JsonValue, PartialMessage, PlainMessage } from "@bufbuild/protobuf";
|
|
21
21
|
import { Message, proto2 } from "@bufbuild/protobuf";
|
|
22
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Video quality for simulcasted tracks.
|
|
25
|
+
*
|
|
26
|
+
* @generated from enum livekit.proto.VideoQuality
|
|
27
|
+
*/
|
|
28
|
+
export enum VideoQuality {
|
|
29
|
+
/**
|
|
30
|
+
* @generated from enum value: VIDEO_QUALITY_LOW = 0;
|
|
31
|
+
*/
|
|
32
|
+
LOW = 0,
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* @generated from enum value: VIDEO_QUALITY_MEDIUM = 1;
|
|
36
|
+
*/
|
|
37
|
+
MEDIUM = 1,
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @generated from enum value: VIDEO_QUALITY_HIGH = 2;
|
|
41
|
+
*/
|
|
42
|
+
HIGH = 2,
|
|
43
|
+
}
|
|
44
|
+
// Retrieve enum metadata with: proto2.getEnumType(VideoQuality)
|
|
45
|
+
proto2.util.setEnumType(VideoQuality, "livekit.proto.VideoQuality", [
|
|
46
|
+
{ no: 0, name: "VIDEO_QUALITY_LOW" },
|
|
47
|
+
{ no: 1, name: "VIDEO_QUALITY_MEDIUM" },
|
|
48
|
+
{ no: 2, name: "VIDEO_QUALITY_HIGH" },
|
|
49
|
+
]);
|
|
50
|
+
|
|
23
51
|
/**
|
|
24
52
|
* Enable/Disable a remote track publication
|
|
25
53
|
*
|
|
@@ -178,3 +206,79 @@ export class UpdateRemoteTrackPublicationDimensionResponse extends Message<Updat
|
|
|
178
206
|
}
|
|
179
207
|
}
|
|
180
208
|
|
|
209
|
+
/**
|
|
210
|
+
* For tracks that support simulcasting, adjust subscribed quality.
|
|
211
|
+
*
|
|
212
|
+
* @generated from message livekit.proto.SetRemoteTrackPublicationQualityRequest
|
|
213
|
+
*/
|
|
214
|
+
export class SetRemoteTrackPublicationQualityRequest extends Message<SetRemoteTrackPublicationQualityRequest> {
|
|
215
|
+
/**
|
|
216
|
+
* @generated from field: required uint64 track_publication_handle = 1;
|
|
217
|
+
*/
|
|
218
|
+
trackPublicationHandle?: bigint;
|
|
219
|
+
|
|
220
|
+
/**
|
|
221
|
+
* @generated from field: required livekit.proto.VideoQuality quality = 2;
|
|
222
|
+
*/
|
|
223
|
+
quality?: VideoQuality;
|
|
224
|
+
|
|
225
|
+
constructor(data?: PartialMessage<SetRemoteTrackPublicationQualityRequest>) {
|
|
226
|
+
super();
|
|
227
|
+
proto2.util.initPartial(data, this);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
static readonly runtime: typeof proto2 = proto2;
|
|
231
|
+
static readonly typeName = "livekit.proto.SetRemoteTrackPublicationQualityRequest";
|
|
232
|
+
static readonly fields: FieldList = proto2.util.newFieldList(() => [
|
|
233
|
+
{ no: 1, name: "track_publication_handle", kind: "scalar", T: 4 /* ScalarType.UINT64 */, req: true },
|
|
234
|
+
{ no: 2, name: "quality", kind: "enum", T: proto2.getEnumType(VideoQuality), req: true },
|
|
235
|
+
]);
|
|
236
|
+
|
|
237
|
+
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetRemoteTrackPublicationQualityRequest {
|
|
238
|
+
return new SetRemoteTrackPublicationQualityRequest().fromBinary(bytes, options);
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetRemoteTrackPublicationQualityRequest {
|
|
242
|
+
return new SetRemoteTrackPublicationQualityRequest().fromJson(jsonValue, options);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetRemoteTrackPublicationQualityRequest {
|
|
246
|
+
return new SetRemoteTrackPublicationQualityRequest().fromJsonString(jsonString, options);
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
static equals(a: SetRemoteTrackPublicationQualityRequest | PlainMessage<SetRemoteTrackPublicationQualityRequest> | undefined, b: SetRemoteTrackPublicationQualityRequest | PlainMessage<SetRemoteTrackPublicationQualityRequest> | undefined): boolean {
|
|
250
|
+
return proto2.util.equals(SetRemoteTrackPublicationQualityRequest, a, b);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* @generated from message livekit.proto.SetRemoteTrackPublicationQualityResponse
|
|
256
|
+
*/
|
|
257
|
+
export class SetRemoteTrackPublicationQualityResponse extends Message<SetRemoteTrackPublicationQualityResponse> {
|
|
258
|
+
constructor(data?: PartialMessage<SetRemoteTrackPublicationQualityResponse>) {
|
|
259
|
+
super();
|
|
260
|
+
proto2.util.initPartial(data, this);
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
static readonly runtime: typeof proto2 = proto2;
|
|
264
|
+
static readonly typeName = "livekit.proto.SetRemoteTrackPublicationQualityResponse";
|
|
265
|
+
static readonly fields: FieldList = proto2.util.newFieldList(() => [
|
|
266
|
+
]);
|
|
267
|
+
|
|
268
|
+
static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SetRemoteTrackPublicationQualityResponse {
|
|
269
|
+
return new SetRemoteTrackPublicationQualityResponse().fromBinary(bytes, options);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SetRemoteTrackPublicationQualityResponse {
|
|
273
|
+
return new SetRemoteTrackPublicationQualityResponse().fromJson(jsonValue, options);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SetRemoteTrackPublicationQualityResponse {
|
|
277
|
+
return new SetRemoteTrackPublicationQualityResponse().fromJsonString(jsonString, options);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
static equals(a: SetRemoteTrackPublicationQualityResponse | PlainMessage<SetRemoteTrackPublicationQualityResponse> | undefined, b: SetRemoteTrackPublicationQualityResponse | PlainMessage<SetRemoteTrackPublicationQualityResponse> | undefined): boolean {
|
|
281
|
+
return proto2.util.equals(SetRemoteTrackPublicationQualityResponse, a, b);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Copyright
|
|
1
|
+
// Copyright 2025 LiveKit, Inc.
|
|
2
2
|
//
|
|
3
3
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
4
|
// you may not use this file except in compliance with the License.
|
|
@@ -45,6 +45,11 @@ export enum VideoCodec {
|
|
|
45
45
|
* @generated from enum value: VP9 = 3;
|
|
46
46
|
*/
|
|
47
47
|
VP9 = 3,
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @generated from enum value: H265 = 4;
|
|
51
|
+
*/
|
|
52
|
+
H265 = 4,
|
|
48
53
|
}
|
|
49
54
|
// Retrieve enum metadata with: proto2.getEnumType(VideoCodec)
|
|
50
55
|
proto2.util.setEnumType(VideoCodec, "livekit.proto.VideoCodec", [
|
|
@@ -52,6 +57,7 @@ proto2.util.setEnumType(VideoCodec, "livekit.proto.VideoCodec", [
|
|
|
52
57
|
{ no: 1, name: "H264" },
|
|
53
58
|
{ no: 2, name: "AV1" },
|
|
54
59
|
{ no: 3, name: "VP9" },
|
|
60
|
+
{ no: 4, name: "H265" },
|
|
55
61
|
]);
|
|
56
62
|
|
|
57
63
|
/**
|
package/src/room.ts
CHANGED
|
@@ -18,7 +18,7 @@ import { FfiClient, FfiClientEvent, FfiHandle } from './ffi_client.js';
|
|
|
18
18
|
import { log } from './log.js';
|
|
19
19
|
import type { Participant } from './participant.js';
|
|
20
20
|
import { LocalParticipant, RemoteParticipant } from './participant.js';
|
|
21
|
-
import { EncryptionState, EncryptionType } from './proto/e2ee_pb.js';
|
|
21
|
+
import { EncryptionState, type EncryptionType } from './proto/e2ee_pb.js';
|
|
22
22
|
import type { FfiEvent } from './proto/ffi_pb.js';
|
|
23
23
|
import type { DisconnectReason, OwnedParticipant } from './proto/participant_pb.js';
|
|
24
24
|
import type { DataStream_Trailer, DisconnectCallback } from './proto/room_pb.js';
|
|
@@ -179,10 +179,10 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
|
|
|
179
179
|
|
|
180
180
|
/**
|
|
181
181
|
* Connects to a LiveKit room using the provided URL and access token.
|
|
182
|
-
* @param url The WebSocket URL of the LiveKit server
|
|
183
|
-
* @param token A valid LiveKit access token for authentication
|
|
184
|
-
* @param opts Optional room configuration options
|
|
185
|
-
* @throws ConnectError if connection fails
|
|
182
|
+
* @param url - The WebSocket URL of the LiveKit server
|
|
183
|
+
* @param token - A valid LiveKit access token for authentication
|
|
184
|
+
* @param opts - Optional room configuration options
|
|
185
|
+
* @throws ConnectError - if connection fails
|
|
186
186
|
*/
|
|
187
187
|
async connect(url: string, token: string, opts?: RoomOptions) {
|
|
188
188
|
const options = { ...defaultRoomOptions, ...opts };
|
|
@@ -268,9 +268,9 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
|
|
|
268
268
|
/**
|
|
269
269
|
* Registers a handler for incoming text data streams on a specific topic.
|
|
270
270
|
* Text streams are used for receiving structured text data from other participants.
|
|
271
|
-
* @param topic The topic to listen for text streams on
|
|
272
|
-
* @param callback Function to handle incoming text stream data
|
|
273
|
-
* @throws Error if a handler for this topic is already registered
|
|
271
|
+
* @param topic - The topic to listen for text streams on
|
|
272
|
+
* @param callback - Function to handle incoming text stream data
|
|
273
|
+
* @throws Error - if a handler for this topic is already registered
|
|
274
274
|
*/
|
|
275
275
|
registerTextStreamHandler(topic: string, callback: TextStreamHandler) {
|
|
276
276
|
if (this.textStreamHandlers.has(topic)) {
|
|
@@ -286,9 +286,9 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
|
|
|
286
286
|
/**
|
|
287
287
|
* Registers a handler for incoming byte data streams on a specific topic.
|
|
288
288
|
* Byte streams are used for receiving binary data like files from other participants.
|
|
289
|
-
* @param topic The topic to listen for byte streams on
|
|
290
|
-
* @param callback Function to handle incoming byte stream data
|
|
291
|
-
* @throws Error if a handler for this topic is already registered
|
|
289
|
+
* @param topic - The topic to listen for byte streams on
|
|
290
|
+
* @param callback - Function to handle incoming byte stream data
|
|
291
|
+
* @throws Error - if a handler for this topic is already registered
|
|
292
292
|
*/
|
|
293
293
|
registerByteStreamHandler(topic: string, callback: ByteStreamHandler) {
|
|
294
294
|
if (this.byteStreamHandlers.has(topic)) {
|
|
@@ -415,8 +415,8 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
|
|
|
415
415
|
}
|
|
416
416
|
|
|
417
417
|
this.emit(RoomEvent.TrackSubscribed, publication.track!, publication, participant);
|
|
418
|
-
} catch (e:
|
|
419
|
-
console.warn(`RoomEvent.TrackSubscribed: ${e.message}`);
|
|
418
|
+
} catch (e: unknown) {
|
|
419
|
+
console.warn(`RoomEvent.TrackSubscribed: ${(e as Error).message}`);
|
|
420
420
|
}
|
|
421
421
|
} else if (ev.case == 'trackUnsubscribed') {
|
|
422
422
|
try {
|
|
@@ -428,8 +428,8 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
|
|
|
428
428
|
publication.track = undefined;
|
|
429
429
|
publication.subscribed = false;
|
|
430
430
|
this.emit(RoomEvent.TrackUnsubscribed, track, publication, participant);
|
|
431
|
-
} catch (e:
|
|
432
|
-
console.warn(`RoomEvent.TrackUnsubscribed: ${e.message}`);
|
|
431
|
+
} catch (e: unknown) {
|
|
432
|
+
console.warn(`RoomEvent.TrackUnsubscribed: ${(e as Error).message}`);
|
|
433
433
|
}
|
|
434
434
|
} else if (ev.case == 'trackSubscriptionFailed') {
|
|
435
435
|
try {
|
|
@@ -440,8 +440,8 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
|
|
|
440
440
|
participant,
|
|
441
441
|
ev.value.error,
|
|
442
442
|
);
|
|
443
|
-
} catch (e:
|
|
444
|
-
console.warn(`RoomEvent.TrackSubscriptionFailed: ${e.message}`);
|
|
443
|
+
} catch (e: unknown) {
|
|
444
|
+
console.warn(`RoomEvent.TrackSubscriptionFailed: ${(e as Error).message}`);
|
|
445
445
|
}
|
|
446
446
|
} else if (ev.case == 'trackMuted') {
|
|
447
447
|
try {
|
|
@@ -454,8 +454,8 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
|
|
|
454
454
|
publication.track.info!.muted = true;
|
|
455
455
|
}
|
|
456
456
|
this.emit(RoomEvent.TrackMuted, publication, participant);
|
|
457
|
-
} catch (e:
|
|
458
|
-
console.warn(`RoomEvent.TrackMuted: ${e.message}`);
|
|
457
|
+
} catch (e: unknown) {
|
|
458
|
+
console.warn(`RoomEvent.TrackMuted: ${(e as Error).message}`);
|
|
459
459
|
}
|
|
460
460
|
} else if (ev.case == 'trackUnmuted') {
|
|
461
461
|
try {
|
|
@@ -468,8 +468,8 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
|
|
|
468
468
|
publication.track.info!.muted = false;
|
|
469
469
|
}
|
|
470
470
|
this.emit(RoomEvent.TrackUnmuted, publication, participant);
|
|
471
|
-
} catch (e:
|
|
472
|
-
console.warn(`RoomEvent.TrackUnmuted: ${e.message}`);
|
|
471
|
+
} catch (e: unknown) {
|
|
472
|
+
console.warn(`RoomEvent.TrackUnmuted: ${(e as Error).message}`);
|
|
473
473
|
}
|
|
474
474
|
} else if (ev.case == 'activeSpeakersChanged') {
|
|
475
475
|
try {
|
|
@@ -477,8 +477,8 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
|
|
|
477
477
|
this.requireParticipantByIdentity(identity),
|
|
478
478
|
);
|
|
479
479
|
this.emit(RoomEvent.ActiveSpeakersChanged, activeSpeakers);
|
|
480
|
-
} catch (e:
|
|
481
|
-
console.warn(`RoomEvent.ActiveSpeakersChanged: ${e.message}`);
|
|
480
|
+
} catch (e: unknown) {
|
|
481
|
+
console.warn(`RoomEvent.ActiveSpeakersChanged: ${(e as Error).message}`);
|
|
482
482
|
}
|
|
483
483
|
} else if (ev.case == 'roomMetadataChanged') {
|
|
484
484
|
this.info.metadata = ev.value.metadata ?? '';
|
|
@@ -488,16 +488,16 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
|
|
|
488
488
|
const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);
|
|
489
489
|
participant.info.metadata = ev.value.metadata;
|
|
490
490
|
this.emit(RoomEvent.ParticipantMetadataChanged, participant.metadata, participant);
|
|
491
|
-
} catch (e:
|
|
492
|
-
console.warn(`RoomEvent.ParticipantMetadataChanged: ${e.message}`);
|
|
491
|
+
} catch (e: unknown) {
|
|
492
|
+
console.warn(`RoomEvent.ParticipantMetadataChanged: ${(e as Error).message}`);
|
|
493
493
|
}
|
|
494
494
|
} else if (ev.case == 'participantNameChanged') {
|
|
495
495
|
try {
|
|
496
496
|
const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);
|
|
497
497
|
participant.info.name = ev.value.name;
|
|
498
498
|
this.emit(RoomEvent.ParticipantNameChanged, participant.name!, participant);
|
|
499
|
-
} catch (e:
|
|
500
|
-
console.warn(`RoomEvent.ParticipantNameChanged: ${e.message}`);
|
|
499
|
+
} catch (e: unknown) {
|
|
500
|
+
console.warn(`RoomEvent.ParticipantNameChanged: ${(e as Error).message}`);
|
|
501
501
|
}
|
|
502
502
|
} else if (ev.case == 'participantAttributesChanged') {
|
|
503
503
|
try {
|
|
@@ -519,15 +519,15 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
|
|
|
519
519
|
);
|
|
520
520
|
this.emit(RoomEvent.ParticipantAttributesChanged, changedAttributes, participant);
|
|
521
521
|
}
|
|
522
|
-
} catch (e:
|
|
523
|
-
console.warn(`RoomEvent.ParticipantAttributesChanged: ${e.message}`);
|
|
522
|
+
} catch (e: unknown) {
|
|
523
|
+
console.warn(`RoomEvent.ParticipantAttributesChanged: ${(e as Error).message}`);
|
|
524
524
|
}
|
|
525
525
|
} else if (ev.case == 'connectionQualityChanged') {
|
|
526
526
|
try {
|
|
527
527
|
const participant = this.requireParticipantByIdentity(ev.value.participantIdentity!);
|
|
528
528
|
this.emit(RoomEvent.ConnectionQualityChanged, ev.value.quality!, participant);
|
|
529
|
-
} catch (e:
|
|
530
|
-
console.warn(`RoomEvent.ConnectionQualityChanged: ${e.message}`);
|
|
529
|
+
} catch (e: unknown) {
|
|
530
|
+
console.warn(`RoomEvent.ConnectionQualityChanged: ${(e as Error).message}`);
|
|
531
531
|
}
|
|
532
532
|
} else if (ev.case == 'chatMessage') {
|
|
533
533
|
const participant = this.retrieveParticipantByIdentity(ev.value.participantIdentity!);
|
|
@@ -611,8 +611,8 @@ export class Room extends (EventEmitter as new () => TypedEmitter<RoomCallbacks>
|
|
|
611
611
|
!!ev.value.isEncrypted,
|
|
612
612
|
participant,
|
|
613
613
|
);
|
|
614
|
-
} catch (e:
|
|
615
|
-
console.warn(`RoomEvent.ParticipantEncryptionStatusChanged: ${e.message}`);
|
|
614
|
+
} catch (e: unknown) {
|
|
615
|
+
console.warn(`RoomEvent.ParticipantEncryptionStatusChanged: ${(e as Error).message}`);
|
|
616
616
|
}
|
|
617
617
|
}
|
|
618
618
|
};
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const SDK_VERSION = "0.13.
|
|
1
|
+
export const SDK_VERSION = "0.13.23";
|