@vkontakte/calls-sdk 2.8.12-dev.73c9f7fe.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 +25 -13
- package/abstract/BaseApi.d.ts +4 -8
- package/calls-sdk.cjs.js +6 -6
- package/calls-sdk.esm.js +726 -417
- package/classes/AudioFix.d.ts +2 -2
- package/classes/AudioOutput.d.ts +2 -2
- package/classes/MediaSource.d.ts +2 -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/Conversation.d.ts +7 -4
- 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 -2
- package/classes/stat/CodecStatsAggregator.d.ts +2 -2
- package/classes/stat/ConversationStats.d.ts +11 -4
- package/classes/stat/StatAggregator.d.ts +2 -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 +2 -2
- package/classes/transport/ServerTransport.d.ts +2 -2
- package/classes/transport/SimulcastSender.d.ts +2 -2
- package/classes/transport/Transport.d.ts +2 -2
- package/default/Api.d.ts +9 -1
- package/default/Signaling.d.ts +2 -2
- package/enums/SessionError.d.ts +10 -0
- package/package.json +1 -1
- package/static/Params.d.ts +14 -0
- package/static/WebRTCUtils.d.ts +5 -5
- package/types/FastHangup.d.ts +66 -0
- package/classes/StatsLogger.d.ts +0 -41
|
@@ -2,7 +2,7 @@ import BaseSignaling from '../../abstract/BaseSignaling';
|
|
|
2
2
|
import { type DebugLogger } from '../../static/Debug';
|
|
3
3
|
import type VideoSettings from '../../types/VideoSettings';
|
|
4
4
|
import { MediaSource } from '../MediaSource';
|
|
5
|
-
import
|
|
5
|
+
import StatEventCollector from '../stat/StatEventCollector';
|
|
6
6
|
export default class SimulcastSender {
|
|
7
7
|
private _pc;
|
|
8
8
|
private _transceiver;
|
|
@@ -12,7 +12,7 @@ export default class SimulcastSender {
|
|
|
12
12
|
private readonly _getCameraSettings;
|
|
13
13
|
private readonly _debug;
|
|
14
14
|
private readonly _logger;
|
|
15
|
-
constructor(signaling: BaseSignaling, mediaSource: MediaSource, getCameraSettings: () => VideoSettings | null, debug?: DebugLogger, logger?:
|
|
15
|
+
constructor(signaling: BaseSignaling, mediaSource: MediaSource, getCameraSettings: () => VideoSettings | null, debug?: DebugLogger, logger?: StatEventCollector | null);
|
|
16
16
|
configureFromRemoteOffer(pc: RTCPeerConnection): Promise<void>;
|
|
17
17
|
finalizeAnswer(sdp: string): string;
|
|
18
18
|
sync({ force }?: {
|
|
@@ -6,7 +6,7 @@ import { type DebugLogger } from '../../static/Debug';
|
|
|
6
6
|
import { ParticipantId } from '../../types/Participant';
|
|
7
7
|
import ServerSettings from '../../types/ServerSettings';
|
|
8
8
|
import EventEmitter from '../EventEmitter';
|
|
9
|
-
import
|
|
9
|
+
import StatEventCollector from '../stat/StatEventCollector';
|
|
10
10
|
import { MediaSource } from '../MediaSource';
|
|
11
11
|
import { CodecStatsAggregator } from '../stat/CodecStatsAggregator';
|
|
12
12
|
import { StatAggregator } from '../stat/StatAggregator';
|
|
@@ -51,7 +51,7 @@ export declare class Transport extends EventEmitter {
|
|
|
51
51
|
private readonly _onFirstMediaSent;
|
|
52
52
|
private _firstMediaSentProbeStopped;
|
|
53
53
|
private _vadController;
|
|
54
|
-
constructor(topology: TransportTopology, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?:
|
|
54
|
+
constructor(topology: TransportTopology, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
|
|
55
55
|
updateSettings(settings: ServerSettings): void;
|
|
56
56
|
updateStatisticsInterval(): void;
|
|
57
57
|
allocate(participantId: ParticipantId, isMaster?: boolean): void;
|
package/default/Api.d.ts
CHANGED
|
@@ -20,8 +20,16 @@ export default class Api extends BaseApi {
|
|
|
20
20
|
private _removeCachedAnonymLogin;
|
|
21
21
|
private _reauthorize;
|
|
22
22
|
private _applyAnonymLogin;
|
|
23
|
+
/**
|
|
24
|
+
* Бекенд присылает 200 в любой ситуации, нужно читать тело.
|
|
25
|
+
* В теле есть ошибки если есть проблемы со статой.
|
|
26
|
+
*
|
|
27
|
+
* Ошибки по отдельным событиям логируются, но не влияют на результат:
|
|
28
|
+
* батч трактуется целиком, иначе одно всегда отвергаемое событие
|
|
29
|
+
* залипило бы очередь навсегда.
|
|
30
|
+
*/
|
|
23
31
|
private _sendClientStats;
|
|
24
|
-
logClientStats(items: ClientStats[]): void
|
|
32
|
+
logClientStats(items: ClientStats[]): Promise<void>;
|
|
25
33
|
uploadDebugLogs(conversationId: string, startTime: number, endTime: number, log: string): Promise<void>;
|
|
26
34
|
joinConversation(conversationId: string, isVideo?: boolean, chatId?: string): Promise<ConversationResponse>;
|
|
27
35
|
createConversation(conversationId: string, payload?: string, requireAuthToJoin?: boolean, { onlyAdminCanShareMovie, audienceMode, audioOnly, waitForAdmin, closedConversation, }?: {
|
package/default/Signaling.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { SharingStatReport } from '../classes/screenshare/SharingStatReport';
|
|
|
4
4
|
import { StatAggregator } from '../classes/stat/StatAggregator';
|
|
5
5
|
import { StatPings } from '../classes/stat/StatPings';
|
|
6
6
|
import { StatSignalingCommands } from '../classes/stat/StatSignalingCommands';
|
|
7
|
-
import
|
|
7
|
+
import StatEventCollector from '../classes/stat/StatEventCollector';
|
|
8
8
|
import ConversationFeature from '../enums/ConversationFeature';
|
|
9
9
|
import ConversationOption from '../enums/ConversationOption';
|
|
10
10
|
import MediaOption from '../enums/MediaOption';
|
|
@@ -56,7 +56,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
56
56
|
private static get WAIT_CONNECTION_DELAY();
|
|
57
57
|
private static get WAIT_RESPONSE_DELAY();
|
|
58
58
|
get ready(): boolean;
|
|
59
|
-
constructor(debug?: DebugLogger, logger?:
|
|
59
|
+
constructor(debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, statPings?: StatPings | null, statSignalingCommands?: StatSignalingCommands | null);
|
|
60
60
|
setAbortSignal(signal: AbortSignal | undefined): void;
|
|
61
61
|
setEndpoint(endpoint: string): void;
|
|
62
62
|
setWebTransportEndpoint(endpoint: string | null): void;
|
package/package.json
CHANGED
package/static/Params.d.ts
CHANGED
|
@@ -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 */
|
|
@@ -928,6 +940,7 @@ export default abstract class Params {
|
|
|
928
940
|
static set platform(value: string);
|
|
929
941
|
static get clientStatsPlatform(): string;
|
|
930
942
|
static set clientStatsPlatform(value: string);
|
|
943
|
+
static get autoStartStats(): boolean;
|
|
931
944
|
static get clientType(): string;
|
|
932
945
|
static set clientType(value: string);
|
|
933
946
|
static get externalUserType(): string;
|
|
@@ -1080,6 +1093,7 @@ export default abstract class Params {
|
|
|
1080
1093
|
movieShare: boolean;
|
|
1081
1094
|
clientType: string;
|
|
1082
1095
|
clientStatsPlatform: string;
|
|
1096
|
+
autoStartStats: boolean;
|
|
1083
1097
|
consumerScreenDataChannelPacketSize: number;
|
|
1084
1098
|
switchVideoAtBadNetwork: boolean;
|
|
1085
1099
|
simulcast: boolean;
|
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
|
* Тип камеры мобильного устройства
|
|
@@ -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
|
*
|
|
@@ -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/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 {};
|