@playkit-js/playkit-js-providers 2.41.0-canary.0-bb5f4a7 → 2.41.0-canary.0-3d6d02a

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 (35) hide show
  1. package/analytics-service/package.json +6 -0
  2. package/bookmark-service/package.json +6 -0
  3. package/dist/analytics-service.d.ts +160 -0
  4. package/dist/bookmark-service.d.ts +157 -0
  5. package/dist/ott-provider.d.ts +545 -0
  6. package/dist/{index.d.ts → ovp-provider.d.ts} +75 -120
  7. package/dist/playkit-analytics-service.js +1 -1
  8. package/dist/playkit-bookmark-service.js +1 -1
  9. package/dist/playkit-ott-provider.js +1 -1
  10. package/dist/playkit-ott-provider.js.map +1 -1
  11. package/dist/playkit-ovp-provider.js +1 -2
  12. package/dist/playkit-ovp-provider.js.map +1 -1
  13. package/dist/playkit-stats-service.js +1 -1
  14. package/dist/stats-service.d.ts +159 -0
  15. package/dist/tsdoc-metadata.json +1 -1
  16. package/dist/types.d.ts +391 -0
  17. package/ott-provider/package.json +6 -0
  18. package/ovp-provider/package.json +6 -0
  19. package/package.json +23 -15
  20. package/src/k-provider/common/base-provider.ts +13 -2
  21. package/src/k-provider/ovp/loaders/media-entry-loader.ts +4 -4
  22. package/src/k-provider/ovp/provider-parser.ts +12 -2
  23. package/src/k-provider/ovp/provider.ts +7 -5
  24. package/src/k-provider/ovp/regex-action-handler.ts +51 -44
  25. package/src/k-provider/ovp/services/base-entry-service.ts +2 -2
  26. package/src/types/index.ts +0 -8
  27. package/src/types/provider-options.ts +1 -0
  28. package/stats-service/package.json +6 -0
  29. package/types/package.json +5 -0
  30. package/dist/playkit-ovp-provider.js.LICENSE.txt +0 -1
  31. package/playkit-analytics-service/package.json +0 -5
  32. package/playkit-bookmark-service/package.json +0 -5
  33. package/playkit-ott-provider/package.json +0 -5
  34. package/playkit-ovp-provider/package.json +0 -5
  35. package/playkit-stats-service/package.json +0 -5
