@vkontakte/calls-sdk 2.8.13-dev.3b07b09d.0 → 2.8.13-dev.63c885d4.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 (40) hide show
  1. package/CallsSDK.d.ts +0 -9
  2. package/abstract/BaseApi.d.ts +8 -12
  3. package/calls-sdk.cjs.js +6 -6
  4. package/calls-sdk.esm.js +1324 -1965
  5. package/classes/AudioFix.d.ts +2 -2
  6. package/classes/AudioOutput.d.ts +2 -2
  7. package/classes/MediaSource.d.ts +2 -2
  8. package/classes/SpecListener.d.ts +2 -2
  9. package/classes/codec/LibVPxDecoder.d.ts +2 -2
  10. package/classes/codec/LibVPxEncoder.d.ts +2 -2
  11. package/classes/codec/WebCodecsDecoder.d.ts +2 -2
  12. package/classes/codec/WebCodecsEncoder.d.ts +2 -2
  13. package/classes/codec/WorkerBase.d.ts +3 -3
  14. package/classes/conversation/Conversation.d.ts +0 -1
  15. package/classes/screenshare/ScreenCaptureReceiver.d.ts +2 -2
  16. package/classes/screenshare/ScreenCaptureSender.d.ts +2 -2
  17. package/classes/screenshare/StreamBuilder.d.ts +2 -2
  18. package/classes/stat/CallLifecycleStats.d.ts +2 -2
  19. package/classes/stat/CodecStatsAggregator.d.ts +2 -2
  20. package/classes/stat/ConversationStats.d.ts +2 -18
  21. package/classes/stat/StatAggregator.d.ts +2 -2
  22. package/classes/stat/StatPings.d.ts +2 -2
  23. package/classes/stat/StatSignalingCommands.d.ts +2 -2
  24. package/classes/transport/DirectTransport.d.ts +2 -2
  25. package/classes/transport/ServerTransport.d.ts +2 -2
  26. package/classes/transport/SimulcastSender.d.ts +2 -2
  27. package/classes/transport/Transport.d.ts +2 -2
  28. package/default/Api.d.ts +1 -23
  29. package/default/Signaling.d.ts +2 -2
  30. package/package.json +1 -1
  31. package/static/ApiTransport.d.ts +0 -4
  32. package/static/Params.d.ts +5 -26
  33. package/static/WebRTCUtils.d.ts +5 -5
  34. package/classes/stat/StatClock.d.ts +0 -35
  35. package/classes/stat/StatDrainScheduler.d.ts +0 -121
  36. package/classes/stat/StatEventCollector.d.ts +0 -64
  37. package/classes/stat/StatQueue.d.ts +0 -92
  38. package/classes/stat/StatUnloadJournal.d.ts +0 -39
  39. package/enums/SessionError.d.ts +0 -15
  40. package/static/SessionStore.d.ts +0 -38
@@ -1,5 +1,5 @@
1
1
  import { type DebugLogger } from '../static/Debug';
2
- import StatEventCollector from './stat/StatEventCollector';
2
+ import StatsLogger from './StatsLogger';
3
3
  import { MediaSource } from './MediaSource';
