@vkontakte/calls-sdk 2.8.8-dev.cf529496.0 → 2.8.8-dev.d457738f.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.
@@ -81,6 +81,7 @@ export default class Conversation extends EventEmitter {
81
81
  private _extractExternalRoomsData;
82
82
  onPush(conversationId: string, type?: UserType, peerId?: number, conversationParams?: string, wsEndpoint?: string): Promise<void>;
83
83
  private _isInWaitingHall;
84
+ private _isWaitForAdmin;
84
85
  private _isRestricted;
85
86
  private _isAudienceMode;
86
87
  private _isAudienceModeListener;
@@ -204,6 +205,10 @@ export default class Conversation extends EventEmitter {
204
205
  sendClientEvent(eventType: string, eventData?: Record<string, string | number | boolean>, immediately?: boolean): void;
205
206
  private _changeMediaSettings;
206
207
  private _stopStreaming;
208
+ /**
209
+ * @param layoutByStreamDescription
210
+ * @param throwErrorOutside false используется при внутреннем обращении, когда обработка ошибки не нужна
211
+ */
207
212
  private _sendUpdateDisplayLayout;
208
213
  private _cleanupCooldownQueue;
209
214
  private _onParticipantSourcesUpdate;
@@ -288,6 +293,7 @@ export default class Conversation extends EventEmitter {
288
293
  private _onLocalMediaStreamChanged;
289
294
  private _onScreenSharingStatus;
290
295
  private _changeRemoteMediaSettings;
296
+ private _extractLocalParticipantFromConnection;
291
297
  private _changeLocalParticipantState;
292
298
  private _changeRemoteParticipantState;
293
299
  private _changeMultipleParticipantState;
@@ -0,0 +1 @@
1
+ export {};
@@ -7,6 +7,7 @@ export declare class VolumesDetector extends EventEmitter {
7
7
  private _detector;
8
8
  private _interval;
9
9
  private _activeParticipants;
10
+ private _removedParticipants;
10
11
  constructor(transport: Transport);
11
12
  destroy(): void;
12
13
  private _onRemoteTrackAdded;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/default/Api.d.ts CHANGED
@@ -20,13 +20,15 @@ export default class Api extends BaseApi {
20
20
  logClientEvents(items: ClientEvent[]): void;
21
21
  uploadDebugLogs(conversationId: string, startTime: number, endTime: number, log: string): Promise<void>;
22
22
  joinConversation(conversationId: string, isVideo?: boolean, chatId?: string): Promise<ConversationResponse>;
23
- createConversation(conversationId: string, payload?: string, requireAuthToJoin?: boolean, { onlyAdminCanShareMovie, audienceMode, audioOnly, }?: {
23
+ createConversation(conversationId: string, payload?: string, requireAuthToJoin?: boolean, { onlyAdminCanShareMovie, audienceMode, audioOnly, waitForAdmin, }?: {
24
24
  onlyAdminCanShareMovie?: boolean;
25
25
  audienceMode?: boolean;
26
26
  audioOnly?: boolean;
27
+ waitForAdmin?: boolean;
27
28
  }, speakerIds?: OkUserId[]): Promise<ConversationResponse>;
28
- startConversation(conversationId: string, ids?: OkUserId[], type?: CallType, isVideo?: boolean, payload?: string, joiningAllowed?: boolean, requireAuthToJoin?: boolean, { onlyAdminCanShareMovie }?: {
29
+ startConversation(conversationId: string, ids?: OkUserId[], type?: CallType, isVideo?: boolean, payload?: string, joiningAllowed?: boolean, requireAuthToJoin?: boolean, { onlyAdminCanShareMovie, waitForAdmin }?: {
29
30
  onlyAdminCanShareMovie?: boolean;
31
+ waitForAdmin?: boolean;
30
32
  }, externalIds?: ExternalId[]): Promise<ConversationResponse>;
31
33
  protected _ensureUuid(): void;
32
34
  deviceId(): string;
@@ -0,0 +1 @@
1
+ export {};
@@ -56,7 +56,6 @@ export default class Signaling extends BaseSignaling {
56
56
  private static get WAIT_CONNECTION_DELAY();
57
57
  private static get WAIT_RESPONSE_DELAY();
58
58
  private static get WAIT_MESSAGE_DELAY();
59
- private static _getCapabilityFlags;
60
59
  get ready(): boolean;
61
60
  setEndpoint(endpoint: string): void;
62
61
  setWebTransportEndpoint(endpoint: string | null): void;
@@ -184,6 +183,9 @@ export default class Signaling extends BaseSignaling {
184
183
  private _convertDisplayLayout;
185
184
  protected _waitConnectionMessage(): void;
186
185
  protected _stopWaitConnectionMessage(): void;
186
+ /**
187
+ * Отвечает за timeout логику в WebSocket, если неполучаем никаких сообщений в течении WAIT_MESSAGE_DELAY, то запускаем реконнект
188
+ */
187
189
  private _startDoctor;
188
190
  private _stopDoctor;
189
191
  private isWebTransportAvailable;
@@ -0,0 +1 @@
1
+ export {};
@@ -5,6 +5,8 @@ declare enum ConversationOption {
5
5
  REQUIRE_AUTH_TO_JOIN = "REQUIRE_AUTH_TO_JOIN",
6
6
  AUDIENCE_MODE = "AUDIENCE_MODE",// Stereo chat room
7
7
  WAITING_HALL = "WAITING_HALL",// Waiting Hall is ON
8
+ WAIT_FOR_ADMIN = "WAIT_FOR_ADMIN",
9
+ ADMIN_IS_HERE = "ADMIN_IS_HERE",
8
10
  ASR = "ASR",
9
11
  FEEDBACK = "FEEDBACK",// Reactions (default = off)
10
12
  RECURRING = "RECURRING"
@@ -2,21 +2,85 @@
2
2
  * Типы ошибок
3
3
  */
4
4
  declare enum FatalError {
5
+ /**
6
+ * Ошибка комбинированных разрешений на микрофон и камеру
7
+ * Выбрасывается при отсутствии разрешений на оба устройства одновременно
8
+ */
5
9
  MIC_CAMERA_PERMISSION = "mic_camera",
10
+ /**
11
+ * Отсутствуют разрешения на доступ к камере
12
+ * Выбрасывается при отказе пользователя в доступе к камере или системном запрете
13
+ */
6
14
  CAMERA_PERMISSION = "camera",
15
+ /**
16
+ * Отсутствуют разрешения на доступ к микрофону
17
+ * Выбрасывается при отказе пользователя в доступе к микрофону или системном запрете
18
+ */
7
19
  MIC_PERMISSION = "mic",
20
+ /**
21
+ * Камера заблокирована другим приложением
22
+ * Выбрасывается когда камера уже используется другим приложением
23
+ */
8
24
  CAMERA_ACCESS = "cameralock",
25
+ /**
26
+ * Микрофон заблокирован другим приложением
27
+ * Выбрасывается когда микрофон уже используется другим приложением
28
+ */
9
29
  MIC_ACCESS = "miclock",
30
+ /**
31
+ * Микрофон не найден
32
+ * Выбрасывается когда система не может найти доступный микрофон
33
+ */
10
34
  MIC_NOT_FOUND = "nomic",
35
+ /**
36
+ * Отсутствуют разрешения на доступ к экрану
37
+ * Выбрасывается при отказе пользователя в доступе к скриншарингу
38
+ */
11
39
  SCREEN_PERMISSION = "screenpermission",
40
+ /**
41
+ * Общий сбой доступа к экрану
42
+ * Выбрасывается при общих ошибках скриншаринга, кроме отказа в разрешении
43
+ */
12
44
  SCREEN_ACCESS = "screenlock",
45
+ /**
46
+ * Ошибка соединения
47
+ * Выбрасывается при проблемах с сетевым соединением
48
+ */
13
49
  CONNECTION = "connection",
50
+ /**
51
+ * Сетевая ошибка
52
+ * Выбрасывается при сетевых проблемах во время вызова
53
+ */
14
54
  NETWORK = "network",
55
+ /**
56
+ * Неизвестная ошибка
57
+ * Выбрасывается как fallback для непредвиденных ошибок
58
+ */
15
59
  UNKNOWN = "unknown",
60
+ /**
61
+ * Браузер или окружение не поддерживаются
62
+ * Выбрасывается при запуске в неподдерживаемом браузере или окружении
63
+ */
16
64
  UNSUPPORTED = "unsupported",
65
+ /**
66
+ * Сбой сигнализации (signaling)
67
+ * Выбрасывается при ошибках соединения с сервером сигнализации
68
+ */
17
69
  SIGNALING_FAILED = "signalingfailed",
70
+ /**
71
+ * Ошибка API или отсутствует ключ API
72
+ * Выбрасывается при ошибках вызова API или отсутствии API ключа
73
+ */
18
74
  API = "api",
75
+ /**
76
+ * Ошибка аутентификации
77
+ * Выбрасывается при ошибках аутентификации API
78
+ */
19
79
  AUTH = "auth",
80
+ /**
81
+ * Медиа-ограничения слишком строгие
82
+ * Выбрасывается когда запрошенные параметры медиа не могут быть удовлетворены
83
+ */
20
84
  OVERCONSTRAINED = "overconstrained"
21
85
  }
22
86
  export default FatalError;
@@ -21,6 +21,7 @@ declare enum HangupType {
21
21
  UNSUPPORTED = "UNSUPPORTED",
22
22
  OLD_VERSION = "OLD_VERSION",
23
23
  SERVICE_DISABLED = "SERVICE_DISABLED",
24
+ SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE",
24
25
  EXTERNAL_API_ERROR = "EXTERNAL_API_ERROR",
25
26
  SOCKET_CLOSED = "SOCKET_CLOSED",
26
27
  ENDED = "ENDED",
@@ -28,6 +29,22 @@ declare enum HangupType {
28
29
  ANOTHER_DEVICE = "ANOTHER_DEVICE",
29
30
  NOT_FOUND = "NOT_FOUND",
30
31
  VCHAT_DETAILED_ERROR = "VCHAT_DETAILED_ERROR",
31
- TIMEOUT = "TIMEOUT"
32
+ TIMEOUT = "TIMEOUT",
33
+ /**
34
+ * Проблемы при работе через FastStart
35
+ */
36
+ FAST_START_ERROR = "FAST_START_ERROR",
37
+ /**
38
+ * Таймаут инициализации вызова – звонок не начался
39
+ *
40
+ * Этот статус означает, что вызов был инициирован, но к нему
41
+ * ни один участник не подключился через WebSocket/WebTransport
42
+ * в ожидаемый период времени. Обычно это происходит, когда:
43
+ * - Устройства вызываемого находятся офлайн
44
+ * - Проблемы с сетевым соединением мешают установить связь
45
+ * - Приложение вызываемого не запущено или упало
46
+ * - Брандмауэр или сетевые ограничения блокируют подключение
47
+ */
48
+ CALL_TIMEOUT = "CALL_TIMEOUT"
32
49
  }
33
50
  export default HangupType;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/calls-sdk",
3
- "version": "2.8.8-dev.cf529496.0",
3
+ "version": "2.8.8-dev.d457738f.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",
@@ -22,11 +22,13 @@ import { IRoomId, Room, RoomParticipantUpdate, Rooms, RoomsUpdate } from '../typ
22
22
  import { VmojiError } from '../types/Vmoji';
23
23
  import { DebugMessageType } from './Debug';
24
24
  import { JSONObject } from './Json';
25
+ import { ParticipantCapabilities } from './SignalingCapabilities';
25
26
  /**
26
27
  * Статус собеседника
27
28
  */
28
29
  export declare enum ParticipantStatus {
29
30
  WAITING_HALL = "WAITING_HALL",
31
+ WAIT_FOR_ADMIN = "WAIT_FOR_ADMIN",
30
32
  WAITING = "WAITING",
31
33
  CONNECTING = "CONNECTING",
32
34
  CONNECTED = "CONNECTED",
@@ -342,8 +344,9 @@ declare namespace External {
342
344
  /**
343
345
  * Исходящий звонок был принят кем-то
344
346
  * @param userId
347
+ * @param capabilities
345
348
  */
346
- function onAcceptedCall(userId: ExternalId): void;
349
+ function onAcceptedCall(userId: ExternalId, capabilities: ParticipantCapabilities): void;
347
350
  function onRateNeeded(): void;
348
351
  /**
349
352
  * Изменился говорящий в звонке
@@ -27,6 +27,7 @@ import { VmojiError } from '../types/Vmoji';
27
27
  import { DebugMessageType } from './Debug';
28
28
  import { ParticipantStatus } from './External';
29
29
  import { JSONObject } from './Json';
30
+ import { ParticipantCapabilities } from './SignalingCapabilities';
30
31
  import { FacingMode } from './WebRTCUtils';
31
32
  /**
32
33
  * Параметры инициализации
@@ -103,6 +104,17 @@ export type ParamsObject = {
103
104
  debugLog: boolean;
104
105
  /** @hidden */
105
106
  debug: boolean;
107
+ /**
108
+ * Выставляет таймаут в ms для fetch запросов от sdk
109
+ * По умолчанию 5000 ms
110
+ * @hidden
111
+ */
112
+ apiTimeout: number;
113
+ /**
114
+ * Количество ретраев прежде чем сбросить ошибку
115
+ * @hidden
116
+ */
117
+ apiMaxAttempt: number;
106
118
  /**
107
119
  * Не отправлять в ICE-кандидатах персональные IP-адреса
108
120
  * @see [RTCIceTransportPolicy](https://www.w3.org/TR/webrtc/#rtcicetransportpolicy-enum)
@@ -359,6 +371,10 @@ export type ParamsObject = {
359
371
  * _По умолчанию: `false`_
360
372
  */
361
373
  useChatRooms: boolean;
374
+ /**
375
+ * Включить поддержку добавления участника в разговор
376
+ */
377
+ addParticipant: boolean;
362
378
  /**
363
379
  * Индекс участника для первого chunk'а который придет при установке соединения с сервером
364
380
  *
@@ -704,7 +720,7 @@ export type ParamsObject = {
704
720
  /**
705
721
  * Звонок был завершен
706
722
  */
707
- onHangup?: (type: HangupReason, conversationId: string | null) => void;
723
+ onHangup?: (type: HangupReason | Error, conversationId: string | null) => void;
708
724
  /**
709
725
  * Входящий звонок был принят мной
710
726
  */
@@ -713,7 +729,7 @@ export type ParamsObject = {
713
729
  * Исходящий звонок был принят кем-то
714
730
  * @param userId
715
731
  */
716
- onAcceptedCall?: (userId: ExternalParticipantId) => void;
732
+ onAcceptedCall?: (userId: ExternalParticipantId, capabilities: ParticipantCapabilities) => void;
717
733
  /**
718
734
  * Список устройств изменился
719
735
  */
@@ -921,6 +937,8 @@ export default abstract class Params {
921
937
  static get apiBaseUrl(): IAPIBaseUrl;
922
938
  static set apiBaseUrl(apiBaseUrl: IAPIBaseUrl);
923
939
  static apiEndpoint(apiEnv?: IApiEnv): string;
940
+ static get apiTimeout(): number;
941
+ static get apiMaxAttempt(): number;
924
942
  static get authToken(): string;
925
943
  static set authToken(value: string);
926
944
  static get anonymToken(): string;
@@ -1004,6 +1022,7 @@ export default abstract class Params {
1004
1022
  static get useParticipantListChunk(): boolean;
1005
1023
  static get useRooms(): boolean;
1006
1024
  static get useChatRooms(): boolean;
1025
+ static get addParticipant(): boolean;
1007
1026
  static get participantListChunkInitIndex(): number;
1008
1027
  static get participantListChunkInitCount(): number | null;
1009
1028
  static get serverAudioRed(): boolean;
@@ -1044,6 +1063,7 @@ export default abstract class Params {
1044
1063
  useParticipantListChunk: boolean;
1045
1064
  useRooms: boolean;
1046
1065
  useChatRooms: boolean;
1066
+ addParticipant: boolean;
1047
1067
  fastScreenShare: boolean;
1048
1068
  participantListChunkInitCount: number | null;
1049
1069
  screenShareCongestionControl: boolean;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @see https://confluence.vk.team/display/VIDEOOK/Websocket+Capability+Flags
3
+ */
4
+ declare const PREDICATES: {
5
+ readonly producerScreenTrack: () => boolean;
6
+ readonly videoTracksCount: () => boolean;
7
+ readonly waitingHall: () => boolean;
8
+ readonly filteredMessages: () => boolean;
9
+ readonly consumerScreenTrack: () => boolean;
10
+ readonly muteNotificationForAdmins: () => boolean;
11
+ readonly movieShare: () => boolean;
12
+ readonly useParticipantListChunk: () => boolean;
13
+ readonly useRooms: () => boolean;
14
+ readonly vmoji: () => boolean;
15
+ readonly useCallsToContacts: () => boolean;
16
+ readonly useChatRooms: () => boolean;
17
+ readonly audienceModeHandUpTimestamps: () => boolean;
18
+ readonly animojiBackendRender: () => boolean;
19
+ readonly sessionStateUpdates: () => boolean;
20
+ readonly addParticipant: () => boolean;
21
+ readonly waitForAdmin: () => boolean;
22
+ };
23
+ type ParticipantCapabilitiesKeys = keyof typeof PREDICATES;
24
+ export type ParticipantCapabilities = Record<ParticipantCapabilitiesKeys, boolean>;
25
+ export declare class SignalingCapabilities {
26
+ static getFlags(): string;
27
+ static parseCapabilities(mask?: string): ParticipantCapabilities;
28
+ }
29
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -64,6 +64,7 @@ export type ConversationData = {
64
64
  muteStatesPersonal: MuteStates;
65
65
  networkRating: number;
66
66
  waitingHall: boolean;
67
+ waitForAdmin: boolean;
67
68
  observer: boolean;
68
69
  roomId: IRoomId;
69
70
  audienceMode: boolean;
@@ -1,4 +1,4 @@
1
- import { HangupType, IceServer } from '../CallsSDK';
1
+ import { IceServer } from '../CallsSDK';
2
2
  import CallType from '../enums/CallType';
3
3
  import MediaOption from '../enums/MediaOption';
4
4
  import { ExternalId } from './ExternalId';
@@ -37,10 +37,10 @@ export interface FastStartParams {
37
37
  isVideo?: boolean;
38
38
  }
39
39
  export interface FastStartResponse {
40
- internalCallerParams: string;
40
+ internalCallerParams?: string;
41
41
  rejectedParticipants: {
42
42
  id: string;
43
- status: HangupType;
43
+ status: string;
44
44
  }[];
45
45
  }
46
46
  export type FastStartHandler = (params: FastStartParams) => Promise<FastStartResponse>;
package/types/Params.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export type IApiEnv = 'AUTO' | 'PROD' | 'CALLS' | 'PROD_OK' | 'TEST' | 'VIDEOTEST' | 'CALLSTEST' | string;
1
+ export type IApiEnv = 'AUTO' | 'PROD' | 'CALLS' | 'PROD_OK' | 'TEST' | 'VIDEOTEST' | 'CALLSTEST' | 'CALLS_BETA' | 'CALLS_BENDER' | 'CALLS_MAMES' | 'CALLS_MARS' | string;
2
2
  export type IAPIBaseUrl = string | null;
@@ -182,6 +182,7 @@ declare namespace SignalingMessage {
182
182
  deviceIdx?: number;
183
183
  peerId: PeerId;
184
184
  mediaSettings: Partial<MediaSettings>;
185
+ capabilities?: string;
185
186
  }
186
187
  export interface Hungup extends Notification {
187
188
  participantId: OkUserId;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};