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

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 (41) 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 +546 -0
  6. package/dist/{index.d.ts → ovp-provider.d.ts} +99 -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 +393 -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/entities/media-entry.ts +8 -1
  21. package/src/k-provider/common/base-provider.ts +13 -2
  22. package/src/k-provider/ovp/loaders/media-entry-loader.ts +4 -4
  23. package/src/k-provider/ovp/provider-parser.ts +14 -2
  24. package/src/k-provider/ovp/provider.ts +9 -5
  25. package/src/k-provider/ovp/regex-action-handler.ts +51 -44
  26. package/src/k-provider/ovp/response-types/kaltura-flavor-asset.ts +17 -0
  27. package/src/k-provider/ovp/response-types/kaltura-media-entry.ts +7 -0
  28. package/src/k-provider/ovp/services/base-entry-service.ts +4 -1
  29. package/src/types/index.ts +0 -8
  30. package/src/types/media-config-sources.ts +1 -0
  31. package/src/types/media-entry.ts +1 -0
  32. package/src/types/provider-options.ts +1 -0
  33. package/src/util/object.ts +10 -0
  34. package/stats-service/package.json +6 -0
  35. package/types/package.json +5 -0
  36. package/dist/playkit-ovp-provider.js.LICENSE.txt +0 -1
  37. package/playkit-analytics-service/package.json +0 -5
  38. package/playkit-bookmark-service/package.json +0 -5
  39. package/playkit-ott-provider/package.json +0 -5
  40. package/playkit-ovp-provider/package.json +0 -5
  41. 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-fadaac0",
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",
@@ -74,6 +74,12 @@ export default class MediaEntry {
74
74
  */
75
75
  public downloadUrl?: string;
76
76
 
77
+ /**
78
+ * @member - The raw thumbnail URL
79
+ * @type {string}
80
+ */
81
+ public rawThumbnailUrl?: string;
82
+
77
83
  /**
78
84
  * @constructor
79
85
  */
@@ -99,7 +105,8 @@ export default class MediaEntry {
99
105
  type: this.type,
100
106
  poster: this.poster,
101
107
  assetReferenceType: this.assetReferenceType,
102
- downloadUrl: this.downloadUrl
108
+ downloadUrl: this.downloadUrl,
109
+ rawThumbnailUrl: this.rawThumbnailUrl
103
110
  };
104
111
  }
105
112
  }
@@ -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,8 +151,9 @@ 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
+ mediaEntry.rawThumbnailUrl = entry.rawThumbnailUrl;
156
157
  mediaEntry.id = entry.id;
157
158
  mediaEntry.duration = entry.duration;
158
159
  mediaEntry.downloadUrl = entry.downloadUrl || '';
@@ -174,6 +175,17 @@ class OVPProviderParser {
174
175
  mediaEntry.dvrStatus = entry.dvrStatus;
175
176
  }
176
177
 
178
+ if (playbackContext &&
179
+ playbackContext.flavorAssets[0] &&
180
+ playbackContext.flavorAssets[0].width && playbackContext.flavorAssets[0].height) {
181
+
182
+ const {height, width} = playbackContext.flavorAssets[0];
183
+ mediaEntry.metadata.aspectRatio = +Number(width / height).toFixed(2);
184
+ }
185
+
186
+ if (playbackContext && Array.isArray(playbackContext.flavorAssets)) {
187
+ mediaEntry.metadata.audioFlavors = playbackContext.flavorAssets.filter(flavor => flavor.bitrate && !flavor.width && !flavor.height);
188
+ }
177
189
  return mediaEntry;
178
190
  }
179
191
 
@@ -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);
@@ -324,6 +326,7 @@ export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject
324
326
  duration: 0,
325
327
  type: MediaEntry.Type.UNKNOWN,
326
328
  poster: '',
329
+ rawThumbnailUrl: '',
327
330
  dvr: false,
328
331
  vr: null,
