@vkontakte/calls-sdk 2.8.12-dev.8c2bbcbf.0 → 2.8.12-dev.a4b1a09a.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 (33) hide show
  1. package/CallsSDK.d.ts +16 -6
  2. package/abstract/BaseApi.d.ts +7 -9
  3. package/abstract/BaseSignaling.d.ts +6 -5
  4. package/calls-sdk.cjs.js +10 -10
  5. package/calls-sdk.esm.js +2738 -2150
  6. package/classes/CallRegistry.d.ts +1 -1
  7. package/classes/ExternalIdCache.d.ts +11 -12
  8. package/classes/MediaSource.d.ts +4 -0
  9. package/classes/{Conversation.d.ts → conversation/Conversation.d.ts} +43 -38
  10. package/classes/conversation/Conversation.testUtils.d.ts +150 -0
  11. package/classes/{ConversationResponseValidator.d.ts → conversation/ConversationResponseValidator.d.ts} +1 -1
  12. package/classes/{DisplayLayoutRequester.d.ts → conversation/DisplayLayoutRequester.d.ts} +8 -6
  13. package/classes/conversation/index.d.ts +1 -0
  14. package/classes/stat/CallFinishClassifier.d.ts +11 -0
  15. package/classes/stat/CallLifecycleStats.d.ts +1 -6
  16. package/classes/stat/StatAggregator.d.ts +4 -0
  17. package/classes/transport/DirectTransport.d.ts +1 -0
  18. package/classes/transport/ServerTransport.d.ts +1 -0
  19. package/default/Api.d.ts +8 -10
  20. package/default/Signaling.d.ts +12 -15
  21. package/default/SignalingTransport.d.ts +7 -1
  22. package/enums/ClientHangupReason.d.ts +7 -0
  23. package/enums/HangupType.d.ts +0 -1
  24. package/enums/Stat.d.ts +0 -1
  25. package/package.json +2 -2
  26. package/static/External.d.ts +11 -1
  27. package/static/Params.d.ts +22 -1
  28. package/static/Utils.d.ts +1 -1
  29. package/static/WebRTCUtils.d.ts +8 -7
  30. package/types/SignalingMessage.d.ts +4 -1
  31. package/types/WebTransport.d.ts +14 -15
  32. package/utils/IceServers.d.ts +2 -0
  33. package/utils/NavigatorPermissions.d.ts +2 -2
