@vkontakte/calls-sdk 2.8.11-dev.af7eda54.0 → 2.8.11-dev.be993e85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CallsSDK.d.ts +12 -6
  2. package/abstract/BaseSignaling.d.ts +1 -1
  3. package/calls-sdk.cjs.js +9 -9
  4. package/calls-sdk.esm.js +3931 -3297
  5. package/classes/AudioFix.d.ts +5 -1
  6. package/classes/AudioOutput.d.ts +5 -1
  7. package/classes/Conversation.d.ts +15 -4
  8. package/classes/ConversationResponseValidator.d.ts +3 -0
  9. package/classes/DebugInfo.d.ts +3 -0
  10. package/classes/DisplayLayoutRequester.d.ts +39 -0
  11. package/classes/MediaSource.d.ts +5 -1
  12. package/classes/ParticipantIdRegistry.d.ts +3 -0
  13. package/classes/ProducerCommandSerializationService.d.ts +3 -0
  14. package/classes/SignalingActor.d.ts +3 -1
  15. package/classes/SpeakerDetector.d.ts +2 -1
  16. package/classes/SpecListener.d.ts +5 -1
  17. package/classes/{Logger.d.ts → StatsLogger.d.ts} +3 -10
  18. package/classes/VideoEffectsFpsLimiter.d.ts +3 -0
  19. package/classes/asr/AsrReceiver.d.ts +3 -1
  20. package/classes/codec/LibVPxDecoder.d.ts +3 -0
  21. package/classes/codec/LibVPxEncoder.d.ts +3 -1
  22. package/classes/codec/WebCodecsDecoder.d.ts +3 -0
  23. package/classes/codec/WebCodecsEncoder.d.ts +3 -1
  24. package/classes/codec/WorkerBase.d.ts +7 -0
  25. package/classes/screenshare/BaseStreamBuilder.d.ts +4 -1
  26. package/classes/screenshare/CanvasRenderer.d.ts +3 -1
  27. package/classes/screenshare/ScreenCaptureReceiver.d.ts +7 -1
  28. package/classes/screenshare/ScreenCaptureSender.d.ts +5 -1
  29. package/classes/screenshare/ScreenCongestionControl.d.ts +3 -1
  30. package/classes/screenshare/StreamBuilder.d.ts +5 -1
  31. package/classes/screenshare/TrackGeneratorRenderer.d.ts +3 -1
  32. package/classes/screenshare/WebmBuilder.d.ts +3 -1
  33. package/classes/stat/CodecStatsAggregator.d.ts +7 -7
  34. package/classes/stat/ConversationStats.d.ts +21 -0
  35. package/classes/stat/StatAggregator.d.ts +6 -6
  36. package/classes/stat/StatFirstMediaReceived.d.ts +6 -2
  37. package/classes/stat/StatPings.d.ts +9 -9
  38. package/classes/stat/StatScreenShareFirstFrame.d.ts +3 -1
  39. package/classes/stat/StatSignalingCommands.d.ts +8 -8
  40. package/classes/transport/BaseTransport.d.ts +1 -1
  41. package/classes/transport/DirectStatReporter.d.ts +3 -1
  42. package/classes/transport/DirectTransport.d.ts +9 -1
  43. package/classes/transport/PerfStatReporter.d.ts +5 -1
  44. package/classes/transport/ServerTransport.d.ts +10 -2
  45. package/classes/transport/Transport.d.ts +11 -14
  46. package/default/Api.d.ts +5 -0
  47. package/default/Signaling.d.ts +38 -43
  48. package/default/SignalingTransport.d.ts +68 -0
  49. package/enums/HangupType.d.ts +2 -1
  50. package/enums/SignalingNotification.d.ts +1 -0
  51. package/enums/TransportState.d.ts +10 -0
  52. package/enums/TransportTopology.d.ts +5 -0
  53. package/package.json +1 -1
  54. package/static/Capabilities.d.ts +5 -0
  55. package/static/Debug.d.ts +27 -8
  56. package/static/External.d.ts +3 -0
  57. package/static/Params.d.ts +22 -0
  58. package/static/ParticipantConnectionStatusUtils.d.ts +15 -0
  59. package/static/Utils.d.ts +3 -2
  60. package/static/WebRTCUtils.d.ts +6 -4
  61. package/types/Capabilities.d.ts +24 -0
  62. package/types/Conversation.d.ts +1 -1
  63. package/types/FastStart.d.ts +1 -0
  64. package/types/Participant.d.ts +10 -1
  65. package/types/ParticipantLayout.d.ts +33 -0
  66. package/types/SignalingMessage.d.ts +11 -2
  67. package/types/Statistics.d.ts +1 -1
  68. package/types/WebTransport.d.ts +4 -0
  69. package/utils/DebugStorage.d.ts +1 -2
  70. package/classes/stat/EventMetricsService.d.ts +0 -9
