@vkontakte/calls-sdk 2.8.12-dev.35600965.0 → 2.8.12-dev.473faec7.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 +27 -4
- package/abstract/BaseApi.d.ts +2 -1
- package/abstract/BaseSignaling.d.ts +9 -4
- package/calls-sdk.cjs.js +7 -13
- package/calls-sdk.esm.js +1756 -1471
- package/classes/AudioOutput.d.ts +4 -1
- package/classes/CallRegistry.d.ts +1 -1
- package/classes/MediaSource.d.ts +4 -0
- package/classes/{Conversation.d.ts → conversation/Conversation.d.ts} +47 -35
- 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} +4 -4
- package/classes/conversation/index.d.ts +1 -0
- package/classes/stat/CallLifecycleStats.d.ts +0 -4
- package/classes/stat/StatAggregator.d.ts +4 -0
- package/classes/transport/DirectTransport.d.ts +1 -0
- package/classes/transport/PerfStatReporter.d.ts +2 -0
- package/classes/transport/ServerTransport.d.ts +1 -4
- package/classes/transport/SimulcastSender.d.ts +31 -0
- package/classes/transport/Transport.d.ts +3 -0
- package/default/Api.d.ts +4 -1
- package/default/ApiExternal.d.ts +2 -1
- package/default/Signaling.d.ts +8 -12
- package/default/SignalingTransport.d.ts +11 -2
- package/enums/ClientHangupReason.d.ts +7 -0
- package/enums/Stat.d.ts +0 -1
- package/package.json +3 -3
- package/static/ApiTransport.d.ts +3 -0
- package/static/Params.d.ts +16 -1
- 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 +1 -6
- 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
|
@@ -4,6 +4,7 @@ import { DebugLogger } from '../static/Debug';
|
|
|
4
4
|
export declare enum SignalingTransportFailure {
|
|
5
5
|
EMPTY_ENDPOINT = "EMPTY_ENDPOINT",
|
|
6
6
|
NETWORK_ERROR = "NETWORK_ERROR",
|
|
7
|
+
RECONNECT_TIMEOUT = "RECONNECT_TIMEOUT",
|
|
7
8
|
ABORTED = "ABORTED"
|
|
8
9
|
}
|
|
9
10
|
export type SignalingTransportFailedEvent = {
|
|
@@ -16,7 +17,12 @@ export type SignalingTransportReconnectEvent = {
|
|
|
16
17
|
count: number;
|
|
17
18
|
delay: number;
|
|
18
19
|
};
|
|
20
|
+
export type SignalingTransportConnectingEvent = {
|
|
21
|
+
connectionType: SignalingConnectionType;
|
|
22
|
+
source: SignalingTransportType;
|
|
23
|
+
};
|
|
19
24
|
export type SignalingTransportHandlers = {
|
|
25
|
+
onConnecting: (event: SignalingTransportConnectingEvent) => void;
|
|
20
26
|
onOpen: () => void;
|
|
21
27
|
onMessage: (event: MessageEvent) => void;
|
|
22
28
|
onError: (event: Event) => void;
|
|
@@ -35,6 +41,7 @@ export default class SignalingTransport {
|
|
|
35
41
|
private connectionType;
|
|
36
42
|
private reconnectCount;
|
|
37
43
|
private reconnectTimer;
|
|
44
|
+
private reconnectDeadlineTimer;
|
|
38
45
|
private doctorTimer;
|
|
39
46
|
private forceWebSocket;
|
|
40
47
|
private abortSignal;
|
|
@@ -49,10 +56,10 @@ export default class SignalingTransport {
|
|
|
49
56
|
setPeerId(peerId: number | null): void;
|
|
50
57
|
setLastStamp(lastStamp: number): void;
|
|
51
58
|
setAbortSignal(signal?: AbortSignal): void;
|
|
52
|
-
|
|
59
|
+
onConnectionRestored(): void;
|
|
53
60
|
connect(connectionType: SignalingConnectionType): void;
|
|
54
61
|
close(code?: number): void;
|
|
55
|
-
send(data: string | ArrayBuffer): void
|
|
62
|
+
send(data: string | ArrayBuffer): Promise<void>;
|
|
56
63
|
private _connect;
|
|
57
64
|
private _connectWebTransport;
|
|
58
65
|
private _connectWebSocket;
|
|
@@ -65,6 +72,8 @@ export default class SignalingTransport {
|
|
|
65
72
|
private _onClose;
|
|
66
73
|
private _disconnect;
|
|
67
74
|
private _scheduleReconnect;
|
|
75
|
+
private _startReconnectDeadline;
|
|
76
|
+
private _stopReconnectDeadline;
|
|
68
77
|
private _getReconnectDelay;
|
|
69
78
|
private _startDoctor;
|
|
70
79
|
private _stopDoctor;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import HangupType from './HangupType';
|
|
2
|
+
/**
|
|
3
|
+
* Причины завершения звонка, которые клиент может передать в {@link hangup}/{@link declineCall}
|
|
4
|
+
* и пробросить в сигналинг без маппинга.
|
|
5
|
+
*/
|
|
6
|
+
export type ClientHangupReason = HangupType.HUNGUP | HangupType.CANCELED | HangupType.REJECTED | HangupType.BUSY | HangupType.MISSED | HangupType.CALL_TIMEOUT;
|
|
7
|
+
export default ClientHangupReason;
|
package/enums/Stat.d.ts
CHANGED
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.473faec7.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/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';
|
|
@@ -93,6 +93,8 @@ export type ParamsObject = {
|
|
|
93
93
|
/** @hidden */
|
|
94
94
|
signalingReconnectMaxCount: number;
|
|
95
95
|
/** @hidden */
|
|
96
|
+
signalingReconnectMaxDuration: number;
|
|
97
|
+
/** @hidden */
|
|
96
98
|
waitConnectionDelay: number;
|
|
97
99
|
/** @hidden */
|
|
98
100
|
waitResponseDelay: number;
|
|
@@ -193,6 +195,14 @@ export type ParamsObject = {
|
|
|
193
195
|
* Можно установить позднее методом `setAudioEffects`
|
|
194
196
|
*/
|
|
195
197
|
audioEffects: EffectVoiceChange | null;
|
|
198
|
+
/**
|
|
199
|
+
* Namespace библиотеки VAD из `@vkontakte/calls-audio-effects`.
|
|
200
|
+
*
|
|
201
|
+
* Можно установить методом `setVad`
|
|
202
|
+
*/
|
|
203
|
+
vad: VadLib | null;
|
|
204
|
+
/** Настройки VAD (threshold, hangoverMs, enabled) */
|
|
205
|
+
vadOptions: VadControllerOptions;
|
|
196
206
|
/**
|
|
197
207
|
* Максимальная ширина видео в пикселях для видео эффекта
|
|
198
208
|
*
|
|
@@ -949,6 +959,7 @@ export default abstract class Params {
|
|
|
949
959
|
static get signalingReconnectDelay(): number;
|
|
950
960
|
static get signalingReconnectMaxDelay(): number;
|
|
951
961
|
static get signalingReconnectMaxCount(): number;
|
|
962
|
+
static get signalingReconnectMaxDuration(): number;
|
|
952
963
|
static get waitConnectionDelay(): number;
|
|
953
964
|
static get waitResponseDelay(): number;
|
|
954
965
|
static get waitMessageDelay(): number;
|
|
@@ -970,6 +981,10 @@ export default abstract class Params {
|
|
|
970
981
|
static get displaySurface(): DisplayCaptureSurfaceType;
|
|
971
982
|
static get audioEffects(): EffectVoiceChange | null;
|
|
972
983
|
static set audioEffects(value: EffectVoiceChange | null);
|
|
984
|
+
static get vad(): VadLib | null;
|
|
985
|
+
static set vad(value: VadLib | null);
|
|
986
|
+
static get vadOptions(): VadControllerOptions;
|
|
987
|
+
static set vadOptions(value: VadControllerOptions);
|
|
973
988
|
static get videoEffects(): VideoEffects | null;
|
|
974
989
|
static set videoEffects(value: VideoEffects | null);
|
|
975
990
|
static get videoEffectMaxWidth(): number;
|
|
@@ -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
|
@@ -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
|
* До вызова этого метода бесполезно опрашивать другие публичные методы.
|
|
@@ -143,11 +143,6 @@ 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
|
*/
|
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>;
|