@vkontakte/calls-sdk 2.8.12-dev.773596bc.0 → 2.8.12-dev.7afbc576.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.
- package/CallsSDK.d.ts +36 -4
- package/abstract/BaseApi.d.ts +7 -10
- package/abstract/BaseSignaling.d.ts +10 -5
- package/calls-sdk.cjs.js +7 -13
- package/calls-sdk.esm.js +3377 -2832
- package/classes/AudioFix.d.ts +2 -2
- package/classes/AudioOutput.d.ts +2 -2
- package/classes/CallRegistry.d.ts +1 -1
- package/classes/ExternalIdCache.d.ts +1 -0
- package/classes/MediaSource.d.ts +6 -2
- package/classes/SpecListener.d.ts +2 -2
- package/classes/codec/LibVPxDecoder.d.ts +2 -2
- package/classes/codec/LibVPxEncoder.d.ts +2 -2
- package/classes/codec/WebCodecsDecoder.d.ts +2 -2
- package/classes/codec/WebCodecsEncoder.d.ts +2 -2
- package/classes/codec/WorkerBase.d.ts +3 -3
- package/classes/{Conversation.d.ts → conversation/Conversation.d.ts} +50 -37
- package/classes/conversation/Conversation.testUtils.d.ts +148 -0
- package/classes/{ConversationResponseValidator.d.ts → conversation/ConversationResponseValidator.d.ts} +1 -1
- package/classes/{DisplayLayoutRequester.d.ts → conversation/DisplayLayoutRequester.d.ts} +5 -5
- package/classes/conversation/index.d.ts +1 -0
- package/classes/screenshare/ScreenCaptureReceiver.d.ts +2 -2
- package/classes/screenshare/ScreenCaptureSender.d.ts +2 -2
- package/classes/screenshare/StreamBuilder.d.ts +2 -2
- package/classes/stat/CallLifecycleStats.d.ts +2 -6
- package/classes/stat/CodecStatsAggregator.d.ts +2 -2
- package/classes/stat/ConversationStats.d.ts +11 -4
- package/classes/stat/StatAggregator.d.ts +6 -2
- package/classes/stat/StatDrainScheduler.d.ts +78 -0
- package/classes/stat/StatEventCollector.d.ts +37 -0
- package/classes/stat/StatPings.d.ts +2 -2
- package/classes/stat/StatQueue.d.ts +61 -0
- package/classes/stat/StatSignalingCommands.d.ts +2 -2
- package/classes/stat/StatUnloadJournal.d.ts +30 -0
- package/classes/transport/DirectTransport.d.ts +3 -2
- package/classes/transport/PerfStatReporter.d.ts +2 -0
- package/classes/transport/ServerTransport.d.ts +3 -6
- package/classes/transport/SimulcastSender.d.ts +31 -0
- package/classes/transport/Transport.d.ts +5 -2
- package/default/Api.d.ts +14 -3
- package/default/ApiExternal.d.ts +2 -1
- package/default/Signaling.d.ts +11 -15
- package/default/SignalingTransport.d.ts +6 -1
- package/enums/ClientHangupReason.d.ts +7 -0
- package/enums/SessionError.d.ts +10 -0
- package/enums/Stat.d.ts +0 -1
- package/package.json +3 -3
- package/static/ApiTransport.d.ts +3 -0
- package/static/External.d.ts +1 -1
- package/static/Params.d.ts +42 -2
- package/static/ParticipantConnectionStatusUtils.d.ts +1 -0
- package/static/Sdp.d.ts +3 -0
- package/static/SignalingCapabilities.d.ts +1 -1
- package/static/SimulcastInfo.d.ts +5 -3
- package/static/Utils.d.ts +1 -2
- package/static/WebRTCUtils.d.ts +9 -12
- package/types/Api.d.ts +9 -0
- package/types/Capabilities.d.ts +1 -0
- package/types/FastHangup.d.ts +66 -0
- package/types/Participant.d.ts +1 -0
- package/types/PerfStatReporter.d.ts +0 -4
- package/types/SignalingCommand.d.ts +2 -0
- package/types/SignalingMessage.d.ts +1 -0
- package/utils/IceServers.d.ts +2 -0
- package/utils/NavigatorPermissions.d.ts +2 -2
- package/utils/SerializeLatest.d.ts +5 -0
- package/classes/StatsLogger.d.ts +0 -41
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/calls-sdk",
|
|
3
|
-
"version": "2.8.12-dev.
|
|
3
|
+
"version": "2.8.12-dev.7afbc576.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",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"**/*.d.ts"
|
|
15
15
|
],
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@vkontakte/calls-audio-effects": "1.
|
|
17
|
+
"@vkontakte/calls-audio-effects": "1.4.1",
|
|
18
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",
|
|
@@ -22,6 +22,6 @@
|
|
|
22
22
|
"fflate": "^0.8.2",
|
|
23
23
|
"messagepack": "1.1.12",
|
|
24
24
|
"simple-ebml-builder": "0.2.2",
|
|
25
|
-
"webrtc-adapter": "
|
|
25
|
+
"webrtc-adapter": "9.0.5"
|
|
26
26
|
}
|
|
27
27
|
}
|
package/static/ApiTransport.d.ts
CHANGED
|
@@ -7,4 +7,7 @@ export declare function sendBeakon(method: string, params?: {
|
|
|
7
7
|
export declare function request(method: string, params?: {
|
|
8
8
|
[key: string]: any;
|
|
9
9
|
}, noSession?: boolean, customEndpoint?: string): Promise<any>;
|
|
10
|
+
export declare function requestKeepalive(method: string, params?: {
|
|
11
|
+
[key: string]: any;
|
|
12
|
+
}, noSession?: boolean): Promise<any>;
|
|
10
13
|
export declare function sendFormData(url: string, data: FormData): Promise<void>;
|
package/static/External.d.ts
CHANGED
|
@@ -637,6 +637,6 @@ declare namespace External {
|
|
|
637
637
|
/**
|
|
638
638
|
* Собеседник подключился к сигналлингу
|
|
639
639
|
*/
|
|
640
|
-
function onPeerRegistered(conversationId?: string): void;
|
|
640
|
+
function onPeerRegistered(conversationId?: string, externalIds?: ExternalId[]): void;
|
|
641
641
|
}
|
|
642
642
|
export default External;
|
package/static/Params.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { VideoEffects } from '@vkontakte/calls-video-effects';
|
|
2
|
-
import type { EffectVoiceChange } from '@vkontakte/calls-audio-effects';
|
|
2
|
+
import type { EffectVoiceChange, VadControllerOptions, VadLib } from '@vkontakte/calls-audio-effects';
|
|
3
3
|
import type * as Vmoji from '@vkontakte/calls-vmoji';
|
|
4
4
|
import { IAsrData } from '../types/Asr';
|
|
5
5
|
import { ConversationData } from '../types/Conversation';
|
|
@@ -37,6 +37,18 @@ export type ParamsObject = {
|
|
|
37
37
|
platform: string;
|
|
38
38
|
/** @hidden */
|
|
39
39
|
clientStatsPlatform: string;
|
|
40
|
+
/**
|
|
41
|
+
* Автоматически запускать отправку клиентской статистики при `init()`.
|
|
42
|
+
*
|
|
43
|
+
* Если `false`, события звонков продолжают копиться в IndexedDB, но в сеть
|
|
44
|
+
* не уходят, пока хост не вызовет `startStats()`. Так хост может прогреть
|
|
45
|
+
* приложение, не нагружая сеть. До старта неактивен и fallback прямой
|
|
46
|
+
* отправки при недоступном хранилище. Если `startStats()` не вызвать
|
|
47
|
+
* никогда, очередь дорастёт до лимита и начнёт вытеснять старые звонки.
|
|
48
|
+
*
|
|
49
|
+
* _По умолчанию: `true`_
|
|
50
|
+
*/
|
|
51
|
+
autoStartStats: boolean;
|
|
40
52
|
/** @hidden */
|
|
41
53
|
clientType: string;
|
|
42
54
|
/** @hidden */
|
|
@@ -193,6 +205,14 @@ export type ParamsObject = {
|
|
|
193
205
|
* Можно установить позднее методом `setAudioEffects`
|
|
194
206
|
*/
|
|
195
207
|
audioEffects: EffectVoiceChange | null;
|
|
208
|
+
/**
|
|
209
|
+
* Namespace библиотеки VAD из `@vkontakte/calls-audio-effects`.
|
|
210
|
+
*
|
|
211
|
+
* Можно установить методом `setVad`
|
|
212
|
+
*/
|
|
213
|
+
vad: VadLib | null;
|
|
214
|
+
/** Настройки VAD (threshold, hangoverMs, enabled) */
|
|
215
|
+
vadOptions: VadControllerOptions;
|
|
196
216
|
/**
|
|
197
217
|
* Максимальная ширина видео в пикселях для видео эффекта
|
|
198
218
|
*
|
|
@@ -505,6 +525,16 @@ export type ParamsObject = {
|
|
|
505
525
|
* _По умолчанию: `false`_
|
|
506
526
|
*/
|
|
507
527
|
enableSessionStateUpdates: boolean;
|
|
528
|
+
/**
|
|
529
|
+
* Использовать `<audio>` вместо `<video>` для воспроизведения звука в desktop Safari
|
|
530
|
+
* @hidden
|
|
531
|
+
*/
|
|
532
|
+
safariAudioElement: boolean;
|
|
533
|
+
/**
|
|
534
|
+
* Отправлять пустой ICE candidate (end-of-candidates) удалённому пиру
|
|
535
|
+
* @hidden
|
|
536
|
+
*/
|
|
537
|
+
forwardEmptyIceCandidate: boolean;
|
|
508
538
|
/**
|
|
509
539
|
* Получен локальный стрим с камеры/микрофона
|
|
510
540
|
*/
|
|
@@ -892,7 +922,7 @@ export type ParamsObject = {
|
|
|
892
922
|
/**
|
|
893
923
|
* Собеседник подключился к сигналлингу
|
|
894
924
|
*/
|
|
895
|
-
onPeerRegistered?: (conversationId?: string) => void;
|
|
925
|
+
onPeerRegistered?: (conversationId?: string, externalIds?: ExternalId[]) => void;
|
|
896
926
|
};
|
|
897
927
|
export default abstract class Params {
|
|
898
928
|
private static _params;
|
|
@@ -910,6 +940,7 @@ export default abstract class Params {
|
|
|
910
940
|
static set platform(value: string);
|
|
911
941
|
static get clientStatsPlatform(): string;
|
|
912
942
|
static set clientStatsPlatform(value: string);
|
|
943
|
+
static get autoStartStats(): boolean;
|
|
913
944
|
static get clientType(): string;
|
|
914
945
|
static set clientType(value: string);
|
|
915
946
|
static get externalUserType(): string;
|
|
@@ -960,6 +991,10 @@ export default abstract class Params {
|
|
|
960
991
|
static get displaySurface(): DisplayCaptureSurfaceType;
|
|
961
992
|
static get audioEffects(): EffectVoiceChange | null;
|
|
962
993
|
static set audioEffects(value: EffectVoiceChange | null);
|
|
994
|
+
static get vad(): VadLib | null;
|
|
995
|
+
static set vad(value: VadLib | null);
|
|
996
|
+
static get vadOptions(): VadControllerOptions;
|
|
997
|
+
static set vadOptions(value: VadControllerOptions);
|
|
963
998
|
static get videoEffects(): VideoEffects | null;
|
|
964
999
|
static set videoEffects(value: VideoEffects | null);
|
|
965
1000
|
static get videoEffectMaxWidth(): number;
|
|
@@ -1027,6 +1062,8 @@ export default abstract class Params {
|
|
|
1027
1062
|
static get waitForRecordResponse(): boolean;
|
|
1028
1063
|
static get transparentAudio(): boolean;
|
|
1029
1064
|
static get enableSessionStateUpdates(): boolean;
|
|
1065
|
+
static get safariAudioElement(): boolean;
|
|
1066
|
+
static get forwardEmptyIceCandidate(): boolean;
|
|
1030
1067
|
static toJSON(): {
|
|
1031
1068
|
apiKey: string;
|
|
1032
1069
|
apiEnv: string;
|
|
@@ -1056,6 +1093,7 @@ export default abstract class Params {
|
|
|
1056
1093
|
movieShare: boolean;
|
|
1057
1094
|
clientType: string;
|
|
1058
1095
|
clientStatsPlatform: string;
|
|
1096
|
+
autoStartStats: boolean;
|
|
1059
1097
|
consumerScreenDataChannelPacketSize: number;
|
|
1060
1098
|
switchVideoAtBadNetwork: boolean;
|
|
1061
1099
|
simulcast: boolean;
|
|
@@ -1063,5 +1101,7 @@ export default abstract class Params {
|
|
|
1063
1101
|
waitForRecordResponse: boolean;
|
|
1064
1102
|
transparentAudio: boolean;
|
|
1065
1103
|
enableSessionStateUpdates: boolean;
|
|
1104
|
+
safariAudioElement: boolean;
|
|
1105
|
+
forwardEmptyIceCandidate: boolean;
|
|
1066
1106
|
};
|
|
1067
1107
|
}
|
|
@@ -11,6 +11,7 @@ declare namespace ParticipantConnectionStatusUtils {
|
|
|
11
11
|
function computeEffective(status: ParticipantConnectionStatus): ParticipantStatus;
|
|
12
12
|
function setSessionState(status: ParticipantConnectionStatus, sessionState?: ParticipantSessionState, sessionStateConnectedBySpeaker?: boolean): StatusTransition;
|
|
13
13
|
function setTransport(status: ParticipantConnectionStatus, transport: ParticipantStatus): StatusTransition;
|
|
14
|
+
function setStalled(status: ParticipantConnectionStatus, stalled: boolean): StatusTransition;
|
|
14
15
|
function setSessionStateApplicable(status: ParticipantConnectionStatus, applicable: boolean): StatusTransition;
|
|
15
16
|
}
|
|
16
17
|
export default ParticipantConnectionStatusUtils;
|
package/static/Sdp.d.ts
ADDED
|
@@ -6,8 +6,10 @@ export declare const SIMULCAST_DEFAULT: {
|
|
|
6
6
|
BITRATE: number;
|
|
7
7
|
};
|
|
8
8
|
export declare const SIMULCAST_SCALABILITY_MODE = "L1T2";
|
|
9
|
-
export declare const MAP_RID_TO_SCALE_RESOLUTION_DOWN_BY: Record<string, number>;
|
|
10
9
|
export declare function isEqualSimulcastInfo(si1: ISimulcastInfo | null, si2: ISimulcastInfo | null): boolean;
|
|
11
10
|
export declare function findBitrateAsc(maxDimension: number, bitrates: VideoBitrateSettings[]): number;
|
|
12
|
-
export declare function calculateSimulcastInfo(width?: number, height?: number, bitrates?: VideoBitrateSettings[]):
|
|
13
|
-
|
|
11
|
+
export declare function calculateSimulcastInfo(width?: number, height?: number, bitrates?: VideoBitrateSettings[], fps?: number): {
|
|
12
|
+
streams: import("../types/SimulcastInfo").SimulcastStreamInfo[];
|
|
13
|
+
};
|
|
14
|
+
export declare function findScaleResolutionDownBy(rid: string | undefined, simulcastInfo: ISimulcastInfo): number;
|
|
15
|
+
export declare function applySimulcastInfoToEncodings(encodings: RTCRtpEncodingParameters[], simulcastInfo: ISimulcastInfo, maxDimension?: number, maxBitrate?: number): void;
|
package/static/Utils.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare const DEVICE_IDX_PARAMETER = "d";
|
|
|
9
9
|
/** @hidden */
|
|
10
10
|
declare namespace Utils {
|
|
11
11
|
function patchLocalSDP(sdp: string, preferH264: boolean, brokenH264Decoder: boolean, preferVP9: boolean, isAudioNack?: boolean): string;
|
|
12
|
-
function patchRemoteSDP(sdp: string,
|
|
12
|
+
function patchRemoteSDP(sdp: string, preferH264: boolean, brokenH264: boolean, preferVP9: boolean, brokenVP9Encoder: boolean, brokenVP9Decoder: boolean): string;
|
|
13
13
|
function getPeerIdString(peerId: SignalingMessage.PeerId): string;
|
|
14
14
|
function comparePeerId(peerId1: SignalingMessage.PeerId, peerId2: SignalingMessage.PeerId): boolean;
|
|
15
15
|
function getPeerConnectionHostInfo(pc: RTCPeerConnection): Promise<{
|
|
@@ -77,6 +77,5 @@ declare namespace Utils {
|
|
|
77
77
|
function objectReduce<R, T extends object>(obj: T, callback: (acc: R, value: T[keyof T], key: keyof T) => R, initialValue: R): R;
|
|
78
78
|
const setImmediate: (fn: VoidFunction) => VoidFunction;
|
|
79
79
|
function isObject(obj: unknown): obj is object;
|
|
80
|
-
function patchSimulcastAnswerSdp(sdp: string, trans: RTCRtpTransceiver, width: number, height: number): string;
|
|
81
80
|
}
|
|
82
81
|
export default Utils;
|
package/static/WebRTCUtils.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Вспомогательный плагин для работы с WebRTC
|
|
3
3
|
*/
|
|
4
4
|
import { IVideoDimentions } from '../types/MediaSettings';
|
|
5
|
-
import type
|
|
5
|
+
import type StatEventCollector from '../classes/stat/StatEventCollector';
|
|
6
6
|
import { type DebugLogger } from './Debug';
|
|
7
7
|
/**
|
|
8
8
|
* Тип камеры мобильного устройства
|
|
@@ -20,7 +20,7 @@ export declare enum FacingMode {
|
|
|
20
20
|
/**
|
|
21
21
|
* Известные браузеры
|
|
22
22
|
*/
|
|
23
|
-
export type BrowserName = '
|
|
23
|
+
export type BrowserName = 'Edge' | 'Chrome' | 'Firefox' | 'Yandex' | 'Opera' | 'Sferum';
|
|
24
24
|
declare namespace WebRTCUtils {
|
|
25
25
|
/**
|
|
26
26
|
* До вызова этого метода бесполезно опрашивать другие публичные методы.
|
|
@@ -85,24 +85,24 @@ declare namespace WebRTCUtils {
|
|
|
85
85
|
* @param needAudio Нужно ли аудио
|
|
86
86
|
* @param needEmptyTracks Добавлять ли в стрим пустые треки для отключенного видео/аудио
|
|
87
87
|
*/
|
|
88
|
-
function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean, debug?: DebugLogger, logger?:
|
|
88
|
+
function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean, debug?: DebugLogger, logger?: StatEventCollector | null): Promise<MediaStream>;
|
|
89
89
|
/**
|
|
90
90
|
* Запрашивает трансляцию экрана пользователя с опциональным захватом звука
|
|
91
91
|
*/
|
|
92
|
-
function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean, debug?: DebugLogger, logger?:
|
|
92
|
+
function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean, debug?: DebugLogger, logger?: StatEventCollector | null): Promise<MediaStream>;
|
|
93
93
|
/**
|
|
94
94
|
* Запрашивает камеру пользователя
|
|
95
95
|
*
|
|
96
96
|
* @param deviceId ID устройства
|
|
97
97
|
* @param resolution Размеры видео
|
|
98
98
|
*/
|
|
99
|
-
function getUserVideo(deviceId?: string, resolution?: IVideoDimentions, debug?: DebugLogger, logger?:
|
|
99
|
+
function getUserVideo(deviceId?: string, resolution?: IVideoDimentions, debug?: DebugLogger, logger?: StatEventCollector | null): Promise<MediaStream>;
|
|
100
100
|
/**
|
|
101
101
|
* Запрашивает микрофон пользователя
|
|
102
102
|
*
|
|
103
103
|
* @param deviceId ID устройства
|
|
104
104
|
*/
|
|
105
|
-
function getUserAudio(deviceId?: string, debug?: DebugLogger, logger?:
|
|
105
|
+
function getUserAudio(deviceId?: string, debug?: DebugLogger, logger?: StatEventCollector | null): Promise<MediaStream>;
|
|
106
106
|
/**
|
|
107
107
|
* Устанавливает размер видео в стриме
|
|
108
108
|
*
|
|
@@ -143,17 +143,14 @@ declare namespace WebRTCUtils {
|
|
|
143
143
|
* В некоторых браузерах VP9 decoder сломан
|
|
144
144
|
*/
|
|
145
145
|
function isBrokenVP9Decoder(): boolean;
|
|
146
|
-
/**
|
|
147
|
-
* Изменился формат описания датаканала в SDP
|
|
148
|
-
* @link https://blog.mozilla.org/webrtc/how-to-avoid-data-channel-breaking/
|
|
149
|
-
*/
|
|
150
|
-
function isOldDataChannelDescription(): boolean;
|
|
151
146
|
/**
|
|
152
147
|
* Может ли браузер делать H264 приоритетным
|
|
153
148
|
*/
|
|
154
149
|
function canPreferH264(): boolean;
|
|
155
150
|
/**
|
|
156
|
-
*
|
|
151
|
+
* Поддержка simulcast браузером.
|
|
152
|
+
* Safari корректно поддерживает simulcast начиная с версии 18.
|
|
153
|
+
* Firefox поддерживает simulcast с VP8 начиная с версии 134.
|
|
157
154
|
*/
|
|
158
155
|
function isSimulcastSupportedByBrowser(): boolean;
|
|
159
156
|
/**
|
package/types/Api.d.ts
ADDED
package/types/Capabilities.d.ts
CHANGED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type ClientHangupReason from '../enums/ClientHangupReason';
|
|
2
|
+
import type HangupType from '../enums/HangupType';
|
|
3
|
+
/**
|
|
4
|
+
* Параметры запроса завершения звонка через внешнего партнёра (fast hangup).
|
|
5
|
+
*
|
|
6
|
+
* SDK генерирует объект и передаёт его в {@link FastHangupHandler}.
|
|
7
|
+
* Хост и backend партнёра пробрасывают `internalParams` как есть, без парсинга.
|
|
8
|
+
*/
|
|
9
|
+
export interface FastHangupParams {
|
|
10
|
+
/**
|
|
11
|
+
* ID звонка
|
|
12
|
+
*/
|
|
13
|
+
conversationId: string;
|
|
14
|
+
/**
|
|
15
|
+
* Причина завершения звонка
|
|
16
|
+
*/
|
|
17
|
+
reason: HangupType;
|
|
18
|
+
/**
|
|
19
|
+
* Внутренние параметры звонка (JSON-строка). Генерируется SDK.
|
|
20
|
+
*/
|
|
21
|
+
internalParams?: string | null;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Ответ внешнего партнёра на завершение звонка.
|
|
25
|
+
*/
|
|
26
|
+
export interface FastHangupResponse {
|
|
27
|
+
/**
|
|
28
|
+
* true — участие в звонке завершено
|
|
29
|
+
*/
|
|
30
|
+
success: boolean;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Параметры публичных методов {@link hangup} / {@link declineCall}.
|
|
34
|
+
*
|
|
35
|
+
* `reason` и `conversationId` идут в signaling hangup.
|
|
36
|
+
* `onFastHangup` заменяет Calls API `vchat.hangupConversation`, если обработчик передан
|
|
37
|
+
* (явный hangup/decline или delayed hangup во время init).
|
|
38
|
+
* Если обработчик не передан, API hangup не вызывается — кроме закрытия вкладки (`pagehide`),
|
|
39
|
+
* где SDK всегда шлёт beacon, и delayed hangup без handler.
|
|
40
|
+
*/
|
|
41
|
+
export interface HangupParams {
|
|
42
|
+
/**
|
|
43
|
+
* ID звонка. Если опущен — завершается текущий активный звонок.
|
|
44
|
+
*/
|
|
45
|
+
conversationId?: string;
|
|
46
|
+
/**
|
|
47
|
+
* Причина завершения для проброса в сигналинг. См. {@link ClientHangupReason}.
|
|
48
|
+
*/
|
|
49
|
+
reason?: ClientHangupReason;
|
|
50
|
+
/**
|
|
51
|
+
* Обработчик fast hangup — завершение звонка через внешнего партнёра.
|
|
52
|
+
*/
|
|
53
|
+
onFastHangup?: FastHangupHandler;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Функция-обработчик fast hangup.
|
|
57
|
+
*
|
|
58
|
+
* Если передана в {@link HangupParams.onFastHangup} при `hangup` / `declineCall`,
|
|
59
|
+
* SDK вызывает её вместо API `vchat.hangupConversation`.
|
|
60
|
+
*
|
|
61
|
+
* На `pagehide` не используется — SDK всегда отправляет `sendBeacon`.
|
|
62
|
+
*
|
|
63
|
+
* @param params Параметры запроса
|
|
64
|
+
* @param signal AbortSignal текущего звонка, если он ещё жив на момент вызова
|
|
65
|
+
*/
|
|
66
|
+
export type FastHangupHandler = (params: FastHangupParams, signal?: AbortSignal) => Promise<FastHangupResponse>;
|
package/types/Participant.d.ts
CHANGED
|
@@ -49,6 +49,7 @@ export interface ParticipantSessionState {
|
|
|
49
49
|
}
|
|
50
50
|
export interface ParticipantConnectionStatus {
|
|
51
51
|
transport: ParticipantStatus;
|
|
52
|
+
stalled: boolean;
|
|
52
53
|
sessionState?: ParticipantSessionState;
|
|
53
54
|
sessionStateApplicable: boolean;
|
|
54
55
|
sessionStateConnectedBySpeaker: boolean;
|
|
@@ -24,10 +24,6 @@ export interface CallStatReport {
|
|
|
24
24
|
audio_concealment_events: number;
|
|
25
25
|
inbound_video_count: number;
|
|
26
26
|
inbound_audio_count: number;
|
|
27
|
-
packets_lost_video: number;
|
|
28
|
-
packets_sent_video: number;
|
|
29
|
-
packets_lost_audio: number;
|
|
30
|
-
packets_sent_audio: number;
|
|
31
27
|
freeze_count: number;
|
|
32
28
|
total_freezes_duration: number;
|
|
33
29
|
rtt: number;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import SignalingCommandType from '../enums/SignalingCommandType';
|
|
2
2
|
import { SignalingResponse, SignalingSuccessResponse } from './SignalingMessage';
|
|
3
|
+
export type SignalingCommandRoute = 'websocket' | 'producer';
|
|
3
4
|
interface SignalingCommand<T extends SignalingResponse = SignalingSuccessResponse> {
|
|
4
5
|
sequence: number;
|
|
5
6
|
name: SignalingCommandType;
|
|
7
|
+
route: SignalingCommandRoute;
|
|
6
8
|
statMarkName: string;
|
|
7
9
|
params: object;
|
|
8
10
|
responseTimer: number;
|
|
@@ -2,8 +2,8 @@ type Device = 'camera' | 'microphone';
|
|
|
2
2
|
type PermissionStatusState = typeof PermissionStatus.prototype.state;
|
|
3
3
|
type EventListener = (name: Device, state: PermissionStatusState) => void;
|
|
4
4
|
export declare class NavigatorPermissions {
|
|
5
|
-
private _cameraPermissionStatus
|
|
6
|
-
private _microphonePermissionStatus
|
|
5
|
+
private _cameraPermissionStatus?;
|
|
6
|
+
private _microphonePermissionStatus?;
|
|
7
7
|
private _listener;
|
|
8
8
|
static isSupported(): boolean;
|
|
9
9
|
init(listener: EventListener): Promise<void>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Последовательно выполняет операции, оставляя в очереди только последнее запрошенное значение.
|
|
3
|
+
* Возвращает ошибку, только если не удалось применить итоговое состояние.
|
|
4
|
+
*/
|
|
5
|
+
export declare function serializeLatest<T>(run: (value: T) => Promise<void> | undefined): (value: T) => Promise<void>;
|
package/classes/StatsLogger.d.ts
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import BaseApi from '../abstract/BaseApi';
|
|
2
|
-
import BaseLogger from '../abstract/BaseLogger';
|
|
3
|
-
import StatLog from '../enums/StatLog';
|
|
4
|
-
import TransportTopology from '../enums/TransportTopology';
|
|
5
|
-
type ClientStatsPayload = Record<string, string | number | boolean | undefined | null>;
|
|
6
|
-
export type LogClientStatsOptions = {
|
|
7
|
-
immediately?: boolean;
|
|
8
|
-
occurredAt?: number;
|
|
9
|
-
conversationId?: string | null;
|
|
10
|
-
deferUntilServerTime?: boolean;
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Класс отвечает за отправку различной информации в сервис статистики (события, статистика и подобное)
|
|
14
|
-
*/
|
|
15
|
-
export default class StatsLogger extends BaseLogger {
|
|
16
|
-
private readonly _externalLogger;
|
|
17
|
-
private readonly _api;
|
|
18
|
-
private readonly _conversationIdProvider;
|
|
19
|
-
private readonly _topologyProvider;
|
|
20
|
-
private readonly _batchInterval;
|
|
21
|
-
private _batchedClientStats;
|
|
22
|
-
private _batchTimeout;
|
|
23
|
-
private _serverTimeDelta;
|
|
24
|
-
private _waitingForServerTime;
|
|
25
|
-
private _deferredClientStats;
|
|
26
|
-
constructor(api: BaseApi, externalLogger: BaseLogger | null, conversationIdProvider: () => string | null, topologyProvider?: () => TransportTopology | undefined);
|
|
27
|
-
log(name: StatLog, value?: string, immediately?: boolean): void;
|
|
28
|
-
logClientStats(data: ClientStatsPayload, immediatelyOrOptions?: boolean | LogClientStatsOptions): void;
|
|
29
|
-
destroy(): void;
|
|
30
|
-
private _logClientStats;
|
|
31
|
-
private _getConversationId;
|
|
32
|
-
private _getCallTopology;
|
|
33
|
-
private _sendBatch;
|
|
34
|
-
private _startTimeout;
|
|
35
|
-
private _stopTimeout;
|
|
36
|
-
private _sendClientStats;
|
|
37
|
-
private _calculateServerTimeDelta;
|
|
38
|
-
private _flushDeferredClientStats;
|
|
39
|
-
private _now;
|
|
40
|
-
}
|
|
41
|
-
export {};
|