@@ -9,13 +9,19 @@ export declare enum SignalingTransportFailure {
9
9
  export type SignalingTransportFailedEvent = {
10
10
  failure: SignalingTransportFailure;
11
11
  message: string;
12
+ source: SignalingTransportType;
12
13
  remote?: boolean;
13
14
  };
14
15
  export type SignalingTransportReconnectEvent = {
15
16
  count: number;
16
17
  delay: number;
17
18
  };
19
+ export type SignalingTransportConnectingEvent = {
20
+ connectionType: SignalingConnectionType;
21
+ source: SignalingTransportType;
22
+ };
18
23
  export type SignalingTransportHandlers = {
24
+ onConnecting: (event: SignalingTransportConnectingEvent) => void;
19
25
  onOpen: () => void;
20
26
  onMessage: (event: MessageEvent) => void;
21
27
  onError: (event: Event) => void;
@@ -51,7 +57,7 @@ export default class SignalingTransport {
51
57
  resetReconnectCount(): void;
52
58
  connect(connectionType: SignalingConnectionType): void;
53
59
  close(code?: number): void;
54
- send(data: string | ArrayBuffer): void;
60
+ send(data: string | ArrayBuffer): Promise<void>;
55
61
  private _connect;
56
62
  private _connectWebTransport;
57
63
  private _connectWebSocket;
@@ -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;
@@ -20,7 +20,6 @@ declare enum HangupType {
20
20
  CALLER_IS_REJECTED = "CALLER_IS_REJECTED",
21
21
  UNKNOWN_ERROR = "UNKNOWN_ERROR",
22
22
  UNSUPPORTED = "UNSUPPORTED",
23
- OLD_VERSION = "OLD_VERSION",
24
23
  SERVICE_DISABLED = "SERVICE_DISABLED",
25
24
  SERVICE_UNAVAILABLE = "SERVICE_UNAVAILABLE",
26
25
  EXTERNAL_API_ERROR = "EXTERNAL_API_ERROR",
package/enums/Stat.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  declare const enum Stat {
2
2
  CALL_INIT = "call_init",
3
- CALL_WARMUP = "call_warmup",
4
3
  CALL_START = "call_start",
5
4
  CALL_ACCEPTED_OUTGOING = "call_accepted_outgoing",
6
5
  CALL_ACCEPTED_INCOMING = "call_accepted_incoming",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/calls-sdk",
3
- "version": "2.8.12-dev.8c2bbcbf.0",
3
+ "version": "2.8.12-dev.a4b1a09a.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,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": "7.7.0"
25
+ "webrtc-adapter": "9.0.5"
26
26
  }
27
27
  }
@@ -637,6 +637,16 @@ declare namespace External {
637
637
  /**
638
638
  * Собеседник подключился к сигналлингу
639
639
  */
640
- function onPeerRegistered(conversationId?: string): void;
640
+ function onPeerRegistered(conversationId?: string, externalIds?: ExternalId[]): void;
641
+ /**
642
+ * SDK обнаружил ошибку, после которой звонок может продолжаться.
643
+ *
644
+ * Callback предназначен для отправки ошибки в клиентский мониторинг.
645
+ * Его вызов не означает завершение звонка.
646
+ *
647
+ * @param error
648
+ * @param conversationId ID звонка
649
+ */
650
+ function onNonFatalError(error: Error, conversationId: string | null): void;
641
651
  }
642
652
  export default External;
@@ -505,6 +505,16 @@ export type ParamsObject = {
505
505
  * _По умолчанию: `false`_
506
506
  */
507
507
  enableSessionStateUpdates: boolean;
508
+ /**
509
+ * Использовать `<audio>` вместо `<video>` для воспроизведения звука в desktop Safari
510
+ * @hidden
511
+ */
512
+ safariAudioElement: boolean;
513
+ /**
514
+ * Отправлять пустой ICE candidate (end-of-candidates) удалённому пиру
515
+ * @hidden
516
+ */
517
+ forwardEmptyIceCandidate: boolean;
508
518
  /**
509
519
  * Получен локальный стрим с камеры/микрофона
510
520
  */
@@ -892,7 +902,14 @@ export type ParamsObject = {
892
902
  /**
893
903
  * Собеседник подключился к сигналлингу
894
904
  */
895
- onPeerRegistered?: (conversationId?: string) => void;
905
+ onPeerRegistered?: (conversationId?: string, externalIds?: ExternalId[]) => void;
906
+ /**
907
+ * SDK обнаружил ошибку, после которой звонок может продолжаться.
908
+ *
909
+ * Callback предназначен для отправки ошибки в клиентский мониторинг.
910
+ * Его вызов не означает завершение звонка.
911
+ */
912
+ onNonFatalError?: (error: Error, conversationId: string | null) => void;
896
913
  };
897
914
  export default abstract class Params {
898
915
  private static _params;
@@ -1027,6 +1044,8 @@ export default abstract class Params {
1027
1044
  static get waitForRecordResponse(): boolean;
1028
1045
  static get transparentAudio(): boolean;
1029
1046
  static get enableSessionStateUpdates(): boolean;
1047
+ static get safariAudioElement(): boolean;
1048
+ static get forwardEmptyIceCandidate(): boolean;
1030
1049
  static toJSON(): {
1031
1050
  apiKey: string;
1032
1051
  apiEnv: string;
@@ -1063,5 +1082,7 @@ export default abstract class Params {
1063
1082
  waitForRecordResponse: boolean;
1064
1083
  transparentAudio: boolean;
1065
1084
  enableSessionStateUpdates: boolean;
1085
+ safariAudioElement: boolean;
1086
+ forwardEmptyIceCandidate: boolean;
1066
1087
  };
1067
1088
  }
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, oldDataChannelDescription: boolean, preferH264: boolean, brokenH264: boolean, preferVP9: boolean, brokenVP9Encoder: boolean, brokenVP9Decoder: boolean): 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<{
@@ -20,7 +20,7 @@ export declare enum FacingMode {
20
20
  /**
21
21
  * Известные браузеры
22
22
  */
23
- export type BrowserName = 'IE' | 'Edge' | 'Chrome' | 'Firefox' | 'Yandex' | 'Opera' | 'Sferum';
23
+ export type BrowserName = 'Edge' | 'Chrome' | 'Firefox' | 'Yandex' | 'Opera' | 'Sferum';
24
24
  declare namespace WebRTCUtils {
25
25
  /**
26
26
  * До вызова этого метода бесполезно опрашивать другие публичные методы.
@@ -122,6 +122,10 @@ declare namespace WebRTCUtils {
122
122
  * Проверяет поддержку WebRTC браузером
123
123
  */
124
124
  function isBrowserSupported(): boolean;
125
+ /**
126
+ * Возвращает первую отсутствующую capability в стабильном порядке.
127
+ */
128
+ function getBrowserSupportFailure(): BrowserSupportFailure | null;
125
129
  /**
126
130
  * Проверяет поддержку шаринга экрана браузером
127
131
  */
@@ -139,17 +143,14 @@ declare namespace WebRTCUtils {
139
143
  * В некоторых браузерах VP9 decoder сломан
140
144
  */
141
145
  function isBrokenVP9Decoder(): boolean;
142
- /**
143
- * Изменился формат описания датаканала в SDP
144
- * @link https://blog.mozilla.org/webrtc/how-to-avoid-data-channel-breaking/
145
- */
146
- function isOldDataChannelDescription(): boolean;
147
146
  /**
148
147
  * Может ли браузер делать H264 приоритетным
149
148
  */
150
149
  function canPreferH264(): boolean;
151
150
  /**
152
- * Некоторые браузеры (Firefox, Safari) некорректно поддерживают симулкаст
151
+ * Поддержка simulcast браузером.
152
+ * Safari корректно поддерживает simulcast начиная с версии 18.
153
+ * Firefox поддерживает simulcast с VP8 начиная с версии 134.
153
154
  */
154
155
  function isSimulcastSupportedByBrowser(): boolean;
155
156
  /**
@@ -34,8 +34,11 @@ export type RecordInfo = {
34
34
  recordExternalOwnerId?: string;
35
35
  };
36
36
  export interface SignalingResponse extends SignalingMessage {
37
- response?: SignalingCommandType;
38
37
  error?: string;
38
+ errorCode?: string;
39
+ errorMessage?: string;
40
+ message?: string;
41
+ response?: SignalingCommandType;
39
42
  reason?: HangupType | FatalError;
40
43
  sequence?: number;
41
44
  type: 'response' | 'error' | 'timeout';
@@ -1,33 +1,32 @@
1
1
  import { WebTransportOptions } from '@fails-components/webtransport';
2
2
  import { DebugLogger } from '../static/Debug';
3
3
  declare class WebTransportEventual {
4
+ static isBrowserSupported(): boolean;
5
+ onopen: ((this: WebTransportEventual, ev: Event) => any) | null;
6
+ onmessage: ((this: WebTransportEventual, ev: MessageEvent) => any) | null;
7
+ onerror: ((this: WebTransportEventual, ev: Event) => any) | null;
8
+ onclose: ((this: WebTransportEventual, ev: CloseEvent) => any) | null;
9
+ readyState: number;
4
10
  private webTransport;
5
- private stream;
6
11
  private writer;
7
- private reader;
8
12
  private readonly url;
9
13
  private readonly options;
10
14
  private readonly compression;
11
- private closeRequested;
12
- private closeEventEmitted;
13
15
  private encoder;
14
16
  private decoder;
15
17
  private readonly _debug;
16
- onopen: ((this: WebTransportEventual, ev: Event) => any) | null;
17
- onmessage: ((this: WebTransportEventual, ev: MessageEvent) => any) | null;
18
- onerror: ((this: WebTransportEventual, ev: Event) => any) | null;
19
- onclose: ((this: WebTransportEventual, ev: CloseEvent) => any) | null;
20
- readyState: number;
21
18
  constructor(url: string, options?: WebTransportOptions, debug?: DebugLogger);
19
+ send(data: string): Promise<void>;
20
+ close(code?: number, reason?: string): void;
22
21
  private getCompressionTypeFromUrl;
23
22
  private connect;
24
- private readChunks;
23
+ private observeClosed;
25
24
  private readLoop;
26
- send(data: string): Promise<void>;
25
+ private fail;
26
+ private handleStreamError;
27
+ private requestNativeClose;
28
+ private finishClose;
29
+ private emitEvent;
27
30
  private createErrorEvent;
28
- close(code?: number, reason?: string): void;
29
- private closeConnectedTransport;
30
- private emitClose;
31
- static isBrowserSupported(): boolean;
32
31
  }
33
32
  export { WebTransportEventual as WebTransport };
@@ -0,0 +1,2 @@
1
+ import IceServer from '../types/IceServer';
2
+ export declare function createIceServers(stunServer?: IceServer, turnServer?: IceServer): IceServer[];
@@ -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>;