@@ -0,0 +1,15 @@
1
+ import { ParticipantConnectionStatus, ParticipantSessionState } from '../types/Participant';
2
+ import { ParticipantStatus } from './External';
3
+ import TransportState from '../enums/TransportState';
4
+ type StatusTransition = {
5
+ status: ParticipantStatus;
6
+ shouldNotify: boolean;
7
+ };
8
+ declare namespace ParticipantConnectionStatusUtils {
9
+ function create(status?: Partial<ParticipantConnectionStatus> | null): ParticipantConnectionStatus;
10
+ function fromTransportState(state?: TransportState): ParticipantStatus | null;
11
+ function computeEffective(status: ParticipantConnectionStatus): ParticipantStatus;
12
+ function setSessionState(status: ParticipantConnectionStatus, sessionState?: ParticipantSessionState): StatusTransition;
13
+ function setTransport(status: ParticipantConnectionStatus, transport: ParticipantStatus): StatusTransition;
14
+ }
15
+ export default ParticipantConnectionStatusUtils;
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 Где ищем
@@ -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
  */
@@ -83,24 +85,24 @@ declare namespace WebRTCUtils {
83
85
  * @param needAudio Нужно ли аудио
84
86
  * @param needEmptyTracks Добавлять ли в стрим пустые треки для отключенного видео/аудио
85
87
  */
86
- 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>;
87
89
  /**
88
90
  * Запрашивает трансляцию экрана пользователя с опциональным захватом звука
89
91
  */
90
- function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean): Promise<MediaStream>;
92
+ function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
91
93
  /**
92
94
  * Запрашивает камеру пользователя
93
95
  *
94
96
  * @param deviceId ID устройства
95
97
  * @param resolution Размеры видео
96
98
  */
