@vkontakte/calls-sdk 2.5.2-dev.e4603f6.0 → 2.5.3-beta.1

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.
@@ -12,7 +12,7 @@ import UpdateDisplayLayoutErrorReason from '../enums/UpdateDisplayLayoutErrorRea
12
12
  import UserRole from '../enums/UserRole';
13
13
  import UserType from '../enums/UserType';
14
14
  import { JSONObject } from '../static/Json';
15
- import { ExternalParticipantId } from '../types/ExternalId';
15
+ import { ExternalParticipantId, ExternalUserId } from '../types/ExternalId';
16
16
  import MediaModifiers from '../types/MediaModifiers';
17
17
  import { IVideoDimentions } from '../types/MediaSettings';
18
18
  import MuteStates from '../types/MuteStates';
@@ -62,6 +62,7 @@ export declare type ConversationData = {
62
62
  unmuteOptions: MediaOption[];
63
63
  networkRating: number;
64
64
  waitingHall: boolean;
65
+ observer: boolean;
65
66
  };
66
67
  export declare type ParticipantUpdateInfo = {
67
68
  participantStreamDescription: ParticipantStreamDescription | null;
@@ -110,6 +111,7 @@ export default class Conversation extends EventEmitter {
110
111
  mediaOptions: MediaOption[];
111
112
  chatId?: string;
112
113
  joinLink?: string;
114
+ observedIds?: ExternalUserId[];
113
115
  }): Promise<ConversationData>;
114
116
  private _onJoinPart2;
115
117
  onPush(conversationId: string, type?: UserType, peerId?: number): Promise<void>;
