@vkontakte/calls-sdk 2.8.10-dev.60145cdf.0 → 2.8.10-dev.6360a014.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/CallsSDK.d.ts +10 -6
  2. package/calls-sdk.cjs.js +10 -11
  3. package/calls-sdk.esm.js +10 -11
  4. package/classes/AudioOutput.d.ts +9 -1
  5. package/classes/Conversation.d.ts +3 -1
  6. package/classes/MediaSource.d.ts +0 -1
  7. package/classes/TransparentAudioOutput.d.ts +19 -0
  8. package/classes/codec/LibVPxEncoder.d.ts +0 -1
  9. package/classes/screenshare/ScreenCaptureReceiver.d.ts +0 -1
  10. package/classes/transport/Transport.d.ts +0 -1
  11. package/devtools/DevTools.d.ts +20 -0
  12. package/devtools/DevToolsStorage.d.ts +16 -0
  13. package/devtools/index.d.ts +1 -0
  14. package/devtools/modules/Params.d.ts +65 -0
  15. package/devtools/types.d.ts +15 -0
  16. package/enums/HangupType.d.ts +4 -0
  17. package/enums/TrackId.d.ts +2 -1
  18. package/package.json +2 -2
  19. package/static/Params.d.ts +27 -77
  20. package/static/Utils.d.ts +1 -1
  21. package/types/Conversation.d.ts +2 -0
  22. package/types/FastJoin.d.ts +13 -0
  23. package/calls-sdk.cjs.js.map +0 -7
  24. package/calls-sdk.esm.js.map +0 -7
  25. package/classes/Conversation.test.d.ts +0 -1
  26. package/classes/screenshare/PacketHistory.test.d.ts +0 -1
  27. package/classes/screenshare/ScreenCaptureSender.test.d.ts +0 -1
  28. package/classes/transport/ServerTransport.test.d.ts +0 -1
  29. package/default/Api.test.d.ts +0 -1
  30. package/default/Signaling.test.d.ts +0 -1
  31. package/static/Utils.test.d.ts +0 -1
  32. package/static/WebRTCUtils.test.d.ts +0 -1
  33. package/utils/ArrayDequeue.spec.d.ts +0 -1
  34. package/utils/IList.test.d.ts +0 -1
  35. package/utils/LengthPrefixed.test.d.ts +0 -1
  36. package/utils/P2Quantile.test.d.ts +0 -1
  37. package/utils/VariableLengthInteger.test.d.ts +0 -1
  38. package/utils/Welford.test.d.ts +0 -1
@@ -3,7 +3,15 @@ type ParticipantAudioOutput = {
3
3
  audioElement?: HTMLAudioElement;
4
4
  audioTrack?: MediaStreamTrack;
5
5
  };