4
4
  export default class AudioFix {
5
5
  private _fixNoPacketsApplied;
@@ -15,7 +15,7 @@ export default class AudioFix {
15
15
  private _lastPacketsSentTime;
16
16
  private _toggleAudioPromise;
17
17
  private _fixNoPacketsAppliedVideo;
18
- constructor(mediaSource: MediaSource, debug?: DebugLogger, logger?: StatEventCollector | null);
18
+ constructor(mediaSource: MediaSource, debug?: DebugLogger, logger?: StatsLogger | null);
19
19
  private _fixAudioDeviceNoPackets;
20
20
  private _fixAudioDeviceTooManyPackets;
21
21
  fix(rtps: any[]): void;
@@ -1,6 +1,6 @@
1
1
  import { type DebugLogger } from '../static/Debug';
2
2
  import { ParticipantId } from '../types/Participant';
3
- import StatEventCollector from './stat/StatEventCollector';
3
+ import StatsLogger from './StatsLogger';
4
4
  import { StatFirstMediaReceived } from './stat/StatFirstMediaReceived';
5
5
  /**
6
6
  * Единый AudioOutput поддерживающий p2p, audioMix и transparent-audio
@@ -15,7 +15,7 @@ export default class AudioOutput {
15
15
  private readonly _features;
16
16
  private readonly _statFirstMediaReceived;
17
17
  private readonly _logger;
18
- constructor(statFirstMediaReceived: StatFirstMediaReceived, allowMultipleTracks?: boolean, debug?: DebugLogger, logger?: StatEventCollector | null);
18
+ constructor(statFirstMediaReceived: StatFirstMediaReceived, allowMultipleTracks?: boolean, debug?: DebugLogger, logger?: StatsLogger | null);
19
19
  add(participantId: ParticipantId, track: MediaStreamTrack): void;
20
20
  remove(participantId: ParticipantId, track: MediaStreamTrack): void;
21
21
  get volume(): number;
@@ -4,7 +4,7 @@ import MediaOption from '../enums/MediaOption';
4
4
  import { type DebugLogger } from '../static/Debug';
5
5
  import MediaSettings, { IVideoDimentions } from '../types/MediaSettings';
6
6
  import { ScreenCaptureSettings } from '../types/ScreenCaptureSettings';
7
- import StatEventCollector from './stat/StatEventCollector';
7
+ import StatsLogger from './StatsLogger';
8
8
  export declare const enum MediaSourceEvent {
9
9
  SOURCE_CHANGED = "SOURCE_CHANGED",
10
10
  SOURCE_READY = "SOURCE_READY",
@@ -60,7 +60,7 @@ export declare class MediaSource extends EventEmitter {
60
60
  private readonly _logger;
61
61
  private _cameraTrackSetAt;
62
62
  private _cameraMuteRecoveredAt;
63
- constructor(debug?: DebugLogger, logger?: StatEventCollector | null);
63
+ constructor(debug?: DebugLogger, logger?: StatsLogger | null);
64
64
  get cameraVideoTrack(): MediaStreamTrack | null;
65
65
  set cameraVideoTrack(track: MediaStreamTrack | null);
66
66
  request(mediaOptions?: MediaOption[], needEmptyTracks?: boolean): Promise<void>;
@@ -2,7 +2,7 @@ import { type DebugLogger } from '../static/Debug';
2
2
  import MediaSettings from '../types/MediaSettings';
3
3
  import { Participant, ParticipantId } from '../types/Participant';
4
4
  import EventEmitter from './EventEmitter';
5
- import StatEventCollector from './stat/StatEventCollector';
5
+ import StatsLogger from './StatsLogger';
6
6
  import { Transport } from './transport/Transport';
7
7
  import { VolumesDetector } from './VolumesDetector';
8
8
  export default class SpecListener extends EventEmitter {
@@ -14,7 +14,7 @@ export default class SpecListener extends EventEmitter {
14
14
  private _connectionTimeout;
15
15
  private _connectionTimeoutSuppressed;
16
16
  private _volumeTimeout;
17
- constructor(transport: Transport, volumesDetector: VolumesDetector, participants: Record<ParticipantId, Participant>, debug?: DebugLogger, logger?: StatEventCollector | null);
17
+ constructor(transport: Transport, volumesDetector: VolumesDetector, participants: Record<ParticipantId, Participant>, debug?: DebugLogger, logger?: StatsLogger | null);
18
18
  destroy(): void;
19
19
  onChangeRemoteMediaSettings(participantId: ParticipantId, mediaSettings: MediaSettings): void;
20
20
  onParticipantHoldChanged(): void;
@@ -1,9 +1,9 @@
1
1
  import { type DebugLogger } from '../../static/Debug';
2
- import StatEventCollector from '../stat/StatEventCollector';
2
+ import StatsLogger from '../StatsLogger';
3
3
  import IDecoder from './IDecoder';
4
4
  import WorkerBase from './WorkerBase';
5
5
  export default class LibVPxDecoder extends WorkerBase implements IDecoder {
6
- constructor(debug?: DebugLogger, logger?: StatEventCollector | null);
6
+ constructor(debug?: DebugLogger, logger?: StatsLogger | null);
7
7
  init(onFrameImage: (image: ImageData) => void, onFrameError: (error: unknown) => void, onKeyFrameRequested: () => void): Promise<void>;
8
8
  decodeFrame(timestamp: number, data: Uint8Array, isVP9: boolean, keyFrame?: boolean): void;
9
9
  destroy(): void;
@@ -1,5 +1,5 @@
1
1
  import { type DebugLogger } from '../../static/Debug';
2
- import StatEventCollector from '../stat/StatEventCollector';
2
+ import StatsLogger from '../StatsLogger';
3
3
  import IEncoder from './IEncoder';
4
4
  import { OnFrameCallback } from './Types';
5
5
  import WorkerBase from './WorkerBase';
@@ -15,7 +15,7 @@ export default class LibVPxEncoder extends WorkerBase implements IEncoder {
15
15
  private _canvasCtx;
16
16
  private _frameReadTimeout;
17
17
  private _lastFrame;
18
- constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number, debug?: DebugLogger, logger?: StatEventCollector | null);
18
+ constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number, debug?: DebugLogger, logger?: StatsLogger | null);
19
19
  private _createDom;
20
20
  private _removeDom;
21
21
  private _createStream;
@@ -1,9 +1,9 @@
1
1
  import { type DebugLogger } from '../../static/Debug';
2
- import StatEventCollector from '../stat/StatEventCollector';
2
+ import StatsLogger from '../StatsLogger';
3
3
  import IDecoder from './IDecoder';
4
4
  import WorkerBase from './WorkerBase';
5
5
  export default class WebCodecsDecoder extends WorkerBase implements IDecoder {
6
- constructor(debug?: DebugLogger, logger?: StatEventCollector | null);
6
+ constructor(debug?: DebugLogger, logger?: StatsLogger | null);
7
7
  init(onFrameImage: (frame: VideoFrame) => void, onFrameError: (error: unknown) => void, onKeyFrameRequested: () => void): Promise<void>;
8
8
  decodeFrame(timestamp: number, data: Uint8Array, isVP9: boolean, keyFrame?: boolean): void;
9
9
  destroy(): void;
@@ -1,5 +1,5 @@
1
1
  import { type DebugLogger } from '../../static/Debug';
2
- import StatEventCollector from '../stat/StatEventCollector';
2
+ import StatsLogger from '../StatsLogger';
3
3
  import IEncoder from './IEncoder';
4
4
  import { OnFrameCallback } from './Types';
5
5
  import WorkerBase from './WorkerBase';
@@ -11,7 +11,7 @@ export default class WebCodecsEncoder extends WorkerBase implements IEncoder {
11
11
  private readonly _maxBitrate;
12
12
  private readonly _useCbr;
13
13
  private readonly _frameRate;
14
- constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number, useCbr: boolean, frameRate: number, debug?: DebugLogger, logger?: StatEventCollector | null);
14
+ constructor(sourceTrack: MediaStreamTrack, onFrame: OnFrameCallback, useCongestionControl: boolean, maxBitrate: number, useCbr: boolean, frameRate: number, debug?: DebugLogger, logger?: StatsLogger | null);
15
15
  init(): Promise<void>;
16
16
  requestFrame(keyFrame?: boolean): void;
17
17
  setBitrate(bitrate: number, useCbr: boolean, fps: number): void;
@@ -1,10 +1,10 @@
1
1
  import { type DebugLogger } from '../../static/Debug';
2
- import StatEventCollector from '../stat/StatEventCollector';
2
+ import StatsLogger from '../StatsLogger';
3
3
  export default abstract class WorkerBase {
4
4
  protected _worker: Worker | null;
5
5
  protected readonly _debug: DebugLogger;
6
- protected readonly _logger: StatEventCollector | null;
7
- protected constructor(debug?: DebugLogger, logger?: StatEventCollector | null);
6
+ protected readonly _logger: StatsLogger | null;
7
+ protected constructor(debug?: DebugLogger, logger?: StatsLogger | null);
8
8
  protected _createWorker(workerFunctionData: string, onFrame: (data: any) => void, workerArgs?: any[], initArgs?: {
9
9
  [key: string]: any;
10
10
  }, transfer?: any[]): Promise<void>;
@@ -65,7 +65,6 @@ export default class Conversation extends EventEmitter {
65
65
  private _calleeUnavailableTimer;
66
66
  private _reservedId;
67
67
  private readonly _onUnload;
68
- private readonly _onRestore;
69
68
  private readonly _audioOutput;
70
69
  private readonly _stats;
71
70
  private _lastStalled;
@@ -1,6 +1,6 @@
1
1
  import { type DebugLogger } from '../../static/Debug';
2
2
  import { ParticipantId } from '../../types/Participant';
3
- import StatEventCollector from '../stat/StatEventCollector';
3
+ import StatsLogger from '../StatsLogger';
4
4
  import { ParticipantIdRegistry } from '../ParticipantIdRegistry';
5
5
  import { StatAggregator } from '../stat/StatAggregator';
6
6
  import { IOnStat } from './BaseStreamBuilder';
@@ -14,7 +14,7 @@ export default class ScreenCaptureReceiver {
14
14
  private readonly _debug;
15
15
  private readonly _logger;
16
16
  private readonly _statAggregator;
17
- constructor(datachannel: RTCDataChannel, participantIdRegistry: ParticipantIdRegistry, onStream: (streamId: string, stream: MediaStream) => void, onEos: (streamId: string) => void, onStat: IOnStat, statAggregator?: StatAggregator | null, debug?: DebugLogger, logger?: StatEventCollector | null);
17
+ constructor(datachannel: RTCDataChannel, participantIdRegistry: ParticipantIdRegistry, onStream: (streamId: string, stream: MediaStream) => void, onEos: (streamId: string) => void, onStat: IOnStat, statAggregator?: StatAggregator | null, debug?: DebugLogger, logger?: StatsLogger | null);
18
18
  private _onDataChannelMessage;
19
19
  /**
20
20
  * Отправить запрос ключевого кадра в datachannel.
@@ -1,6 +1,6 @@
1
1
  import BaseSignaling from '../../abstract/BaseSignaling';
2
2
  import { type DebugLogger } from '../../static/Debug';
3
- import StatEventCollector from '../stat/StatEventCollector';
3
+ import StatsLogger from '../StatsLogger';
4
4
  export default class ScreenCaptureSender {
5
5
  private readonly _encoder;
6
6
  private readonly _datachannel;
@@ -25,7 +25,7 @@ export default class ScreenCaptureSender {
25
25
  private readonly _maxFrameDelay;
26
26
  private readonly _debug;
27
27
  private readonly _logger;
28
- constructor(track: MediaStreamTrack, datachannel: RTCDataChannel, signaling: BaseSignaling, fastSharing: boolean, debug?: DebugLogger, logger?: StatEventCollector | null);
28
+ constructor(track: MediaStreamTrack, datachannel: RTCDataChannel, signaling: BaseSignaling, fastSharing: boolean, debug?: DebugLogger, logger?: StatsLogger | null);
29
29
  private _handleQueue;
30
30
  /**
31
31
  * Очищает очередь до опорного кадра
@@ -1,6 +1,6 @@
1
1
  import { type DebugLogger } from '../../static/Debug';
2
2
  import { ParticipantId } from '../../types/Participant';
3
- import StatEventCollector from '../stat/StatEventCollector';
3
+ import StatsLogger from '../StatsLogger';
4
4
  import { StatAggregator } from '../stat/StatAggregator';
5
5
  import { BaseStreamBuilder, FrameData, IOnStat, IOnStream } from './BaseStreamBuilder';
6
6
  export default class StreamBuilder extends BaseStreamBuilder {
@@ -12,7 +12,7 @@ export default class StreamBuilder extends BaseStreamBuilder {
12
12
  private _webCodecsRetryAttempted;
13
13
  private _fpsMeter;
14
14
  private readonly _logger;
15
- constructor(participantId: ParticipantId, onStream: IOnStream, onStat: IOnStat, statAggregator: StatAggregator | null, onKeyFrameRequested: VoidFunction, debug?: DebugLogger, logger?: StatEventCollector | null);
15
+ constructor(participantId: ParticipantId, onStream: IOnStream, onStat: IOnStat, statAggregator: StatAggregator | null, onKeyFrameRequested: VoidFunction, debug?: DebugLogger, logger?: StatsLogger | null);
16
16
  protected _processFrame(frame: FrameData): void;
17
17
  private _initFpsMeter;
18
18
  /**
@@ -1,4 +1,4 @@
1
- import StatEventCollector from './StatEventCollector';
1
+ import StatsLogger from '../StatsLogger';
2
2
  export type CallLifecycleSource = 'outgoing' | 'incoming' | 'join' | 'anonym_join';
3
3
  export interface CallLifecycleInitializationParams {
4
4
  source: CallLifecycleSource;
@@ -20,7 +20,7 @@ export declare class CallLifecycleStats {
20
20
  private _firstMediaSent;
21
21
  private _finished;
22
22
  private _destroyed;
23
- constructor(logger: StatEventCollector, clock?: CallLifecycleClock);
23
+ constructor(logger: StatsLogger, clock?: CallLifecycleClock);
24
24
  get firstMediaSentReported(): boolean;
25
25
  get terminated(): boolean;
26
26
  markInitializationStarted({ source, conversationId }: CallLifecycleInitializationParams): void;
@@ -1,5 +1,5 @@
1
1
  import { StatItem } from '../../types/Statistics';
2
- import StatEventCollector from './StatEventCollector';
2
+ import StatsLogger from '../StatsLogger';
3
3
  import TransportTopology from '../../enums/TransportTopology';
4
4
  export type CodecKind = 'audio' | 'video';
5
5
  /**
@@ -11,7 +11,7 @@ export declare class CodecStatsAggregator {
11
11
  private readonly _logger;
12
12
  private readonly _codecUsages;
13
13
  private readonly getCurrentTransportTopology;
14
- constructor(logger: StatEventCollector, getCurrentTransportTopology: () => TransportTopology | undefined);
14
+ constructor(logger: StatsLogger, getCurrentTransportTopology: () => TransportTopology | undefined);
15
15
  reportUsage(stat: StatItem): void;
16
16
  private saveUsage;
17
17
  private report;
@@ -2,36 +2,20 @@ import BaseApi from '../../abstract/BaseApi';
2
2
  import BaseLogger from '../../abstract/BaseLogger';
3
3
  import TransportTopology from '../../enums/TransportTopology';
4
4
  import HangupReason from '../HangupReason';
5
- import StatEventCollector from './StatEventCollector';
5
+ import StatsLogger from '../StatsLogger';
6
6
  import { CallLifecycleStats } from './CallLifecycleStats';
7
7
  import { CodecStatsAggregator } from './CodecStatsAggregator';
8
8
  import { StatAggregator } from './StatAggregator';
9
9
  import { StatPings } from './StatPings';
10
10
  import { StatSignalingCommands } from './StatSignalingCommands';
11
11
  export declare class ConversationStats {
12
- readonly logger: StatEventCollector;
12
+ readonly logger: StatsLogger;
13
13
  readonly lifecycle: CallLifecycleStats;
14
14
  readonly statAggregator: StatAggregator;
15
15
  readonly codecStatsAggregator: CodecStatsAggregator;
16
16
  readonly pings: StatPings;
17
17
  readonly signalingCommands: StatSignalingCommands;
18
- private _unloading;
19
18
  constructor(api: BaseApi, externalLogger: BaseLogger | null, getConversationId: () => string | null, getTopology: () => TransportTopology | undefined);
20
- /**
21
- * Вызывается из pagehide-обработчика: события финиша должны пережить смерть вкладки.
22
- *
23
- * Сводки пингов и команд сбрасываем здесь же: обычный путь делает это в
24
- * flushCallMetrics(), а destroy() их только очищает. Если flushCallMetrics()
25
- * уже отработал, трекеры пусты и повторной записи не будет.
26
- */
27
- prepareForUnload(): void;
28
- /**
29
- * Вкладка пережила pagehide: bfcache вернул документ живым.
30
- *
31
- * Возвращаем запись в очередь и переносим туда журнал — статистика этого
32
- * звонка ещё может уехать в этой же сессии.
33
- */
34
- restoreAfterUnload(): void;
35
19
  logHangup(reason: HangupReason): void;
36
20
  flushCallMetrics(): void;
37
21
  destroy(): void;
@@ -1,11 +1,11 @@
1
1
  import { ICallStatLog } from '../../types/PerfStatReporter';
2
2
  import { IEventualStatLog } from '../../types/IEventualStatLog';
3
- import StatEventCollector from './StatEventCollector';
3
+ import StatsLogger from '../StatsLogger';
4
4
  export declare class StatAggregator {
5
5
  private readonly _logger;
6
6
  private readonly _eventualLogs;
7
7
  private _lastCallStatContext;
8
- constructor(logger: StatEventCollector);
8
+ constructor(logger: StatsLogger);
9
9
  logCallStat(params: ICallStatLog): void;
10
10
  /** @link https://wiki.odkl.ru/pages/viewpage.action?pageId=100892588 */
11
11
  logEventualStat(params: IEventualStatLog): void;
@@ -1,10 +1,10 @@
1
1
  import { SignalingTransportType } from '../../enums/SignalingTransportStat';
2
- import StatEventCollector from './StatEventCollector';
2
+ import StatsLogger from '../StatsLogger';
3
3
  export declare class StatPings {
4
4
  private readonly _logger;
5
5
  private trackerByTransport;
6
6
  private lastSeen;
7
- constructor(logger: StatEventCollector);
7
+ constructor(logger: StatsLogger);
8
8
  /**
9
9
  * Вызывать при входящем ping в сигналингу.
10
10
  * Будет произведен расчет времени между пингами.
@@ -1,9 +1,9 @@
1
1
  import { SignalingTransportType } from '../../enums/SignalingTransportStat';
2
- import StatEventCollector from './StatEventCollector';
2
+ import StatsLogger from '../StatsLogger';
3
3
  export declare class StatSignalingCommands {
4
4
  private readonly _logger;
5
5
  private trackerByCommand;
6
- constructor(logger: StatEventCollector);
6
+ constructor(logger: StatsLogger);
7
7
  mark(command: string, time: number, transport: SignalingTransportType): void;
8
8
  /** Отправляем данные в стату */
9
9
  logMetrics(): void;
@@ -3,7 +3,7 @@ import BaseSignaling from '../../abstract/BaseSignaling';
3
3
  import { type DebugLogger } from '../../static/Debug';
4
4
  import { ParticipantId } from '../../types/Participant';
5
5
  import ServerSettings from '../../types/ServerSettings';
6
- import StatEventCollector from '../stat/StatEventCollector';
6
+ import StatsLogger from '../StatsLogger';
7
7
  import { MediaSource } from '../MediaSource';
8
8
  import { CodecStatsAggregator } from '../stat/CodecStatsAggregator';
9
9
  import { StatAggregator } from '../stat/StatAggregator';
@@ -43,7 +43,7 @@ export default class DirectTransport extends BaseTransport {
43
43
  private readonly _logger;
44
44
  private readonly _statAggregator;
45
45
  private readonly _codecStatsAggregator;
46
- constructor(participantId: ParticipantId, isMaster: boolean, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
46
+ constructor(participantId: ParticipantId, isMaster: boolean, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
47
47
  get participantId(): ParticipantId;
48
48
  updateStatisticsInterval(): void;
49
49
  private _isDeadConnection;
@@ -3,7 +3,7 @@ import BaseSignaling from '../../abstract/BaseSignaling';
3
3
  import { type DebugLogger } from '../../static/Debug';
4
4
  import { ParticipantId } from '../../types/Participant';
5
5
  import ServerSettings from '../../types/ServerSettings';
6
- import StatEventCollector from '../stat/StatEventCollector';
6
+ import StatsLogger from '../StatsLogger';
7
7
  import { MediaSource } from '../MediaSource';
8
8
  import { CodecStatsAggregator } from '../stat/CodecStatsAggregator';
9
9
  import { StatAggregator } from '../stat/StatAggregator';
@@ -47,7 +47,7 @@ export default class ServerTransport extends BaseTransport {
47
47
  private readonly _statAggregator;
48
48
  private readonly _codecStatsAggregator;
49
49
  private readonly _simulcast;
50
- constructor(signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
50
+ constructor(signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
51
51
  updateStatisticsInterval(): void;
52
52
  open(observer?: boolean): void;
53
53
  close(error?: Error): void;
@@ -2,7 +2,7 @@ import BaseSignaling from '../../abstract/BaseSignaling';
2
2
  import { type DebugLogger } from '../../static/Debug';
3
3
  import type VideoSettings from '../../types/VideoSettings';
4
4
  import { MediaSource } from '../MediaSource';
5
- import StatEventCollector from '../stat/StatEventCollector';
5
+ import StatsLogger from '../StatsLogger';
6
6
  export default class SimulcastSender {
7
7
  private _pc;
8
8
  private _transceiver;
@@ -12,7 +12,7 @@ export default class SimulcastSender {
12
12
  private readonly _getCameraSettings;
13
13
  private readonly _debug;
14
14
  private readonly _logger;
15
- constructor(signaling: BaseSignaling, mediaSource: MediaSource, getCameraSettings: () => VideoSettings | null, debug?: DebugLogger, logger?: StatEventCollector | null);
15
+ constructor(signaling: BaseSignaling, mediaSource: MediaSource, getCameraSettings: () => VideoSettings | null, debug?: DebugLogger, logger?: StatsLogger | null);
16
16
  configureFromRemoteOffer(pc: RTCPeerConnection): Promise<void>;
17
17
  finalizeAnswer(sdp: string): string;
18
18
  sync({ force }?: {
@@ -6,7 +6,7 @@ import { type DebugLogger } from '../../static/Debug';
6
6
  import { ParticipantId } from '../../types/Participant';
7
7
  import ServerSettings from '../../types/ServerSettings';
8
8
  import EventEmitter from '../EventEmitter';
9
- import StatEventCollector from '../stat/StatEventCollector';
9
+ import StatsLogger from '../StatsLogger';
10
10
  import { MediaSource } from '../MediaSource';
11
11
  import { CodecStatsAggregator } from '../stat/CodecStatsAggregator';
12
12
  import { StatAggregator } from '../stat/StatAggregator';
@@ -51,7 +51,7 @@ export declare class Transport extends EventEmitter {
51
51
  private readonly _onFirstMediaSent;
52
52
  private _firstMediaSentProbeStopped;
53
53
  private _vadController;
54
- constructor(topology: TransportTopology, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
54
+ constructor(topology: TransportTopology, signaling: BaseSignaling, mediaSource: MediaSource, serverSettings: ServerSettings, debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, codecStatsAggregator?: CodecStatsAggregator | null, onFirstMediaSent?: (() => void) | null);
55
55
  updateSettings(settings: ServerSettings): void;
56
56
  updateStatisticsInterval(): void;
57
57
  allocate(participantId: ParticipantId, isMaster?: boolean): void;
package/default/Api.d.ts CHANGED
@@ -14,36 +14,14 @@ export default class Api extends BaseApi {
14
14
  protected _call(method: string, data?: any, noSession?: boolean, allowReauthorize?: boolean): Promise<any>;
15
15
  userId(participantId: ParticipantId): ExternalParticipantId | null;
16
16
  authorize(): Promise<void>;
17
- /**
18
- * Запрос auth.anonymLogin без побочных эффектов: ничего не пишет в
19
- * AuthData и кэш. Пустой токен — анонимный логин версии 2.
20
- */
21
- private _anonymLogin;
22
17
  private _getAnonymLoginCacheKey;
23
18
  private _getCachedAnonymLogin;
24
19
  private _setCachedAnonymLogin;
25
20
  private _removeCachedAnonymLogin;
26
21
  private _reauthorize;
27
22
  private _applyAnonymLogin;
28
- private _buildClientStatsData;
29
- /**
30
- * Ошибки по отдельным событиям логируются, но не влияют на результат:
31
- * батч трактуется целиком, иначе одно всегда отвергаемое событие
32
- * залипило бы очередь навсегда.
33
- */
34
- private _reportClientStatsItemErrors;
35
- /**
36
- * noSession = true: _prepareQuery не подставит session_key из AuthData,
37
- * наш явный ключ останется; application_key добавится как обычно.
38
- */
39
- private _sendClientStatsWith;
40
- /**
41
- * Бекенд присылает 200 в любой ситуации, нужно читать тело.
42
- * В теле есть ошибки если есть проблемы со статой.
43
- */
44
23
  private _sendClientStats;
45
- logClientStats(items: ClientStats[]): Promise<void>;
46
- logClientStatsWith(sessionKey: string, items: ClientStats[]): Promise<void>;
24
+ logClientStats(items: ClientStats[]): void;
47
25
  uploadDebugLogs(conversationId: string, startTime: number, endTime: number, log: string): Promise<void>;
48
26
  joinConversation(conversationId: string, isVideo?: boolean, chatId?: string): Promise<ConversationResponse>;
49
27
  createConversation(conversationId: string, payload?: string, requireAuthToJoin?: boolean, { onlyAdminCanShareMovie, audienceMode, audioOnly, waitForAdmin, closedConversation, }?: {
@@ -4,7 +4,7 @@ import { SharingStatReport } from '../classes/screenshare/SharingStatReport';
4
4
  import { StatAggregator } from '../classes/stat/StatAggregator';
5
5
  import { StatPings } from '../classes/stat/StatPings';
6
6
  import { StatSignalingCommands } from '../classes/stat/StatSignalingCommands';
7
- import StatEventCollector from '../classes/stat/StatEventCollector';
7
+ import StatsLogger from '../classes/StatsLogger';
8
8
  import ConversationFeature from '../enums/ConversationFeature';
9
9
  import ConversationOption from '../enums/ConversationOption';
10
10
  import MediaOption from '../enums/MediaOption';
@@ -56,7 +56,7 @@ export default class Signaling extends BaseSignaling {
56
56
  private static get WAIT_CONNECTION_DELAY();
57
57
  private static get WAIT_RESPONSE_DELAY();
58
58
  get ready(): boolean;
59
- constructor(debug?: DebugLogger, logger?: StatEventCollector | null, statAggregator?: StatAggregator | null, statPings?: StatPings | null, statSignalingCommands?: StatSignalingCommands | null);
59
+ constructor(debug?: DebugLogger, logger?: StatsLogger | null, statAggregator?: StatAggregator | null, statPings?: StatPings | null, statSignalingCommands?: StatSignalingCommands | null);
60
60
  setAbortSignal(signal: AbortSignal | undefined): void;
61
61
  setEndpoint(endpoint: string): void;
62
62
  setWebTransportEndpoint(endpoint: string | null): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/calls-sdk",
3
- "version": "2.8.13-dev.3b07b09d.0",
3
+ "version": "2.8.13-dev.63c885d4.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",
@@ -1,9 +1,5 @@
1
1
  import { IAPIBaseUrl, IApiEnv } from '../types/Params';
2
2
  export declare function resetApiEndpoint(): void;
3
- /**
4
- * Убираем слэш на конце
5
- */
6
- export declare function sanitizeApiBaseUrl(url: IAPIBaseUrl): IAPIBaseUrl;
7
3
  export declare function _resolveApiEndpoint(apiBaseUrl?: IAPIBaseUrl, apiEnv?: IApiEnv): Promise<string>;
8
4
  export declare function sendBeakon(method: string, params?: {
9
5
  [key: string]: any;
@@ -38,28 +38,10 @@ export type ParamsObject = {
38
38
  /** @hidden */
39
39
  clientStatsPlatform: string;
40
40
  /**
41
- * Автоматически запускать отправку клиентской статистики при `init()`.
42
- *
43
- * Если `false`, события звонков продолжают копиться в IndexedDB, но в сеть
44
- * не уходят, пока хост не вызовет `startStats()`. Так хост может прогреть
45
- * приложение, не нагружая сеть. До старта неактивен и fallback прямой
46
- * отправки при недоступном хранилище. Если `startStats()` не вызвать
47
- * никогда, очередь дорастёт до лимита и начнёт вытеснять старые звонки.
48
- *
49
- * _По умолчанию: `true`_
50
- */
51
- autoStartStats: boolean;
52
- /**
53
- * Персистентная очередь клиентской статистики.
54
- *
55
- * Включённая — события копятся в IndexedDB и уезжают пачками с
56
- * подтверждением, переживая перезагрузку вкладки. Выключенная возвращает
57
- * старую схему: накопление в памяти, отправка раз в три секунды без
58
- * подтверждения, всё несохранённое теряется вместе с вкладкой.
59
- *
60
- * _По умолчанию: `false`_
41
+ * Версия приложения-хоста, уходит в статистику и сигналинг, например `'26.31.0:6822'`.
42
+ * По умолчанию `'0.0.0'`
61
43
  */
62
- statQueueEnabled: boolean;
44
+ appVersion: string;
63
45
  /** @hidden */
64
46
  clientType: string;
65
47
  /** @hidden */
@@ -950,7 +932,7 @@ export default abstract class Params {
950
932
  static getScreenFrameRate(fastScreenShare: boolean): number;
951
933
  static get<N extends keyof ParamsObject>(name: N): ParamsObject[N];
952
934
  static get appName(): string;
953
- static get appVersion(): number;
935
+ static get appVersion(): string;
954
936
  static get sdkVersion(): string;
955
937
  static get debug(): boolean;
956
938
  static get protocolVersion(): 5 | 6;
@@ -958,8 +940,6 @@ export default abstract class Params {
958
940
  static set platform(value: string);
959
941
  static get clientStatsPlatform(): string;
960
942
  static set clientStatsPlatform(value: string);
961
- static get autoStartStats(): boolean;
962
- static get statQueueEnabled(): boolean;
963
943
  static get clientType(): string;
964
944
  static set clientType(value: string);
965
945
  static get externalUserType(): string;
@@ -1112,8 +1092,7 @@ export default abstract class Params {
1112
1092
  movieShare: boolean;
1113
1093
  clientType: string;
1114
1094
  clientStatsPlatform: string;
1115
- autoStartStats: boolean;
1116
- statQueueEnabled: boolean;
1095
+ appVersion: string;
1117
1096
  consumerScreenDataChannelPacketSize: number;
1118
1097
  switchVideoAtBadNetwork: boolean;
1119
1098
  simulcast: boolean;
@@ -2,7 +2,7 @@
2
2
  * Вспомогательный плагин для работы с WebRTC
3
3
  */
4
4
  import { IVideoDimentions } from '../types/MediaSettings';
5
- import type StatEventCollector from '../classes/stat/StatEventCollector';
5
+ import type StatsLogger from '../classes/StatsLogger';
6
6
  import { type DebugLogger } from './Debug';
7
7
  /**
8
8
  * Тип камеры мобильного устройства
@@ -85,24 +85,24 @@ declare namespace WebRTCUtils {
85
85
  * @param needAudio Нужно ли аудио
86
86
  * @param needEmptyTracks Добавлять ли в стрим пустые треки для отключенного видео/аудио
87
87
  */
88
- function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean, debug?: DebugLogger, logger?: StatEventCollector | null): Promise<MediaStream>;
88
+ function getUserMedia(needVideo?: boolean, needAudio?: boolean, needEmptyTracks?: boolean, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
89
89
  /**
90
90
  * Запрашивает трансляцию экрана пользователя с опциональным захватом звука
91
91
  */
92
- function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean, debug?: DebugLogger, logger?: StatEventCollector | null): Promise<MediaStream>;
92
+ function getScreenMedia(fastScreenShare: boolean, withAudioShare: boolean, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
93
93
  /**
94
94
  * Запрашивает камеру пользователя
95
95
  *
96
96
  * @param deviceId ID устройства
97
97
  * @param resolution Размеры видео
98
98
  */
99
- function getUserVideo(deviceId?: string, resolution?: IVideoDimentions, debug?: DebugLogger, logger?: StatEventCollector | null): Promise<MediaStream>;
99
+ function getUserVideo(deviceId?: string, resolution?: IVideoDimentions, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
100
100
  /**
101
101
  * Запрашивает микрофон пользователя
102
102
  *
103
103
  * @param deviceId ID устройства
104
104
  */
105
- function getUserAudio(deviceId?: string, debug?: DebugLogger, logger?: StatEventCollector | null): Promise<MediaStream>;
105
+ function getUserAudio(deviceId?: string, debug?: DebugLogger, logger?: StatsLogger | null): Promise<MediaStream>;
106
106
  /**
107
107
  * Устанавливает размер видео в стриме
108
108
  *
@@ -1,35 +0,0 @@
1
- import BaseApi from '../../abstract/BaseApi';
2
- /**
3
- * Поправка часов устройства к серверному времени для статистики.
4
- *
5
- * delta = Date.now() - serverTime, меряется один раз за сессию. Запись
6
- * очереди несёт дельту, известную на момент записи: отправка может пройти
7
- * в другой сессии, когда часы уже уехали. Записи, сделанные до измерения,
8
- * получают его задним числом — но только свои: хвосты прошлых запусков
9
- * писались другими часами.
10
- */
11
- export default abstract class StatClock {
12
- private static _api;
13
- private static _delta;
14
- private static _pending;
15
- /** Ключи своих записей, ушедших в очередь до измерения. */
16
- private static _idsAwaitingDelta;
17
- private static _lastFailureAt;
18
- static setApi(value: BaseApi): void;
19
- /** Дельта из кэша, без запроса. null — ещё не измерена. */
20
- static delta(): number | null;
21
- /** Запускает измерение, если его ещё нет. Результата не ждёт. */
22
- static ensure(): void;
23
- /** Дельта для отправки: измеренная, иначе 0 — время устройства. */
24
- static get(): Promise<number>;
25
- /**
26
- * Вызывается коллектором после записи события без дельты.
27
- *
28
- * Ключ приходит асинхронно, уже после append, поэтому измерение может
29
- * закончиться раньше: тогда размечаем запись сразу, иначе она осталась
30
- * бы без поправки навсегда.
31
- */
32
- static noteAppended(id: number): void;
33
- private static _hasCredentials;
34
- private static _measure;
35
- }