package/package.json CHANGED
@@ -1,36 +1,44 @@
1
1
  {
2
2
  "name": "@playkit-js/playkit-js-providers",
3
- "version": "2.41.0-canary.0-bb5f4a7",
3
+ "version": "2.41.0-canary.0-3d6d02a",
4
4
  "description": "",
5
- "types": "./dist/index.d.ts",
6
5
  "files": [
7
6
  "dist/**/*",
8
7
  "src/**/*",
9
8
  "flow-typed/**/*",
10
- "playkit-analytics-service/*",
11
- "playkit-bookmark-service/*",
12
- "playkit-ott-provider/*",
13
- "playkit-ovp-provider/*",
14
- "playkit-stats-service/*"
9
+ "analytics-service/*",
10
+ "bookmark-service/*",
11
+ "ott-provider/*",
12
+ "ovp-provider/*",
13
+ "stats-service/*",
14
+ "types/*"
15
15
  ],
16
16
  "exports": {
17
- "./playkit-ovp-provider": "./dist/playkit-ovp-provider.js",
18
- "./playkit-ott-provider": "./dist/playkit-ott-provider.js",
19
- "./playkit-analytics-service": "./dist/playkit-analytics-service.js",
20
- "./playkit-stats-service": "./dist/playkit-stats-service.js",
21
- "./playkit-bookmark-service": "./dist/playkit-bookmark-service.js"
17
+ "./ovp-provider": "./dist/playkit-ovp-provider.js",
18
+ "./ott-provider": "./dist/playkit-ott-provider.js",
19
+ "./analytics-service": "./dist/playkit-analytics-service.js",
20
+ "./stats-service": "./dist/playkit-stats-service.js",
21
+ "./bookmark-service": "./dist/playkit-bookmark-service.js",
22
+ "./types": "./dist/types.d.ts"
22
23
  },
23
24
  "scripts": {
24
25
  "serve": "webpack serve --open --mode=development",
25
26
  "build:dev": "webpack --mode=development",
26
27
  "build:prod": "webpack --mode=production --node-env=production",
27
28
  "build": "yarn run build:prod && yarn run build:types",
28
- "build:types": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --local",
29
+ "build:types": "yarn run build:types:ovp && yarn run build:types:ott && yarn run build:types:analytics && yarn run build:types:bookmark && yarn run build:types:stats && yarn run build:types:types",
30
+ "build:types:ovp": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --config api-extracor-config/api-extractor-ovp-provider.json --local",
31
+ "build:types:ott": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --config api-extracor-config/api-extractor-ott-provider.json --local",
32
+ "build:types:analytics": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --config api-extracor-config/api-extractor-analytics-service.json --local",
33
+ "build:types:bookmark": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --config api-extracor-config/api-extractor-bookmark-service.json --local",
34
+ "build:types:stats": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --config api-extracor-config/api-extractor-stats-service.json --local",
35
+ "build:types:types": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --config api-extracor-config/api-extractor-types.json --local",
29
36
  "type-check": "tsc --noEmit",
30
37
  "type-check:watch": "npm run type-check -- --watch",
31
38
  "watch": "webpack --mode=development --watch",
32
39
  "test": "NODE_ENV=test karma start --color --mode development",
33
40
  "test:watch": "NODE_ENV=test karma start --browsers=Chrome --single-run=false --auto-watch",
41
+ "test:debug": "NODE_ENV=test karma start --browsers=Chrome --single-run=false --auto-watch --debug",
34
42
  "release": "standard-version",
35
43
  "pushTaggedRelease": "git push --follow-tags --no-verify origin master",
36
44
  "lint": "eslint src/ --ext .js --ext .ts",
@@ -43,8 +51,8 @@
43
51
  "@babel/plugin-transform-runtime": "^7.22.15",
44
52
  "@babel/preset-env": "^7.21.5",
45
53
  "@babel/preset-typescript": "^7.22.15",
46
- "@microsoft/api-extractor": "^7.38.0",
47
- "@playkit-js/browserslist-config": "^1.0.8-canary.0-f5791c1",
54
+ "@microsoft/api-extractor": "^7.39.4",
55
+ "@playkit-js/browserslist-config": "1.0.8",
48
56
  "@typescript-eslint/eslint-plugin": "^6.7.2",
49
57
  "@typescript-eslint/parser": "^6.7.2",
50
58
  "babel-eslint": "^10.1.0",
@@ -1,7 +1,15 @@
1
1
  import {getLogLevel, setLogLevel, setLogger, LogLevelType, LogLevel} from '../../util/logger';
2
2
  import DataLoaderManager from './data-loader-manager';
3
3
  import Error from '../../util/error/error';
4
- import {ProviderEntryListObject, ProviderMediaConfigObject, ProviderPlaylistInfoObject, ProviderMediaConfigSourcesObject, ProviderNetworkRetryParameters, ProviderOptionsObject, ProviderPlaylistObject} from '../../types';
4
+ import {
5
+ ProviderEntryListObject,
6
+ ProviderMediaConfigObject,
7
+ ProviderPlaylistInfoObject,
8
+ ProviderMediaConfigSourcesObject,
9
+ ProviderNetworkRetryParameters,
10
+ ProviderOptionsObject,
11
+ ProviderPlaylistObject
12
+ } from '../../types';
5
13
 
6
14
  export default class BaseProvider<MI> {
7
15
  private _partnerId: number;
@@ -11,7 +19,9 @@ export default class BaseProvider<MI> {
11
19
  public _dataLoader!: DataLoaderManager;
12
20
  private _playerVersion: string;
13
21
  public _logger: any;
22
+ public _referrer?: string;
14
23
  protected _isAnonymous: boolean;
24
+
15
25
  public _networkRetryConfig: ProviderNetworkRetryParameters = {
16
26
  async: true,
17
27
  timeout: 0,
@@ -58,6 +68,7 @@ export default class BaseProvider<MI> {
58
68
  this._isAnonymous = !options.ks;
59
69
  this._ks = options.ks || '';
60
70
  this._playerVersion = playerVersion;
71
+ this._referrer = options.referrer;
61
72
  }
62
73
 
63
74
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -109,4 +120,4 @@ export default class BaseProvider<MI> {
109
120
  }
110
121
  }
111
122
 
112
- export {BaseProvider}
123
+ export {BaseProvider};
@@ -9,9 +9,9 @@ import {KalturaMediaEntry} from '../response-types';
9
9
  import {ILoader} from '../../../types';
10
10
 
11
11
  type OVPMediaEntryLoaderResponse = {
12
- entry: KalturaMediaEntry,
13
- playBackContextResult: KalturaPlaybackContext,
14
- metadataListResult: KalturaMetadataListResponse
12
+ entry: KalturaMediaEntry;
13
+ playBackContextResult: KalturaPlaybackContext;
14
+ metadataListResult: KalturaMetadataListResponse;
15
15
  };
16
16
  export type {OVPMediaEntryLoaderResponse};
17
17
 
@@ -68,7 +68,7 @@ export default class OVPMediaEntryLoader implements ILoader {
68
68
  requests.push(OVPBaseEntryService.list(config.serviceUrl, params.ks, params.entryId, params.redirectFromEntryId, params.referenceId));
69
69
  // Use the entry id from the request result to support loading by referenceId
70
70
  const serviceEntryId = params.ks === '{1:result:ks}' ? '{2:result:objects:0:id}' : '{1:result:objects:0:id}';
71
- requests.push(OVPBaseEntryService.getPlaybackContext(config.serviceUrl, params.ks, serviceEntryId));
71
+ requests.push(OVPBaseEntryService.getPlaybackContext(config.serviceUrl, params.ks, serviceEntryId, params.referrer));
72
72
  requests.push(OVPMetadataService.list(config.serviceUrl, params.ks, serviceEntryId));
73
73
  return requests;
74
74
  }
@@ -45,7 +45,7 @@ class OVPProviderParser {
45
45
  const kalturaSources = playbackContext.sources;
46
46
 
47
47
  mediaEntry.sources = OVPProviderParser._getParsedSources(kalturaSources, ks, partnerId, uiConfId, entry, playbackContext);
48
- OVPProviderParser._fillBaseData(mediaEntry, entry, metadataList);
48
+ OVPProviderParser._fillBaseData(mediaEntry, entry, metadataList, playbackContext);
49
49
  if (mediaEntry.type !== MediaEntry.Type.LIVE && OVPConfiguration.get().useApiCaptions && playbackContext.data.playbackCaptions) {
50
50
  mediaEntry.sources.captions = ExternalCaptionsBuilder.createConfig(playbackContext.data.playbackCaptions, ks);
51
51
  }
@@ -151,7 +151,7 @@ class OVPProviderParser {
151
151
  }
152
152
  }
153
153
 
154
- private static _fillBaseData(mediaEntry: MediaEntry, entry: KalturaMediaEntry, metadataList?: KalturaMetadataListResponse): MediaEntry {
154
+ private static _fillBaseData(mediaEntry: MediaEntry, entry: KalturaMediaEntry, metadataList?: KalturaMetadataListResponse, playbackContext?: any): MediaEntry {
155
155
  mediaEntry.poster = entry.poster;
156
156
  mediaEntry.id = entry.id;
157
157
  mediaEntry.duration = entry.duration;
@@ -174,6 +174,16 @@ class OVPProviderParser {
174
174
  mediaEntry.dvrStatus = entry.dvrStatus;
175
175
  }
176
176
 
177
+ if (playbackContext &&
178
+ playbackContext.flavorAssets[0] &&
179
+ playbackContext.flavorAssets[0].width && playbackContext.flavorAssets[0].height) {
180
+
181
+ const {height, width} = playbackContext.flavorAssets[0];
182
+ mediaEntry.metadata.heightRatio = +Number(height / width).toFixed(2);
183
+ } else {
184
+ mediaEntry.metadata.heightRatio = 1.78;
185
+ }
186
+
177
187
  return mediaEntry;
178
188
  }
179
189
 
@@ -18,8 +18,10 @@ import {
18
18
  ProviderFilterOptionsObject,
19
19
  ProviderMediaConfigObject,
20
20
  ProviderMediaConfigSourcesObject,
21
- ProviderOptionsObject, ProviderPlaylistInfoObject,
22
- ProviderPlaylistObject, RequestLoader
21
+ ProviderOptionsObject,
22
+ ProviderPlaylistInfoObject,
23
+ ProviderPlaylistObject,
24
+ RequestLoader
23
25
  } from '../../types';
24
26
 
25
27
  export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject> {
@@ -65,7 +67,7 @@ export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject
65
67
  this._dataLoader.add(OVPSessionLoader, {widgetId: this.widgetId});
66
68
  }
67
69
  const redirectFromEntryId = this._getEntryRedirectFilter(mediaInfo);
68
- this._dataLoader.add(OVPMediaEntryLoader, {entryId, ks, redirectFromEntryId, referenceId});
70
+ this._dataLoader.add(OVPMediaEntryLoader, {entryId, ks, redirectFromEntryId, referenceId, referrer: this._referrer});
69
71
  return this._dataLoader.fetchData().then(
70
72
  response => {
71
73
  try {
@@ -85,7 +87,7 @@ export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject
85
87
  });
86
88
  }
87
89
 
88
- public doRequest(loaders: Array<RequestLoader>, ks?: string): Promise<any> {
90
+ public doRequest(loaders: Array<RequestLoader>, ks?: string, requestsMustSucceed?: boolean): Promise<any> {
89
91
  const theKs: string = ks || this.ks;
90
92
  const dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, theKs, this._networkRetryConfig);
91
93
 
@@ -98,7 +100,7 @@ export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject
98
100
  // @ts-ignore
99
101
  dataLoader.add(loaderRequest.loader, loaderRequest.params, theKs || '{1:result:ks}');
100
102
  });
101
- return dataLoader.fetchData().then(
103
+ return dataLoader.fetchData(requestsMustSucceed).then(
102
104
  response => {
103
105
  try {
104
106
  resolve(response);
@@ -27,34 +27,39 @@ class RegexActionHandler {
27
27
  }
28
28
 
29
29
  /**
30
- * Ping the ECDN url to check if alive
31
- * @function _pingECDNUrl
30
+ * Ping the ECDN url and replace the host urls if needed
31
+ * @function _pingECDNAndReplaceHostUrls
32
+ * @param {ProviderMediaConfigObject} mediaConfig - The media config
32
33
  * @param {KalturaAccessControlModifyRequestHostRegexAction} regexAction - The regex action
33
34
  * @param {string} cdnUrl - The CDN url
34
- * @returns {Promise<boolean>} - Whether the media config sources urls should be modified or not
35
+ * @returns {Promise<ProviderMediaConfigObject>} - The media config with old or modified urls
35
36
  * @static
36
37
  * @private
37
38
  */
38
- private static async _isECDNUrlAlive(regexAction: KalturaAccessControlModifyRequestHostRegexAction, cdnUrl: string): Promise<boolean> {
39
- const urlPing = cdnUrl + '/api_v3/service/system/action/ping/format/1';
40
- const req = new XMLHttpRequest();
41
- req.open('GET', urlPing);
42
- req.timeout = regexAction.checkAliveTimeoutMs;
43
- req.onreadystatechange = (): boolean => {
44
- if (req.readyState === 4) {
45
- if (req.status === 200) {
46
- return true;
39
+ private static _pingECDNAndReplaceHostUrls(
40
+ mediaConfig: ProviderMediaConfigObject,
41
+ regexAction: KalturaAccessControlModifyRequestHostRegexAction,
42
+ cdnUrl: string
43
+ ): Promise<ProviderMediaConfigObject> {
44
+ return new Promise(resolve => {
45
+ const urlPing = cdnUrl + '/api_v3/service/system/action/ping/format/1';
46
+ const req = new XMLHttpRequest();
47
+ req.open('GET', urlPing);
48
+ req.timeout = regexAction.checkAliveTimeoutMs;
49
+ req.onreadystatechange = ():void => {
50
+ if (req.readyState === 4) {
51
+ if (req.status === 200) {
52
+ RegexActionHandler._replaceHostUrls(mediaConfig, regexAction);
53
+ }
54
+ resolve(mediaConfig);
47
55
  }
48
- return false;
49
- }
50
- return false;
51
- };
52
- req.ontimeout = (): boolean => {
53
- RegexActionHandler._logger.warn(`Got timeout while pinging the ECDN url. the ping url: ${urlPing}`);
54
- return false;
55
- };
56
- req.send();
57
- return false;
56
+ };
57
+ req.ontimeout = ():void => {
58
+ RegexActionHandler._logger.warn(`Got timeout while pinging the ECDN url. the ping url: ${urlPing}`);
59
+ resolve(mediaConfig);
60
+ };
61
+ req.send();
62
+ });
58
63
  }
59
64
 
60
65
  /**
@@ -62,31 +67,33 @@ class RegexActionHandler {
62
67
  * @function handleRegexAction
63
68
  * @param {ProviderMediaConfigObject} mediaConfig - The media config
64
69
  * @param {Map<string, Function>} rawResponse - The raw response data from backend
65
- * @returns {Promise<ProviderMediaConfigObject>} - The media config with old or modified urls
70
+ * @returns {ProviderMediaConfigObject} - The media config with old or modified urls
66
71
  * @static
67
72
  */
68
- public static async handleRegexAction(mediaConfig: ProviderMediaConfigObject, rawResponse: Map<string, ILoader>): Promise<ProviderMediaConfigObject> {
69
- const cdnUrl = OVPConfiguration.get().cdnUrl;
70
- const regexAction = RegexActionHandler._extractRegexActionFromData(rawResponse);
71
- const regExp = RegexActionHandler._getRegExp(regexAction);
73
+ public static handleRegexAction(mediaConfig: ProviderMediaConfigObject, rawResponse: Map<string, ILoader>): Promise<ProviderMediaConfigObject> {
74
+ return new Promise(resolve => {
75
+ const cdnUrl = OVPConfiguration.get().cdnUrl;
76
+ const regexAction = RegexActionHandler._extractRegexActionFromData(rawResponse);
77
+ const regExp = RegexActionHandler._getRegExp(regexAction);
72
78
 
73
- if (
74
- cdnUrl &&
75
- regexAction &&
76
- regExp &&
77
- cdnUrl.match(regExp) &&
78
- // we need to make the replacement in all cases except for when the checkAliveTimeoutMs > 0 && the ping has failed
79
- !(
80
- regexAction.checkAliveTimeoutMs > 0 &&
81
- !(await RegexActionHandler._isECDNUrlAlive(regexAction, cdnUrl.replace(regExp, regexAction.replacement)))
82
- )
83
- ) {
84
- RegexActionHandler._replaceHostUrls(mediaConfig, regexAction);
85
- return mediaConfig;
86
- }
87
-
88
- RegexActionHandler._logger.debug('exiting handleRegexAction - not applying regex action.');
89
- return mediaConfig;
79
+ if(
80
+ cdnUrl &&
81
+ regexAction &&
82
+ regExp &&
83
+ cdnUrl.match(regExp)
84
+ ) {
85
+ if (regexAction.checkAliveTimeoutMs > 0) {
86
+ RegexActionHandler._logger.debug('executing ping request...');
87
+ RegexActionHandler._pingECDNAndReplaceHostUrls(mediaConfig, regexAction, cdnUrl.replace(regExp, regexAction.replacement)).then(resolve);
88
+ } else {
89
+ RegexActionHandler._replaceHostUrls(mediaConfig, regexAction);
90
+ resolve(mediaConfig);
91
+ }
92
+ } else {
93
+ RegexActionHandler._logger.debug('exiting handleRegexAction - not applying regex action.');
94
+ resolve(mediaConfig);
95
+ }
96
+ });
90
97
  }
91
98
 
92
99
  /**
@@ -14,7 +14,7 @@ export default class OVPBaseEntryService extends OVPService {
14
14
  * @returns {RequestBuilder} The request builder
15
15
  * @static
16
16
  */
17
- public static getPlaybackContext(serviceUrl: string, ks: string, serviceEntryId: string): RequestBuilder {
17
+ public static getPlaybackContext(serviceUrl: string, ks: string, serviceEntryId: string, referrer?: string): RequestBuilder {
18
18
  const headers: Map<string, string> = new Map();
19
19
  headers.set('Content-Type', 'application/json');
20
20
  const request = new RequestBuilder(headers);
@@ -23,7 +23,7 @@ export default class OVPBaseEntryService extends OVPService {
23
23
  request.method = 'POST';
24
24
  request.url = request.getUrl(serviceUrl);
25
25
  request.tag = 'baseEntry-getPlaybackContext';
26
- const contextDataParams = {objectType: 'KalturaContextDataParams', flavorTags: 'all'};
26
+ const contextDataParams = {objectType: 'KalturaContextDataParams', flavorTags: 'all', referrer};
27
27
  request.params = {entryId: serviceEntryId, ks: ks, contextDataParams: contextDataParams};
28
28
  return request;
29
29
  }
@@ -24,11 +24,3 @@ export * from './playlist-info'
24
24
  export * from './provider-options'
25
25
  export * from './request-loader'
26
26
  export * from './poster'
27
-
28
- export { ProviderParser, RequestBuilder, ResponseTypes} from '../k-provider/ovp'
29
- export { ContextType, MediaType} from '../k-provider/ott'
30
- import {BaseProvider} from '../k-provider/common/base-provider'
31
- import OTTProvider from '../k-provider/ott/provider'
32
- import OVPProvider from '../k-provider/ovp/provider'
33
- export {OTTProvider, OVPProvider, OTTProvider as Provider, BaseProvider}
34
- export type IProvider = OTTProvider | OVPProvider;
@@ -14,4 +14,5 @@ export type ProviderOptionsObject = {
14
14
  filterOptions?: ProviderFilterOptionsObject;
15
15
  ignoreServerConfig?: boolean;
16
16
  loadThumbnailWithKs?: boolean;
17
+ referrer?: string;
17
18
  };
@@ -0,0 +1,6 @@
1
+ {
2
+ "name": "@playkit-js/playkit-js-providers/stats-service",
3
+ "main": "../dist/playkit-stats-service.js",
4
+ "types": "../dist/stats-service.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "@playkit-js/playkit-js-providers/types",
3
+ "types": "../dist/types.d.ts",
4
+ "sideEffects": false
5
+ }
@@ -1 +0,0 @@
1
- /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
@@ -1,5 +0,0 @@
1
- {
2
- "name": "@playkit-js/playkit-js-providers/playkit-analytics-service",
3
- "main": "../dist/playkit-analytics-service.js",
4
- "sideEffects": false
5
- }
@@ -1,5 +0,0 @@
1
- {
2
- "name": "@playkit-js/playkit-js-providers/playkit-bookmark-service",
3
- "main": "../dist/playkit-bookmark-service.js",
4
- "sideEffects": false
5
- }
@@ -1,5 +0,0 @@
1
- {
2
- "name": "@playkit-js/playkit-js-providers/playkit-ott-provider",
3
- "main": "../dist/playkit-ott-provider.js",
4
- "sideEffects": false
5
- }
@@ -1,5 +0,0 @@
1
- {
2
- "name": "@playkit-js/playkit-js-providers/playkit-ovp-provider",
3
- "main": "../dist/playkit-ovp-provider.js",
4
- "sideEffects": false
5
- }
@@ -1,5 +0,0 @@
1
- {
2
- "name": "@playkit-js/playkit-js-providers/playkit-stats-service",
3
- "main": "../dist/playkit-stats-service.js",
4
- "sideEffects": false
5
- }