@vkontakte/videoplayer-statistics 1.0.28 → 1.0.30

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.
package/Api.d.ts DELETED
@@ -1,68 +0,0 @@
1
- import { ConnectionReused, ConnectionType, ContentType, Quality, ScreenDestination, StatType } from './types';
2
- import { IApiTransport } from './ApiTransport';
3
- import { ISubject, IError, ValueSubject, IValueObservable } from '@vkontakte/videoplayer-shared';
4
- export interface ILogItem {
5
- operation: string;
6
- timestamp: number;
7
- custom: ILogCustomData;
8
- }
9
- export interface ILogCustomData {
10
- /**
11
- * Id видео
12
- */
13
- vid: number;
14
- /**
15
- * Сессия смотрения, уникальна для пользователя, контента, экземпляра плеера и одного просмотра
16
- * См https://confluence.vk.team/display/VID/Video%20Session%20ID
17
- */
18
- vsid?: string;
19
- quality?: Quality;
20
- dst?: ScreenDestination;
21
- ct?: ContentType;
22
- aid?: string;
23
- place?: string;
24
- cdn_host?: string;
25
- connection_type?: ConnectionType;
26
- connection_reused?: ConnectionReused;
27
- stat_type?: StatType;
28
- vk_playlist_id?: string;
29
- vk_app_id?: string;
30
- track_code?: string;
31
- /**
32
- * Параметр события (имеет разный смысл в каждом из событий)
33
- */
34
- param?: any;
35
- }
36
- export interface IApi {
37
- authorize(authToken?: string): Promise<string | undefined>;
38
- logRequest(items: ILogItem[]): Promise<void>;
39
- logBeacon(items: ILogItem[]): void;
40
- authorized$: IValueObservable<boolean>;
41
- destroy(): void;
42
- }
43
- export interface IApiParams {
44
- apiTransport: IApiTransport;
45
- refreshAuthToken?: () => Promise<string>;
46
- requestRetryCount: number;
47
- error$: ISubject<IError>;
48
- }
49
- export default class Api implements IApi {
50
- private params;
51
- private uuid;
52
- private authToken;
53
- private sessionKey;
54
- private authorizePromise?;
55
- private refreshAuthTokenPromise?;
56
- private consequentAuthErrors;
57
- authorized$: ValueSubject<boolean>;
58
- private backoffTimeoutId;
59
- constructor(params: IApiParams);
60
- authorize(authToken?: string): Promise<string | undefined>;
61
- logBeacon(items: ILogItem[]): void;
62
- logRequest(items: ILogItem[]): Promise<void>;
63
- destroy(): void;
64
- private refreshAuthToken;
65
- private createLogParams;
66
- private _authorizeWithBackoff;
67
- private _authorize;
68
- }
package/ApiTransport.d.ts DELETED
@@ -1,27 +0,0 @@
1
- import { IError, ISubject } from '@vkontakte/videoplayer-shared';
2
- import { ApiEnv } from './types';
3
- import type { TimeSynchronisation } from './utils/timeSynchronisation';
4
- export interface IApiTransportParams {
5
- apiKey: string;
6
- apiBaseUrl: string;
7
- apiEnv: ApiEnv;
8
- error$: ISubject<IError>;
9
- timeSynchronisation: TimeSynchronisation;
10
- }
11
- export interface IApiTransport {
12
- sendBeacon(method: string, params: Record<string, unknown>, sessionKey?: string): boolean;
13
- sendRequest<T = unknown>(method: string, params: Record<string, unknown>, sessionKey?: string): Promise<T>;
14
- }
15
- export default class ApiTransport implements IApiTransport {
16
- private apiKey;
17
- private apiBaseUrl;
18
- private apiEnv;
19
- private timeSynchronisation;
20
- private isApiBaseUrlFetched;
21
- private params;
22
- constructor(params: IApiTransportParams);
23
- private resolveApiBaseUrl;
24
- sendBeacon(method: string, params: Record<string, unknown>, sessionKey?: string): boolean;
25
- sendRequest<T = unknown>(method: string, params: Record<string, unknown>, sessionKey?: string): Promise<T>;
26
- private _prepareQueryParams;
27
- }
package/Logger.d.ts DELETED
@@ -1,39 +0,0 @@
1
- import { IError, ISubject } from '@vkontakte/videoplayer-shared';
2
- import { IApi, ILogItem } from './Api';
3
- export interface ILogger {
4
- /**
5
- * Ставит элемент в очередь на отправку
6
- */
7
- log(item: ILogItem): void;
8
- /**
9
- * Отправляет и очищает текущую очередь принудительно
10
- */
11
- flush(useBeacon?: boolean): void;
12
- /**
13
- * Ставит отправку событий на паузу. Они будут накапливаться до вызова `resume()`
14
- */
15
- pause(): void;
16
- /**
17
- * Снимает паузу отправки событий
18
- */
19
- resume(): void;
20
- destroy(): void;
21
- }
22
- export interface ILoggerParams {
23
- api: IApi;
24
- error$: ISubject<IError>;
25
- }
26
- export declare class Logger implements ILogger {
27
- private api;
28
- private error$;
29
- private requestQueue;
30
- private subscription;
31
- private isPaused;
32
- private debouncedFlush;
33
- constructor(params: ILoggerParams);
34
- log(item: ILogItem): void;
35
- flush(useBeacon?: boolean): void;
36
- pause(): void;
37
- resume(): void;
38
- destroy(): void;
39
- }
package/OneStat.d.ts DELETED
@@ -1,228 +0,0 @@
1
- import { IError, IObservable, ISubscription, Milliseconds, Seconds } from '@vkontakte/videoplayer-shared';
2
- import type { IPlayer } from '@vkontakte/videoplayer-core';
3
- import { ILogCustomData } from './Api';
4
- import { ApiEnv, ConnectionType, ContentType, Quality, ScreenDestination } from './types';
5
- export interface IOneStat {
6
- /**
7
- * Лучше авторизоваться сразу, чтобы избежать ситуации:
8
- * 1. Накапливаем запросы в очереди через debounce send
9
- * 2. Пользователь закрывает приложение
10
- * 3. Запрос пытается уйти через sendBeacon и падает без авторизации
11
- */
12
- authorize(): Promise<unknown>;
13
- /**
14
- * Обновляет общие параметры событий
15
- */
16
- updateContext(context: Partial<IStatContext>): void;
17
- attachTo(player: IPlayer): ISubscription;
18
- /**
19
- * Ставит отправку событий на паузу. Они будут накапливаться до вызова `resume()`
20
- */
21
- pause(): void;
22
- /**
23
- * Снимает паузу отправки событий
24
- */
25
- resume(): void;
26
- /**
27
- * Деструктор класса
28
- */
29
- destroy(): void;
30
- /**
31
- * Сбрасывает сессию смотрения
32
- */
33
- resetViewSession(): void;
34
- /**
35
- * Отключает отправку полей событий
36
- */
37
- setFieldBlacklist(fields: (keyof ILogCustomData)[]): void;
38
- /**
39
- * Плеер создался и получил ссылку
40
- */
41
- logInited(): void;
42
- /**
43
- * Плеер готов начать воспроизведение
44
- */
45
- logReady(payload: IReadyPayload): void;
46
- /**
47
- * Первый старт видео. Отправляется 1 раз, когда фактически началось воспроизведение ролика, а также после зацикливания, но не после паузы.
48
- *
49
- * В документации API может называться `play`
50
- */
51
- logStarted(payload: IActionPlayPayload): void;
52
- /**
53
- * Возобновление после паузы
54
- *
55
- * В документации API может называться `play_toggle`
56
- */
57
- logPlay(): void;
58
- /**
59
- * Постановка видео на паузу
60
- */
61
- logPause(payload: IPausePayload): void;
62
- /**
63
- * перемотка видео
64
- */
65
- logSeek(): void;
66
- /**
67
- * Промежутки видео, которые были просмотрены пользователем.
68
- * Время указывается в секундах от начала ролика (т.е. является позицией).
69
- */
70
- logWatchCoverageRecord(payload: IWatchCoveragePayload): void;
71
- /**
72
- * Промежутки видео, которые были просмотрены пользователем.
73
- * Время указывается в виде UTC timestamp'ов.
74
- */
75
- logWatchCoverageLive(payload: IWatchCoveragePayload): void;
76
- /**
77
- * Буфер пуст и пользователь видит залипший кадр.
78
- */
79
- logEmptyBuffer(payload: IEmptyBufferPayload): void;
80
- /**
81
- * Получен первый кусок данных контента от сервера раздачи видео
82
- */
83
- logFirstBytes(payload: IFirstBytesPayload): void;
84
- /**
85
- * Пользователь увидел первый кадр
86
- */
87
- logFirstFrame(payload: IFirstFramePayload): void;
88
- logDownloadSpeed(payload: IDownloadSpeedPayload): void;
89
- /**
90
- * произошла ошибка
91
- */
92
- logError(payload: IErrorPayload): void;
93
- logAdSlotRequest(): void;
94
- logAdStarted(sectionType: string): void;
95
- logAdPaused(): void;
96
- logAdResumed(): void;
97
- logAdEnded(): void;
98
- logAdSkipped(): void;
99
- logAdClicked(): void;
100
- experimental: {
101
- error$: IObservable<IError>;
102
- };
103
- }
104
- export interface IActionPlayPayload {
105
- /**
106
- * время в секундах от начала ролика
107
- */
108
- position: Seconds;
109
- }
110
- export interface IPausePayload {
111
- /**
112
- * время в секундах: сколько просмотрено от начала ролика
113
- */
114
- position: Seconds;
115
- }
116
- export interface IReadyPayload {
117
- /**
118
- * время в миллисекундах с события inited
119
- */
120
- time: Milliseconds;
121
- }
122
- export interface IFirstBytesPayload {
123
- /**
124
- * время в миллисекундах с события inited
125
- */
126
- time: Milliseconds;
127
- }
128
- export interface IFirstFramePayload {
129
- /**
130
- * время в миллисекундах с события inited
131
- */
132
- time: Milliseconds;
133
- }
134
- export interface IEmptyBufferPayload {
135
- /**
136
- * время в миллисекундах которое пользователь видел застывшую картинку
137
- */
138
- duration: Milliseconds;
139
- }
140
- export interface IDownloadSpeedPayload {
141
- /**
142
- * Скорость в килобайтах (!) в секунду
143
- */
144
- speed: number;
145
- }
146
- export interface IErrorPayload {
147
- /**
148
- * строка из символов(без пробелов): тип ошибки
149
- */
150
- errorType: string;
151
- }
152
- export interface IStatContext {
153
- /**
154
- * Ид видео
155
- */
156
- movieId: number;
157
- quality?: Quality;
158
- destination?: ScreenDestination;
159
- contentType?: ContentType;
160
- albumId?: string;
161
- vkPlaylistId?: string;
162
- vkAppId?: string;
163
- /**
164
- * Раздел сайта на котором играет видео: Лента, плеер, личные сообщения, ...
165
- */
166
- place?: string;
167
- cdnHostname?: string;
168
- connectionType?: ConnectionType;
169
- connectionReused?: boolean;
170
- autoplay?: boolean;
171
- trackCode?: string;
172
- }
173
- export interface IConfig {
174
- requestRetryCount: number;
175
- }
176
- export interface IConstructorParams {
177
- apiEnv: ApiEnv;
178
- config?: Partial<IConfig>;
179
- refreshAuthToken?: () => Promise<string>;
180
- }
181
- export interface IWatchCoveragePayload {
182
- start: number;
183
- end: number;
184
- }
185
- export declare class OneStat implements IOneStat {
186
- private api;
187
- private logger;
188
- private config;
189
- private subscription;
190
- private timeSynchronisation;
191
- experimental: {
192
- error$: IObservable<IError>;
193
- };
194
- private statContext;
195
- private vsid;
196
- private fieldBlacklist;
197
- constructor(statContext: IStatContext, params: IConstructorParams);
198
- updateContext(newContext: Partial<IStatContext>): void;
199
- attachTo(player: IPlayer): ISubscription;
200
- authorize(authToken?: string): Promise<unknown>;
201
- pause(): void;
202
- resume(): void;
203
- destroy(): void;
204
- resetViewSession(): void;
205
- setFieldBlacklist(fields?: (keyof ILogCustomData)[]): void;
206
- logInited(): void;
207
- logReady(payload: IReadyPayload): void;
208
- logStarted(payload: IActionPlayPayload): void;
209
- logPlay(): void;
210
- logPause(payload: IPausePayload): void;
211
- logSeek(): void;
212
- logFirstBytes(payload: IFirstBytesPayload): void;
213
- logFirstFrame(payload: IFirstFramePayload): void;
214
- logError(payload: IErrorPayload): void;
215
- logWatchCoverageRecord(payload: IWatchCoveragePayload): void;
216
- logWatchCoverageLive(payload: IWatchCoveragePayload): void;
217
- logEmptyBuffer(payload: IEmptyBufferPayload): void;
218
- logDownloadSpeed(payload: IDownloadSpeedPayload): void;
219
- logAdSlotRequest(): void;
220
- logAdStarted(sectionType: string): void;
221
- logAdPaused(): void;
222
- logAdResumed(): void;
223
- logAdEnded(): void;
224
- logAdSkipped(): void;
225
- logAdClicked(): void;
226
- private log;
227
- private createLogItem;
228
- }
@@ -1,4 +0,0 @@
1
- export declare const fetch: any;
2
- export declare const Request: any;
3
- export declare const AbortController: any;
4
- export declare const AbortSignal: any;
package/env.d.ts DELETED
@@ -1,8 +0,0 @@
1
- import { ApiEnv } from './types';
2
- export declare const APP_VERSION: string;
3
- export declare const APP_NAME: string;
4
- /**
5
- * Application ID: 512000749287.
6
- */
7
- export declare const API_KEY: string;
8
- export declare const API_BASE_URLS: Record<ApiEnv, string>;
package/es2015.cjs.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { IOneStat, OneStat, IStatContext } from './OneStat';
2
- import { ApiEnv, ContentType, ScreenDestination, Quality, ConnectionType } from './types';
3
- export { OneStat, IOneStat, IStatContext, ApiEnv, ContentType, ScreenDestination, Quality, ConnectionType };
package/es2015.esm.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { IOneStat, OneStat, IStatContext } from './OneStat';
2
- import { ApiEnv, ContentType, ScreenDestination, Quality, ConnectionType } from './types';
3
- export { OneStat, IOneStat, IStatContext, ApiEnv, ContentType, ScreenDestination, Quality, ConnectionType };
package/es2018.cjs.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { IOneStat, OneStat, IStatContext } from './OneStat';
2
- import { ApiEnv, ContentType, ScreenDestination, Quality, ConnectionType } from './types';
3
- export { OneStat, IOneStat, IStatContext, ApiEnv, ContentType, ScreenDestination, Quality, ConnectionType };
package/es2018.esm.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { IOneStat, OneStat, IStatContext } from './OneStat';
2
- import { ApiEnv, ContentType, ScreenDestination, Quality, ConnectionType } from './types';
3
- export { OneStat, IOneStat, IStatContext, ApiEnv, ContentType, ScreenDestination, Quality, ConnectionType };
package/esnext.esm.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import { IOneStat, OneStat, IStatContext } from './OneStat';
2
- import { ApiEnv, ContentType, ScreenDestination, Quality, ConnectionType } from './types';
3
- export { OneStat, IOneStat, IStatContext, ApiEnv, ContentType, ScreenDestination, Quality, ConnectionType };
package/types.d.ts DELETED
@@ -1,50 +0,0 @@
1
- export declare enum ApiEnv {
2
- PROD = "prod",
3
- VK_ALIAS = "vk_alias",
4
- VIDEOTEST = "videotest",
5
- TEST = "test",
6
- AUTO = "auto"
7
- }
8
- export declare enum Quality {
9
- Q144P = "144",
10
- Q240P = "240",
11
- Q360P = "360",
12
- Q480P = "480",
13
- Q720P = "720",
14
- Q1080P = "1080",
15
- Q1440P = "1440",
16
- Q2160P = "2160",
17
- Q4320P = "4320",
18
- UNKNOWN = "unknown"
19
- }
20
- export declare enum ScreenDestination {
21
- CHROMECAST = "chromecast",
22
- APPLE_TV = "appletv",
23
- PIP = "pip",
24
- HEADPHONES = "externalHeadphones",
25
- SCREEN = ""
26
- }
27
- export declare enum ContentType {
28
- MP4 = "mp4",
29
- DASH = "dash",
30
- DASH_SEP = "dash_sep",
31
- ONDEMAND_DASH = "ondemand_dash",
32
- HLS = "hls",
33
- ONDEMAND_HLS = "ondemand_hls",
34
- WEBM = "webm",
35
- RTMP = "rtmp",
36
- UNKNOWN = "unknown"
37
- }
38
- export declare enum StatType {
39
- AUTO = "auto",
40
- MANUAL = ""
41
- }
42
- export declare enum ConnectionType {
43
- HTTP1 = "http1",
44
- HTTP2 = "http2",
45
- HTTP3 = "http3"
46
- }
47
- export declare enum ConnectionReused {
48
- YES = 1,
49
- NO = 0
50
- }
@@ -1,5 +0,0 @@
1
- import { VideoFormat, VideoQuality, HttpConnectionType as CoreConnectionType } from '@vkontakte/videoplayer-core';
2
- import { ContentType, Quality, ConnectionType as StatisticsConnectionType } from '../types';
3
- export declare const quality: (coreQuality: VideoQuality | undefined) => Quality | undefined;
4
- export declare const connectionType: (coreType: CoreConnectionType | undefined) => StatisticsConnectionType | undefined;
5
- export declare const contentType: (format: VideoFormat | undefined) => ContentType | undefined;
@@ -1,11 +0,0 @@
1
- /**
2
- * LocalStorage
3
- * Перенесено из "звонков" as is
4
- */
5
- declare type IItem = string | number | boolean | Record<string, unknown>;
6
- declare const _default: {
7
- get(name: string): IItem | null;
8
- set(name: string, value: IItem): void;
9
- remove(name: string): void;
10
- };
11
- export default _default;
@@ -1,10 +0,0 @@
1
- import { Milliseconds } from '@vkontakte/videoplayer-shared';
2
- export declare class TimeSynchronisation {
3
- private offset;
4
- constructor(initialOffset?: Milliseconds);
5
- getOffset(): Milliseconds;
6
- setOffset(offset: Milliseconds): void;
7
- now(): number;
8
- date(date?: Date): Date;
9
- addServerTime(serverTime: Milliseconds, rtt: Milliseconds): void;
10
- }
package/utils/uuid.d.ts DELETED
@@ -1 +0,0 @@
1
- export default function uuid(): string;
package/utils/vsid.d.ts DELETED
@@ -1 +0,0 @@
1
- export declare const generateVSID: () => string;