329
332
  metadata: {
@@ -347,6 +350,7 @@ export default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject
347
350
  sourcesObject.type = mediaEntry.type;
348
351
  sourcesObject.dvr = !!mediaEntry.dvrStatus;
349
352
  sourcesObject.poster = mediaEntry.poster;
353
+ sourcesObject.rawThumbnailUrl = mediaEntry.rawThumbnailUrl;
350
354
  sourcesObject.downloadUrl = mediaEntry.downloadUrl;
351
355
  if (mediaEntry.sources.captions) {
352
356
  sourcesObject.captions = mediaEntry.sources.captions;
@@ -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
  /**
@@ -84,6 +84,22 @@ export class KalturaFlavorAsset {
84
84
  */
85
85
  public label: string;
86
86
 
87
+ /**
88
+ * @member - tags
89
+ * @type {Array<string>}
90
+ */
91
+ public tags: Array<string>;
92
+
93
+ /**
94
+ * @function
95
+ * @param {string} tags The tags
96
+ * @returns {Array<string>} tags array
97
+ * @static
98
+ */
99
+ public static parseTags(tags = ''): Array<string> {
100
+ return tags.split(',');
101
+ }
102
+
87
103
  /**
88
104
  * @constructor
89
105
  * @param {Object} data The json response
@@ -104,5 +120,6 @@ export class KalturaFlavorAsset {
104
120
  this.status = data.status;
105
121
  this.language = data.language;
106
122
  this.label = data.label;
123
+ this.tags = KalturaFlavorAsset.parseTags(data.tags);
107
124
  }
108
125
  }
@@ -159,6 +159,12 @@ export class KalturaMediaEntry {
159
159
  */
160
160
  public creatorId: string;
161
161
 
162
+ /**
163
+ * @member - The raw thumbnail URL
164
+ * @type {string}
165
+ */
166
+ public rawThumbnailUrl: string;
167
+
162
168
  /**
163
169
  * @constructor
164
170
  * @param {Object} entry The json response
@@ -175,6 +181,7 @@ export class KalturaMediaEntry {
175
181
  this.flavorParamsIds = entry.flavorParamsIds;
176
182
  this.duration = entry.duration;
177
183
  this.poster = entry.thumbnailUrl;
184
+ this.rawThumbnailUrl = entry.thumbnailUrl;
178
185
  this.status = entry.status;
179
186
  this.dvrStatus = entry.dvrStatus;
180
187
  this.tags = entry.tags;
@@ -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);
@@ -24,6 +24,9 @@ export default class OVPBaseEntryService extends OVPService {
24
24
  request.url = request.getUrl(serviceUrl);
25
25
  request.tag = 'baseEntry-getPlaybackContext';
26
26
  const contextDataParams = {objectType: 'KalturaContextDataParams', flavorTags: 'all'};
27
+ if (referrer) {
28
+ contextDataParams['referrer'] = referrer;
29
+ }
27
30
  request.params = {entryId: serviceEntryId, ks: ks, contextDataParams: contextDataParams};
28
31
  return request;
29
32
  }
@@ -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;
@@ -19,4 +19,5 @@ export type ProviderMediaConfigSourcesObject = {
19
19
  metadata: ProviderMediaConfigMetadataObject;
20
20
  captions?: Array<PKExternalCaptionObject>;
21
21
  downloadUrl?: string;
22
+ rawThumbnailUrl?: string;
22
23
  };
@@ -13,4 +13,5 @@ export type ProviderMediaEntryObject = {
13
13
  poster?: string | Poster[];
14
14
  downloadUrl?: string;
15
15
  assetReferenceType?: string;
16
+ rawThumbnailUrl?: string;
16
17
  };
@@ -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,10 @@
1
+ export function toPlainObject<T extends object>(value: T): Record<string, any> {
2
+ if (value === null || typeof value !== 'object') {
3
+ return {};
4
+ }
5
+ try {
6
+ return JSON.parse(JSON.stringify(value));
7
+ } catch (e) {
8
+ return {};
9
+ }
10
+ }
@@ -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
- }