@@ -26,13 +26,14 @@ export declare class MediaSource extends EventEmitter {
26
26
  private _mediaSettings;
27
27
  private _videoStatusOnScreenCapturingEnabled;
28
28
  private _effect;
29
+ private _onDeviceChange;
29
30
  constructor();
30
- request(mediaOptions?: MediaOption[]): Promise<void>;
31
+ request(mediaOptions?: MediaOption[], needEmptyTracks?: boolean): Promise<void>;
31
32
  getStream(): MediaStream | null;
32
33
  getScreenTrack(): MediaStreamTrack | null;
33
34
  getSendVideoTrack(noDataChannel?: boolean): MediaStreamTrack | null;
34
35
  private _getSendAudioTrack;
35
- addTrackToPeerConnection(pc: RTCPeerConnection, noDataChannel?: boolean): void;
36
+ addTrackToPeerConnection(pc: RTCPeerConnection, observer?: boolean, noDataChannel?: boolean): void;
36
37
  getMediaSettings(): MediaSettings;
37
38
  changeDevice(kind: MediaDeviceKind): Promise<void>;
38
39
  /**
@@ -42,6 +43,7 @@ export declare class MediaSource extends EventEmitter {
42
43
  */
43
44
  setVideoStream(stream: MediaStream, isScreen: boolean): Promise<void>;
44
45
  private _initDeviceChangeListener;
46
+ private _destroyDeviceChangeListener;
45
47
  private _changeVideoInput;
46
48
  /**
47
49
  * хелпер для получения трека для передаче либе эффектов. нужен для сохранения оригинального трека с камеры.
@@ -0,0 +1,11 @@
1
+ export declare class TabsChannel {
2
+ private _channel;
3
+ private _sequence;
4
+ constructor();
5
+ private _onMessage;
6
+ private _sendRequest;
7
+ private _sendResponse;
8
+ private _waitResponse;
9
+ requestActiveCall(): Promise<boolean>;
10
+ destroy(): void;
11
+ }
@@ -14,6 +14,7 @@ export default class ServerTransport extends EventEmitter {
14
14
  private _producerScreen;
15
15
  private _consumerScreen;
16
16
  private _isOpen;
17
+ private _observer;
17
18
  private _reconnectionPrevented;
18
19
  private _state;
19
20
  private _statInterval;
@@ -35,7 +36,7 @@ export default class ServerTransport extends EventEmitter {
35
36
  constructor(signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings);
36
37
  getState(): TransportState;
37
38
  updateStatisticsInterval(): void;
38
- open(): void;
39
+ open(observer?: boolean): void;
39
40
  close(error?: Error): void;
40
41
  removeParticipant(participantId: ParticipantId): void;
41
42
  preventRestart(): void;
@@ -49,7 +49,7 @@ export declare class Transport extends EventEmitter {
49
49
  updateSettings(settings: ServerSettings): void;
50
50
  updateStatisticsInterval(): void;
51
51
  allocate(participantId: ParticipantId, isMaster?: boolean): void;
52
- open(participantIds: ParticipantId[], peerId?: string | null): void;
52
+ open(participantIds: ParticipantId[], peerId?: string | null, observer?: boolean): void;
53
53
  close(participantId: ParticipantId): void;
54
54
  destroy(): void;
55
55
  getTopology(): TransportTopology;
package/default/Api.d.ts CHANGED
@@ -2,7 +2,7 @@ import BaseApi, { LogItem } from '../abstract/BaseApi';
2
2
  import CallType from '../enums/CallType';
3
3
  import ConversationParams from '../types/ConversationParams';
4
4
  import ConversationResponse from '../types/ConversationResponse';
5
- import { ExternalId } from '../types/ExternalId';
5
+ import { ExternalId, ExternalUserId } from '../types/ExternalId';
6
6
  import { CompositeUserId, OkUserId } from '../types/Participant';
7
7
  export default class Api extends BaseApi {
8
8
  private _userId;
@@ -26,7 +26,7 @@ export default class Api extends BaseApi {
26
26
  success: boolean;
27
27
  }>;
28
28
  getAnonymTokenByLink(joinLink: string, username?: string): Promise<string>;
29
- joinConversationByLink(joinLink: string, isVideo?: boolean): Promise<ConversationResponse>;
29
+ joinConversationByLink(joinLink: string, isVideo?: boolean, observedIds?: ExternalUserId[]): Promise<ConversationResponse>;
30
30
  /**
31
31
  * NB: Не сохраняет порядок возвращаемых ID
32
32
  * @hidden
@@ -12,6 +12,7 @@ declare enum HangupType {
12
12
  NETWORK_ERROR = "NETWORK_ERROR",
13
13
  KILLED = "KILLED",
14
14
  BANNED = "BANNED",
15
+ HAS_ACTIVE_CALL = "HAS_ACTIVE_CALL",
15
16
  CALLER_IS_BLOCKED = "CALLER_IS_BLOCKED",
16
17
  NOT_FRIENDS = "NOT_FRIENDS",
17
18
  CALLEE_IS_OFFLINE = "CALLEE_IS_OFFLINE",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/calls-sdk",
3
- "version": "2.5.2-dev.e4603f6.0",
3
+ "version": "2.5.3-beta.1",
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,12 +14,12 @@
14
14
  "**/*.d.ts"
15
15
  ],
16
16
  "dependencies": {
17
- "@vkontakte/calls-video-effects": "^1.0.6-beta.18",
17
+ "@vkontakte/calls-video-effects": "1.0.6-beta.18",
18
18
  "@vkontakte/libvpx": "2.0.9",
19
19
  "big-integer": "1.6.48",
20
20
  "bit-buffer": "0.2.5",
21
21
  "messagepack": "1.1.12",
22
- "simple-ebml-builder": "^0.2.2",
22
+ "simple-ebml-builder": "0.2.2",
23
23
  "webrtc-adapter": "7.7.0"
24
24
  }
25
25
  }