6
- export default class AudioOutput {
6
+ export interface IAudioOutput {
7
+ add(track: MediaStreamTrack): void;
8
+ remove(track: MediaStreamTrack): void;
9
+ get volume(): number;
10
+ set volume(volume: number);
11
+ destroy(): void;
12
+ changeOutput(): Promise<void>;
13
+ }
14
+ export default class AudioOutput implements IAudioOutput {
7
15
  protected _output: ParticipantAudioOutput | null;
8
16
  private _volume;
9
17
  private readonly _features;
@@ -14,6 +14,7 @@ import { IAsrStartParams, IAsrStopParams } from '../types/Asr';
14
14
  import { AudienceModeHandsResponse } from '../types/AudienceMode';
15
15
  import { ConversationData, ConversationOnStartParams } from '../types/Conversation';
16
16
  import { ExternalId, ExternalParticipant, ExternalParticipantId, ExternalParticipantListChunk, ExternalUserId } from '../types/ExternalId';
17
+ import type { FastJoinHandler } from '../types/FastJoin';
17
18
  import MediaModifiers from '../types/MediaModifiers';
18
19
  import { IVideoDimentions } from '../types/MediaSettings';
19
20
  import { IAddMovieParams, IUpdateMovieData } from '../types/MovieShare';
@@ -67,7 +68,7 @@ export default class Conversation extends EventEmitter {
67
68
  static current(): Conversation | null;
68
69
  static hangupAfterInit(): void;
69
70
  static id(): string | null;
70
- onStart({ opponentIds, opponentType, mediaOptions, payload, joiningAllowed, requireAuthToJoin, onlyAdminCanShareMovie, externalIds, onFastStart, }: ConversationOnStartParams): Promise<ConversationData>;
71
+ onStart({ opponentIds, opponentType, mediaOptions, payload, joiningAllowed, requireAuthToJoin, onlyAdminCanShareMovie, externalIds, onFastStart, conversationId, }: ConversationOnStartParams): Promise<ConversationData>;
71
72
  onJoin(joinArgs: {
72
73
  conversationId?: string;
73
74
  mediaOptions: MediaOption[];
@@ -75,6 +76,7 @@ export default class Conversation extends EventEmitter {
75
76
  joinLink?: string;
76
77
  observedIds?: ExternalUserId[];
77
78
  payload?: string;
79
+ onFastJoin?: FastJoinHandler;
78
80
  }): Promise<ConversationData>;
79
81
  private _onJoinPart2;
80
82
  private _extractExternalRooms;
@@ -83,7 +83,6 @@ export declare class MediaSource extends EventEmitter {
83
83
  private _changeAudioInput;
84
84
  private _changeScreen;
85
85
  private _disableScreenCapture;
86
- private disableAudioShare;
87
86
  private stopAudioShareTrack;
88
87
  private _applyAudioEffect;
89
88
  protected getSilentAudioShareTrack(): MediaStreamTrack;
@@ -0,0 +1,19 @@
1
+ import { IAudioOutput } from './AudioOutput';
2
+ import { StatFirstMediaReceived } from './stat/StatFirstMediaReceived';
3
+ export default class TransparentAudioOutput implements IAudioOutput {
4
+ private audioTracks;
5
+ private audioElement;
6
+ private _volume;
7
+ private readonly _features;
8
+ private readonly _statFirstMediaReceived;
9
+ constructor(statFirstMediaReceived: StatFirstMediaReceived);
10
+ add(track: MediaStreamTrack): void;
11
+ remove(track: MediaStreamTrack): void;
12
+ get volume(): number;
13
+ set volume(volume: number);
14
+ protected _initAudioElement(): void;
15
+ protected _stopAudioElement(): void;
16
+ destroy(): void;
17
+ /** изменяем устройство для воспроизведения аудио */
18
+ changeOutput(): Promise<void>;
19
+ }
@@ -29,5 +29,4 @@ export default class LibVPxEncoder extends WorkerBase implements IEncoder {
29
29
  setBitrate(bitrate: number, useCbr: boolean, fps: number): void;
30
30
  isVP9(): boolean;
31
31
  destroy(): void;
32
- static isBrowserSupported(): boolean;
33
32
  }
@@ -16,5 +16,4 @@ export default class ScreenCaptureReceiver {
16
16
  private _requestKeyFrame;
17
17
  close(participantId: ParticipantId): void;
18
18
  destroy(): void;
19
- static isBrowserSupported(): boolean;
20
19
  }
@@ -75,7 +75,6 @@ export declare class Transport extends EventEmitter {
75
75
  private _createServerTransport;
76
76
  private _releaseDirectTransport;
77
77
  private _releaseServerTransport;
78
- private _setLocalNoiseSuppression;
79
78
  private _onDirectTransportChanged;
80
79
  private _onServerTransportChanged;
81
80
  private _onTransportActiveParticipants;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * DevTools for SDK
3
+ * Позволяет подменять значения ручек перед инициализацией SDK
4
+ */
5
+ import Params from './modules/Params';
6
+ import type { DevToolsOptions } from './types';
7
+ export type { DevToolsOptions };
8
+ /**
9
+ * DevTools API for runtime SDK configuration
10
+ * Singleton class to ensure consistent state across the application
11
+ */
12
+ declare class DevTools {
13
+ private static instance;
14
+ static getInstance(): DevTools;
15
+ readonly params: Params;
16
+ private storage;
17
+ private constructor();
18
+ }
19
+ declare const _default: DevTools;
20
+ export default _default;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Storage utility for DevTools
3
+ * Handles persistence of DevTools options in localStorage
4
+ */
5
+ import type { DevToolsOptions } from './types';
6
+ /**
7
+ * Storage utility for DevTools
8
+ */
9
+ export default class DevToolsStorage {
10
+ set(key: string, value: any): void;
11
+ get<T>(key: string): T | null;
12
+ remove(key: string): void;
13
+ clear(): void;
14
+ getAll(): DevToolsOptions;
15
+ private getStorage;
16
+ }
@@ -0,0 +1 @@
1
+ export { default as devtools } from './DevTools';
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Params module for DevTools
3
+ * Позволяет подменять значения ручек перед инициализацией SDK
4
+ */
5
+ import type DevToolsStorage from '../DevToolsStorage';
6
+ import type { DevToolsOptions } from '../types';
7
+ export type { DevToolsOptions };
8
+ export default class Params {
9
+ private storage;
10
+ constructor(storage: DevToolsStorage);
11
+ /**
12
+ * Set an option override
13
+ * @param key - Option name
14
+ * @param value - Option value
15
+ * @example
16
+ * ```ts
17
+ * __CALLS_SDK.params.set('webtransport', true);
18
+ * ```
19
+ */
20
+ set<K extends keyof DevToolsOptions>(key: K, value: DevToolsOptions[K]): void;
21
+ /**
22
+ * Get an option override value
23
+ * @param key - Option name
24
+ * @returns Option value if override is set, null if not set
25
+ * @example
26
+ * ```ts
27
+ * const value = __CALLS_SDK.params.get('webtransport');
28
+ * ```
29
+ */
30
+ get<K extends keyof DevToolsOptions>(key: K): DevToolsOptions[K] | null;
31
+ /**
32
+ * Clear a specific option override
33
+ * @param key - Option name
34
+ * @example
35
+ * ```ts
36
+ * __CALLS_SDK.params.clear('webtransport');
37
+ * ```
38
+ */
39
+ clear<K extends keyof DevToolsOptions>(key: K): void;
40
+ /**
41
+ * Clear all DevTools overrides
42
+ * @example
43
+ * ```ts
44
+ * __CALLS_SDK.params.clearAll();
45
+ * ```
46
+ */
47
+ clearAll(): void;
48
+ /**
49
+ * Get all current DevTools overrides
50
+ * @returns Current override values
51
+ * @example
52
+ * ```ts
53
+ * const overrides = __CALLS_SDK.params.getAll();
54
+ * console.log(overrides); // { webtransport: true }
55
+ * ```
56
+ */
57
+ getAll(): DevToolsOptions;
58
+ /**
59
+ * Apply DevTools overrides to client options
60
+ * DevTools overrides take precedence over client-provided options
61
+ * @param clientOptions - Original client options
62
+ * @returns Modified options with DevTools overrides applied
63
+ */
64
+ applyOverrides<T extends DevToolsOptions>(clientOptions: T): T;
65
+ }
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Type definitions for DevTools
3
+ */
4
+ import type { ParamsObject } from '../static/Params';
5
+ type Primitive = string | number | boolean;
6
+ type PrimitiveKeys<T> = {
7
+ [K in keyof T]-?: Exclude<T[K], undefined> extends Primitive ? K : never;
8
+ }[keyof T];
9
+ export type PrimitiveParamsObject = Pick<ParamsObject, PrimitiveKeys<ParamsObject>>;
10
+ /**
11
+ * Available DevTools options that can be overridden
12
+ * All properties are optional
13
+ */
14
+ export type DevToolsOptions = Partial<PrimitiveParamsObject>;
15
+ export {};
@@ -38,6 +38,10 @@ declare enum HangupType {
38
38
  * Проблемы при работе через FastStart
39
39
  */
40
40
  FAST_START_ERROR = "FAST_START_ERROR",
41
+ /**
42
+ * Проблемы при работе через FastJoin
43
+ */
44
+ FAST_JOIN_ERROR = "FAST_JOIN_ERROR",
41
45
  /**
42
46
  * Таймаут инициализации вызова – звонок не начался
43
47
  *
@@ -1,5 +1,6 @@
1
1
  export declare const enum TrackId {
2
2
  AUDIO_MIX = "audio-mix",
3
- PARTICIPANT_AGNOSTIC_TRACK_PREFIX = "pat"
3
+ PARTICIPANT_AGNOSTIC_TRACK_PREFIX = "pat",
4
+ TRANSPARENT_AUDIO_TRACK_PREFIX = "ta"
4
5
  }
5
6
  export default TrackId;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/calls-sdk",
3
- "version": "2.8.10-dev.60145cdf.0",
3
+ "version": "2.8.10-dev.6360a014.0",
4
4
  "author": "vk.com",
5
5
  "description": "Library for video calls based on the vk.com platform",
6
6
  "homepage": "https://vk.com",
@@ -15,7 +15,7 @@
15
15
  ],
16
16
  "dependencies": {
17
17
  "@vkontakte/calls-audio-effects": "1.2.8",
18
- "@vkontakte/calls-video-effects": "2.2.3-beta.6",
18
+ "@vkontakte/calls-video-effects": "2.2.3-beta.7",
19
19
  "@vkontakte/calls-vmoji": "1.0.10-beta.17",
20
20
  "@vkontakte/libvpx": "2.0.9",
21
21
  "bit-buffer": "0.2.5",
@@ -278,42 +278,6 @@ export type ParamsObject = {
278
278
  preferVP9: boolean;
279
279
  /** @hidden */
280
280
  audioNack: boolean;
281
- /**
282
- * Принимать параллельно видео с камеры и трансляцию экрана от одного и того же участника.
283
- * Работает только при приёме экрана через дата-канал.
284
- *
285
- * _По умолчанию: `true`_
286
- * @deprecated
287
- */
288
- producerScreenTrack: boolean;
289
- /**
290
- * Отдавать трансляцию экрана отдельным стримом.
291
- * Работает только при отправке экрана через дата-канал.
292
- *
293
- * _По умолчанию: `true`_
294
- * @deprecated
295
- */
296
- consumerScreenTrack: boolean;
297
- /**
298
- * @hidden
299
- * @deprecated
300
- */
301
- producerNotificationDataChannel: boolean;
302
- /**
303
- * @hidden
304
- * @deprecated
305
- */
306
- producerCommandDataChannel: boolean;
307
- /**
308
- * @hidden
309
- * @deprecated
310
- */
311
- consumerScreenDataChannel: boolean;
312
- /**
313
- * @hidden
314
- * @deprecated
315
- */
316
- producerScreenDataChannel: boolean;
317
281
  /** @hidden */
318
282
  asrDataChannel: boolean;
319
283
  /**
@@ -390,27 +354,6 @@ export type ParamsObject = {
390
354
  * если параметр не проставлен то будет использоваться значение по умолчанию установленное на сервере
391
355
  */
392
356
  participantListChunkInitCount: number | null;
393
- /**
394
- * Включать RED-extension (redundancy) для групповых звонков
395
- *
396
- * _По умолчанию: `true`_
397
- * @deprecated
398
- */
399
- serverAudioRed: boolean;
400
- /**
401
- * Включать RED-extension (redundancy) для p2p звонков
402
- *
403
- * _По умолчанию: `true`_
404
- * @deprecated
405
- */
406
- p2pAudioRed: boolean;
407
- /**
408
- * Добавлять флаг spsPpsIdrInKeyframe для h264 кодека. В результате ключевые фреймы без sps и pps
409
- * не используются как ключевые. Решает проблему с артефактами на видео в случае потерь пакетов.
410
- * @hidden
411
- * @deprecated
412
- */
413
- h264spsPpsIdrInKeyframe: boolean;
414
357
  /**
415
358
  * Разрешить вход в звонок одним пользователем с разных устройств одновременно
416
359
  *
@@ -450,6 +393,20 @@ export type ParamsObject = {
450
393
  * _По умолчанию: `false`_
451
394
  */
452
395
  audioShare: boolean;
396
+ /**
397
+ * Включить возможность захвата звука системы при трансляции окна
398
+ *
399
+ * _По умолчанию: `false`_
400
+ * @hidden
401
+ */
402
+ audioShareWindowInclude: boolean;
403
+ /**
404
+ * Включить возможность захвата звука системы при трансляции всего экрана
405
+ *
406
+ * _По умолчанию: `false`_
407
+ * @hidden
408
+ */
409
+ audioShareSystemInclude: boolean;
453
410
  /**
454
411
  * Включить поддержку динамического контента при трансляция экрана
455
412
  *
@@ -474,10 +431,6 @@ export type ParamsObject = {
474
431
  * _По умолчанию: `false`_
475
432
  */
476
433
  consumerFastScreenShareQualityOnDemand: boolean;
477
- /**
478
- * Использовать новые правила allMute для админа
479
- */
480
- newMuteRules: boolean;
481
434
  /**
482
435
  * Включить поддержку приостановки видео в плохой сети.
483
436
  *
@@ -527,6 +480,12 @@ export type ParamsObject = {
527
480
  * _По умолчанию: `false`_
528
481
  */
529
482
  webtransportFF: boolean;
483
+ /**
484
+ * Включить поддержку прозрачного аудио
485
+ *
486
+ * _По умолчанию: `false`_
487
+ */
488
+ transparentAudio: boolean;
530
489
  /**
531
490
  * Получен локальный стрим с камеры/микрофона
532
491
  */
@@ -909,6 +868,7 @@ export default abstract class Params {
909
868
  static set(data: {
910
869
  [key: string]: any;
911
870
  }): void;
871
+ static getScreenFrameRate(fastScreenShare: boolean): number;
912
872
  static get<N extends keyof ParamsObject>(name: N): ParamsObject[N];
913
873
  static get appName(): string;
914
874
  static get appVersion(): number;
@@ -993,20 +953,13 @@ export default abstract class Params {
993
953
  static get callStatReportEnabled(): boolean;
994
954
  static get clientEventsLoggingEnabled(): boolean;
995
955
  static get enableLogPerfStatReport(): boolean;
996
- static get producerNotificationDataChannel(): boolean;
997
- static get producerCommandDataChannel(): boolean;
998
- static get consumerScreenDataChannel(): boolean;
999
- static get producerScreenDataChannel(): boolean;
1000
956
  static get asrDataChannel(): boolean;
1001
957
  static get consumerScreenDataChannelPacketSize(): number;
1002
958
  static get screenShareWebmBuilder(): boolean;
1003
959
  static get noiseSuppression(): boolean;
1004
- static set noiseSuppression(value: boolean);
1005
960
  static get preferH264(): boolean;
1006
961
  static get preferVP9(): boolean;
1007
962
  static get audioNack(): boolean;
1008
- static get consumerScreenTrack(): boolean;
1009
- static get producerScreenTrack(): boolean;
1010
963
  static get movieShare(): boolean;
1011
964
  static get videoTracksCount(): number;
1012
965
  static get breakVideoPayloadTypes(): boolean;
@@ -1018,13 +971,12 @@ export default abstract class Params {
1018
971
  static get waitForAdminInGroupCalls(): boolean;
1019
972
  static get participantListChunkInitIndex(): number;
1020
973
  static get participantListChunkInitCount(): number | null;
1021
- static get serverAudioRed(): boolean;
1022
- static get p2pAudioRed(): boolean;
1023
- static get h264spsPpsIdrInKeyframe(): boolean;
1024
974
  static get filterObservers(): boolean;
1025
975
  static get muteMode(): boolean;
1026
976
  static get preserveAudioTracks(): boolean;
1027
977
  static get audioShare(): boolean;
978
+ static get audioShareWindowInclude(): boolean;
979
+ static get audioShareSystemInclude(): boolean;
1028
980
  static get fastScreenShare(): boolean;
1029
981
  static get screenShareCongestionControl(): boolean;
1030
982
  static get screenShareCongestionControlThreshold(): number;
@@ -1032,22 +984,20 @@ export default abstract class Params {
1032
984
  static get fastScreenShareHeight(): number;
1033
985
  static get consumerFastScreenShare(): boolean;
1034
986
  static get consumerFastScreenShareQualityOnDemand(): boolean;
1035
- static get newMuteRules(): boolean;
1036
987
  static get videoSuspend(): boolean;
1037
988
  static get enumerateDevicesDelay(): number;
1038
- static getScreenFrameRate(fastScreenShare: boolean): number;
1039
989
  static get switchVideoAtBadNetwork(): boolean;
1040
990
  static get enableVideoEffectsFpsDegradation(): boolean;
1041
991
  static get simulcast(): boolean;
1042
- static set simulcast(value: boolean);
1043
992
  static get webtransport(): boolean;
1044
- static set webtransport(value: boolean);
1045
993
  static get webtransportFF(): boolean;
1046
- static set webtransportFF(value: boolean);
994
+ static get transparentAudio(): boolean;
1047
995
  static toJSON(): {
1048
996
  apiKey: string;
1049
997
  apiEnv: string;
1050
998
  audioShare: boolean;
999
+ audioShareWindowInclude: boolean;
1000
+ audioShareSystemInclude: boolean;
1051
1001
  useCallsToContacts: boolean;
1052
1002
  useParticipantListChunk: boolean;
1053
1003
  useRooms: boolean;
@@ -1068,7 +1018,6 @@ export default abstract class Params {
1068
1018
  callStatReportEnabled: boolean;
1069
1019
  joinFromMultipleDevices: boolean;
1070
1020
  movieShare: boolean;
1071
- newMuteRules: boolean;
1072
1021
  clientType: string;
1073
1022
  clientStatsPlatform: string;
1074
1023
  consumerScreenDataChannelPacketSize: number;
@@ -1076,5 +1025,6 @@ export default abstract class Params {
1076
1025
  simulcast: boolean;
1077
1026
  webtransport: boolean;
1078
1027
  webtransportFF: boolean;
1028
+ transparentAudio: boolean;
1079
1029
  };
1080
1030
  }
package/static/Utils.d.ts CHANGED
@@ -7,7 +7,7 @@ export declare const PARAMETERS_SEPARATOR = ":";
7
7
  export declare const DEVICE_IDX_PARAMETER = "d";
8
8
  /** @hidden */
9
9
  declare namespace Utils {
10
- function patchLocalSDP(sdp: string, preferH264: boolean, brokenH264Decoder: boolean, preferVP9: boolean, h264spsPpsIdrInKeyframe: boolean, isAudioNack?: boolean, preferRed?: boolean): string;
10
+ function patchLocalSDP(sdp: string, preferH264: boolean, brokenH264Decoder: boolean, preferVP9: boolean, isAudioNack?: boolean): string;
11
11
  function patchRemoteSDP(sdp: string, oldDataChannelDescription: boolean, preferH264: boolean, brokenH264: boolean, preferVP9: boolean, brokenVP9Encoder: boolean, brokenVP9Decoder: boolean): string;
12
12
  function getPeerIdString(peerId: SignalingMessage.PeerId): string;
13
13
  function comparePeerId(peerId1: SignalingMessage.PeerId, peerId2: SignalingMessage.PeerId): boolean;
@@ -82,6 +82,7 @@ export type ConversationOnStartParams = {
82
82
  onlyAdminCanShareMovie?: boolean;
83
83
  externalIds?: ExternalId[];
84
84
  onFastStart?: FastStartHandler;
85
+ conversationId?: string;
85
86
  };
86
87
  export type StartConversationParams = {
87
88
  opponentIds?: OkUserId[];
@@ -95,4 +96,5 @@ export type StartConversationParams = {
95
96
  externalIds?: ExternalId[];
96
97
  startedTime: number;
97
98
  onFastStart?: FastStartHandler;
99
+ conversationId?: string;
98
100
  };
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Параметры для fast join
3
+ */
4
+ export interface FastJoinParams {
5
+ joinLink: string;
6
+ isVideo: boolean;
7
+ internalParams: string;
8
+ }
9
+ export interface FastJoinResponse {
10
+ conversationId: string;
11
+ internalCallerParams: string;
12
+ }
13
+ export type FastJoinHandler = (params: FastJoinParams) => Promise<FastJoinResponse>;