livekit-client 0.15.2 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/dist/api/SignalClient.d.ts +11 -3
  2. package/dist/api/SignalClient.js +92 -28
  3. package/dist/api/SignalClient.js.map +1 -1
  4. package/dist/index.d.ts +4 -2
  5. package/dist/index.js +5 -3
  6. package/dist/index.js.map +1 -1
  7. package/dist/options.d.ts +5 -0
  8. package/dist/proto/livekit_models.d.ts +33 -0
  9. package/dist/proto/livekit_models.js +263 -4
  10. package/dist/proto/livekit_models.js.map +1 -1
  11. package/dist/proto/livekit_rtc.d.ts +48 -10
  12. package/dist/proto/livekit_rtc.js +273 -22
  13. package/dist/proto/livekit_rtc.js.map +1 -1
  14. package/dist/room/PCTransport.js +4 -0
  15. package/dist/room/PCTransport.js.map +1 -1
  16. package/dist/room/RTCEngine.d.ts +10 -2
  17. package/dist/room/RTCEngine.js +182 -42
  18. package/dist/room/RTCEngine.js.map +1 -1
  19. package/dist/room/Room.d.ts +15 -0
  20. package/dist/room/Room.js +165 -20
  21. package/dist/room/Room.js.map +1 -1
  22. package/dist/room/events.d.ts +42 -20
  23. package/dist/room/events.js +41 -19
  24. package/dist/room/events.js.map +1 -1
  25. package/dist/room/participant/LocalParticipant.d.ts +25 -4
  26. package/dist/room/participant/LocalParticipant.js +47 -20
  27. package/dist/room/participant/LocalParticipant.js.map +1 -1
  28. package/dist/room/participant/Participant.d.ts +1 -1
  29. package/dist/room/participant/ParticipantTrackPermission.d.ts +19 -0
  30. package/dist/room/participant/ParticipantTrackPermission.js +16 -0
  31. package/dist/room/participant/ParticipantTrackPermission.js.map +1 -0
  32. package/dist/room/participant/RemoteParticipant.d.ts +2 -2
  33. package/dist/room/participant/RemoteParticipant.js +11 -14
  34. package/dist/room/participant/RemoteParticipant.js.map +1 -1
  35. package/dist/room/participant/publishUtils.js +1 -1
  36. package/dist/room/participant/publishUtils.js.map +1 -1
  37. package/dist/room/participant/publishUtils.test.js +9 -0
  38. package/dist/room/participant/publishUtils.test.js.map +1 -1
  39. package/dist/room/track/LocalTrack.d.ts +0 -3
  40. package/dist/room/track/LocalTrack.js +1 -6
  41. package/dist/room/track/LocalTrack.js.map +1 -1
  42. package/dist/room/track/LocalTrackPublication.d.ts +5 -1
  43. package/dist/room/track/LocalTrackPublication.js +15 -5
  44. package/dist/room/track/LocalTrackPublication.js.map +1 -1
  45. package/dist/room/track/LocalVideoTrack.js +2 -0
  46. package/dist/room/track/LocalVideoTrack.js.map +1 -1
  47. package/dist/room/track/RemoteAudioTrack.d.ts +5 -14
  48. package/dist/room/track/RemoteAudioTrack.js +7 -32
  49. package/dist/room/track/RemoteAudioTrack.js.map +1 -1
  50. package/dist/room/track/RemoteTrack.d.ts +14 -0
  51. package/dist/room/track/RemoteTrack.js +47 -0
  52. package/dist/room/track/RemoteTrack.js.map +1 -0
  53. package/dist/room/track/RemoteTrackPublication.d.ts +10 -2
  54. package/dist/room/track/RemoteTrackPublication.js +51 -13
  55. package/dist/room/track/RemoteTrackPublication.js.map +1 -1
  56. package/dist/room/track/RemoteVideoTrack.d.ts +3 -9
  57. package/dist/room/track/RemoteVideoTrack.js +16 -36
  58. package/dist/room/track/RemoteVideoTrack.js.map +1 -1
  59. package/dist/room/track/Track.d.ts +3 -0
  60. package/dist/room/track/Track.js +14 -5
  61. package/dist/room/track/Track.js.map +1 -1
  62. package/dist/room/track/TrackPublication.d.ts +12 -1
  63. package/dist/room/track/TrackPublication.js +23 -7
  64. package/dist/room/track/TrackPublication.js.map +1 -1
  65. package/dist/room/track/create.js +5 -0
  66. package/dist/room/track/create.js.map +1 -1
  67. package/dist/room/utils.d.ts +2 -0
  68. package/dist/room/utils.js +12 -1
  69. package/dist/room/utils.js.map +1 -1
  70. package/dist/version.d.ts +2 -2
  71. package/dist/version.js +2 -2
  72. package/package.json +3 -3
  73. package/src/api/SignalClient.ts +444 -0
  74. package/src/connect.ts +100 -0
  75. package/src/index.ts +47 -0
  76. package/src/logger.ts +22 -0
  77. package/src/options.ts +152 -0
  78. package/src/proto/livekit_models.ts +1863 -0
  79. package/src/proto/livekit_rtc.ts +3415 -0
  80. package/src/room/DeviceManager.ts +57 -0
  81. package/src/room/PCTransport.ts +86 -0
  82. package/src/room/RTCEngine.ts +582 -0
  83. package/src/room/Room.ts +840 -0
  84. package/src/room/errors.ts +65 -0
  85. package/src/room/events.ts +398 -0
  86. package/src/room/participant/LocalParticipant.ts +685 -0
  87. package/src/room/participant/Participant.ts +214 -0
  88. package/src/room/participant/ParticipantTrackPermission.ts +32 -0
  89. package/src/room/participant/RemoteParticipant.ts +241 -0
  90. package/src/room/participant/publishUtils.test.ts +105 -0
  91. package/src/room/participant/publishUtils.ts +180 -0
  92. package/src/room/stats.ts +130 -0
  93. package/src/room/track/LocalAudioTrack.ts +112 -0
  94. package/src/room/track/LocalTrack.ts +124 -0
  95. package/src/room/track/LocalTrackPublication.ts +66 -0
  96. package/src/room/track/LocalVideoTrack.test.ts +70 -0
  97. package/src/room/track/LocalVideoTrack.ts +416 -0
  98. package/src/room/track/RemoteAudioTrack.ts +58 -0
  99. package/src/room/track/RemoteTrack.ts +59 -0
  100. package/src/room/track/RemoteTrackPublication.ts +198 -0
  101. package/src/room/track/RemoteVideoTrack.ts +215 -0
  102. package/src/room/track/Track.ts +307 -0
  103. package/src/room/track/TrackPublication.ts +120 -0
  104. package/src/room/track/create.ts +120 -0
  105. package/src/room/track/defaults.ts +23 -0
  106. package/src/room/track/options.ts +229 -0
  107. package/src/room/track/types.ts +8 -0
  108. package/src/room/track/utils.test.ts +93 -0
  109. package/src/room/track/utils.ts +76 -0
  110. package/src/room/utils.ts +58 -0
  111. package/src/version.ts +2 -0
  112. package/.github/workflows/publish.yaml +0 -55
  113. package/.github/workflows/test.yaml +0 -36
  114. package/example/index.html +0 -248
  115. package/example/sample.ts +0 -621
  116. package/example/styles.css +0 -144
  117. package/example/webpack.config.js +0 -33