@@ -51,6 +51,7 @@ export declare type ParamsObject = {
51
51
  waitConnectionDelay: number;
52
52
  waitResponseDelay: number;
53
53
  waitMessageDelay: number;
54
+ waitAnotherTabDelay: number;
54
55
  debugLog: boolean;
55
56
  /**
56
57
  * Не использовать прямое P2P соединение, чтобы не отправлять в ICE-кандидатах персональные IP-адреса
@@ -168,14 +169,14 @@ export declare type ParamsObject = {
168
169
  /**
169
170
  * Отдавать приоритет кодеку H264 для исходящего видео
170
171
  *
171
- * _По умолчанию: `true`_
172
+ * _По умолчанию: `false`_
172
173
  */
173
174
  preferH264: boolean;
174
175
  /**
175
176
  * Отдавать приоритет кодеку VP9 для исходящего видео,
176
177
  * если preferH264 тоже выставлен в true то первый приоритет будет у VP9, второй у H264
177
178
  *
178
- * _По умолчанию: `false`_
179
+ * _По умолчанию: `true`_
179
180
  */
180
181
  preferVP9: boolean;
181
182
  audioNack: boolean;
@@ -183,14 +184,14 @@ export declare type ParamsObject = {
183
184
  * Принимать параллельно видео с камеры и трансляцию экрана от одного и того же участника.
184
185
  * Работает только при приёме экрана через дата-канал.
185
186
  *
186
- * _По умолчанию: `false`_
187
+ * _По умолчанию: `true`_
187
188
  */
188
189
  producerScreenTrack: boolean;
189
190
  /**
190
191
  * Отдавать трансляцию экрана отдельным стримом.
191
192
  * Работает только при отправке экрана через дата-канал.
192
193
  *
193
- * _По умолчанию: `false`_
194
+ * _По умолчанию: `true`_
194
195
  */
195
196
  consumerScreenTrack: boolean;
196
197
  producerNotificationDataChannel: boolean;
@@ -218,11 +219,21 @@ export declare type ParamsObject = {
218
219
  breakVideoPayloadTypes: boolean;
219
220
  /**
220
221
  * Получать список участников звонка третьим аргументом в `onConversation`
221
- * @deprecated
222
+ * @hidden
222
223
  */
223
224
  batchParticipantsOnStart: boolean;
224
225
  participantStateMapped: boolean;
225
226
  joinFromMultipleDevices: boolean;
227
+ /**
228
+ * Фильтровать наблюдателей во всех колбэках
229
+ * @hidden
230
+ */
231
+ filterObservers: boolean;
232
+ /**
233
+ * Отключить звук собеседников
234
+ * @hidden
235
+ */
236
+ muteMode: boolean;
226
237
  /**
227
238
  * Получен локальный стрим с камеры/микрофона
228
239
  */
@@ -447,6 +458,7 @@ export default abstract class Params {
447
458
  static get waitConnectionDelay(): number;
448
459
  static get waitResponseDelay(): number;
449
460
  static get waitMessageDelay(): number;
461
+ static get waitAnotherTabDelay(): number;
450
462
  static get debugLog(): boolean;
451
463
  static get forceRelayPolicy(): boolean;
452
464
  static set forceRelayPolicy(value: boolean);
@@ -498,4 +510,6 @@ export default abstract class Params {
498
510
  static get filteredMessages(): boolean;
499
511
  static get batchParticipantsOnStart(): boolean;
500
512
  static get participantStateMapped(): boolean;
513
+ static get filterObservers(): boolean;
514
+ static get muteMode(): boolean;
501
515
  }
@@ -62,7 +62,7 @@ declare namespace WebRTCUtils {
62
62
  /**
63
63
  * Запрашивает камеру и микрофон пользователя
64
64
  */
65
- function getUserMedia(needVideo?: boolean, needAudio?: boolean): Promise<MediaStream>;
65
+ function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean): Promise<MediaStream>;
66
66
  /**
67
67
  * Запрашивает трансляцию экрана пользователя
68
68
  */
@@ -132,7 +132,7 @@ declare namespace WebRTCUtils {
132
132
  /**
133
133
  * Версия браузера
134
134
  */
135
- function browserVersion(): number;
135
+ function browserVersion(): string;
136
136
  /**
137
137
  * Если браузер основан на хроме - возвращает версию
138
138
  */
@@ -141,5 +141,9 @@ declare namespace WebRTCUtils {
141
141
  * Возвращает AudioContext
142
142
  */
143
143
  function getAudioContext(): AudioContext;
144
+ /**
145
+ * Возвращает подверсию браузера (если она есть)
146
+ */
147
+ function browserSubVersion(): string;
144
148
  }
145
149
  export default WebRTCUtils;
@@ -12,6 +12,7 @@ export declare enum ExternalIdType {
12
12
  ANONYM = "ANONYM",
13
13
  GROUP = "GROUP"
14
14
  }
15
+ export declare type ExternalUserId = string;
15
16
  export declare namespace ExternalIdUtils {
16
17
  function fromIds(ids: (string | ExternalId)[]): ExternalId[];
17
18
  function fromId(id: string, type?: ExternalIdType): ExternalId;
@@ -41,6 +42,11 @@ export interface ExternalId {
41
42
  * Тип пользователя
42
43
  */
43
44
  type: ExternalIdType;
45
+ /**
46
+ * Пользователь является наблюдателем звонка
47
+ * @hidden
48
+ */
49
+ observer?: boolean;
44
50
  }
45
51
  /**
46
52
  * Идентификатор участника звонка
@@ -72,7 +78,7 @@ export interface ExternalParticipant {
72
78
  */
73
79
  participantState?: ParticipantStateMapped;
74
80
  /**
75
- * Состояние устройств пользователя
81
+ * Состояние устройств пользователя установленное админом звонка
76
82
  */
77
83
  muteStates: MuteStates;
78
84
  /**
@@ -1,7 +1,7 @@
1
1
  import MediaOption from '../enums/MediaOption';
2
2
  import MuteState from '../enums/MuteState';
3
3
  /**
4
- * Состояние устройств пользователя
4
+ * Состояние устройств пользователя установленное админом звонка
5
5
  */
6
6
  declare type MuteStates = {
7
7
  [key in MediaOption]?: MuteState;
@@ -46,4 +46,5 @@ export interface Participant {
46
46
  };
47
47
  muteStates: MuteStates;
48
48
  unmuteOptions: MediaOption[];
49
+ observedIds: CompositeUserId[];
49
50
  }
@@ -10,7 +10,7 @@ import UserType from '../enums/UserType';
10
10
  import MediaModifiers from './MediaModifiers';
11
11
  import MediaSettings from './MediaSettings';
12
12
  import MuteStates from './MuteStates';
13
- import { OkUserId, ParticipantId } from './Participant';
13
+ import { CompositeUserId, OkUserId, ParticipantId } from './Participant';
14
14
  import VideoSettings from './VideoSettings';
15
15
  import { WaitingParticipant } from './WaitingHall';
16
16
  declare type SignalingMessage = Record<string, any>;
@@ -31,6 +31,12 @@ declare namespace SignalingMessage {
31
31
  id: number;
32
32
  type?: string;
33
33
  }
34
+ export type ParticipantListType = 'GRID' | 'SIDE' | 'ADMIN';
35
+ export interface ParticipantListMarker {
36
+ rank: number;
37
+ ts: number;
38
+ id?: CompositeUserId;
39
+ }
34
40
  export interface Participant {
35
41
  id: OkUserId;
36
42
  idType?: UserType;
@@ -50,6 +56,8 @@ declare namespace SignalingMessage {
50
56
  restricted?: boolean;
51
57
  muteStates?: MuteStates;
52
58
  unmuteOptions?: MediaOption[];
59
+ markers?: Record<ParticipantListType, ParticipantListMarker>;
60
+ observedIds?: CompositeUserId[];
53
61
  }
54
62
  interface Conversation {
55
63
  id: string;