97
- function getUserVideo(deviceId?: string, resolution?: IVideoDimentions): Promise<MediaStream>;
99
+ function getUserVideo(deviceId?: string, resolution?: IVideoDimentions, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
98
100
  /**
99
101
  * Запрашивает микрофон пользователя
100
102
  *
101
103
  * @param deviceId ID устройства
102
104
  */
103
- function getUserAudio(deviceId?: string): Promise<MediaStream>;
105
+ function getUserAudio(deviceId?: string, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
104
106
  /**
105
107
  * Устанавливает размер видео в стриме
106
108
  *
@@ -0,0 +1,24 @@
1
+ export type TCapabilities = {
2
+ estimatedPerformanceIndex: number;
3
+ audioMix: boolean;
4
+ consumerUpdate: boolean;
5
+ producerNotificationDataChannelVersion: number;
6
+ producerCommandDataChannelVersion: number;
7
+ consumerScreenDataChannelVersion: number;
8
+ producerScreenDataChannelVersion: number;
9
+ asrDataChannelVersion: number;
10
+ animojiDataChannelVersion: number;
11
+ animojiBackendRender: boolean;
12
+ onDemandTracks: boolean;
13
+ unifiedPlan: boolean;
14
+ singleSession: boolean;
15
+ videoTracksCount: number;
16
+ red: boolean;
17
+ audioShare: boolean;
18
+ fastScreenShare: boolean;
19
+ videoSuspend: boolean;
20
+ simulcast: boolean;
21
+ consumerFastScreenShare: boolean;
22
+ consumerFastScreenShareQualityOnDemand: boolean;
23
+ transparentAudio: boolean;
24
+ };
@@ -1,4 +1,4 @@
1
- import { TransportTopology } from '../classes/transport/Transport';
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';
@@ -31,6 +31,7 @@ export interface FastStartParams {
31
31
  conversationId: string;
32
32
  internalParams: string;
33
33
  externalIds?: ExternalId[];
34
+ payload: string;
34
35
  opponentType: CallType;
35
36
  mediaOptions: MediaOption[];
36
37
  joiningAllowed?: boolean;
@@ -44,6 +44,15 @@ export interface ParticipantStateMapped {
44
44
  ts: number;
45
45
  };
46
46
  }
47
+ export interface ParticipantSessionState {
48
+ connected: boolean;
49
+ }
50
+ export interface ParticipantConnectionStatus {
51
+ transport: ParticipantStatus;
52
+ sessionState?: ParticipantSessionState;
53
+ sessionStateConnectedBySpeaker: boolean;
54
+ lastEffective: ParticipantStatus;
55
+ }
47
56
  /**
48
57
  * Состояния участников звонка
49
58
  */
@@ -63,7 +72,6 @@ export interface Participant {
63
72
  externalId: ExternalParticipantId;
64
73
  mediaSettings: MediaSettings;
65
74
  state: ParticipantState;
66
- status: ParticipantStatus;
67
75
  remoteStream?: MediaStream | null;
68
76
  remoteAudioTrack?: MediaStreamTrack | null;
69
77
  secondStream?: MediaStream | null;
@@ -72,6 +80,7 @@ export interface Participant {
72
80
  clientType: string;
73
81
  roles: UserRole[];
74
82
  participantState: ParticipantStateMapped;
83
+ connectionStatus: ParticipantConnectionStatus;
75
84
  networkRating: number;
76
85
  lastRequestedLayouts: {
77
86
  [key: StreamDescriptionString]: ParticipantLayout;
@@ -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;
@@ -1,5 +1,5 @@
1
1
  import { AnimojiVersion } from '@vkontakte/calls-vmoji';
2
- import { TransportTopology } from '../classes/transport/Transport';
2
+ import TransportTopology from '../enums/TransportTopology';
3
3
  import ChatRoomEventType from '../enums/ChatRoomEventType';
4
4
  import ConversationFeature from '../enums/ConversationFeature';
5
5
  import ConversationOption from '../enums/ConversationOption';
@@ -19,7 +19,7 @@ import MediaModifiers from './MediaModifiers';
19
19
  import MediaSettings from './MediaSettings';
20
20
  import { ISharedMovieInfo, ISharedMovieState, ISharedMovieStoppedInfo } from './MovieShare';
21
21
  import MuteStates from './MuteStates';
22
- import { CompositeUserId, OkUserId, ParticipantId, ParticipantListMarker as ParticipantParticipantListMarker, ParticipantListMarkers, ParticipantListType as ParticipantParticipantListType } from './Participant';
22
+ import { CompositeUserId, OkUserId, ParticipantId, ParticipantListMarker as ParticipantParticipantListMarker, ParticipantListMarkers, ParticipantListType as ParticipantParticipantListType, ParticipantSessionState } from './Participant';
23
23
  import { MediaType, ParticipantStreamDescription } from './ParticipantStreamDescription';
24
24
  import { IRoomId } from './Room';
25
25
  import VideoSettings from './VideoSettings';
@@ -89,6 +89,7 @@ declare namespace SignalingMessage {
89
89
  state: Record<string, string>;
90
90
  stateUpdateTs: Record<string, number>;
91
91
  };
92
+ sessionState?: ParticipantSessionState;
92
93
  roles?: UserRole[];
93
94
  peerId?: PeerId;
94
95
  restricted?: boolean;
@@ -190,6 +191,7 @@ declare namespace SignalingMessage {
190
191
  deviceIdx?: number;
191
192
  peerId: PeerId;
192
193
  reason: HangupType;
194
+ errorCode?: string;
193
195
  markers?: ParticipantListMarkers;
194
196
  }
195
197
  export interface ClosedConversation extends Notification {
@@ -322,6 +324,13 @@ declare namespace SignalingMessage {
322
324
  export interface SpeakerChanged extends Notification {
323
325
  speaker: ParticipantId;
324
326
  }
327
+ export interface SessionState extends Notification {
328
+ connected: boolean;
329
+ participantId: OkUserId;
330
+ participantType: UserType;
331
+ deviceIdx?: number;
332
+ markers?: ParticipantListMarkers;
333
+ }
325
334
  export interface OptionsChanged extends Notification {
326
335
  options: ConversationOption[];
327
336
  }
@@ -1,4 +1,4 @@
1
- import { TransportTopology } from '../classes/transport/Transport';
1
+ import TransportTopology from '../enums/TransportTopology';
2
2
  export type StatTransport = {
3
3
  timestamp: number;
4
4
  availableOutgoingBitrate: number;
@@ -7,6 +7,8 @@ declare class WebTransportEventual {
7
7
  private readonly url;
8
8
  private readonly options;
9
9
  private readonly compression;
10
+ private closeRequested;
11
+ private closeEventEmitted;
10
12
  private encoder;
11
13
  private decoder;
12
14
  onopen: ((this: WebTransportEventual, ev: Event) => any) | null;
@@ -22,6 +24,8 @@ declare class WebTransportEventual {
22
24
  send(data: string): Promise<void>;
23
25
  private createErrorEvent;
24
26
  close(code?: number, reason?: string): void;
27
+ private closeConnectedTransport;
28
+ private emitClose;
25
29
  static isBrowserSupported(): boolean;
26
30
  }
27
31
  export { WebTransportEventual as WebTransport };
@@ -95,10 +95,9 @@ export type DebugLogGetParams = {
95
95
  };
96
96
  export declare function add(level: string, args: any[], sessionId?: string): CurrentLogItem;
97
97
  export declare function init(): void;
98
- export declare function startSession(forceNew?: boolean): string;
98
+ export declare function startConversationSession(): string;
99
99
  export declare function setConversationId(conversationId: string | null, sessionId?: string): void;
100
100
  export declare function list(): Promise<DebugLogSessionInfo[]>;
101
- export declare function getCurrentSession(): Promise<DebugLogSessionInfo | null>;
102
101
  export declare function get(params: DebugLogGetParams): Promise<CurrentLogItem[]>;
103
102
  export declare function getJson(params: DebugLogGetParams): Promise<string>;
104
103
  export declare function download(params: DebugLogGetParams): Promise<string>;
@@ -1,9 +0,0 @@
1
- import HangupReason from '../HangupReason';
2
- import { TransportTopology } from '../transport/Transport';
3
- /**
4
- * Класс для работы с событийными метриками, обертка для правильной отправки событий
5
- */
6
- export declare class EventMetricsService {
7
- private static correctHangupReason;
8
- static sendHangupEvent(reason: HangupReason, topology?: TransportTopology): void;
9
- }