@vkontakte/calls-sdk 2.8.11-dev.cb5b05f6.0 → 2.8.11-dev.d88537e0.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 +58 -15
- package/abstract/BaseApi.d.ts +3 -5
- package/abstract/BaseSignaling.d.ts +2 -3
- package/calls-sdk.cjs.js +16 -13
- package/calls-sdk.esm.js +11609 -13
- package/classes/AudioFix.d.ts +5 -1
- package/classes/AudioOutput.d.ts +5 -1
- package/classes/Conversation.d.ts +9 -2
- package/classes/DebugInfo.d.ts +3 -0
- package/classes/DisplayLayoutRequester.d.ts +39 -0
- package/classes/ExternalIdCache.d.ts +19 -0
- package/classes/MediaSource.d.ts +5 -1
- package/classes/ParticipantIdRegistry.d.ts +3 -0
- package/classes/ProducerCommandSerializationService.d.ts +3 -0
- package/classes/SignalingActor.d.ts +3 -1
- package/classes/SpeakerDetector.d.ts +2 -1
- package/classes/SpecListener.d.ts +5 -1
- package/classes/StatsLogger.d.ts +29 -0
- package/classes/VideoEffectsFpsLimiter.d.ts +3 -0
- package/classes/asr/AsrReceiver.d.ts +3 -1
- package/classes/codec/LibVPxDecoder.d.ts +3 -0
- package/classes/codec/LibVPxEncoder.d.ts +3 -1
- package/classes/codec/WebCodecsDecoder.d.ts +3 -0
- package/classes/codec/WebCodecsEncoder.d.ts +3 -1
- package/classes/codec/WorkerBase.d.ts +5 -0
- package/classes/screenshare/BaseStreamBuilder.d.ts +4 -1
- package/classes/screenshare/CanvasRenderer.d.ts +3 -1
- package/classes/screenshare/ScreenCaptureReceiver.d.ts +7 -1
- package/classes/screenshare/ScreenCaptureSender.d.ts +5 -1
- package/classes/screenshare/ScreenCongestionControl.d.ts +3 -1
- package/classes/screenshare/StreamBuilder.d.ts +5 -1
- package/classes/screenshare/TrackGeneratorRenderer.d.ts +3 -1
- package/classes/screenshare/WebmBuilder.d.ts +3 -1
- package/classes/stat/CodecStatsAggregator.d.ts +7 -7
- package/classes/stat/ConversationStats.d.ts +21 -0
- package/classes/stat/StatAggregator.d.ts +6 -6
- package/classes/stat/StatFirstMediaReceived.d.ts +4 -1
- package/classes/stat/StatPings.d.ts +9 -9
- package/classes/stat/StatScreenShareFirstFrame.d.ts +3 -1
- package/classes/stat/StatSignalingCommands.d.ts +8 -8
- package/classes/transport/BaseTransport.d.ts +1 -1
- package/classes/transport/DirectStatReporter.d.ts +3 -1
- package/classes/transport/DirectTransport.d.ts +9 -1
- package/classes/transport/PerfStatReporter.d.ts +5 -1
- package/classes/transport/ServerTransport.d.ts +10 -2
- package/classes/transport/Transport.d.ts +14 -14
- package/default/Api.d.ts +4 -14
- package/default/Signaling.d.ts +15 -4
- package/enums/TransportState.d.ts +10 -0
- package/enums/TransportTopology.d.ts +5 -0
- package/package.json +2 -2
- package/static/Debug.d.ts +27 -8
- package/static/External.d.ts +3 -0
- package/static/Params.d.ts +27 -1
- package/static/Utils.d.ts +3 -2
- package/static/WebRTCUtils.d.ts +7 -4
- package/types/Conversation.d.ts +1 -1
- package/types/FastStart.d.ts +1 -0
- package/types/ParticipantLayout.d.ts +33 -0
- package/types/PerfStatReporter.d.ts +2 -1
- package/types/SignalingMessage.d.ts +4 -1
- package/types/Statistics.d.ts +1 -1
- package/types/WebTransport.d.ts +1 -0
- package/utils/DebugStorage.d.ts +100 -1
- package/classes/Logger.d.ts +0 -41
- package/classes/stat/EventMetricsService.d.ts +0 -9
- package/static/ConversationDebugLogger.d.ts +0 -13
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { SignalingTransportType } from '../../enums/SignalingTransportStat';
|
|
2
|
-
import
|
|
2
|
+
import StatsLogger from '../StatsLogger';
|
|
3
|
+
import TransportTopology from '../../enums/TransportTopology';
|
|
3
4
|
export declare class StatPings {
|
|
4
|
-
private
|
|
5
|
-
|
|
5
|
+
private readonly _logger;
|
|
6
|
+
private trackerByTransport;
|
|
7
|
+
private lastSeen;
|
|
8
|
+
constructor(logger: StatsLogger);
|
|
6
9
|
/**
|
|
7
10
|
* Вызывать при входящем ping в сигналингу.
|
|
8
11
|
* Будет произведен расчет времени между пингами.
|
|
9
12
|
*/
|
|
10
|
-
|
|
13
|
+
mark(transport: SignalingTransportType): void;
|
|
11
14
|
/** Отправляем данные в стату */
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
private trackerByTransport;
|
|
15
|
-
private lastSeen;
|
|
16
|
-
private _destroy;
|
|
15
|
+
logMetrics(topology?: TransportTopology): void;
|
|
16
|
+
destroy(): void;
|
|
17
17
|
}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { ParticipantId } from '../../types/Participant';
|
|
2
|
+
import { StatAggregator } from './StatAggregator';
|
|
2
3
|
export declare class StatScreenShareFirstFrame {
|
|
3
4
|
protected readonly _participantId: ParticipantId;
|
|
5
|
+
private readonly _statAggregator;
|
|
4
6
|
protected _firstFrameReceived: boolean;
|
|
5
|
-
constructor(participantId: ParticipantId);
|
|
7
|
+
constructor(participantId: ParticipantId, statAggregator: StatAggregator | null);
|
|
6
8
|
measure(width: number, height: number): void;
|
|
7
9
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { SignalingTransportType } from '../../enums/SignalingTransportStat';
|
|
2
|
-
import
|
|
2
|
+
import StatsLogger from '../StatsLogger';
|
|
3
|
+
import TransportTopology from '../../enums/TransportTopology';
|
|
3
4
|
export declare class StatSignalingCommands {
|
|
4
|
-
private
|
|
5
|
-
static create(): void;
|
|
6
|
-
static mark(command: string, time: number, transport: SignalingTransportType): void;
|
|
7
|
-
/** Отправляем данные в стату */
|
|
8
|
-
static logMetrics(topology?: TransportTopology): void;
|
|
9
|
-
static destroy(): void;
|
|
5
|
+
private readonly _logger;
|
|
10
6
|
private trackerByCommand;
|
|
11
|
-
|
|
7
|
+
constructor(logger: StatsLogger);
|
|
8
|
+
mark(command: string, time: number, transport: SignalingTransportType): void;
|
|
9
|
+
/** Отправляем данные в стату */
|
|
10
|
+
logMetrics(topology?: TransportTopology): void;
|
|
11
|
+
destroy(): void;
|
|
12
12
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import BaseSignaling from '../../abstract/BaseSignaling';
|
|
2
|
+
import TransportState from '../../enums/TransportState';
|
|
2
3
|
import EventEmitter from '../EventEmitter';
|
|
3
4
|
import { MediaSource } from '../MediaSource';
|
|
4
|
-
import { TransportState } from './Transport';
|
|
5
5
|
export default abstract class BaseTransport extends EventEmitter {
|
|
6
6
|
protected readonly _signaling: BaseSignaling;
|
|
7
7
|
protected readonly _mediaSource: MediaSource;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import BaseSignaling from '../../abstract/BaseSignaling';
|
|
2
|
+
import { type DebugLogger } from '../../static/Debug';
|
|
2
3
|
import { StatResult } from '../../types/Statistics';
|
|
3
4
|
import EventEmitter from '../EventEmitter';
|
|
4
5
|
import { WeightedAverage } from '../stat/WeightedAverage';
|
|
@@ -30,7 +31,8 @@ export default class DirectStatReporter extends EventEmitter {
|
|
|
30
31
|
private readonly _networkLimits;
|
|
31
32
|
private _lastStatSentTimestamp;
|
|
32
33
|
private _currentState;
|
|
33
|
-
|
|
34
|
+
private readonly _debug;
|
|
35
|
+
constructor(signaling: BaseSignaling, debug?: DebugLogger);
|
|
34
36
|
private _calcRttRating;
|
|
35
37
|
private _calcLossRating;
|
|
36
38
|
private _calcBitrateRating;
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import type { AnimojiReceiver, AnimojiSender } from '@vkontakte/calls-vmoji';
|
|
2
2
|
import BaseSignaling from '../../abstract/BaseSignaling';
|
|
3
|
+
import { type DebugLogger } from '../../static/Debug';
|
|
3
4
|
import { ParticipantId } from '../../types/Participant';
|
|
4
5
|
import ServerSettings from '../../types/ServerSettings';
|
|
6
|
+
import StatsLogger from '../StatsLogger';
|
|
5
7
|
import { MediaSource } from '../MediaSource';
|
|
8
|
+
import { CodecStatsAggregator } from '../stat/CodecStatsAggregator';
|
|
9
|
+
import { StatAggregator } from '../stat/StatAggregator';
|
|
6
10
|
import BaseTransport from './BaseTransport';
|
|
7
11
|
export default class DirectTransport extends BaseTransport {
|
|
8
12
|
private readonly _participantId;
|
|
@@ -34,7 +38,11 @@ export default class DirectTransport extends BaseTransport {
|
|
|
34
38
|
private _lastBadConnection;
|
|
35
39
|
private _perfStatReporter;
|
|
36
40
|
private _directStatReporter;
|
|
37
|
-
|
|
41
|
+
private readonly _debug;
|
|
42
|
+
private readonly _logger;
|
|
43
|
+
private readonly _statAggregator;
|
|
44
|
+
private readonly _codecStatsAggregator;
|
|
45
|
+
constructor(participantId: ParticipantId, isMaster: boolean, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null);
|
|
38
46
|
get participantId(): ParticipantId;
|
|
39
47
|
updateStatisticsInterval(): void;
|
|
40
48
|
private _isDeadConnection;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import BaseSignaling from '../../abstract/BaseSignaling';
|
|
2
|
+
import { type DebugLogger } from '../../static/Debug';
|
|
2
3
|
import EventEmitter from '../EventEmitter';
|
|
4
|
+
import { StatAggregator } from '../stat/StatAggregator';
|
|
3
5
|
import DirectTransport from './DirectTransport';
|
|
4
6
|
import ServerTransport from './ServerTransport';
|
|
5
7
|
export default class PerfStatReporter extends EventEmitter {
|
|
@@ -10,7 +12,9 @@ export default class PerfStatReporter extends EventEmitter {
|
|
|
10
12
|
private _screenShareStats;
|
|
11
13
|
private _signaling;
|
|
12
14
|
private readonly _directTopology;
|
|
13
|
-
|
|
15
|
+
private readonly _debug;
|
|
16
|
+
private readonly _statAggregator;
|
|
17
|
+
constructor(transport: ServerTransport | DirectTransport, signaling: BaseSignaling, statAggregator?: StatAggregator | null, directTopology?: boolean, debug?: DebugLogger);
|
|
14
18
|
destroy(): void;
|
|
15
19
|
static getEstimatedPerformanceIndex(): number;
|
|
16
20
|
private _handleStats;
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import type { AnimojiReceiver, AnimojiSender } from '@vkontakte/calls-vmoji';
|
|
2
2
|
import BaseSignaling from '../../abstract/BaseSignaling';
|
|
3
|
+
import { type DebugLogger } from '../../static/Debug';
|
|
3
4
|
import { ParticipantId } from '../../types/Participant';
|
|
4
5
|
import ServerSettings from '../../types/ServerSettings';
|
|
6
|
+
import StatsLogger from '../StatsLogger';
|
|
5
7
|
import { MediaSource } from '../MediaSource';
|
|
8
|
+
import { CodecStatsAggregator } from '../stat/CodecStatsAggregator';
|
|
9
|
+
import { StatAggregator } from '../stat/StatAggregator';
|
|
6
10
|
import BaseTransport from './BaseTransport';
|
|
7
11
|
export default class ServerTransport extends BaseTransport {
|
|
8
12
|
private _producerNotification;
|
|
@@ -39,7 +43,11 @@ export default class ServerTransport extends BaseTransport {
|
|
|
39
43
|
private _producerSessionId;
|
|
40
44
|
private _newAudioShareTrack;
|
|
41
45
|
private _simulcastInfo;
|
|
42
|
-
|
|
46
|
+
private readonly _debug;
|
|
47
|
+
private readonly _logger;
|
|
48
|
+
private readonly _statAggregator;
|
|
49
|
+
private readonly _codecStatsAggregator;
|
|
50
|
+
constructor(signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null);
|
|
43
51
|
updateStatisticsInterval(): void;
|
|
44
52
|
open(observer?: boolean): void;
|
|
45
53
|
close(error?: Error): void;
|
|
@@ -88,7 +96,7 @@ export default class ServerTransport extends BaseTransport {
|
|
|
88
96
|
private _onAsrTranscription;
|
|
89
97
|
private _onProducerUpdated;
|
|
90
98
|
private _onAddTrack;
|
|
91
|
-
|
|
99
|
+
private _onSignalingStateChange;
|
|
92
100
|
private _onConnectionStateChange;
|
|
93
101
|
private _onReplacedTrack;
|
|
94
102
|
private _onSourcesChanged;
|
|
@@ -1,9 +1,15 @@
|
|
|
1
1
|
import type { AnimojiSvgData, RGBTuple } from '@vkontakte/calls-vmoji';
|
|
2
2
|
import BaseSignaling from '../../abstract/BaseSignaling';
|
|
3
|
+
import TransportState from '../../enums/TransportState';
|
|
4
|
+
import TransportTopology from '../../enums/TransportTopology';
|
|
5
|
+
import { type DebugLogger } from '../../static/Debug';
|
|
3
6
|
import { ParticipantId } from '../../types/Participant';
|
|
4
7
|
import ServerSettings from '../../types/ServerSettings';
|
|
5
8
|
import EventEmitter from '../EventEmitter';
|
|
9
|
+
import StatsLogger from '../StatsLogger';
|
|
6
10
|
import { MediaSource } from '../MediaSource';
|
|
11
|
+
import { CodecStatsAggregator } from '../stat/CodecStatsAggregator';
|
|
12
|
+
import { StatAggregator } from '../stat/StatAggregator';
|
|
7
13
|
export declare const enum TransportEvent {
|
|
8
14
|
REMOTE_TRACK_ADDED = "REMOTE_TRACK_ADDED",
|
|
9
15
|
REMOTE_TRACK_REMOVED = "REMOTE_TRACK_REMOVED",
|
|
@@ -23,19 +29,6 @@ export declare const enum TransportEvent {
|
|
|
23
29
|
ANIMOJI_ERROR = "ANIMOJI_ERROR",
|
|
24
30
|
SCREEN_SHARING_STAT = "SCREEN_SHARING_STAT"
|
|
25
31
|
}
|
|
26
|
-
export declare const enum TransportState {
|
|
27
|
-
IDLE = "IDLE",
|
|
28
|
-
OPENED = "OPENED",
|
|
29
|
-
CONNECTING = "CONNECTING",
|
|
30
|
-
RECONNECTING = "RECONNECTING",
|
|
31
|
-
CONNECTED = "CONNECTED",
|
|
32
|
-
CLOSED = "CLOSED",
|
|
33
|
-
FAILED = "FAILED"
|
|
34
|
-
}
|
|
35
|
-
export declare const enum TransportTopology {
|
|
36
|
-
DIRECT = "DIRECT",
|
|
37
|
-
SERVER = "SERVER"
|
|
38
|
-
}
|
|
39
32
|
export declare class Transport extends EventEmitter {
|
|
40
33
|
private readonly _signaling;
|
|
41
34
|
private readonly _mediaSource;
|
|
@@ -51,7 +44,12 @@ export declare class Transport extends EventEmitter {
|
|
|
51
44
|
private _localState;
|
|
52
45
|
private _animojiReceiver;
|
|
53
46
|
private _animojiSender;
|
|
54
|
-
|
|
47
|
+
private readonly _debug;
|
|
48
|
+
private readonly _logger;
|
|
49
|
+
private readonly _statAggregator;
|
|
50
|
+
private readonly _codecStatsAggregator;
|
|
51
|
+
private _vadController;
|
|
52
|
+
constructor(topology: TransportTopology, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null);
|
|
55
53
|
updateSettings(settings: ServerSettings): void;
|
|
56
54
|
updateStatisticsInterval(): void;
|
|
57
55
|
allocate(participantId: ParticipantId, isMaster?: boolean): void;
|
|
@@ -92,6 +90,8 @@ export declare class Transport extends EventEmitter {
|
|
|
92
90
|
private _onAnimojiStream;
|
|
93
91
|
/** Обработчик, досылающий MediaSourceEvent.SOURCE_CHANGED событие до аллокации транспортов */
|
|
94
92
|
private _onAnimojiStatus;
|
|
93
|
+
private _createVad;
|
|
94
|
+
private _updateVadTrack;
|
|
95
95
|
private _createAnimojiTransport;
|
|
96
96
|
private _removeAnimojiTransport;
|
|
97
97
|
getStreamWaitingTimeMs(streamId: string, targetRtpTimestamp: number): number;
|
package/default/Api.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import BaseApi, { ClientEvent, ClientStats
|
|
1
|
+
import BaseApi, { ClientEvent, ClientStats } from '../abstract/BaseApi';
|
|
2
2
|
import CallType from '../enums/CallType';
|
|
3
3
|
import HangupType from '../enums/HangupType';
|
|
4
4
|
import ConversationParams from '../types/ConversationParams';
|
|
@@ -8,14 +8,11 @@ import { CompositeUserId, OkUserId, ParticipantId } from '../types/Participant';
|
|
|
8
8
|
export default class Api extends BaseApi {
|
|
9
9
|
private _userId;
|
|
10
10
|
private _uuid;
|
|
11
|
-
private
|
|
12
|
-
private _decorativeIdToInitialId;
|
|
13
|
-
private _initialIdToDecorativeId;
|
|
11
|
+
private _idCache;
|
|
14
12
|
private _callUnsafe;
|
|
15
13
|
protected _call(method: string, data?: any, noSession?: boolean): Promise<any>;
|
|
16
14
|
userId(participantId: ParticipantId): Promise<ExternalParticipantId>;
|
|
17
15
|
authorize(): Promise<void>;
|
|
18
|
-
log(items: LogItem[]): void;
|
|
19
16
|
logClientStats(items: ClientStats[]): void;
|
|
20
17
|
logClientEvents(items: ClientEvent[]): void;
|
|
21
18
|
uploadDebugLogs(conversationId: string, startTime: number, endTime: number, log: string): Promise<void>;
|
|
@@ -26,7 +23,7 @@ export default class Api extends BaseApi {
|
|
|
26
23
|
audioOnly?: boolean;
|
|
27
24
|
waitForAdmin?: boolean;
|
|
28
25
|
closedConversation?: boolean;
|
|
29
|
-
},
|
|
26
|
+
}, externalIds?: ExternalId[]): Promise<ConversationResponse>;
|
|
30
27
|
startConversation(conversationId: string, ids?: OkUserId[], type?: CallType, isVideo?: boolean, payload?: string, joiningAllowed?: boolean, requireAuthToJoin?: boolean, { onlyAdminCanShareMovie, waitForAdmin }?: {
|
|
31
28
|
onlyAdminCanShareMovie?: boolean;
|
|
32
29
|
waitForAdmin?: boolean;
|
|
@@ -43,19 +40,13 @@ export default class Api extends BaseApi {
|
|
|
43
40
|
}>;
|
|
44
41
|
getAnonymTokenByLink(joinLink: string, username?: string): Promise<string>;
|
|
45
42
|
joinConversationByLink(joinLink: string, isVideo?: boolean, observedIds?: ExternalUserId[], payload?: string): Promise<ConversationResponse>;
|
|
46
|
-
/**
|
|
47
|
-
* NB: Не сохраняет порядок возвращаемых ID
|
|
48
|
-
* Этот метод принимает именно ExternalId, т.к. для OkUserId не принципиально наличие deviceIdx
|
|
49
|
-
* @hidden
|
|
50
|
-
*/
|
|
51
|
-
getOkIdsByExternalIds(externalIds: ExternalId[]): Promise<OkUserId[]>;
|
|
52
|
-
getParticipantIdsByExternalIds(externalIds: ExternalId[]): Promise<Map<ExternalId, ParticipantId>>;
|
|
53
43
|
/**
|
|
54
44
|
* NB: Не сохраняет порядок возвращаемых ID
|
|
55
45
|
* @hidden
|
|
56
46
|
*/
|
|
57
47
|
getExternalIdsByOkIds(uids: OkUserId[]): Promise<ExternalParticipantId[]>;
|
|
58
48
|
getCachedOkIdByExternalId(externalId: ExternalId): ParticipantId | null;
|
|
49
|
+
getCachedRawOkIdByExternalId(externalId: ExternalId): OkUserId | null;
|
|
59
50
|
cacheExternalId(participantId: OkUserId | CompositeUserId | ParticipantId, externalId: ExternalParticipantId): void;
|
|
60
51
|
mapDecorativeId(decorativeId: OkUserId | CompositeUserId | ParticipantId, initialId: OkUserId | CompositeUserId | ParticipantId): void;
|
|
61
52
|
unmapDecorativeId(initialId: OkUserId | CompositeUserId | ParticipantId): void;
|
|
@@ -65,7 +56,6 @@ export default class Api extends BaseApi {
|
|
|
65
56
|
getUserId(): OkUserId | null;
|
|
66
57
|
setUserId(userId: OkUserId): void;
|
|
67
58
|
hangupConversation(conversationId: string, reason?: HangupType): void;
|
|
68
|
-
sendUserFeedbackStats(conversationId: string, userResponse: number, reason?: string, groupCallUsersCount?: number): void;
|
|
69
59
|
removeHistoryRecords(recordIds: number[]): Promise<void>;
|
|
70
60
|
cleanup(): void;
|
|
71
61
|
private _getExternalIdsByOkIds;
|
package/default/Signaling.d.ts
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
1
|
import BaseSignaling, { AddParticipantParams } from '../abstract/BaseSignaling';
|
|
2
|
+
import StatsLogger from '../classes/StatsLogger';
|
|
2
3
|
import { ParticipantIdRegistry } from '../classes/ParticipantIdRegistry';
|
|
3
4
|
import { SharingStatReport } from '../classes/screenshare/SharingStatReport';
|
|
4
|
-
import {
|
|
5
|
+
import { StatAggregator } from '../classes/stat/StatAggregator';
|
|
6
|
+
import { StatPings } from '../classes/stat/StatPings';
|
|
7
|
+
import { StatSignalingCommands } from '../classes/stat/StatSignalingCommands';
|
|
8
|
+
import TransportTopology from '../enums/TransportTopology';
|
|
5
9
|
import ConversationFeature from '../enums/ConversationFeature';
|
|
6
10
|
import ConversationOption from '../enums/ConversationOption';
|
|
7
11
|
import MediaOption from '../enums/MediaOption';
|
|
8
12
|
import SignalingCommandType from '../enums/SignalingCommandType';
|
|
9
13
|
import SignalingConnectionType from '../enums/SignalingConnectionType';
|
|
10
14
|
import UserRole from '../enums/UserRole';
|
|
15
|
+
import { type DebugLogger } from '../static/Debug';
|
|
11
16
|
import { JSONObject } from '../static/Json';
|
|
12
17
|
import { IAsrStartParams, IAsrStopParams } from '../types/Asr';
|
|
13
18
|
import { ChangeSimulcast } from '../types/ChangeSimulcast';
|
|
@@ -22,7 +27,7 @@ import { ParticipantListChunkParameters } from '../types/ParticipantListChunk';
|
|
|
22
27
|
import { StreamDescriptionString } from '../types/ParticipantStreamDescription';
|
|
23
28
|
import { PerfStatReport } from '../types/PerfStatReporter';
|
|
24
29
|
import SignalingMessage, { GetParticipantsSignalingResponse, GetRoomsSignalingResponse, SignalingSuccessResponse } from '../types/SignalingMessage';
|
|
25
|
-
import { IPublishStreamData,
|
|
30
|
+
import { IPublishStreamData, IStartStreamData, IStopStreamData } from '../types/Streams';
|
|
26
31
|
export default class Signaling extends BaseSignaling {
|
|
27
32
|
private socket;
|
|
28
33
|
protected sequence: number;
|
|
@@ -39,7 +44,6 @@ export default class Signaling extends BaseSignaling {
|
|
|
39
44
|
protected conversationReject: Function | null;
|
|
40
45
|
private connected;
|
|
41
46
|
private listenersReady;
|
|
42
|
-
private postfix;
|
|
43
47
|
protected peerId: number | null;
|
|
44
48
|
protected conversationId: string | null;
|
|
45
49
|
private reconnectTimer;
|
|
@@ -50,12 +54,18 @@ export default class Signaling extends BaseSignaling {
|
|
|
50
54
|
private producerCommandDataChannel;
|
|
51
55
|
private producerCommandDataChannelEnabled;
|
|
52
56
|
private producerCommandSerializationService;
|
|
57
|
+
private readonly _debug;
|
|
58
|
+
private readonly _logger;
|
|
59
|
+
private readonly _statAggregator;
|
|
60
|
+
private readonly _pings;
|
|
61
|
+
private readonly _signalingCommands;
|
|
53
62
|
private static get RECONNECT_DELAY();
|
|
54
63
|
private static get RECONNECT_MAX_DELAY();
|
|
55
64
|
private static get RECONNECT_MAX_COUNT();
|
|
56
65
|
private static get WAIT_CONNECTION_DELAY();
|
|
57
66
|
private static get WAIT_RESPONSE_DELAY();
|
|
58
67
|
private static get WAIT_MESSAGE_DELAY();
|
|
68
|
+
constructor(debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, pings?: StatPings | null, signalingCommands?: StatSignalingCommands | null);
|
|
59
69
|
get ready(): boolean;
|
|
60
70
|
setEndpoint(endpoint: string): void;
|
|
61
71
|
setWebTransportEndpoint(endpoint: string | null): void;
|
|
@@ -120,7 +130,6 @@ export default class Signaling extends BaseSignaling {
|
|
|
120
130
|
startStream(data: IStartStreamData): Promise<SignalingMessage>;
|
|
121
131
|
stopStream(data?: IStopStreamData): Promise<SignalingMessage>;
|
|
122
132
|
publishStream(data?: IPublishStreamData): Promise<SignalingMessage>;
|
|
123
|
-
recordSetConf(conf?: IRecordConfData): Promise<SignalingMessage>;
|
|
124
133
|
getRecordStatus(): Promise<SignalingMessage>;
|
|
125
134
|
switchTopology(topology: TransportTopology, force?: boolean): Promise<SignalingMessage>;
|
|
126
135
|
requestRealloc(): Promise<SignalingMessage>;
|
|
@@ -164,6 +173,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
164
173
|
startAsr(params: IAsrStartParams): Promise<SignalingMessage>;
|
|
165
174
|
stopAsr(params?: IAsrStopParams): Promise<SignalingMessage>;
|
|
166
175
|
requestAsr(request: boolean): Promise<SignalingMessage>;
|
|
176
|
+
private _buildUrl;
|
|
167
177
|
protected _connect(connectionType: SignalingConnectionType, useWebTransport: boolean): void;
|
|
168
178
|
protected _disconnect(code?: number): void;
|
|
169
179
|
private _onOpen;
|
|
@@ -173,6 +183,7 @@ export default class Signaling extends BaseSignaling {
|
|
|
173
183
|
protected _handleCachedMessages(): void;
|
|
174
184
|
private _throwError;
|
|
175
185
|
private _onError;
|
|
186
|
+
private _serializeErrorEvent;
|
|
176
187
|
protected _onClose(event: CloseEvent): void;
|
|
177
188
|
protected _closeSocket(error?: Error | null): void;
|
|
178
189
|
protected _reconnect(): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vkontakte/calls-sdk",
|
|
3
|
-
"version": "2.8.11-dev.
|
|
3
|
+
"version": "2.8.11-dev.d88537e0.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.2.
|
|
17
|
+
"@vkontakte/calls-audio-effects": "1.2.10-dev.12fb226c.0",
|
|
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",
|
package/static/Debug.d.ts
CHANGED
|
@@ -7,14 +7,33 @@ export declare enum DebugMessageType {
|
|
|
7
7
|
WARN = "WARN",
|
|
8
8
|
ERROR = "ERROR"
|
|
9
9
|
}
|
|
10
|
+
export type DebugMessageContext = {
|
|
11
|
+
readonly sessionId: string | null;
|
|
12
|
+
readonly conversationId: string | null;
|
|
13
|
+
};
|
|
14
|
+
export type DebugLogger = {
|
|
15
|
+
debug(...args: any[]): void;
|
|
16
|
+
log(...args: any[]): void;
|
|
17
|
+
warn(...args: any[]): void;
|
|
18
|
+
error(...args: any[]): void;
|
|
19
|
+
};
|
|
20
|
+
export type DebugSessionLogger = DebugLogger & {
|
|
21
|
+
readonly sessionId: string | null;
|
|
22
|
+
readonly conversationId: string | null;
|
|
23
|
+
setConversationId(conversationId: string | null): void;
|
|
24
|
+
};
|
|
10
25
|
declare namespace Debug {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
function
|
|
16
|
-
function
|
|
17
|
-
function
|
|
18
|
-
function
|
|
26
|
+
type ContextProvider = () => DebugMessageContext;
|
|
27
|
+
export function debug(...args: any[]): void;
|
|
28
|
+
export function log(...args: any[]): void;
|
|
29
|
+
export function warn(...args: any[]): void;
|
|
30
|
+
export function error(...args: any[]): void;
|
|
31
|
+
export function enabled(): boolean;
|
|
32
|
+
export function toggle(enable: boolean): void;
|
|
33
|
+
export function send(type: DebugMessageType, ...args: any[]): void;
|
|
34
|
+
export function createLogger(getContext: ContextProvider): DebugLogger;
|
|
35
|
+
export function createSessionLogger(initialConversationId?: string | null): DebugSessionLogger;
|
|
36
|
+
export function test(tag: string, ...args: any[]): void;
|
|
37
|
+
export {};
|
|
19
38
|
}
|
|
20
39
|
export default Debug;
|
package/static/External.d.ts
CHANGED
|
@@ -446,6 +446,9 @@ declare namespace External {
|
|
|
446
446
|
* @param args
|
|
447
447
|
*/
|
|
448
448
|
function onDebugMessage(type: DebugMessageType, ...args: any[]): void;
|
|
449
|
+
function onDebugMessageWithContext(type: DebugMessageType, context: {
|
|
450
|
+
conversationId: string | null;
|
|
451
|
+
}, ...args: any[]): void;
|
|
449
452
|
/**
|
|
450
453
|
* Статистика звонка
|
|
451
454
|
*
|
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';
|
|
@@ -188,6 +188,14 @@ export type ParamsObject = {
|
|
|
188
188
|
* Можно установить позднее методом `setAudioEffects`
|
|
189
189
|
*/
|
|
190
190
|
audioEffects: EffectVoiceChange | null;
|
|
191
|
+
/**
|
|
192
|
+
* Namespace библиотеки VAD из `@vkontakte/calls-audio-effects`.
|
|
193
|
+
*
|
|
194
|
+
* Можно установить методом `setVad`
|
|
195
|
+
*/
|
|
196
|
+
vad: VadLib | null;
|
|
197
|
+
/** Настройки VAD (threshold, hangoverMs, enabled) */
|
|
198
|
+
vadOptions: VadControllerOptions;
|
|
191
199
|
/**
|
|
192
200
|
* Максимальная ширина видео в пикселях для видео эффекта
|
|
193
201
|
*
|
|
@@ -306,6 +314,12 @@ export type ParamsObject = {
|
|
|
306
314
|
* _По умолчанию: `30`_
|
|
307
315
|
*/
|
|
308
316
|
videoTracksCount: number;
|
|
317
|
+
/**
|
|
318
|
+
* Минимальный интервал отправки diff для requestDisplayLayout в миллисекундах.
|
|
319
|
+
*
|
|
320
|
+
* _По умолчанию: `250`_
|
|
321
|
+
*/
|
|
322
|
+
requestDisplayLayoutThrottleMs: number;
|
|
309
323
|
/** @hidden */
|
|
310
324
|
movieShare: boolean;
|
|
311
325
|
/** @hidden */
|
|
@@ -730,6 +744,12 @@ export type ParamsObject = {
|
|
|
730
744
|
* Получено отладочное сообщение. Работает только при выключенном режиме отладки
|
|
731
745
|
*/
|
|
732
746
|
onDebugMessage?: (type: DebugMessageType, ...args: any[]) => void;
|
|
747
|
+
/**
|
|
748
|
+
* Получено отладочное сообщение с контекстом звонка. Работает только при выключенном режиме отладки
|
|
749
|
+
*/
|
|
750
|
+
onDebugMessageWithContext?: (type: DebugMessageType, context: {
|
|
751
|
+
conversationId: string | null;
|
|
752
|
+
}, ...args: any[]) => void;
|
|
733
753
|
/**
|
|
734
754
|
* Статистика звонка
|
|
735
755
|
*/
|
|
@@ -929,6 +949,10 @@ export default abstract class Params {
|
|
|
929
949
|
static get displaySurface(): DisplayCaptureSurfaceType;
|
|
930
950
|
static get audioEffects(): EffectVoiceChange | null;
|
|
931
951
|
static set audioEffects(value: EffectVoiceChange | null);
|
|
952
|
+
static get vad(): VadLib | null;
|
|
953
|
+
static set vad(value: VadLib | null);
|
|
954
|
+
static get vadOptions(): VadControllerOptions;
|
|
955
|
+
static set vadOptions(value: VadControllerOptions);
|
|
932
956
|
static get videoEffects(): VideoEffects | null;
|
|
933
957
|
static set videoEffects(value: VideoEffects | null);
|
|
934
958
|
static get videoEffectMaxWidth(): number;
|
|
@@ -963,6 +987,7 @@ export default abstract class Params {
|
|
|
963
987
|
static get audioNack(): boolean;
|
|
964
988
|
static get movieShare(): boolean;
|
|
965
989
|
static get videoTracksCount(): number;
|
|
990
|
+
static get requestDisplayLayoutThrottleMs(): number;
|
|
966
991
|
static get breakVideoPayloadTypes(): boolean;
|
|
967
992
|
static get useCallsToContacts(): boolean;
|
|
968
993
|
static get useParticipantListChunk(): boolean;
|
|
@@ -1010,6 +1035,7 @@ export default abstract class Params {
|
|
|
1010
1035
|
screenShareCongestionControl: boolean;
|
|
1011
1036
|
screenShareCongestionControlThreshold: number;
|
|
1012
1037
|
videoTracksCount: number;
|
|
1038
|
+
requestDisplayLayoutThrottleMs: number;
|
|
1013
1039
|
asrDataChannel: boolean;
|
|
1014
1040
|
videoMaxHeight: number;
|
|
1015
1041
|
videoMaxWidth: number;
|
package/static/Utils.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { ExternalParticipant, ExternalParticipantListMarker } from '../types/Ext
|
|
|
3
3
|
import { CompositeUserId, OkUserId, Participant, ParticipantId, ParticipantStateMapped } from '../types/Participant';
|
|
4
4
|
import SignalingMessage from '../types/SignalingMessage';
|
|
5
5
|
import VideoSettings from '../types/VideoSettings';
|
|
6
|
+
import { type DebugLogger } from './Debug';
|
|
6
7
|
export declare const PARAMETERS_SEPARATOR = ":";
|
|
7
8
|
export declare const DEVICE_IDX_PARAMETER = "d";
|
|
8
9
|
/** @hidden */
|
|
@@ -36,8 +37,8 @@ declare namespace Utils {
|
|
|
36
37
|
function delay(time: number, { signal }?: {
|
|
37
38
|
signal?: AbortSignal;
|
|
38
39
|
}): Promise<void>;
|
|
39
|
-
function applySettings(pc: RTCPeerConnection, videoSettings: VideoSettings, prevSettings: any): any;
|
|
40
|
-
function applyVideoTrackSettings(videoSettings: VideoSettings, s: RTCRtpSender, track: MediaStreamTrack | null, prevSettings: any, retSettings: any): void;
|
|
40
|
+
function applySettings(pc: RTCPeerConnection, videoSettings: VideoSettings, prevSettings: any, debug?: DebugLogger): any;
|
|
41
|
+
function applyVideoTrackSettings(videoSettings: VideoSettings, s: RTCRtpSender, track: MediaStreamTrack | null, prevSettings: any, retSettings: any, debug?: DebugLogger): void;
|
|
41
42
|
/**
|
|
42
43
|
* Проверяет, есть ли в первом массиве хотя бы один элемент из второго массива
|
|
43
44
|
* @param arr Где ищем
|
package/static/WebRTCUtils.d.ts
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* Вспомогательный плагин для работы с WebRTC
|
|
3
3
|
*/
|
|
4
4
|
import { IVideoDimentions } from '../types/MediaSettings';
|
|
5
|
+
import type StatsLogger from '../classes/StatsLogger';
|
|
6
|
+
import { type DebugLogger } from './Debug';
|
|
5
7
|
/**
|
|
6
8
|
* Тип камеры мобильного устройства
|
|
7
9
|
*/
|
|
@@ -75,6 +77,7 @@ declare namespace WebRTCUtils {
|
|
|
75
77
|
* Проверяет получены ли разрешения, необходимые для текущего звонка
|
|
76
78
|
*/
|
|
77
79
|
function hasPermissions(needVideo?: boolean): boolean;
|
|
80
|
+
function releaseFirefoxMicrophonePermissionWarmup(): void;
|
|
78
81
|
/**
|
|
79
82
|
* Запрашивает камеру и микрофон пользователя
|
|
80
83
|
*
|
|
@@ -82,24 +85,24 @@ declare namespace WebRTCUtils {
|
|
|
82
85
|
* @param needAudio Нужно ли аудио
|
|
83
86
|
* @param needEmptyTracks Добавлять ли в стрим пустые треки для отключенного видео/аудио
|
|
84
87
|
*/
|
|
85
|
-
function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean): Promise<MediaStream>;
|
|
88
|
+
function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
|
|
86
89
|
/**
|
|
87
90
|
* Запрашивает трансляцию экрана пользователя с опциональным захватом звука
|
|
88
91
|
*/
|
|
89
|
-
function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean): Promise<MediaStream>;
|
|
92
|
+
function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
|
|
90
93
|
/**
|
|
91
94
|
* Запрашивает камеру пользователя
|
|
92
95
|
*
|
|
93
96
|
* @param deviceId ID устройства
|
|
94
97
|
* @param resolution Размеры видео
|
|
95
98
|
*/
|
|
96
|
-
function getUserVideo(deviceId?: string, resolution?: IVideoDimentions): Promise<MediaStream>;
|
|
99
|
+
function getUserVideo(deviceId?: string, resolution?: IVideoDimentions, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
|
|
97
100
|
/**
|
|
98
101
|
* Запрашивает микрофон пользователя
|
|
99
102
|
*
|
|
100
103
|
* @param deviceId ID устройства
|
|
101
104
|
*/
|
|
102
|
-
function getUserAudio(deviceId?: string): Promise<MediaStream>;
|
|
105
|
+
function getUserAudio(deviceId?: string, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
|
|
103
106
|
/**
|
|
104
107
|
* Устанавливает размер видео в стриме
|
|
105
108
|
*
|
package/types/Conversation.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import TransportTopology from '../enums/TransportTopology';
|
|
2
2
|
import CallDirection from '../enums/CallDirection';
|
|
3
3
|
import CallType from '../enums/CallType';
|
|
4
4
|
import ConversationFeature from '../enums/ConversationFeature';
|
package/types/FastStart.d.ts
CHANGED
|
@@ -54,4 +54,37 @@ export type ParticipantLayout = (Layout | StopStream | RequestKeyFrame) & {
|
|
|
54
54
|
*/
|
|
55
55
|
streamName?: string;
|
|
56
56
|
};
|
|
57
|
+
/**
|
|
58
|
+
* Запрос стрима, который клиент хочет получать для отображения.
|
|
59
|
+
*/
|
|
60
|
+
export type DisplayLayoutRequest = {
|
|
61
|
+
/**
|
|
62
|
+
* Внешний ID пользователя
|
|
63
|
+
*/
|
|
64
|
+
uid: ExternalParticipantId | string;
|
|
65
|
+
/**
|
|
66
|
+
* Тип медиа (видео с камеры, картинка с экрана, лайв или мувик)
|
|
67
|
+
*/
|
|
68
|
+
mediaType: MediaType;
|
|
69
|
+
/**
|
|
70
|
+
* Ширина окошка в котором отображается видео, в пикселях
|
|
71
|
+
*/
|
|
72
|
+
width: number;
|
|
73
|
+
/**
|
|
74
|
+
* Высота окошка в котором отображается видео, в пикселях
|
|
75
|
+
*/
|
|
76
|
+
height: number;
|
|
77
|
+
/**
|
|
78
|
+
* Отображать видео как CSS object-fit: cover. По умолчанию используется contain.
|
|
79
|
+
*/
|
|
80
|
+
cover?: boolean;
|
|
81
|
+
/**
|
|
82
|
+
* Приоритет
|
|
83
|
+
*/
|
|
84
|
+
priority?: number;
|
|
85
|
+
/**
|
|
86
|
+
* ID лайва или мувика. null для камеры или скрин-шары.
|
|
87
|
+
*/
|
|
88
|
+
streamName?: string;
|
|
89
|
+
};
|
|
57
90
|
export default ParticipantLayout;
|