@@ -0,0 +1,1863 @@
1
+ /* eslint-disable */
2
+ import Long from "long";
3
+ import _m0 from "protobufjs/minimal";
4
+
5
+ export const protobufPackage = "livekit";
6
+
7
+ export enum TrackType {
8
+ AUDIO = 0,
9
+ VIDEO = 1,
10
+ DATA = 2,
11
+ UNRECOGNIZED = -1,
12
+ }
13
+
14
+ export function trackTypeFromJSON(object: any): TrackType {
15
+ switch (object) {
16
+ case 0:
17
+ case "AUDIO":
18
+ return TrackType.AUDIO;
19
+ case 1:
20
+ case "VIDEO":
21
+ return TrackType.VIDEO;
22
+ case 2:
23
+ case "DATA":
24
+ return TrackType.DATA;
25
+ case -1:
26
+ case "UNRECOGNIZED":
27
+ default:
28
+ return TrackType.UNRECOGNIZED;
29
+ }
30
+ }
31
+
32
+ export function trackTypeToJSON(object: TrackType): string {
33
+ switch (object) {
34
+ case TrackType.AUDIO:
35
+ return "AUDIO";
36
+ case TrackType.VIDEO:
37
+ return "VIDEO";
38
+ case TrackType.DATA:
39
+ return "DATA";
40
+ default:
41
+ return "UNKNOWN";
42
+ }
43
+ }
44
+
45
+ export enum TrackSource {
46
+ UNKNOWN = 0,
47
+ CAMERA = 1,
48
+ MICROPHONE = 2,
49
+ SCREEN_SHARE = 3,
50
+ SCREEN_SHARE_AUDIO = 4,
51
+ UNRECOGNIZED = -1,
52
+ }
53
+
54
+ export function trackSourceFromJSON(object: any): TrackSource {
55
+ switch (object) {
56
+ case 0:
57
+ case "UNKNOWN":
58
+ return TrackSource.UNKNOWN;
59
+ case 1:
60
+ case "CAMERA":
61
+ return TrackSource.CAMERA;
62
+ case 2:
63
+ case "MICROPHONE":
64
+ return TrackSource.MICROPHONE;
65
+ case 3:
66
+ case "SCREEN_SHARE":
67
+ return TrackSource.SCREEN_SHARE;
68
+ case 4:
69
+ case "SCREEN_SHARE_AUDIO":
70
+ return TrackSource.SCREEN_SHARE_AUDIO;
71
+ case -1:
72
+ case "UNRECOGNIZED":
73
+ default:
74
+ return TrackSource.UNRECOGNIZED;
75
+ }
76
+ }
77
+
78
+ export function trackSourceToJSON(object: TrackSource): string {
79
+ switch (object) {
80
+ case TrackSource.UNKNOWN:
81
+ return "UNKNOWN";
82
+ case TrackSource.CAMERA:
83
+ return "CAMERA";
84
+ case TrackSource.MICROPHONE:
85
+ return "MICROPHONE";
86
+ case TrackSource.SCREEN_SHARE:
87
+ return "SCREEN_SHARE";
88
+ case TrackSource.SCREEN_SHARE_AUDIO:
89
+ return "SCREEN_SHARE_AUDIO";
90
+ default:
91
+ return "UNKNOWN";
92
+ }
93
+ }
94
+
95
+ export enum VideoQuality {
96
+ LOW = 0,
97
+ MEDIUM = 1,
98
+ HIGH = 2,
99
+ OFF = 3,
100
+ UNRECOGNIZED = -1,
101
+ }
102
+
103
+ export function videoQualityFromJSON(object: any): VideoQuality {
104
+ switch (object) {
105
+ case 0:
106
+ case "LOW":
107
+ return VideoQuality.LOW;
108
+ case 1:
109
+ case "MEDIUM":
110
+ return VideoQuality.MEDIUM;
111
+ case 2:
112
+ case "HIGH":
113
+ return VideoQuality.HIGH;
114
+ case 3:
115
+ case "OFF":
116
+ return VideoQuality.OFF;
117
+ case -1:
118
+ case "UNRECOGNIZED":
119
+ default:
120
+ return VideoQuality.UNRECOGNIZED;
121
+ }
122
+ }
123
+
124
+ export function videoQualityToJSON(object: VideoQuality): string {
125
+ switch (object) {
126
+ case VideoQuality.LOW:
127
+ return "LOW";
128
+ case VideoQuality.MEDIUM:
129
+ return "MEDIUM";
130
+ case VideoQuality.HIGH:
131
+ return "HIGH";
132
+ case VideoQuality.OFF:
133
+ return "OFF";
134
+ default:
135
+ return "UNKNOWN";
136
+ }
137
+ }
138
+
139
+ export enum ConnectionQuality {
140
+ POOR = 0,
141
+ GOOD = 1,
142
+ EXCELLENT = 2,
143
+ UNRECOGNIZED = -1,
144
+ }
145
+
146
+ export function connectionQualityFromJSON(object: any): ConnectionQuality {
147
+ switch (object) {
148
+ case 0:
149
+ case "POOR":
150
+ return ConnectionQuality.POOR;
151
+ case 1:
152
+ case "GOOD":
153
+ return ConnectionQuality.GOOD;
154
+ case 2:
155
+ case "EXCELLENT":
156
+ return ConnectionQuality.EXCELLENT;
157
+ case -1:
158
+ case "UNRECOGNIZED":
159
+ default:
160
+ return ConnectionQuality.UNRECOGNIZED;
161
+ }
162
+ }
163
+
164
+ export function connectionQualityToJSON(object: ConnectionQuality): string {
165
+ switch (object) {
166
+ case ConnectionQuality.POOR:
167
+ return "POOR";
168
+ case ConnectionQuality.GOOD:
169
+ return "GOOD";
170
+ case ConnectionQuality.EXCELLENT:
171
+ return "EXCELLENT";
172
+ default:
173
+ return "UNKNOWN";
174
+ }
175
+ }
176
+
177
+ export interface Room {
178
+ sid: string;
179
+ name: string;
180
+ emptyTimeout: number;
181
+ maxParticipants: number;
182
+ creationTime: number;
183
+ turnPassword: string;
184
+ enabledCodecs: Codec[];
185
+ metadata: string;
186
+ numParticipants: number;
187
+ activeRecording: boolean;
188
+ }
189
+
190
+ export interface Codec {
191
+ mime: string;
192
+ fmtpLine: string;
193
+ }
194
+
195
+ export interface ParticipantInfo {
196
+ sid: string;
197
+ identity: string;
198
+ state: ParticipantInfo_State;
199
+ tracks: TrackInfo[];
200
+ metadata: string;
201
+ /** timestamp when participant joined room, in seconds */
202
+ joinedAt: number;
203
+ hidden: boolean;
204
+ recorder: boolean;
205
+ name: string;
206
+ }
207
+
208
+ export enum ParticipantInfo_State {
209
+ /** JOINING - websocket' connected, but not offered yet */
210
+ JOINING = 0,
211
+ /** JOINED - server received client offer */
212
+ JOINED = 1,
213
+ /** ACTIVE - ICE connectivity established */
214
+ ACTIVE = 2,
215
+ /** DISCONNECTED - WS disconnected */
216
+ DISCONNECTED = 3,
217
+ UNRECOGNIZED = -1,
218
+ }
219
+
220
+ export function participantInfo_StateFromJSON(
221
+ object: any
222
+ ): ParticipantInfo_State {
223
+ switch (object) {
224
+ case 0:
225
+ case "JOINING":
226
+ return ParticipantInfo_State.JOINING;
227
+ case 1:
228
+ case "JOINED":
229
+ return ParticipantInfo_State.JOINED;
230
+ case 2:
231
+ case "ACTIVE":
232
+ return ParticipantInfo_State.ACTIVE;
233
+ case 3:
234
+ case "DISCONNECTED":
235
+ return ParticipantInfo_State.DISCONNECTED;
236
+ case -1:
237
+ case "UNRECOGNIZED":
238
+ default:
239
+ return ParticipantInfo_State.UNRECOGNIZED;
240
+ }
241
+ }
242
+
243
+ export function participantInfo_StateToJSON(
244
+ object: ParticipantInfo_State
245
+ ): string {
246
+ switch (object) {
247
+ case ParticipantInfo_State.JOINING:
248
+ return "JOINING";
249
+ case ParticipantInfo_State.JOINED:
250
+ return "JOINED";
251
+ case ParticipantInfo_State.ACTIVE:
252
+ return "ACTIVE";
253
+ case ParticipantInfo_State.DISCONNECTED:
254
+ return "DISCONNECTED";
255
+ default:
256
+ return "UNKNOWN";
257
+ }
258
+ }
259
+
260
+ export interface TrackInfo {
261
+ sid: string;
262
+ type: TrackType;
263
+ name: string;
264
+ muted: boolean;
265
+ /**
266
+ * original width of video (unset for audio)
267
+ * clients may receive a lower resolution version with simulcast
268
+ */
269
+ width: number;
270
+ /** original height of video (unset for audio) */
271
+ height: number;
272
+ /** true if track is simulcasted */
273
+ simulcast: boolean;
274
+ /** true if DTX (Discontinuous Transmission) is disabled for audio */
275
+ disableDtx: boolean;
276
+ /** source of media */
277
+ source: TrackSource;
278
+ layers: VideoLayer[];
279
+ /** mime type of codec */
280
+ mimeType: string;
281
+ mid: string;
282
+ }
283
+
284
+ /** provide information about available spatial layers */
285
+ export interface VideoLayer {
286
+ /** for tracks with a single layer, this should be HIGH */
287
+ quality: VideoQuality;
288
+ width: number;
289
+ height: number;
290
+ /** target bitrate, server will measure actual */
291
+ bitrate: number;
292
+ ssrc: number;
293
+ }
294
+
295
+ /** new DataPacket API */
296
+ export interface DataPacket {
297
+ kind: DataPacket_Kind;
298
+ user?: UserPacket | undefined;
299
+ speaker?: ActiveSpeakerUpdate | undefined;
300
+ }
301
+
302
+ export enum DataPacket_Kind {
303
+ RELIABLE = 0,
304
+ LOSSY = 1,
305
+ UNRECOGNIZED = -1,
306
+ }
307
+
308
+ export function dataPacket_KindFromJSON(object: any): DataPacket_Kind {
309
+ switch (object) {
310
+ case 0:
311
+ case "RELIABLE":
312
+ return DataPacket_Kind.RELIABLE;
313
+ case 1:
314
+ case "LOSSY":
315
+ return DataPacket_Kind.LOSSY;
316
+ case -1:
317
+ case "UNRECOGNIZED":
318
+ default:
319
+ return DataPacket_Kind.UNRECOGNIZED;
320
+ }
321
+ }
322
+
323
+ export function dataPacket_KindToJSON(object: DataPacket_Kind): string {
324
+ switch (object) {
325
+ case DataPacket_Kind.RELIABLE:
326
+ return "RELIABLE";
327
+ case DataPacket_Kind.LOSSY:
328
+ return "LOSSY";
329
+ default:
330
+ return "UNKNOWN";
331
+ }
332
+ }
333
+
334
+ export interface ActiveSpeakerUpdate {
335
+ speakers: SpeakerInfo[];
336
+ }
337
+
338
+ export interface SpeakerInfo {
339
+ sid: string;
340
+ /** audio level, 0-1.0, 1 is loudest */
341
+ level: number;
342
+ /** true if speaker is currently active */
343
+ active: boolean;
344
+ }
345
+
346
+ export interface UserPacket {
347
+ /** participant ID of user that sent the message */
348
+ participantSid: string;
349
+ /** user defined payload */
350
+ payload: Uint8Array;
351
+ /** the ID of the participants who will receive the message (the message will be sent to all the people in the room if this variable is empty) */
352
+ destinationSids: string[];
353
+ }
354
+
355
+ export interface ParticipantTracks {
356
+ /** participant ID of participant to whom the tracks belong */
357
+ participantSid: string;
358
+ trackSids: string[];
359
+ }
360
+
361
+ /** details about the client */
362
+ export interface ClientInfo {
363
+ sdk: ClientInfo_SDK;
364
+ version: string;
365
+ protocol: number;
366
+ os: string;
367
+ osVersion: string;
368
+ deviceModel: string;
369
+ browser: string;
370
+ browserVersion: string;
371
+ }
372
+
373
+ export enum ClientInfo_SDK {
374
+ UNKNOWN = 0,
375
+ JS = 1,
376
+ SWIFT = 2,
377
+ ANDROID = 3,
378
+ FLUTTER = 4,
379
+ GO = 5,
380
+ UNITY = 6,
381
+ UNRECOGNIZED = -1,
382
+ }
383
+
384
+ export function clientInfo_SDKFromJSON(object: any): ClientInfo_SDK {
385
+ switch (object) {
386
+ case 0:
387
+ case "UNKNOWN":
388
+ return ClientInfo_SDK.UNKNOWN;
389
+ case 1:
390
+ case "JS":
391
+ return ClientInfo_SDK.JS;
392
+ case 2:
393
+ case "SWIFT":
394
+ return ClientInfo_SDK.SWIFT;
395
+ case 3:
396
+ case "ANDROID":
397
+ return ClientInfo_SDK.ANDROID;
398
+ case 4:
399
+ case "FLUTTER":
400
+ return ClientInfo_SDK.FLUTTER;
401
+ case 5:
402
+ case "GO":
403
+ return ClientInfo_SDK.GO;
404
+ case 6:
405
+ case "UNITY":
406
+ return ClientInfo_SDK.UNITY;
407
+ case -1:
408
+ case "UNRECOGNIZED":
409
+ default:
410
+ return ClientInfo_SDK.UNRECOGNIZED;
411
+ }
412
+ }
413
+
414
+ export function clientInfo_SDKToJSON(object: ClientInfo_SDK): string {
415
+ switch (object) {
416
+ case ClientInfo_SDK.UNKNOWN:
417
+ return "UNKNOWN";
418
+ case ClientInfo_SDK.JS:
419
+ return "JS";
420
+ case ClientInfo_SDK.SWIFT:
421
+ return "SWIFT";
422
+ case ClientInfo_SDK.ANDROID:
423
+ return "ANDROID";
424
+ case ClientInfo_SDK.FLUTTER:
425
+ return "FLUTTER";
426
+ case ClientInfo_SDK.GO:
427
+ return "GO";
428
+ case ClientInfo_SDK.UNITY:
429
+ return "UNITY";
430
+ default:
431
+ return "UNKNOWN";
432
+ }
433
+ }
434
+
435
+ const baseRoom: object = {
436
+ sid: "",
437
+ name: "",
438
+ emptyTimeout: 0,
439
+ maxParticipants: 0,
440
+ creationTime: 0,
441
+ turnPassword: "",
442
+ metadata: "",
443
+ numParticipants: 0,
444
+ activeRecording: false,
445
+ };
446
+
447
+ export const Room = {
448
+ encode(message: Room, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
449
+ if (message.sid !== "") {
450
+ writer.uint32(10).string(message.sid);
451
+ }
452
+ if (message.name !== "") {
453
+ writer.uint32(18).string(message.name);
454
+ }
455
+ if (message.emptyTimeout !== 0) {
456
+ writer.uint32(24).uint32(message.emptyTimeout);
457
+ }
458
+ if (message.maxParticipants !== 0) {
459
+ writer.uint32(32).uint32(message.maxParticipants);
460
+ }
461
+ if (message.creationTime !== 0) {
462
+ writer.uint32(40).int64(message.creationTime);
463
+ }
464
+ if (message.turnPassword !== "") {
465
+ writer.uint32(50).string(message.turnPassword);
466
+ }
467
+ for (const v of message.enabledCodecs) {
468
+ Codec.encode(v!, writer.uint32(58).fork()).ldelim();
469
+ }
470
+ if (message.metadata !== "") {
471
+ writer.uint32(66).string(message.metadata);
472
+ }
473
+ if (message.numParticipants !== 0) {
474
+ writer.uint32(72).uint32(message.numParticipants);
475
+ }
476
+ if (message.activeRecording === true) {
477
+ writer.uint32(80).bool(message.activeRecording);
478
+ }
479
+ return writer;
480
+ },
481
+
482
+ decode(input: _m0.Reader | Uint8Array, length?: number): Room {
483
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
484
+ let end = length === undefined ? reader.len : reader.pos + length;
485
+ const message = { ...baseRoom } as Room;
486
+ message.enabledCodecs = [];
487
+ while (reader.pos < end) {
488
+ const tag = reader.uint32();
489
+ switch (tag >>> 3) {
490
+ case 1:
491
+ message.sid = reader.string();
492
+ break;
493
+ case 2:
494
+ message.name = reader.string();
495
+ break;
496
+ case 3:
497
+ message.emptyTimeout = reader.uint32();
498
+ break;
499
+ case 4:
500
+ message.maxParticipants = reader.uint32();
501
+ break;
502
+ case 5:
503
+ message.creationTime = longToNumber(reader.int64() as Long);
504
+ break;
505
+ case 6:
506
+ message.turnPassword = reader.string();
507
+ break;
508
+ case 7:
509
+ message.enabledCodecs.push(Codec.decode(reader, reader.uint32()));
510
+ break;
511
+ case 8:
512
+ message.metadata = reader.string();
513
+ break;
514
+ case 9:
515
+ message.numParticipants = reader.uint32();
516
+ break;
517
+ case 10:
518
+ message.activeRecording = reader.bool();
519
+ break;
520
+ default:
521
+ reader.skipType(tag & 7);
522
+ break;
523
+ }
524
+ }
525
+ return message;
526
+ },
527
+
528
+ fromJSON(object: any): Room {
529
+ const message = { ...baseRoom } as Room;
530
+ message.enabledCodecs = [];
531
+ if (object.sid !== undefined && object.sid !== null) {
532
+ message.sid = String(object.sid);
533
+ } else {
534
+ message.sid = "";
535
+ }
536
+ if (object.name !== undefined && object.name !== null) {
537
+ message.name = String(object.name);
538
+ } else {
539
+ message.name = "";
540
+ }
541
+ if (object.emptyTimeout !== undefined && object.emptyTimeout !== null) {
542
+ message.emptyTimeout = Number(object.emptyTimeout);
543
+ } else {
544
+ message.emptyTimeout = 0;
545
+ }
546
+ if (
547
+ object.maxParticipants !== undefined &&
548
+ object.maxParticipants !== null
549
+ ) {
550
+ message.maxParticipants = Number(object.maxParticipants);
551
+ } else {
552
+ message.maxParticipants = 0;
553
+ }
554
+ if (object.creationTime !== undefined && object.creationTime !== null) {
555
+ message.creationTime = Number(object.creationTime);
556
+ } else {
557
+ message.creationTime = 0;
558
+ }
559
+ if (object.turnPassword !== undefined && object.turnPassword !== null) {
560
+ message.turnPassword = String(object.turnPassword);
561
+ } else {
562
+ message.turnPassword = "";
563
+ }
564
+ if (object.enabledCodecs !== undefined && object.enabledCodecs !== null) {
565
+ for (const e of object.enabledCodecs) {
566
+ message.enabledCodecs.push(Codec.fromJSON(e));
567
+ }
568
+ }
569
+ if (object.metadata !== undefined && object.metadata !== null) {
570
+ message.metadata = String(object.metadata);
571
+ } else {
572
+ message.metadata = "";
573
+ }
574
+ if (
575
+ object.numParticipants !== undefined &&
576
+ object.numParticipants !== null
577
+ ) {
578
+ message.numParticipants = Number(object.numParticipants);
579
+ } else {
580
+ message.numParticipants = 0;
581
+ }
582
+ if (
583
+ object.activeRecording !== undefined &&
584
+ object.activeRecording !== null
585
+ ) {
586
+ message.activeRecording = Boolean(object.activeRecording);
587
+ } else {
588
+ message.activeRecording = false;
589
+ }
590
+ return message;
591
+ },
592
+
593
+ toJSON(message: Room): unknown {
594
+ const obj: any = {};
595
+ message.sid !== undefined && (obj.sid = message.sid);
596
+ message.name !== undefined && (obj.name = message.name);
597
+ message.emptyTimeout !== undefined &&
598
+ (obj.emptyTimeout = message.emptyTimeout);
599
+ message.maxParticipants !== undefined &&
600
+ (obj.maxParticipants = message.maxParticipants);
601
+ message.creationTime !== undefined &&
602
+ (obj.creationTime = message.creationTime);
603
+ message.turnPassword !== undefined &&
604
+ (obj.turnPassword = message.turnPassword);
605
+ if (message.enabledCodecs) {
606
+ obj.enabledCodecs = message.enabledCodecs.map((e) =>
607
+ e ? Codec.toJSON(e) : undefined
608
+ );
609
+ } else {
610
+ obj.enabledCodecs = [];
611
+ }
612
+ message.metadata !== undefined && (obj.metadata = message.metadata);
613
+ message.numParticipants !== undefined &&
614
+ (obj.numParticipants = message.numParticipants);
615
+ message.activeRecording !== undefined &&
616
+ (obj.activeRecording = message.activeRecording);
617
+ return obj;
618
+ },
619
+
620
+ fromPartial(object: DeepPartial<Room>): Room {
621
+ const message = { ...baseRoom } as Room;
622
+ message.sid = object.sid ?? "";
623
+ message.name = object.name ?? "";
624
+ message.emptyTimeout = object.emptyTimeout ?? 0;
625
+ message.maxParticipants = object.maxParticipants ?? 0;
626
+ message.creationTime = object.creationTime ?? 0;
627
+ message.turnPassword = object.turnPassword ?? "";
628
+ message.enabledCodecs = [];
629
+ if (object.enabledCodecs !== undefined && object.enabledCodecs !== null) {
630
+ for (const e of object.enabledCodecs) {
631
+ message.enabledCodecs.push(Codec.fromPartial(e));
632
+ }
633
+ }
634
+ message.metadata = object.metadata ?? "";
635
+ message.numParticipants = object.numParticipants ?? 0;
636
+ message.activeRecording = object.activeRecording ?? false;
637
+ return message;
638
+ },
639
+ };
640
+
641
+ const baseCodec: object = { mime: "", fmtpLine: "" };
642
+
643
+ export const Codec = {
644
+ encode(message: Codec, writer: _m0.Writer = _m0.Writer.create()): _m0.Writer {
645
+ if (message.mime !== "") {
646
+ writer.uint32(10).string(message.mime);
647
+ }
648
+ if (message.fmtpLine !== "") {
649
+ writer.uint32(18).string(message.fmtpLine);
650
+ }
651
+ return writer;
652
+ },
653
+
654
+ decode(input: _m0.Reader | Uint8Array, length?: number): Codec {
655
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
656
+ let end = length === undefined ? reader.len : reader.pos + length;
657
+ const message = { ...baseCodec } as Codec;
658
+ while (reader.pos < end) {
659
+ const tag = reader.uint32();
660
+ switch (tag >>> 3) {
661
+ case 1:
662
+ message.mime = reader.string();
663
+ break;
664
+ case 2:
665
+ message.fmtpLine = reader.string();
666
+ break;
667
+ default:
668
+ reader.skipType(tag & 7);
669
+ break;
670
+ }
671
+ }
672
+ return message;
673
+ },
674
+
675
+ fromJSON(object: any): Codec {
676
+ const message = { ...baseCodec } as Codec;
677
+ if (object.mime !== undefined && object.mime !== null) {
678
+ message.mime = String(object.mime);
679
+ } else {
680
+ message.mime = "";
681
+ }
682
+ if (object.fmtpLine !== undefined && object.fmtpLine !== null) {
683
+ message.fmtpLine = String(object.fmtpLine);
684
+ } else {
685
+ message.fmtpLine = "";
686
+ }
687
+ return message;
688
+ },
689
+
690
+ toJSON(message: Codec): unknown {
691
+ const obj: any = {};
692
+ message.mime !== undefined && (obj.mime = message.mime);
693
+ message.fmtpLine !== undefined && (obj.fmtpLine = message.fmtpLine);
694
+ return obj;
695
+ },
696
+
697
+ fromPartial(object: DeepPartial<Codec>): Codec {
698
+ const message = { ...baseCodec } as Codec;
699
+ message.mime = object.mime ?? "";
700
+ message.fmtpLine = object.fmtpLine ?? "";
701
+ return message;
702
+ },
703
+ };
704
+
705
+ const baseParticipantInfo: object = {
706
+ sid: "",
707
+ identity: "",
708
+ state: 0,
709
+ metadata: "",
710
+ joinedAt: 0,
711
+ hidden: false,
712
+ recorder: false,
713
+ name: "",
714
+ };
715
+
716
+ export const ParticipantInfo = {
717
+ encode(
718
+ message: ParticipantInfo,
719
+ writer: _m0.Writer = _m0.Writer.create()
720
+ ): _m0.Writer {
721
+ if (message.sid !== "") {
722
+ writer.uint32(10).string(message.sid);
723
+ }
724
+ if (message.identity !== "") {
725
+ writer.uint32(18).string(message.identity);
726
+ }
727
+ if (message.state !== 0) {
728
+ writer.uint32(24).int32(message.state);
729
+ }
730
+ for (const v of message.tracks) {
731
+ TrackInfo.encode(v!, writer.uint32(34).fork()).ldelim();
732
+ }
733
+ if (message.metadata !== "") {
734
+ writer.uint32(42).string(message.metadata);
735
+ }
736
+ if (message.joinedAt !== 0) {
737
+ writer.uint32(48).int64(message.joinedAt);
738
+ }
739
+ if (message.hidden === true) {
740
+ writer.uint32(56).bool(message.hidden);
741
+ }
742
+ if (message.recorder === true) {
743
+ writer.uint32(64).bool(message.recorder);
744
+ }
745
+ if (message.name !== "") {
746
+ writer.uint32(74).string(message.name);
747
+ }
748
+ return writer;
749
+ },
750
+
751
+ decode(input: _m0.Reader | Uint8Array, length?: number): ParticipantInfo {
752
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
753
+ let end = length === undefined ? reader.len : reader.pos + length;
754
+ const message = { ...baseParticipantInfo } as ParticipantInfo;
755
+ message.tracks = [];
756
+ while (reader.pos < end) {
757
+ const tag = reader.uint32();
758
+ switch (tag >>> 3) {
759
+ case 1:
760
+ message.sid = reader.string();
761
+ break;
762
+ case 2:
763
+ message.identity = reader.string();
764
+ break;
765
+ case 3:
766
+ message.state = reader.int32() as any;
767
+ break;
768
+ case 4:
769
+ message.tracks.push(TrackInfo.decode(reader, reader.uint32()));
770
+ break;
771
+ case 5:
772
+ message.metadata = reader.string();
773
+ break;
774
+ case 6:
775
+ message.joinedAt = longToNumber(reader.int64() as Long);
776
+ break;
777
+ case 7:
778
+ message.hidden = reader.bool();
779
+ break;
780
+ case 8:
781
+ message.recorder = reader.bool();
782
+ break;
783
+ case 9:
784
+ message.name = reader.string();
785
+ break;
786
+ default:
787
+ reader.skipType(tag & 7);
788
+ break;
789
+ }
790
+ }
791
+ return message;
792
+ },
793
+
794
+ fromJSON(object: any): ParticipantInfo {
795
+ const message = { ...baseParticipantInfo } as ParticipantInfo;
796
+ message.tracks = [];
797
+ if (object.sid !== undefined && object.sid !== null) {
798
+ message.sid = String(object.sid);
799
+ } else {
800
+ message.sid = "";
801
+ }
802
+ if (object.identity !== undefined && object.identity !== null) {
803
+ message.identity = String(object.identity);
804
+ } else {
805
+ message.identity = "";
806
+ }
807
+ if (object.state !== undefined && object.state !== null) {
808
+ message.state = participantInfo_StateFromJSON(object.state);
809
+ } else {
810
+ message.state = 0;
811
+ }
812
+ if (object.tracks !== undefined && object.tracks !== null) {
813
+ for (const e of object.tracks) {
814
+ message.tracks.push(TrackInfo.fromJSON(e));
815
+ }
816
+ }
817
+ if (object.metadata !== undefined && object.metadata !== null) {
818
+ message.metadata = String(object.metadata);
819
+ } else {
820
+ message.metadata = "";
821
+ }
822
+ if (object.joinedAt !== undefined && object.joinedAt !== null) {
823
+ message.joinedAt = Number(object.joinedAt);
824
+ } else {
825
+ message.joinedAt = 0;
826
+ }
827
+ if (object.hidden !== undefined && object.hidden !== null) {
828
+ message.hidden = Boolean(object.hidden);
829
+ } else {
830
+ message.hidden = false;
831
+ }
832
+ if (object.recorder !== undefined && object.recorder !== null) {
833
+ message.recorder = Boolean(object.recorder);
834
+ } else {
835
+ message.recorder = false;
836
+ }
837
+ if (object.name !== undefined && object.name !== null) {
838
+ message.name = String(object.name);
839
+ } else {
840
+ message.name = "";
841
+ }
842
+ return message;
843
+ },
844
+
845
+ toJSON(message: ParticipantInfo): unknown {
846
+ const obj: any = {};
847
+ message.sid !== undefined && (obj.sid = message.sid);
848
+ message.identity !== undefined && (obj.identity = message.identity);
849
+ message.state !== undefined &&
850
+ (obj.state = participantInfo_StateToJSON(message.state));
851
+ if (message.tracks) {
852
+ obj.tracks = message.tracks.map((e) =>
853
+ e ? TrackInfo.toJSON(e) : undefined
854
+ );
855
+ } else {
856
+ obj.tracks = [];
857
+ }
858
+ message.metadata !== undefined && (obj.metadata = message.metadata);
859
+ message.joinedAt !== undefined && (obj.joinedAt = message.joinedAt);
860
+ message.hidden !== undefined && (obj.hidden = message.hidden);
861
+ message.recorder !== undefined && (obj.recorder = message.recorder);
862
+ message.name !== undefined && (obj.name = message.name);
863
+ return obj;
864
+ },
865
+
866
+ fromPartial(object: DeepPartial<ParticipantInfo>): ParticipantInfo {
867
+ const message = { ...baseParticipantInfo } as ParticipantInfo;
868
+ message.sid = object.sid ?? "";
869
+ message.identity = object.identity ?? "";
870
+ message.state = object.state ?? 0;
871
+ message.tracks = [];
872
+ if (object.tracks !== undefined && object.tracks !== null) {
873
+ for (const e of object.tracks) {
874
+ message.tracks.push(TrackInfo.fromPartial(e));
875
+ }
876
+ }
877
+ message.metadata = object.metadata ?? "";
878
+ message.joinedAt = object.joinedAt ?? 0;
879
+ message.hidden = object.hidden ?? false;
880
+ message.recorder = object.recorder ?? false;
881
+ message.name = object.name ?? "";
882
+ return message;
883
+ },
884
+ };
885
+
886
+ const baseTrackInfo: object = {
887
+ sid: "",
888
+ type: 0,
889
+ name: "",
890
+ muted: false,
891
+ width: 0,
892
+ height: 0,
893
+ simulcast: false,
894
+ disableDtx: false,
895
+ source: 0,
896
+ mimeType: "",
897
+ mid: "",
898
+ };
899
+
900
+ export const TrackInfo = {
901
+ encode(
902
+ message: TrackInfo,
903
+ writer: _m0.Writer = _m0.Writer.create()
904
+ ): _m0.Writer {
905
+ if (message.sid !== "") {
906
+ writer.uint32(10).string(message.sid);
907
+ }
908
+ if (message.type !== 0) {
909
+ writer.uint32(16).int32(message.type);
910
+ }
911
+ if (message.name !== "") {
912
+ writer.uint32(26).string(message.name);
913
+ }
914
+ if (message.muted === true) {
915
+ writer.uint32(32).bool(message.muted);
916
+ }
917
+ if (message.width !== 0) {
918
+ writer.uint32(40).uint32(message.width);
919
+ }
920
+ if (message.height !== 0) {
921
+ writer.uint32(48).uint32(message.height);
922
+ }
923
+ if (message.simulcast === true) {
924
+ writer.uint32(56).bool(message.simulcast);
925
+ }
926
+ if (message.disableDtx === true) {
927
+ writer.uint32(64).bool(message.disableDtx);
928
+ }
929
+ if (message.source !== 0) {
930
+ writer.uint32(72).int32(message.source);
931
+ }
932
+ for (const v of message.layers) {
933
+ VideoLayer.encode(v!, writer.uint32(82).fork()).ldelim();
934
+ }
935
+ if (message.mimeType !== "") {
936
+ writer.uint32(90).string(message.mimeType);
937
+ }
938
+ if (message.mid !== "") {
939
+ writer.uint32(98).string(message.mid);
940
+ }
941
+ return writer;
942
+ },
943
+
944
+ decode(input: _m0.Reader | Uint8Array, length?: number): TrackInfo {
945
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
946
+ let end = length === undefined ? reader.len : reader.pos + length;
947
+ const message = { ...baseTrackInfo } as TrackInfo;
948
+ message.layers = [];
949
+ while (reader.pos < end) {
950
+ const tag = reader.uint32();
951
+ switch (tag >>> 3) {
952
+ case 1:
953
+ message.sid = reader.string();
954
+ break;
955
+ case 2:
956
+ message.type = reader.int32() as any;
957
+ break;
958
+ case 3:
959
+ message.name = reader.string();
960
+ break;
961
+ case 4:
962
+ message.muted = reader.bool();
963
+ break;
964
+ case 5:
965
+ message.width = reader.uint32();
966
+ break;
967
+ case 6:
968
+ message.height = reader.uint32();
969
+ break;
970
+ case 7:
971
+ message.simulcast = reader.bool();
972
+ break;
973
+ case 8:
974
+ message.disableDtx = reader.bool();
975
+ break;
976
+ case 9:
977
+ message.source = reader.int32() as any;
978
+ break;
979
+ case 10:
980
+ message.layers.push(VideoLayer.decode(reader, reader.uint32()));
981
+ break;
982
+ case 11:
983
+ message.mimeType = reader.string();
984
+ break;
985
+ case 12:
986
+ message.mid = reader.string();
987
+ break;
988
+ default:
989
+ reader.skipType(tag & 7);
990
+ break;
991
+ }
992
+ }
993
+ return message;
994
+ },
995
+
996
+ fromJSON(object: any): TrackInfo {
997
+ const message = { ...baseTrackInfo } as TrackInfo;
998
+ message.layers = [];
999
+ if (object.sid !== undefined && object.sid !== null) {
1000
+ message.sid = String(object.sid);
1001
+ } else {
1002
+ message.sid = "";
1003
+ }
1004
+ if (object.type !== undefined && object.type !== null) {
1005
+ message.type = trackTypeFromJSON(object.type);
1006
+ } else {
1007
+ message.type = 0;
1008
+ }
1009
+ if (object.name !== undefined && object.name !== null) {
1010
+ message.name = String(object.name);
1011
+ } else {
1012
+ message.name = "";
1013
+ }
1014
+ if (object.muted !== undefined && object.muted !== null) {
1015
+ message.muted = Boolean(object.muted);
1016
+ } else {
1017
+ message.muted = false;
1018
+ }
1019
+ if (object.width !== undefined && object.width !== null) {
1020
+ message.width = Number(object.width);
1021
+ } else {
1022
+ message.width = 0;
1023
+ }
1024
+ if (object.height !== undefined && object.height !== null) {
1025
+ message.height = Number(object.height);
1026
+ } else {
1027
+ message.height = 0;
1028
+ }
1029
+ if (object.simulcast !== undefined && object.simulcast !== null) {
1030
+ message.simulcast = Boolean(object.simulcast);
1031
+ } else {
1032
+ message.simulcast = false;
1033
+ }
1034
+ if (object.disableDtx !== undefined && object.disableDtx !== null) {
1035
+ message.disableDtx = Boolean(object.disableDtx);
1036
+ } else {
1037
+ message.disableDtx = false;
1038
+ }
1039
+ if (object.source !== undefined && object.source !== null) {
1040
+ message.source = trackSourceFromJSON(object.source);
1041
+ } else {
1042
+ message.source = 0;
1043
+ }
1044
+ if (object.layers !== undefined && object.layers !== null) {
1045
+ for (const e of object.layers) {
1046
+ message.layers.push(VideoLayer.fromJSON(e));
1047
+ }
1048
+ }
1049
+ if (object.mimeType !== undefined && object.mimeType !== null) {
1050
+ message.mimeType = String(object.mimeType);
1051
+ } else {
1052
+ message.mimeType = "";
1053
+ }
1054
+ if (object.mid !== undefined && object.mid !== null) {
1055
+ message.mid = String(object.mid);
1056
+ } else {
1057
+ message.mid = "";
1058
+ }
1059
+ return message;
1060
+ },
1061
+
1062
+ toJSON(message: TrackInfo): unknown {
1063
+ const obj: any = {};
1064
+ message.sid !== undefined && (obj.sid = message.sid);
1065
+ message.type !== undefined && (obj.type = trackTypeToJSON(message.type));
1066
+ message.name !== undefined && (obj.name = message.name);
1067
+ message.muted !== undefined && (obj.muted = message.muted);
1068
+ message.width !== undefined && (obj.width = message.width);
1069
+ message.height !== undefined && (obj.height = message.height);
1070
+ message.simulcast !== undefined && (obj.simulcast = message.simulcast);
1071
+ message.disableDtx !== undefined && (obj.disableDtx = message.disableDtx);
1072
+ message.source !== undefined &&
1073
+ (obj.source = trackSourceToJSON(message.source));
1074
+ if (message.layers) {
1075
+ obj.layers = message.layers.map((e) =>
1076
+ e ? VideoLayer.toJSON(e) : undefined
1077
+ );
1078
+ } else {
1079
+ obj.layers = [];
1080
+ }
1081
+ message.mimeType !== undefined && (obj.mimeType = message.mimeType);
1082
+ message.mid !== undefined && (obj.mid = message.mid);
1083
+ return obj;
1084
+ },
1085
+
1086
+ fromPartial(object: DeepPartial<TrackInfo>): TrackInfo {
1087
+ const message = { ...baseTrackInfo } as TrackInfo;
1088
+ message.sid = object.sid ?? "";
1089
+ message.type = object.type ?? 0;
1090
+ message.name = object.name ?? "";
1091
+ message.muted = object.muted ?? false;
1092
+ message.width = object.width ?? 0;
1093
+ message.height = object.height ?? 0;
1094
+ message.simulcast = object.simulcast ?? false;
1095
+ message.disableDtx = object.disableDtx ?? false;
1096
+ message.source = object.source ?? 0;
1097
+ message.layers = [];
1098
+ if (object.layers !== undefined && object.layers !== null) {
1099
+ for (const e of object.layers) {
1100
+ message.layers.push(VideoLayer.fromPartial(e));
1101
+ }
1102
+ }
1103
+ message.mimeType = object.mimeType ?? "";
1104
+ message.mid = object.mid ?? "";
1105
+ return message;
1106
+ },
1107
+ };
1108
+
1109
+ const baseVideoLayer: object = {
1110
+ quality: 0,
1111
+ width: 0,
1112
+ height: 0,
1113
+ bitrate: 0,
1114
+ ssrc: 0,
1115
+ };
1116
+
1117
+ export const VideoLayer = {
1118
+ encode(
1119
+ message: VideoLayer,
1120
+ writer: _m0.Writer = _m0.Writer.create()
1121
+ ): _m0.Writer {
1122
+ if (message.quality !== 0) {
1123
+ writer.uint32(8).int32(message.quality);
1124
+ }
1125
+ if (message.width !== 0) {
1126
+ writer.uint32(16).uint32(message.width);
1127
+ }
1128
+ if (message.height !== 0) {
1129
+ writer.uint32(24).uint32(message.height);
1130
+ }
1131
+ if (message.bitrate !== 0) {
1132
+ writer.uint32(32).uint32(message.bitrate);
1133
+ }
1134
+ if (message.ssrc !== 0) {
1135
+ writer.uint32(40).uint32(message.ssrc);
1136
+ }
1137
+ return writer;
1138
+ },
1139
+
1140
+ decode(input: _m0.Reader | Uint8Array, length?: number): VideoLayer {
1141
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1142
+ let end = length === undefined ? reader.len : reader.pos + length;
1143
+ const message = { ...baseVideoLayer } as VideoLayer;
1144
+ while (reader.pos < end) {
1145
+ const tag = reader.uint32();
1146
+ switch (tag >>> 3) {
1147
+ case 1:
1148
+ message.quality = reader.int32() as any;
1149
+ break;
1150
+ case 2:
1151
+ message.width = reader.uint32();
1152
+ break;
1153
+ case 3:
1154
+ message.height = reader.uint32();
1155
+ break;
1156
+ case 4:
1157
+ message.bitrate = reader.uint32();
1158
+ break;
1159
+ case 5:
1160
+ message.ssrc = reader.uint32();
1161
+ break;
1162
+ default:
1163
+ reader.skipType(tag & 7);
1164
+ break;
1165
+ }
1166
+ }
1167
+ return message;
1168
+ },
1169
+
1170
+ fromJSON(object: any): VideoLayer {
1171
+ const message = { ...baseVideoLayer } as VideoLayer;
1172
+ if (object.quality !== undefined && object.quality !== null) {
1173
+ message.quality = videoQualityFromJSON(object.quality);
1174
+ } else {
1175
+ message.quality = 0;
1176
+ }
1177
+ if (object.width !== undefined && object.width !== null) {
1178
+ message.width = Number(object.width);
1179
+ } else {
1180
+ message.width = 0;
1181
+ }
1182
+ if (object.height !== undefined && object.height !== null) {
1183
+ message.height = Number(object.height);
1184
+ } else {
1185
+ message.height = 0;
1186
+ }
1187
+ if (object.bitrate !== undefined && object.bitrate !== null) {
1188
+ message.bitrate = Number(object.bitrate);
1189
+ } else {
1190
+ message.bitrate = 0;
1191
+ }
1192
+ if (object.ssrc !== undefined && object.ssrc !== null) {
1193
+ message.ssrc = Number(object.ssrc);
1194
+ } else {
1195
+ message.ssrc = 0;
1196
+ }
1197
+ return message;
1198
+ },
1199
+
1200
+ toJSON(message: VideoLayer): unknown {
1201
+ const obj: any = {};
1202
+ message.quality !== undefined &&
1203
+ (obj.quality = videoQualityToJSON(message.quality));
1204
+ message.width !== undefined && (obj.width = message.width);
1205
+ message.height !== undefined && (obj.height = message.height);
1206
+ message.bitrate !== undefined && (obj.bitrate = message.bitrate);
1207
+ message.ssrc !== undefined && (obj.ssrc = message.ssrc);
1208
+ return obj;
1209
+ },
1210
+
1211
+ fromPartial(object: DeepPartial<VideoLayer>): VideoLayer {
1212
+ const message = { ...baseVideoLayer } as VideoLayer;
1213
+ message.quality = object.quality ?? 0;
1214
+ message.width = object.width ?? 0;
1215
+ message.height = object.height ?? 0;
1216
+ message.bitrate = object.bitrate ?? 0;
1217
+ message.ssrc = object.ssrc ?? 0;
1218
+ return message;
1219
+ },
1220
+ };
1221
+
1222
+ const baseDataPacket: object = { kind: 0 };
1223
+
1224
+ export const DataPacket = {
1225
+ encode(
1226
+ message: DataPacket,
1227
+ writer: _m0.Writer = _m0.Writer.create()
1228
+ ): _m0.Writer {
1229
+ if (message.kind !== 0) {
1230
+ writer.uint32(8).int32(message.kind);
1231
+ }
1232
+ if (message.user !== undefined) {
1233
+ UserPacket.encode(message.user, writer.uint32(18).fork()).ldelim();
1234
+ }
1235
+ if (message.speaker !== undefined) {
1236
+ ActiveSpeakerUpdate.encode(
1237
+ message.speaker,
1238
+ writer.uint32(26).fork()
1239
+ ).ldelim();
1240
+ }
1241
+ return writer;
1242
+ },
1243
+
1244
+ decode(input: _m0.Reader | Uint8Array, length?: number): DataPacket {
1245
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1246
+ let end = length === undefined ? reader.len : reader.pos + length;
1247
+ const message = { ...baseDataPacket } as DataPacket;
1248
+ while (reader.pos < end) {
1249
+ const tag = reader.uint32();
1250
+ switch (tag >>> 3) {
1251
+ case 1:
1252
+ message.kind = reader.int32() as any;
1253
+ break;
1254
+ case 2:
1255
+ message.user = UserPacket.decode(reader, reader.uint32());
1256
+ break;
1257
+ case 3:
1258
+ message.speaker = ActiveSpeakerUpdate.decode(reader, reader.uint32());
1259
+ break;
1260
+ default:
1261
+ reader.skipType(tag & 7);
1262
+ break;
1263
+ }
1264
+ }
1265
+ return message;
1266
+ },
1267
+
1268
+ fromJSON(object: any): DataPacket {
1269
+ const message = { ...baseDataPacket } as DataPacket;
1270
+ if (object.kind !== undefined && object.kind !== null) {
1271
+ message.kind = dataPacket_KindFromJSON(object.kind);
1272
+ } else {
1273
+ message.kind = 0;
1274
+ }
1275
+ if (object.user !== undefined && object.user !== null) {
1276
+ message.user = UserPacket.fromJSON(object.user);
1277
+ } else {
1278
+ message.user = undefined;
1279
+ }
1280
+ if (object.speaker !== undefined && object.speaker !== null) {
1281
+ message.speaker = ActiveSpeakerUpdate.fromJSON(object.speaker);
1282
+ } else {
1283
+ message.speaker = undefined;
1284
+ }
1285
+ return message;
1286
+ },
1287
+
1288
+ toJSON(message: DataPacket): unknown {
1289
+ const obj: any = {};
1290
+ message.kind !== undefined &&
1291
+ (obj.kind = dataPacket_KindToJSON(message.kind));
1292
+ message.user !== undefined &&
1293
+ (obj.user = message.user ? UserPacket.toJSON(message.user) : undefined);
1294
+ message.speaker !== undefined &&
1295
+ (obj.speaker = message.speaker
1296
+ ? ActiveSpeakerUpdate.toJSON(message.speaker)
1297
+ : undefined);
1298
+ return obj;
1299
+ },
1300
+
1301
+ fromPartial(object: DeepPartial<DataPacket>): DataPacket {
1302
+ const message = { ...baseDataPacket } as DataPacket;
1303
+ message.kind = object.kind ?? 0;
1304
+ if (object.user !== undefined && object.user !== null) {
1305
+ message.user = UserPacket.fromPartial(object.user);
1306
+ } else {
1307
+ message.user = undefined;
1308
+ }
1309
+ if (object.speaker !== undefined && object.speaker !== null) {
1310
+ message.speaker = ActiveSpeakerUpdate.fromPartial(object.speaker);
1311
+ } else {
1312
+ message.speaker = undefined;
1313
+ }
1314
+ return message;
1315
+ },
1316
+ };
1317
+
1318
+ const baseActiveSpeakerUpdate: object = {};
1319
+
1320
+ export const ActiveSpeakerUpdate = {
1321
+ encode(
1322
+ message: ActiveSpeakerUpdate,
1323
+ writer: _m0.Writer = _m0.Writer.create()
1324
+ ): _m0.Writer {
1325
+ for (const v of message.speakers) {
1326
+ SpeakerInfo.encode(v!, writer.uint32(10).fork()).ldelim();
1327
+ }
1328
+ return writer;
1329
+ },
1330
+
1331
+ decode(input: _m0.Reader | Uint8Array, length?: number): ActiveSpeakerUpdate {
1332
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1333
+ let end = length === undefined ? reader.len : reader.pos + length;
1334
+ const message = { ...baseActiveSpeakerUpdate } as ActiveSpeakerUpdate;
1335
+ message.speakers = [];
1336
+ while (reader.pos < end) {
1337
+ const tag = reader.uint32();
1338
+ switch (tag >>> 3) {
1339
+ case 1:
1340
+ message.speakers.push(SpeakerInfo.decode(reader, reader.uint32()));
1341
+ break;
1342
+ default:
1343
+ reader.skipType(tag & 7);
1344
+ break;
1345
+ }
1346
+ }
1347
+ return message;
1348
+ },
1349
+
1350
+ fromJSON(object: any): ActiveSpeakerUpdate {
1351
+ const message = { ...baseActiveSpeakerUpdate } as ActiveSpeakerUpdate;
1352
+ message.speakers = [];
1353
+ if (object.speakers !== undefined && object.speakers !== null) {
1354
+ for (const e of object.speakers) {
1355
+ message.speakers.push(SpeakerInfo.fromJSON(e));
1356
+ }
1357
+ }
1358
+ return message;
1359
+ },
1360
+
1361
+ toJSON(message: ActiveSpeakerUpdate): unknown {
1362
+ const obj: any = {};
1363
+ if (message.speakers) {
1364
+ obj.speakers = message.speakers.map((e) =>
1365
+ e ? SpeakerInfo.toJSON(e) : undefined
1366
+ );
1367
+ } else {
1368
+ obj.speakers = [];
1369
+ }
1370
+ return obj;
1371
+ },
1372
+
1373
+ fromPartial(object: DeepPartial<ActiveSpeakerUpdate>): ActiveSpeakerUpdate {
1374
+ const message = { ...baseActiveSpeakerUpdate } as ActiveSpeakerUpdate;
1375
+ message.speakers = [];
1376
+ if (object.speakers !== undefined && object.speakers !== null) {
1377
+ for (const e of object.speakers) {
1378
+ message.speakers.push(SpeakerInfo.fromPartial(e));
1379
+ }
1380
+ }
1381
+ return message;
1382
+ },
1383
+ };
1384
+
1385
+ const baseSpeakerInfo: object = { sid: "", level: 0, active: false };
1386
+
1387
+ export const SpeakerInfo = {
1388
+ encode(
1389
+ message: SpeakerInfo,
1390
+ writer: _m0.Writer = _m0.Writer.create()
1391
+ ): _m0.Writer {
1392
+ if (message.sid !== "") {
1393
+ writer.uint32(10).string(message.sid);
1394
+ }
1395
+ if (message.level !== 0) {
1396
+ writer.uint32(21).float(message.level);
1397
+ }
1398
+ if (message.active === true) {
1399
+ writer.uint32(24).bool(message.active);
1400
+ }
1401
+ return writer;
1402
+ },
1403
+
1404
+ decode(input: _m0.Reader | Uint8Array, length?: number): SpeakerInfo {
1405
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1406
+ let end = length === undefined ? reader.len : reader.pos + length;
1407
+ const message = { ...baseSpeakerInfo } as SpeakerInfo;
1408
+ while (reader.pos < end) {
1409
+ const tag = reader.uint32();
1410
+ switch (tag >>> 3) {
1411
+ case 1:
1412
+ message.sid = reader.string();
1413
+ break;
1414
+ case 2:
1415
+ message.level = reader.float();
1416
+ break;
1417
+ case 3:
1418
+ message.active = reader.bool();
1419
+ break;
1420
+ default:
1421
+ reader.skipType(tag & 7);
1422
+ break;
1423
+ }
1424
+ }
1425
+ return message;
1426
+ },
1427
+
1428
+ fromJSON(object: any): SpeakerInfo {
1429
+ const message = { ...baseSpeakerInfo } as SpeakerInfo;
1430
+ if (object.sid !== undefined && object.sid !== null) {
1431
+ message.sid = String(object.sid);
1432
+ } else {
1433
+ message.sid = "";
1434
+ }
1435
+ if (object.level !== undefined && object.level !== null) {
1436
+ message.level = Number(object.level);
1437
+ } else {
1438
+ message.level = 0;
1439
+ }
1440
+ if (object.active !== undefined && object.active !== null) {
1441
+ message.active = Boolean(object.active);
1442
+ } else {
1443
+ message.active = false;
1444
+ }
1445
+ return message;
1446
+ },
1447
+
1448
+ toJSON(message: SpeakerInfo): unknown {
1449
+ const obj: any = {};
1450
+ message.sid !== undefined && (obj.sid = message.sid);
1451
+ message.level !== undefined && (obj.level = message.level);
1452
+ message.active !== undefined && (obj.active = message.active);
1453
+ return obj;
1454
+ },
1455
+
1456
+ fromPartial(object: DeepPartial<SpeakerInfo>): SpeakerInfo {
1457
+ const message = { ...baseSpeakerInfo } as SpeakerInfo;
1458
+ message.sid = object.sid ?? "";
1459
+ message.level = object.level ?? 0;
1460
+ message.active = object.active ?? false;
1461
+ return message;
1462
+ },
1463
+ };
1464
+
1465
+ const baseUserPacket: object = { participantSid: "", destinationSids: "" };
1466
+
1467
+ export const UserPacket = {
1468
+ encode(
1469
+ message: UserPacket,
1470
+ writer: _m0.Writer = _m0.Writer.create()
1471
+ ): _m0.Writer {
1472
+ if (message.participantSid !== "") {
1473
+ writer.uint32(10).string(message.participantSid);
1474
+ }
1475
+ if (message.payload.length !== 0) {
1476
+ writer.uint32(18).bytes(message.payload);
1477
+ }
1478
+ for (const v of message.destinationSids) {
1479
+ writer.uint32(26).string(v!);
1480
+ }
1481
+ return writer;
1482
+ },
1483
+
1484
+ decode(input: _m0.Reader | Uint8Array, length?: number): UserPacket {
1485
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1486
+ let end = length === undefined ? reader.len : reader.pos + length;
1487
+ const message = { ...baseUserPacket } as UserPacket;
1488
+ message.destinationSids = [];
1489
+ message.payload = new Uint8Array();
1490
+ while (reader.pos < end) {
1491
+ const tag = reader.uint32();
1492
+ switch (tag >>> 3) {
1493
+ case 1:
1494
+ message.participantSid = reader.string();
1495
+ break;
1496
+ case 2:
1497
+ message.payload = reader.bytes();
1498
+ break;
1499
+ case 3:
1500
+ message.destinationSids.push(reader.string());
1501
+ break;
1502
+ default:
1503
+ reader.skipType(tag & 7);
1504
+ break;
1505
+ }
1506
+ }
1507
+ return message;
1508
+ },
1509
+
1510
+ fromJSON(object: any): UserPacket {
1511
+ const message = { ...baseUserPacket } as UserPacket;
1512
+ message.destinationSids = [];
1513
+ message.payload = new Uint8Array();
1514
+ if (object.participantSid !== undefined && object.participantSid !== null) {
1515
+ message.participantSid = String(object.participantSid);
1516
+ } else {
1517
+ message.participantSid = "";
1518
+ }
1519
+ if (object.payload !== undefined && object.payload !== null) {
1520
+ message.payload = bytesFromBase64(object.payload);
1521
+ }
1522
+ if (
1523
+ object.destinationSids !== undefined &&
1524
+ object.destinationSids !== null
1525
+ ) {
1526
+ for (const e of object.destinationSids) {
1527
+ message.destinationSids.push(String(e));
1528
+ }
1529
+ }
1530
+ return message;
1531
+ },
1532
+
1533
+ toJSON(message: UserPacket): unknown {
1534
+ const obj: any = {};
1535
+ message.participantSid !== undefined &&
1536
+ (obj.participantSid = message.participantSid);
1537
+ message.payload !== undefined &&
1538
+ (obj.payload = base64FromBytes(
1539
+ message.payload !== undefined ? message.payload : new Uint8Array()
1540
+ ));
1541
+ if (message.destinationSids) {
1542
+ obj.destinationSids = message.destinationSids.map((e) => e);
1543
+ } else {
1544
+ obj.destinationSids = [];
1545
+ }
1546
+ return obj;
1547
+ },
1548
+
1549
+ fromPartial(object: DeepPartial<UserPacket>): UserPacket {
1550
+ const message = { ...baseUserPacket } as UserPacket;
1551
+ message.participantSid = object.participantSid ?? "";
1552
+ message.payload = object.payload ?? new Uint8Array();
1553
+ message.destinationSids = [];
1554
+ if (
1555
+ object.destinationSids !== undefined &&
1556
+ object.destinationSids !== null
1557
+ ) {
1558
+ for (const e of object.destinationSids) {
1559
+ message.destinationSids.push(e);
1560
+ }
1561
+ }
1562
+ return message;
1563
+ },
1564
+ };
1565
+
1566
+ const baseParticipantTracks: object = { participantSid: "", trackSids: "" };
1567
+
1568
+ export const ParticipantTracks = {
1569
+ encode(
1570
+ message: ParticipantTracks,
1571
+ writer: _m0.Writer = _m0.Writer.create()
1572
+ ): _m0.Writer {
1573
+ if (message.participantSid !== "") {
1574
+ writer.uint32(10).string(message.participantSid);
1575
+ }
1576
+ for (const v of message.trackSids) {
1577
+ writer.uint32(18).string(v!);
1578
+ }
1579
+ return writer;
1580
+ },
1581
+
1582
+ decode(input: _m0.Reader | Uint8Array, length?: number): ParticipantTracks {
1583
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1584
+ let end = length === undefined ? reader.len : reader.pos + length;
1585
+ const message = { ...baseParticipantTracks } as ParticipantTracks;
1586
+ message.trackSids = [];
1587
+ while (reader.pos < end) {
1588
+ const tag = reader.uint32();
1589
+ switch (tag >>> 3) {
1590
+ case 1:
1591
+ message.participantSid = reader.string();
1592
+ break;
1593
+ case 2:
1594
+ message.trackSids.push(reader.string());
1595
+ break;
1596
+ default:
1597
+ reader.skipType(tag & 7);
1598
+ break;
1599
+ }
1600
+ }
1601
+ return message;
1602
+ },
1603
+
1604
+ fromJSON(object: any): ParticipantTracks {
1605
+ const message = { ...baseParticipantTracks } as ParticipantTracks;
1606
+ message.trackSids = [];
1607
+ if (object.participantSid !== undefined && object.participantSid !== null) {
1608
+ message.participantSid = String(object.participantSid);
1609
+ } else {
1610
+ message.participantSid = "";
1611
+ }
1612
+ if (object.trackSids !== undefined && object.trackSids !== null) {
1613
+ for (const e of object.trackSids) {
1614
+ message.trackSids.push(String(e));
1615
+ }
1616
+ }
1617
+ return message;
1618
+ },
1619
+
1620
+ toJSON(message: ParticipantTracks): unknown {
1621
+ const obj: any = {};
1622
+ message.participantSid !== undefined &&
1623
+ (obj.participantSid = message.participantSid);
1624
+ if (message.trackSids) {
1625
+ obj.trackSids = message.trackSids.map((e) => e);
1626
+ } else {
1627
+ obj.trackSids = [];
1628
+ }
1629
+ return obj;
1630
+ },
1631
+
1632
+ fromPartial(object: DeepPartial<ParticipantTracks>): ParticipantTracks {
1633
+ const message = { ...baseParticipantTracks } as ParticipantTracks;
1634
+ message.participantSid = object.participantSid ?? "";
1635
+ message.trackSids = [];
1636
+ if (object.trackSids !== undefined && object.trackSids !== null) {
1637
+ for (const e of object.trackSids) {
1638
+ message.trackSids.push(e);
1639
+ }
1640
+ }
1641
+ return message;
1642
+ },
1643
+ };
1644
+
1645
+ const baseClientInfo: object = {
1646
+ sdk: 0,
1647
+ version: "",
1648
+ protocol: 0,
1649
+ os: "",
1650
+ osVersion: "",
1651
+ deviceModel: "",
1652
+ browser: "",
1653
+ browserVersion: "",
1654
+ };
1655
+
1656
+ export const ClientInfo = {
1657
+ encode(
1658
+ message: ClientInfo,
1659
+ writer: _m0.Writer = _m0.Writer.create()
1660
+ ): _m0.Writer {
1661
+ if (message.sdk !== 0) {
1662
+ writer.uint32(8).int32(message.sdk);
1663
+ }
1664
+ if (message.version !== "") {
1665
+ writer.uint32(18).string(message.version);
1666
+ }
1667
+ if (message.protocol !== 0) {
1668
+ writer.uint32(24).int32(message.protocol);
1669
+ }
1670
+ if (message.os !== "") {
1671
+ writer.uint32(34).string(message.os);
1672
+ }
1673
+ if (message.osVersion !== "") {
1674
+ writer.uint32(42).string(message.osVersion);
1675
+ }
1676
+ if (message.deviceModel !== "") {
1677
+ writer.uint32(50).string(message.deviceModel);
1678
+ }
1679
+ if (message.browser !== "") {
1680
+ writer.uint32(58).string(message.browser);
1681
+ }
1682
+ if (message.browserVersion !== "") {
1683
+ writer.uint32(66).string(message.browserVersion);
1684
+ }
1685
+ return writer;
1686
+ },
1687
+
1688
+ decode(input: _m0.Reader | Uint8Array, length?: number): ClientInfo {
1689
+ const reader = input instanceof _m0.Reader ? input : new _m0.Reader(input);
1690
+ let end = length === undefined ? reader.len : reader.pos + length;
1691
+ const message = { ...baseClientInfo } as ClientInfo;
1692
+ while (reader.pos < end) {
1693
+ const tag = reader.uint32();
1694
+ switch (tag >>> 3) {
1695
+ case 1:
1696
+ message.sdk = reader.int32() as any;
1697
+ break;
1698
+ case 2:
1699
+ message.version = reader.string();
1700
+ break;
1701
+ case 3:
1702
+ message.protocol = reader.int32();
1703
+ break;
1704
+ case 4:
1705
+ message.os = reader.string();
1706
+ break;
1707
+ case 5:
1708
+ message.osVersion = reader.string();
1709
+ break;
1710
+ case 6:
1711
+ message.deviceModel = reader.string();
1712
+ break;
1713
+ case 7:
1714
+ message.browser = reader.string();
1715
+ break;
1716
+ case 8:
1717
+ message.browserVersion = reader.string();
1718
+ break;
1719
+ default:
1720
+ reader.skipType(tag & 7);
1721
+ break;
1722
+ }
1723
+ }
1724
+ return message;
1725
+ },
1726
+
1727
+ fromJSON(object: any): ClientInfo {
1728
+ const message = { ...baseClientInfo } as ClientInfo;
1729
+ if (object.sdk !== undefined && object.sdk !== null) {
1730
+ message.sdk = clientInfo_SDKFromJSON(object.sdk);
1731
+ } else {
1732
+ message.sdk = 0;
1733
+ }
1734
+ if (object.version !== undefined && object.version !== null) {
1735
+ message.version = String(object.version);
1736
+ } else {
1737
+ message.version = "";
1738
+ }
1739
+ if (object.protocol !== undefined && object.protocol !== null) {
1740
+ message.protocol = Number(object.protocol);
1741
+ } else {
1742
+ message.protocol = 0;
1743
+ }
1744
+ if (object.os !== undefined && object.os !== null) {
1745
+ message.os = String(object.os);
1746
+ } else {
1747
+ message.os = "";
1748
+ }
1749
+ if (object.osVersion !== undefined && object.osVersion !== null) {
1750
+ message.osVersion = String(object.osVersion);
1751
+ } else {
1752
+ message.osVersion = "";
1753
+ }
1754
+ if (object.deviceModel !== undefined && object.deviceModel !== null) {
1755
+ message.deviceModel = String(object.deviceModel);
1756
+ } else {
1757
+ message.deviceModel = "";
1758
+ }
1759
+ if (object.browser !== undefined && object.browser !== null) {
1760
+ message.browser = String(object.browser);
1761
+ } else {
1762
+ message.browser = "";
1763
+ }
1764
+ if (object.browserVersion !== undefined && object.browserVersion !== null) {
1765
+ message.browserVersion = String(object.browserVersion);
1766
+ } else {
1767
+ message.browserVersion = "";
1768
+ }
1769
+ return message;
1770
+ },
1771
+
1772
+ toJSON(message: ClientInfo): unknown {
1773
+ const obj: any = {};
1774
+ message.sdk !== undefined && (obj.sdk = clientInfo_SDKToJSON(message.sdk));
1775
+ message.version !== undefined && (obj.version = message.version);
1776
+ message.protocol !== undefined && (obj.protocol = message.protocol);
1777
+ message.os !== undefined && (obj.os = message.os);
1778
+ message.osVersion !== undefined && (obj.osVersion = message.osVersion);
1779
+ message.deviceModel !== undefined &&
1780
+ (obj.deviceModel = message.deviceModel);
1781
+ message.browser !== undefined && (obj.browser = message.browser);
1782
+ message.browserVersion !== undefined &&
1783
+ (obj.browserVersion = message.browserVersion);
1784
+ return obj;
1785
+ },
1786
+
1787
+ fromPartial(object: DeepPartial<ClientInfo>): ClientInfo {
1788
+ const message = { ...baseClientInfo } as ClientInfo;
1789
+ message.sdk = object.sdk ?? 0;
1790
+ message.version = object.version ?? "";
1791
+ message.protocol = object.protocol ?? 0;
1792
+ message.os = object.os ?? "";
1793
+ message.osVersion = object.osVersion ?? "";
1794
+ message.deviceModel = object.deviceModel ?? "";
1795
+ message.browser = object.browser ?? "";
1796
+ message.browserVersion = object.browserVersion ?? "";
1797
+ return message;
1798
+ },
1799
+ };
1800
+
1801
+ declare var self: any | undefined;
1802
+ declare var window: any | undefined;
1803
+ declare var global: any | undefined;
1804
+ var globalThis: any = (() => {
1805
+ if (typeof globalThis !== "undefined") return globalThis;
1806
+ if (typeof self !== "undefined") return self;
1807
+ if (typeof window !== "undefined") return window;
1808
+ if (typeof global !== "undefined") return global;
1809
+ throw "Unable to locate global object";
1810
+ })();
1811
+
1812
+ const atob: (b64: string) => string =
1813
+ globalThis.atob ||
1814
+ ((b64) => globalThis.Buffer.from(b64, "base64").toString("binary"));
1815
+ function bytesFromBase64(b64: string): Uint8Array {
1816
+ const bin = atob(b64);
1817
+ const arr = new Uint8Array(bin.length);
1818
+ for (let i = 0; i < bin.length; ++i) {
1819
+ arr[i] = bin.charCodeAt(i);
1820
+ }
1821
+ return arr;
1822
+ }
1823
+
1824
+ const btoa: (bin: string) => string =
1825
+ globalThis.btoa ||
1826
+ ((bin) => globalThis.Buffer.from(bin, "binary").toString("base64"));
1827
+ function base64FromBytes(arr: Uint8Array): string {
1828
+ const bin: string[] = [];
1829
+ for (const byte of arr) {
1830
+ bin.push(String.fromCharCode(byte));
1831
+ }
1832
+ return btoa(bin.join(""));
1833
+ }
1834
+
1835
+ type Builtin =
1836
+ | Date
1837
+ | Function
1838
+ | Uint8Array
1839
+ | string
1840
+ | number
1841
+ | boolean
1842
+ | undefined;
1843
+ export type DeepPartial<T> = T extends Builtin
1844
+ ? T
1845
+ : T extends Array<infer U>
1846
+ ? Array<DeepPartial<U>>
1847
+ : T extends ReadonlyArray<infer U>
1848
+ ? ReadonlyArray<DeepPartial<U>>
1849
+ : T extends {}
1850
+ ? { [K in keyof T]?: DeepPartial<T[K]> }
1851
+ : Partial<T>;
1852
+
1853
+ function longToNumber(long: Long): number {
1854
+ if (long.gt(Number.MAX_SAFE_INTEGER)) {
1855
+ throw new globalThis.Error("Value is larger than Number.MAX_SAFE_INTEGER");
1856
+ }
1857
+ return long.toNumber();
1858
+ }
1859
+
1860
+ if (_m0.util.Long !== Long) {
1861
+ _m0.util.Long = Long as any;
1862
+ _m0.configure();
1863
+ }