@playkit-js/playkit-js-providers 2.43.0-canary.0-cd2217f → 2.43.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.
@@ -1 +1 @@
1
- {"version":3,"file":"playkit-ott-provider.js","mappings":"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","sources":["webpack://@playkit-js/playkit-js-providers/webpack/universalModuleDefinition","webpack://@playkit-js/playkit-js-providers/webpack/bootstrap","webpack://@playkit-js/playkit-js-providers/webpack/runtime/define property getters","webpack://@playkit-js/playkit-js-providers/webpack/runtime/hasOwnProperty shorthand","webpack://@playkit-js/playkit-js-providers/webpack/runtime/make namespace object","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@playkit-js/playkit-js-providers/./src/util/logger.ts","webpack://@playkit-js/playkit-js-providers/./src/util/error/error.ts","webpack://@playkit-js/playkit-js-providers/./src/util/error/severity.ts","webpack://@playkit-js/playkit-js-providers/./src/util/error/category.ts","webpack://@playkit-js/playkit-js-providers/./src/util/error/code.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/base-provider.ts","webpack://@playkit-js/playkit-js-providers/./src/util/clone.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/config.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/data-loader-manager.ts","webpack://@playkit-js/playkit-js-providers/./src/util/request-builder.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/base-service-result.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/multi-request-builder.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/services/ott-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/loaders/data-loader-manager.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/services/user-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/loaders/session-loader.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/services/asset-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/response-types/kaltura-access-control-message.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/response-types/kaltura-rule-action.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/response-types/kaltura-drm-playback-plugin-data.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/response-types/kaltura-playback-source.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/response-types/kaltura-bumper-playback-plugin-data.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/response-types/kaltura-playback-context.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/response-types/kaltura-asset.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/loaders/asset-loader.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/loaders/asset-list-loader.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/media-format.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/media-sources.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/media-entry.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/drm.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/media-source.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/entry-list.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/bumper.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/provider-parser.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/provider.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export type LogLevelObject = {value: number, name: string};\nexport type LogLevelType = {[level: string]: LogLevelObject};\nexport type loggerFunctionType = {\n VERSION: string,\n DEBUG: LogLevelObject,\n ERROR: LogLevelObject,\n INFO: LogLevelObject,\n OFF: LogLevelObject,\n TIME: LogLevelObject,\n TRACE: LogLevelObject,\n WARN: LogLevelObject,\n createDefaultHandler: () => any\n debug: () => any\n enabledFor: () => any\n error: () => any\n get: () => any\n getLevel: () => any\n info: () => any\n log: () => any\n setHandler: () => any\n setLevel: () => any\n time: () => any\n timeEnd: () => any\n trace: () => any\n useDefaults: () => any\n warn: () => any\n};\n\ntype LoggerType = {\n getLogger: loggerFunctionType,\n LogLevel: LogLevelType\n};\n\nconst JsLogger = {\n get: (): any => ({\n VERSION: '',\n DEBUG: {value: '', name: ''},\n ERROR: {value: '', name: ''},\n INFO: {value: '', name: ''},\n OFF: {value: '', name: ''},\n TIME: {value: '', name: ''},\n TRACE: {value: '', name: ''},\n WARN: {value: '', name: ''},\n createDefaultHandler: (): any => {},\n debug: (): any => {},\n enabledFor: (): any => {},\n error: (): any => {},\n get: (): any => {},\n getLevel: (): any => {},\n info: (): any => {},\n log: (): any => {},\n setHandler: (): any => {},\n setLevel: (): any => {},\n time: (): any => {},\n timeEnd: (): any => {},\n trace: (): any => {},\n useDefaults: (): any => {},\n warn: (): any => {}\n })\n};\n\nlet LogLevel: LogLevelType = {};\n/**\n * set logger\n * @param {LoggerType} logger - the logger\n * @returns {void}\n */\nfunction setLogger(logger?: LoggerType): void {\n if (logger && typeof logger.getLogger === 'function') {\n JsLogger.get = logger.getLogger;\n }\n if (logger && logger.LogLevel) {\n LogLevel = logger.LogLevel;\n }\n}\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name?: string): any {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name?: string): LogLevelObject {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level: LogLevelObject, name?: string): void {\n getLogger(name).setLevel(level);\n}\n\nexport default getLogger;\nexport {getLogLevel, setLogLevel, setLogger, LogLevel, LoggerType};\n","import getLogger from '../logger';\nimport {Severity} from './severity';\nimport type {SeverityType} from './severity';\nimport {Code} from './code';\nimport type {CodeType} from './code';\nimport {Category} from './category';\nimport type {CategoryType} from './category';\n\nconst CLASS_NAME: string = 'Error';\n\n/**\n * @classdesc This is a description of the error class.\n */\nexport default class Error {\n public severity: number;\n public category: number;\n public code: number;\n public data: any;\n /**\n * @enum {number}\n */\n public static Severity: SeverityType = Severity;\n /**\n * @enum {number}\n */\n public static Category: CategoryType = Category;\n /**\n * @enum {number}\n */\n public static Code: CodeType = Code;\n private static _logger: any = getLogger(CLASS_NAME);\n\n /**\n * @constructor\n * @param {number} severity - error's severity\n * @param {number} category - error's category.\n * @param {number} code - error's code.\n * @param {any} data - additional data for the error.\n */\n constructor(severity: number, category: number, code: number, data: any = {}) {\n this.severity = severity;\n this.category = category;\n this.code = code;\n this.data = data;\n Error._logger.error(`Category:${category} | Code:${code} |`, data);\n }\n}\n","type SeverityType = {[severity: string]: number};\n\nconst Severity: SeverityType = {\n /**\n * An error occurred, but the Player is attempting to recover from the error.\n *\n * If the Player cannot ultimately recover, it still may not throw a CRITICAL\n * error. For example, retrying for a media segment will never result in\n * a CRITICAL error (the Player will just retry forever).\n */\n RECOVERABLE: 1,\n /**\n * A critical error that the library cannot recover from. These usually cause\n * the Player to stop loading or updating. A new manifest must be loaded\n * to reset the library.\n */\n CRITICAL: 2\n};\n\nexport {Severity};\nexport type {SeverityType};\n","type CategoryType = {[category: string]: number};\n\nconst Category: CategoryType = {\n /** Errors from the network stack. */\n NETWORK: 1,\n SERVICE: 2,\n PROVIDER: 3\n};\n\nexport {Category};\nexport type {CategoryType};\n","type CodeType = {[code: string]: number};\n\nconst Code: CodeType = {\n /**\n * A network request was made using an unsupported URI scheme.\n */\n UNSUPPORTED_SCHEME: 1000,\n\n /**\n * An HTTP network request returned an HTTP status that indicated a failure.\n */\n BAD_HTTP_STATUS: 1001,\n\n /**\n * An HTTP network request failed with an error, but not from the server.\n */\n HTTP_ERROR: 1002,\n\n /**\n * A network request timed out.\n */\n TIMEOUT: 1003,\n\n /**\n * A network request was made with a malformed data URI.\n */\n MALFORMED_DATA_URI: 1004,\n\n /**\n * The server responsded with 2xx response, but it couldn't be parsed\n */\n BAD_SERVER_RESPONSE: 1005,\n\n /**\n * The server response had a valid structure but contained an error from the API\n */\n MULTIREQUEST_API_ERROR: 1006,\n\n /**\n * The server response had a valid structure and valid API result, but it did not match the request\n */\n API_RESPONSE_MISMATCH: 1007,\n\n /**\n * The server responded with an error\n */\n ERROR: 2000,\n\n /**\n * The server responded with a block action\n */\n BLOCK_ACTION: 2001,\n\n /**\n * The server responded with status import or pre convert\n */\n MEDIA_STATUS_NOT_READY: 2002,\n\n /**\n * The server responded with a scheduled restricted code\n */\n SCHEDULED_RESTRICTED: 2003,\n\n /**\n * The provider is missing mandatory parameter/s\n */\n\n MISSING_MANDATORY_PARAMS: 3000,\n\n /**\n * The server responded with empty sources objects (for HLS, Dash and progressive)\n */\n MISSING_PLAY_SOURCE: 3001,\n\n /**\n * The provider doesn't implement the called api\n */\n METHOD_NOT_IMPLEMENTED: 3002\n};\n\nexport {Code};\nexport type {CodeType};\n","import {getLogLevel, setLogLevel, setLogger, LogLevelType, LogLevel} from '../../util/logger';\nimport DataLoaderManager from './data-loader-manager';\nimport Error from '../../util/error/error';\nimport {\n ProviderEntryListObject,\n ProviderMediaConfigObject,\n ProviderPlaylistInfoObject,\n ProviderMediaConfigSourcesObject,\n ProviderNetworkRetryParameters,\n ProviderOptionsObject,\n ProviderPlaylistObject\n} from '../../types';\n\nexport default class BaseProvider<MI> {\n private _partnerId: number;\n private _widgetId?: string;\n protected _ks: string;\n private _uiConfId?: number;\n public _dataLoader!: DataLoaderManager;\n private _playerVersion: string;\n public _logger: any;\n public _referrer?: string;\n protected _isAnonymous: boolean | undefined;\n\n public _networkRetryConfig: ProviderNetworkRetryParameters = {\n async: true,\n timeout: 0,\n maxAttempts: 4\n };\n\n public get partnerId(): number {\n return this._partnerId;\n }\n\n public get widgetId(): string {\n return this._widgetId || this.defaultWidgetId;\n }\n\n public get defaultWidgetId(): string {\n return '_' + this._partnerId;\n }\n\n public get uiConfId(): number | undefined {\n return this._uiConfId;\n }\n\n public get ks(): string {\n return this._ks;\n }\n\n public set ks(value: string) {\n this._ks = value;\n }\n\n public get playerVersion(): string {\n return this._playerVersion;\n }\n\n public get isAnonymous(): boolean | undefined {\n return this._isAnonymous;\n }\n\n constructor(options: ProviderOptionsObject, playerVersion: string) {\n setLogger(options.logger);\n this._partnerId = options.partnerId;\n this._widgetId = options.widgetId;\n this._uiConfId = options.uiConfId;\n this._isAnonymous = !options.ks;\n this._ks = options.ks || '';\n this._playerVersion = playerVersion;\n this._referrer = options.referrer;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getMediaConfig(mediaInfo: MI): Promise<ProviderMediaConfigObject> {\n return Promise.reject(\n new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.METHOD_NOT_IMPLEMENTED, {\n message: 'getMediaConfig method must be implement by the derived class'\n })\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getPlaylistConfig(playlistInfo: ProviderPlaylistInfoObject): Promise<ProviderPlaylistObject> {\n return Promise.reject(\n new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.METHOD_NOT_IMPLEMENTED, {\n message: 'The provider does not support loading playlist by id'\n })\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getEntryListConfig(entryListInfo: ProviderEntryListObject): Promise<ProviderPlaylistObject> {\n return Promise.reject(\n new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.METHOD_NOT_IMPLEMENTED, {\n message: 'The provider does not support loading entry list'\n })\n );\n }\n\n protected _verifyHasSources(sources: ProviderMediaConfigSourcesObject): void {\n if (sources.hls.concat(sources.dash, sources.progressive, sources.image, sources.document).length === 0) {\n throw new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.MISSING_PLAY_SOURCE, {\n action: '',\n messages: `No play source for entry id: ${sources.id}`\n });\n }\n }\n\n public get LogLevel(): LogLevelType {\n return LogLevel;\n }\n\n public getLogLevel(name?: string): any {\n return getLogLevel(name);\n }\n\n public setLogLevel(level: any, name?: string): void {\n setLogLevel(level, name);\n }\n}\n\nexport {BaseProvider};\n","const clone = (data): any => {\n let node;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach((e, i) => {\n if ((typeof e === 'object') || (Array.isArray(e) && e.length > 0)) {\n node[i] = clone(e);\n }\n });\n } else if (typeof data === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(key => {\n if ((typeof node[key] === 'object') || (Array.isArray(node[key]) && node[key].length > 0)) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexport {clone};\n","import {clone} from '../../util/clone';\nimport {ProviderEnvConfigObject} from '../../types';\n\nconst defaultConfig: any = {\n serviceParams: {\n apiVersion: '7.8.1'\n }\n};\n\nexport default class OTTConfiguration {\n public static set(clientConfig?: ProviderEnvConfigObject): void {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n public static get(): any {\n return clone(defaultConfig);\n }\n}\n\nexport {OTTConfiguration};\n","import MultiRequestBuilder, {MultiRequestResult} from './multi-request-builder';\nimport Error from '../../util/error/error';\nimport {ILoader, ProviderNetworkRetryParameters} from '../../types';\n\nexport default class DataLoaderManager {\n /**\n * @member - Loaders response map index\n * @type {Map<string,Array<number>>}\n * @private\n */\n private _loadersResponseMap: Map<string, Array<number>> = new Map();\n /**\n * @member - Loaders multi request\n * @type {MultiRequestBuilder}\n * @protected\n */\n protected _multiRequest!: MultiRequestBuilder;\n /**\n * @member - Loaders multi response\n * @type {MultiRequestResult}\n * @private\n */\n private _multiResponse!: MultiRequestResult;\n /**\n * @member - Loaders to execute\n * @type {Map<string,Function>}\n * @private\n */\n private _loaders: Map<string, ILoader> = new Map();\n\n private _networkRetryConfig: ProviderNetworkRetryParameters;\n\n constructor(networkRetryConfig: ProviderNetworkRetryParameters) {\n this._networkRetryConfig = networkRetryConfig;\n }\n\n /**\n * Add loader to execution loaders map\n * @function\n * @param {Function} loader Loader to add\n * @param {Object} params Loader params\n * @param {string} ks ks\n * @returns {void}\n */\n public add(loader: {new(...params): ILoader, id: string}, params: any, ks?: string): void {\n const execution_loader = new loader(params);\n if (execution_loader.isValid()) {\n this._loaders.set(loader.id, execution_loader);\n // Get the start index from the multiReqeust before adding current execution_loader requests\n const startIndex = this._multiRequest.requests.length;\n // Get the requests\n const requests = execution_loader.requests;\n this._multiRequest.retryConfig = this._networkRetryConfig;\n // Add requests to multiRequest queue\n requests.forEach(request => {\n request.params = request.params || {};\n request.params.ks = request.params.ks || ks;\n this._multiRequest.add(request);\n });\n // Create range array of current execution_loader requests\n const executionLoaderResponseMap = Array.from(new Array(requests.length), (val, index) => index + startIndex);\n // Add to map\n this._loadersResponseMap.set(loader.id, executionLoaderResponseMap);\n }\n }\n\n /**\n * Get data from all loaders using multi request\n * @param {boolean} requestsMustSucceed whether all of the requests must succeed or not\n * @function\n * @returns {Promise} Promise\n */\n public fetchData(requestsMustSucceed?: boolean): Promise<any> {\n return new Promise((resolve, reject) => {\n this._multiRequest.execute(requestsMustSucceed).then(\n data => {\n this._multiResponse = data.response;\n const preparedData: any = this.prepareData(data.response);\n if (preparedData.success) {\n resolve(this._loaders);\n } else {\n reject(\n new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, Error.Code.API_RESPONSE_MISMATCH, {\n headers: data.headers\n })\n );\n }\n },\n err => {\n reject(err);\n }\n );\n });\n }\n\n /**\n * Prepare fetched data\n * @function\n * @param {MultiRequestResult} response - The multi request result\n * @returns {Object} - The prepared data\n */\n public prepareData(response: MultiRequestResult): any {\n this._loaders.forEach((loader, name) => {\n const loaderDataIndexes = this._loadersResponseMap.get(name);\n try {\n if (loaderDataIndexes && loaderDataIndexes.length > 0) {\n loader.response = response.results.slice(loaderDataIndexes[0], loaderDataIndexes[loaderDataIndexes.length - 1] + 1);\n }\n } catch (err) {\n return {success: false, error: err};\n }\n });\n return {success: true, data: this._loaders};\n }\n}\n","import Error from './error/error';\nimport {ProviderNetworkRetryParameters} from '../types';\n\nconst KALTURA_HEADER_PREFIX: string = 'x-';\n\nexport default class RequestBuilder {\n /**\n * @member - Service name\n * @type {string}\n */\n public service!: string;\n /**\n * @member - Service action\n * @type {string}\n */\n public action!: string;\n /**\n * @member - Service params\n * @type {any}\n */\n public params: any;\n /**\n * @memberof - Service headers\n * @type {Map<string, string>}\n */\n public headers: Map<string, string>;\n /**\n * @memberof - Service URL\n * @type {string}\n */\n public url!: string;\n /**\n * @memberof - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n public method!: string;\n /**\n * @memberof - Service tag\n * @type {string}\n */\n public tag!: string;\n /**\n * @memberof - the response headers of the arra\n * @type {Array<string>}\n */\n public responseHeaders!: Array<string>;\n /**\n * @description network retry configuration\n * @memberof RequestBuilder\n * @type {ProviderNetworkRetryParameters}\n */\n public retryConfig: ProviderNetworkRetryParameters = {\n async: true,\n timeout: 0,\n maxAttempts: 4\n };\n\n /**\n * @description number of xhr attempts for the same multi - request.\n * @memberof RequestBuilder\n * @type {number}\n * @private\n */\n private _attemptCounter: number = 1;\n\n /**\n * @description hold the promise result of the XHR request(s) - if all tries fails, it rejects with the error.\n * @memberof RequestBuilder\n * @type {Object}\n * @private\n */\n private _requestPromise: any;\n\n /**\n * @constructor\n * @param {Map<string, string>} headers The request headers\n */\n constructor(headers: Map<string, string> = new Map()) {\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n public getUrl(serviceUrl: string): string {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.<any>} Service response as promise\n */\n public doHttpRequest(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n this._requestPromise = {\n resolve,\n reject\n };\n });\n if (!this.url) {\n this._requestPromise.reject(\n new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, Error.Code.MALFORMED_DATA_URI, {\n url: this.url\n })\n );\n }\n this._createXHR();\n return promise;\n }\n\n private _createXHR(): void {\n const request = new XMLHttpRequest();\n request.onreadystatechange = (): void => {\n if (request.readyState === 4) {\n if (request.status === 200) {\n try {\n const response = JSON.parse(request.responseText);\n this.responseHeaders = this._getResponseHeaders(request);\n // the promise returns the response for backwards compatibility\n return this._requestPromise.resolve(response);\n } catch (error) {\n this._requestPromise.reject(\n this._createError(request, Error.Code.BAD_SERVER_RESPONSE, {\n text: request.responseText\n })\n );\n }\n }\n }\n };\n request.open(this.method, this.url, this.retryConfig.async);\n if (this.retryConfig.async && this.retryConfig.timeout) {\n request.timeout = this.retryConfig.timeout;\n }\n const requestTime = performance.now();\n request.ontimeout = (): void => {\n this._handleError(request, Error.Code.TIMEOUT, {\n timeout: (performance.now() - requestTime) / 1000,\n statusText: request.statusText\n });\n };\n request.onerror = request.onabort = (): void => {\n this._handleError(request, Error.Code.HTTP_ERROR, {\n text: request.responseText,\n statusText: request.statusText\n });\n };\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n }\n\n private _getResponseHeaders(request: XMLHttpRequest): Array<string> {\n return request\n .getAllResponseHeaders()\n .split('\\n')\n .filter(header => header.toLowerCase().indexOf(KALTURA_HEADER_PREFIX) === 0);\n }\n\n private _handleError(request: XMLHttpRequest, code: number, data: any): Promise<void> | void {\n const error = this._createError(request, code, data);\n request.onreadystatechange = function (): void {};\n request.onerror = function (): void {};\n request.ontimeout = function (): void {};\n request.onabort = function (): void {};\n if (this.retryConfig.maxAttempts && this._attemptCounter < this.retryConfig.maxAttempts) {\n this._attemptCounter++;\n this._createXHR();\n } else {\n return this._requestPromise.reject(error);\n }\n }\n\n private _createError(request: XMLHttpRequest, code: number, data: any): Error {\n Object.assign(data, {\n url: this.url,\n headers: this._getResponseHeaders(request),\n attempt: this._attemptCounter\n });\n return new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, code, data);\n }\n}\n","export default class ServiceResult {\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n public hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n public error!: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n public data: any;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: any) {\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n }\n}\n\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n public code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n public message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n","import RequestBuilder from '../../util/request-builder';\nimport getLogger from '../../util/logger';\nimport ServiceResult from './base-service-result';\nimport Error from '../../util/error/error';\n\nexport default class MultiRequestBuilder extends RequestBuilder {\n private static _logger = getLogger('MultiRequestBuilder');\n /**\n * @memberof - MultiRequestBuilder\n * @type {Array<RequestBuilder>}\n */\n public requests: Array<RequestBuilder> = [];\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n public add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n const requestParams = {};\n const serviceDef: any = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @param {boolean} requestsMustSucceed whether all of the requests must succeed or not\n * @returns {Promise} The multirequest execution promise\n */\n public execute(requestsMustSucceed?: boolean): Promise<any> {\n return new Promise((resolve, reject) => {\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error(`${err.message}`);\n reject(\n new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.FAILED_PARSING_REQUEST, {\n error: err,\n params: this.params\n })\n );\n }\n this.doHttpRequest().then(\n data => {\n const multiRequestResult = new MultiRequestResult(data, requestsMustSucceed);\n if (multiRequestResult.success) {\n resolve({\n headers: this.responseHeaders,\n response: multiRequestResult\n });\n } else {\n reject(\n new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, Error.Code.MULTIREQUEST_API_ERROR, {\n url: this.url,\n headers: this.responseHeaders,\n results: multiRequestResult.results\n })\n );\n }\n },\n err => {\n reject(err);\n }\n );\n });\n }\n}\n\nexport class MultiRequestResult {\n private static _logger = getLogger('MultiRequestResult');\n /**\n * @memberof MultiRequestResult\n * @type {boolean}\n */\n public success: boolean;\n /**\n * @memberof MultiRequestResult\n * @type {Object}\n */\n public results: Array<ServiceResult> = [];\n /**\n * @constructor\n * @param {Object} response data\n * @param {boolean} requestsMustSucceed whether all of the requests must succeed\n */\n constructor(response: any, requestsMustSucceed: boolean = true) {\n const result = response.result ? response.result : response;\n const responseArr = Array.isArray(result) ? result : [result];\n const results = responseArr.map(result => new ServiceResult(result));\n const errorResults = results.filter(serviceResult => serviceResult.hasError);\n\n errorResults.forEach(serviceResult => {\n MultiRequestResult._logger.error(\n `Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`\n );\n });\n\n this.results = results;\n if ((requestsMustSucceed && errorResults.length) || errorResults.length === this.results.length) {\n this.success = false;\n } else {\n this.results = this.results.filter(serviceResult => !serviceResult.hasError);\n this.success = true;\n }\n }\n}\n","import MultiRequestBuilder from '../../common/multi-request-builder';\nimport OTTConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OTTService {\n /**\n * Gets a new instance of MultiRequestBuilder with ott params\n * @function getMultiRequest\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n public static getMultiRequest(ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OTTConfiguration.get();\n const ottParams = config.serviceParams;\n if (ks) {\n Object.assign(ottParams, {ks: ks});\n }\n if (partnerId) {\n Object.assign(ottParams, {partnerId: partnerId});\n }\n const headers: Map<string, string> = new Map();\n headers.set('Content-Type', 'application/json');\n const multiReq = new MultiRequestBuilder(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ottParams;\n return multiReq;\n }\n}\n","import DataLoaderManager from '../../common/data-loader-manager';\nimport OTTService from '../services/ott-service';\nimport {ProviderNetworkRetryParameters} from '../../../types';\n/**\n * OTTDataLoaderManager is a class that handles the OTT data loading\n * @param {string} partnerId - partner id\n * @param {string} ks - ks\n * @param {ProviderNetworkRetryParameters} [networkRetryConfig] - network retry configuration\n */\nexport default class OTTDataLoaderManager extends DataLoaderManager {\n constructor(partnerId: number, ks: string = '', networkRetryConfig: ProviderNetworkRetryParameters) {\n super(networkRetryConfig);\n this._multiRequest = OTTService.getMultiRequest(ks, partnerId);\n }\n}\n","import OTTService from './ott-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'ottuser';\n\nexport default class OTTUserService extends OTTService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} partnerId The partner ID\n * @param {string} udid The udid\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static anonymousLogin(serviceUrl: string, partnerId: number, udid?: string): RequestBuilder {\n const headers: Map<string, string> = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'anonymousLogin';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n const params: any = {partnerId: partnerId};\n if (udid) {\n Object.assign(params, {udid: udid});\n }\n request.params = params;\n return request;\n }\n}\n","import UserService from '../services/user-service';\nimport OTTConfiguration from '../config';\nimport RequestBuilder from '../../../util/request-builder';\nimport {ILoader} from '../../../types';\n\nexport default class OTTSessionLoader implements ILoader {\n private _partnerId: number;\n private _requests!: Array<RequestBuilder>;\n private _response: any = {};\n\n public static get id(): string {\n return 'session';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: any) {\n this.requests = this.buildRequests(params);\n this._partnerId = params.partnerId;\n }\n\n public set requests(requests: Array<RequestBuilder>) {\n this._requests = requests;\n }\n\n public get requests(): Array<RequestBuilder> {\n return this._requests;\n }\n\n public set response(response: any) {\n this._response.ks = response[0].data.ks;\n }\n\n public get response(): any {\n return this._response.ks;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public buildRequests(params: any): Array<RequestBuilder> {\n const config = OTTConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n requests.push(UserService.anonymousLogin(config.serviceUrl, params.partnerId, params.udid));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n public isValid(): boolean {\n return !!this._partnerId;\n }\n}\n","import OTTService from './ott-service';\nimport RequestBuilder from '../../../util/request-builder';\nimport {ProviderPlaybackContextOptions} from '../../../types';\n\nconst SERVICE_NAME: string = 'asset';\n\nexport default class OTTAssetService extends OTTService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The partner ID\n * @param {string} assetId The asset ID\n * @param {string} type The asset type (media/recording/epg)\n * @param {ProviderPlaybackContextOptions} playbackContextOptions The playbackContextOptions\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static getPlaybackContext(\n serviceUrl: string,\n ks: string,\n assetId: string,\n type: string,\n playbackContextOptions: ProviderPlaybackContextOptions\n ): RequestBuilder {\n const headers: Map<string, string> = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'getPlaybackContext';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n const contextDataParams: any = {objectType: 'KalturaPlaybackContextOptions'};\n Object.assign(contextDataParams, playbackContextOptions);\n request.params = {assetId: assetId, assetType: type, contextDataParams: contextDataParams, ks: ks};\n return request;\n }\n\n public static get(serviceUrl: string, ks: string, assetId: string, assetReferenceType: string): RequestBuilder {\n const headers: Map<string, string> = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'get';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.params = {id: assetId, assetReferenceType: assetReferenceType, ks: ks};\n return request;\n }\n}\n","export class KalturaAccessControlMessage {\n /**\n * @member - The access control message\n * @type {string}\n */\n public message: string;\n /**\n * @member - The access control message code\n * @@type {string}\n */\n public code: string;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: any) {\n this.message = data.message;\n this.code = data.code;\n }\n}\n","export default class KalturaRuleAction {\n public static Type: {[type: string]: string | number} = {\n BLOCK: 'BLOCK',\n START_DATE_OFFSET: 'START_DATE_OFFSET',\n END_DATE_OFFSET: 'END_DATE_OFFSET',\n USER_BLOCK: 'USER_BLOCK',\n ALLOW_PLAYBACK: 'ALLOW_PLAYBACK',\n BLOCK_PLAYBACK: 'BLOCK_PLAYBACK',\n APPLY_DISCOUNT_MODULE: 'APPLY_DISCOUNT_MODULE'\n };\n\n /**\n * @member - The type of the action\n * @type {string|number}\n */\n public type: string | number;\n\n /**\n * @constructor\n * @param {Object} data - The response\n */\n constructor(data: any) {\n this.type = data.type;\n }\n}\n","export class KalturaDrmPlaybackPluginData {\n public static Scheme: {[scheme: string]: string} = {\n 'drm.PLAYREADY_CENC': 'com.microsoft.playready',\n 'drm.WIDEVINE_CENC': 'com.widevine.alpha',\n 'fairplay.FAIRPLAY': 'com.apple.fairplay',\n WIDEVINE_CENC: 'com.widevine.alpha',\n PLAYREADY_CENC: 'com.microsoft.playready',\n FAIRPLAY: 'com.apple.fairplay'\n };\n\n /**\n * @member - The drm scheme\n * @type {string}\n */\n public scheme: string;\n\n /**\n * @member - The license URL\n * @type {string}\n */\n public licenseURL: string;\n\n /**\n * @member - The drm certificate\n * @type {?string}\n */\n public certificate?: string;\n\n /**\n * @constructor\n * @param {Object} drm The json response\n */\n constructor(drm: any) {\n this.scheme = drm.scheme;\n this.licenseURL = drm.licenseURL;\n this.certificate = drm.certificate;\n }\n}\n","import {KalturaDrmPlaybackPluginData} from '../../common/response-types/kaltura-drm-playback-plugin-data';\n\nexport type OTTKalturaPlaybackSource = KalturaPlaybackSource;\n\nexport default class KalturaPlaybackSource {\n public format: string;\n public protocols: string;\n public drm: Array<KalturaDrmPlaybackPluginData> = [];\n public adsPolicy: string;\n public adsParam: string;\n public duration: number;\n public url: string;\n public type: string;\n public fileId: number;\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n constructor(source: any) {\n this.format = source.format;\n this.adsPolicy = source.adsPolicy;\n this.adsParam = source.adsParam;\n this.duration = source.duration;\n this.url = source.url;\n this.type = source.type;\n this.fileId = source.id;\n this.protocols = source.protocols;\n if (source.drm) {\n source.drm.map(drm => this.drm.push(new KalturaDrmPlaybackPluginData(drm)));\n }\n }\n\n /**\n * Checks if source has DRM data\n * @function hasDrmData\n * @returns {boolean} Is source has DRM\n */\n public hasDrmData(): boolean {\n return this.drm && this.drm.length > 0;\n }\n\n /**\n * Returns source desired protocol if supported\n * @param {string} protocol - the desired protocol for the source (base play url protocol)\n * @returns {string} - protocol if protocol is in the protocols list - if not empty string returned\n */\n public getProtocol(protocol: string): string {\n let returnValue: string = '';\n if (this.protocols && this.protocols.length > 0) {\n const protocolsArr: Array<string> = this.protocols.split(',');\n protocolsArr.forEach(p => {\n if (p === protocol) {\n returnValue = p;\n }\n });\n } else if (protocol === 'http') {\n return protocol;\n }\n return returnValue;\n }\n}\n","export default class KalturaBumpersPlaybackPluginData {\n public static StreamerType: {[type: string]: string} = {\n HLS: 'hls',\n DASH: 'dash',\n PROGRESSIVE: 'progressive'\n };\n\n /**\n * @member - The streamer type\n * @type {string}\n */\n public streamertype: string;\n /**\n * @member - The url\n * @type {string}\n */\n public url: string;\n\n /**\n * @constructor\n * @param {Object} data - The response\n */\n constructor(data: any) {\n this.streamertype = data.streamertype;\n this.url = data.url;\n }\n}\n","import ServiceResult from '../../common/base-service-result';\nimport {KalturaAccessControlMessage} from '../../common/response-types/kaltura-access-control-message';\nimport KalturaRuleAction from './kaltura-rule-action';\nimport KalturaPlaybackSource from './kaltura-playback-source';\nimport KalturaBumpersPlaybackPluginData from './kaltura-bumper-playback-plugin-data';\n\nexport default class KalturaPlaybackContext extends ServiceResult {\n public static Type: {[type: string]: string} = {\n DOWNLOAD: 'DOWNLOAD',\n TRAILER: 'TRAILER',\n CATCHUP: 'CATCHUP',\n START_OVER: 'START_OVER',\n PLAYBACK: 'PLAYBACK'\n };\n /**\n * @member - The playback sources\n * @type {Array<KalturaPlaybackSource>}\n */\n public sources: Array<KalturaPlaybackSource> = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array<KalturaRuleAction>}\n */\n public actions: KalturaRuleAction[] = [];\n /**\n * @member - Array of access control massages\n * @type {Array<KalturaAccessControlMessage>}\n */\n public messages: Array<KalturaAccessControlMessage> = [];\n /**\n * @member - Array of bumper plugins\n * @type {Array<KalturaBumpersPlaybackPluginData>}\n */\n public plugins: Array<KalturaBumpersPlaybackPluginData> = [];\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n constructor(response: any) {\n super(response);\n if (!this.hasError) {\n const messages = response.messages;\n if (messages) {\n messages.map(message => this.messages.push(new KalturaAccessControlMessage(message)));\n }\n const actions = response.actions;\n if (actions) {\n actions.map(action => this.actions.push(new KalturaRuleAction(action)));\n }\n const sources = response.sources;\n if (sources) {\n sources.map(source => this.sources.push(new KalturaPlaybackSource(source)));\n }\n const plugins = response.plugins;\n if (plugins) {\n plugins.map(plugin => this.plugins.push(new KalturaBumpersPlaybackPluginData(plugin)));\n }\n }\n }\n\n public hasBlockAction(): boolean {\n return this.getBlockAction() !== undefined;\n }\n\n public getBlockAction(): KalturaRuleAction | undefined {\n return this.actions.find(action => action.type === KalturaRuleAction.Type.BLOCK);\n }\n\n public getErrorMessages(): Array<KalturaAccessControlMessage> {\n return this.messages;\n }\n}\n","import ServiceResult from '../../common/base-service-result';\nimport {Poster} from '../../../types';\n\nexport default class KalturaAsset extends ServiceResult {\n public static Type: {[type: string]: string} = {\n MEDIA: 'media',\n RECORDING: 'recording',\n EPG: 'epg'\n };\n\n public static AssetReferenceType: {[type: string]: string} = {\n MEDIA: 'media',\n EPG_INTERNAL: 'epg_internal',\n EPG_EXTERNAL: 'epg_external',\n NPVR: 'nPVR'\n };\n /**\n * @member - The asset id\n * @type {number}\n */\n public id!: number;\n /**\n * @member - The asset createDate - Specifies when was the Asset was created. Date and time represented as epoch\n * @type {number}\n */\n public createDate!: number;\n /**\n * @member - The asset endDate - epoch For VOD: till when the asset be available in the catalog. For EPG/Linear: program end time and date\n * @type {number}\n */\n public endDate!: number;\n /**\n * @member - The asset name\n * @type {string}\n */\n public name: string = '';\n /**\n * @member - The asset name description\n * @type {string}\n */\n public description: string = '';\n /**\n * @member - The asset tags\n * @type {Array<Object>}\n */\n public tags: Array<any> = [];\n /**\n * @member - The asset metas\n * @type {Array<Object>}\n */\n public metas: Array<any> = [];\n /**\n * @member - The asset images\n * @type {Array<any>}\n */\n public pictures: Array<Poster> = [];\n\n /**\n * @member - Number of plays\n * @type {number}\n */\n public plays!: number;\n\n /**\n * @member - Number of views\n * @type {number}\n */\n public views!: number;\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n constructor(response: any) {\n super(response);\n if (!this.hasError) {\n this.id = response.id;\n this.name = response.name;\n this.description = response.description;\n this.createDate = response.createDate;\n this.endDate = response.endDate;\n this.plays = response.plays;\n this.views = response.views;\n this.metas = this._formatTagsMetas(response.metas);\n this.tags = this._formatTagsMetas(response.tags);\n this.pictures = response.images;\n }\n }\n\n private _formatTagsMetas(objectToParse: any): Array<any> {\n const parsed: { key: string; value: any; }[] = [];\n Object.keys(objectToParse).forEach((key) => {\n if (objectToParse[key].objects) {\n let value = '';\n objectToParse[key].objects.forEach((object) => {\n value += object.value + '|';\n });\n parsed.push({key: key, value: value});\n } else {\n parsed.push({key: key, value: objectToParse[key].value});\n }\n });\n return parsed;\n }\n}\n","import OTTAssetService from '../services/asset-service';\nimport OTTConfiguration from '../config';\nimport RequestBuilder from '../../../util/request-builder';\nimport KalturaPlaybackContext from '../response-types/kaltura-playback-context';\nimport KalturaAsset from '../response-types/kaltura-asset';\nimport {ILoader} from '../../../types';\n\ntype OTTAssetLoaderResponse = {mediaDataResult: KalturaAsset, playBackContextResult: KalturaPlaybackContext};\nexport type {OTTAssetLoaderResponse};\n\nexport default class OTTAssetLoader implements ILoader {\n private _entryId: string;\n private _requests!: Array<RequestBuilder>;\n private _response: any = {};\n\n public static get id(): string {\n return 'asset';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: any) {\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n }\n\n public set requests(requests: Array<RequestBuilder>) {\n this._requests = requests;\n }\n\n public get requests(): Array<RequestBuilder> {\n return this._requests;\n }\n\n public set response(response: any) {\n this._response.mediaDataResult = new KalturaAsset(response[0].data);\n this._response.playBackContextResult = new KalturaPlaybackContext(response[1].data);\n }\n\n public get response(): OTTAssetLoaderResponse {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public buildRequests(params: any): Array<RequestBuilder> {\n const config = OTTConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n requests.push(OTTAssetService.get(config.serviceUrl, params.ks, params.entryId, params.assetReferenceType));\n requests.push(OTTAssetService.getPlaybackContext(config.serviceUrl, params.ks, params.entryId, params.type, params.playbackContext));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n public isValid(): boolean {\n return !!this._entryId;\n }\n}\n","import RequestBuilder from '../../../util/request-builder';\nimport OTTConfiguration from '../config';\nimport OTTAssetService from '../services/asset-service';\nimport KalturaAsset from '../response-types/kaltura-asset';\nimport {ILoader} from '../../../types';\n\nexport default class OTTAssetListLoader implements ILoader {\n private _entries: Array<string>;\n private _requests!: Array<RequestBuilder>;\n private _response: any = {playlistItems: {entries: []}};\n\n public static get id(): string {\n return 'asset_list';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: any) {\n this.requests = this.buildRequests(params);\n this._entries = params.entries;\n }\n\n public set requests(requests: Array<RequestBuilder>) {\n this._requests = requests;\n }\n\n public get requests(): Array<RequestBuilder> {\n return this._requests;\n }\n\n public set response(response: any) {\n response.forEach(item => {\n this._response.playlistItems.entries.push({mediaDataResult: new KalturaAsset(item.data)});\n });\n }\n\n public get response(): any {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public buildRequests(params: any): Array<RequestBuilder> {\n const config = OTTConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n params.entries.forEach(entry => {\n const assetReferenceType = entry.assetReferenceType || KalturaAsset.AssetReferenceType.MEDIA;\n requests.push(OTTAssetService.get(config.serviceUrl, params.ks, entry.entryId || entry, assetReferenceType));\n });\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n public isValid(): boolean {\n return !!(this._entries && this._entries.length);\n }\n}\n","import {ProviderMediaFormatType} from '../types';\n\nexport const MediaFormat: {[name: string]: ProviderMediaFormatType} = {\n DASH: {\n name: 'dash',\n mimeType: 'application/dash+xml',\n pathExt: 'mpd'\n },\n HLS: {\n name: 'hls',\n mimeType: 'application/x-mpegURL',\n pathExt: 'm3u8'\n },\n WVM: {\n name: 'wvm',\n mimeType: 'video/wvm',\n pathExt: 'wvm'\n },\n MP4: {\n name: 'mp4',\n mimeType: 'video/mp4',\n pathExt: 'mp4'\n },\n MP3: {\n name: 'mp3',\n mimeType: 'audio/mpeg',\n pathExt: 'mp3'\n }\n};\n\nexport const SupportedStreamFormat: Map<string, ProviderMediaFormatType> = new Map([\n ['mpegdash', MediaFormat.DASH],\n ['applehttp', MediaFormat.HLS],\n ['url', MediaFormat.MP4]\n]);\n\n/**\n * returns a boolean whether a source is progressive or not\n * @param {string} formatName - the format name\n * @returns {boolean} - if source is progressive or not\n */\nfunction isProgressiveSource(formatName: string): boolean {\n const sourceFormat = SupportedStreamFormat.get(formatName);\n return !!sourceFormat && sourceFormat.name === MediaFormat.MP4.name;\n}\n\nexport {isProgressiveSource};\n","import MediaSource from './media-source';\nimport {MediaFormat} from './media-format';\nimport {ImageSource} from './image-source';\nimport {DocumentSource} from './document-source';\nimport {PKExternalCaptionObject, ProviderMediaFormatType, ProviderMediaSourcesObject} from '../types';\n\nexport default class MediaSources {\n /**\n * Progressive download media sources container.\n * @type {Array<MediaSource>}\n * @public\n */\n public progressive: Array<MediaSource>;\n /**\n * Dash media sources container.\n * @type {Array<MediaSource>}\n * @public\n */\n public dash: Array<MediaSource>;\n /**\n * Hls media sources container.\n * @type {Array<MediaSource>}\n * @public\n */\n public hls: Array<MediaSource>;\n public image: Array<ImageSource>;\n public document: Array<DocumentSource>;\n public captions?: Array<PKExternalCaptionObject>;\n\n /**\n * @constructor\n */\n constructor() {\n this.progressive = [];\n this.dash = [];\n this.hls = [];\n this.image = [];\n this.document = [];\n }\n\n /**\n * Maps the source to one of the containers according to his media format.\n * @param {MediaSource} source - The source to add to one of the containers.\n * @param {MediaFormat} mediaFormat - The media format of the source.\n * @returns {void}\n */\n public map(source: MediaSource, mediaFormat?: ProviderMediaFormatType): void {\n if (mediaFormat) {\n switch (mediaFormat.name) {\n case MediaFormat.MP4.name:\n this.progressive.push(source);\n break;\n case MediaFormat.DASH.name:\n this.dash.push(source);\n break;\n case MediaFormat.HLS.name:\n this.hls.push(source);\n break;\n default:\n break;\n }\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourcesObject} - The json class object.\n */\n public toJSON(): ProviderMediaSourcesObject {\n const response: ProviderMediaSourcesObject = {\n progressive: [],\n dash: [],\n hls: [],\n image: [],\n document: []\n };\n this.progressive.forEach(p => response.progressive.push(p.toJSON()));\n this.hls.forEach(h => response.hls.push(h.toJSON()));\n this.dash.forEach(d => response.dash.push(d.toJSON()));\n response.image = this.image;\n response.document = this.document;\n return response;\n }\n}\n","import MediaSources from './media-sources';\nimport {ProviderMediaEntryObject} from '../types';\nimport {Poster} from '../types/poster';\n\nexport default class MediaEntry {\n public static Type: {[type: string]: string} = {\n VOD: 'Vod',\n LIVE: 'Live',\n IMAGE: 'Image',\n AUDIO: 'Audio',\n UNKNOWN: 'Unknown',\n DOCUMENT: 'Document'\n };\n public static DvrStatus: {[type: string]: number} = {\n ON: 1,\n OFF: 0\n };\n\n /**\n * @member - entry id\n * @type {string}\n */\n public id?: string;\n /**\n * @member - entry name\n * @type {string}\n */\n public name?: string;\n /**\n * @member - entry sources\n * @type {MediaSources}\n */\n public sources: MediaSources;\n /**\n * @member - entry duration\n * @type {number}\n */\n public duration?: number;\n /**\n * @member - entry type\n * @type {string}\n */\n public type: string;\n /**\n * @member - entry metadata\n * @type {Object}\n */\n public metadata: any;\n /**\n * @member - DVR status\n * @type {number}\n */\n public dvrStatus?: number;\n /**\n * @member - media status\n * @type {number}\n */\n public status?: number;\n /**\n * @member - media poster\n * @type {string | Array<Object>}\n */\n public poster?: string | Poster[];\n\n /**\n * @member - assetReferenceType\n * @type {string }\n */\n public assetReferenceType?: string;\n\n /**\n * @member - The download URL of the entry.\n * @type {string}\n */\n public downloadUrl?: string;\n\n /**\n * @member - The raw thumbnail URL\n * @type {string}\n */\n public rawThumbnailUrl?: string;\n\n /**\n * @member - The root entry ID\n * @type {string}\n */\n public rootEntryId?: string;\n\n /**\n * @member - The capabilities of the entry\n * @type {Array<string>}\n */\n public capabilities?: Array<string>;\n\n /**\n * @constructor\n */\n constructor() {\n this.metadata = new Map();\n this.sources = new MediaSources();\n this.type = MediaEntry.Type.UNKNOWN;\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaEntryObject} - The json class object.\n */\n public toJSON(): ProviderMediaEntryObject {\n return {\n id: this.id,\n name: this.name,\n sources: this.sources.toJSON(),\n duration: this.duration,\n dvrStatus: this.dvrStatus,\n status: this.status,\n metadata: this.metadata,\n type: this.type,\n poster: this.poster,\n assetReferenceType: this.assetReferenceType,\n downloadUrl: this.downloadUrl,\n rawThumbnailUrl: this.rawThumbnailUrl,\n rootEntryId: this.rootEntryId,\n capabilities: this.capabilities\n };\n }\n}\n","import {ProviderDrmDataObject} from '../types';\n\nexport default class Drm {\n /**\n * @member - license url\n * @type {string}\n */\n public licenseUrl: string;\n /**\n * @member - drm scheme\n * @type {string}\n */\n public scheme: string;\n\n /**\n * @member - drm certificate\n * @type {string}\n */\n public certificate?: string;\n\n /**\n * @constructor\n * @param {string} licenseUrl - the license url\n * @param {string} scheme - the drm scheme\n * @param {?string} certificate - the drm certificate\n */\n constructor(licenseUrl: string, scheme: string, certificate?: string) {\n this.licenseUrl = licenseUrl;\n this.scheme = scheme;\n if (certificate) {\n this.certificate = certificate;\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderDrmDataObject} - The json class object.\n */\n public toJSON(): ProviderDrmDataObject {\n const response: ProviderDrmDataObject = {\n licenseUrl: this.licenseUrl,\n scheme: this.scheme\n };\n if (this.certificate) response.certificate = this.certificate;\n return response;\n }\n}\n","import Drm from './drm';\nimport {ProviderMediaSourceObject} from '../types';\n\nexport default class MediaSource {\n /**\n * @member - media source id\n * @type {string}\n */\n public id!: string;\n /**\n * @member - media source url\n * @type {string}\n */\n public url!: string;\n /**\n * @member - media source mimetype\n * @type {string}\n */\n public mimetype!: string;\n /**\n * @member - media source drm data\n * @type {Array<Drm>}\n */\n public drmData?: Array<Drm>;\n /**\n * @member - media source bandwidth\n * @type {number}\n */\n public bandwidth?: number;\n /**\n * @member - media source width\n * @type {number}\n */\n public width?: number;\n /**\n * @member - media source height\n * @type {number}\n */\n public height?: number;\n /**\n * @member - media source label\n * @type {string}\n */\n public label?: string;\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourceObject} - The json class object.\n */\n public toJSON(): ProviderMediaSourceObject {\n const response: ProviderMediaSourceObject = {\n id: this.id,\n url: this.url,\n mimetype: this.mimetype\n };\n if (this.bandwidth) response.bandwidth = this.bandwidth;\n if (this.width) response.width = this.width;\n if (this.height) response.height = this.height;\n if (this.label) response.label = this.label;\n if (this.drmData && this.drmData.length > 0) {\n response.drmData = [];\n this.drmData.forEach(d => {\n if (Array.isArray(response.drmData)) {\n response.drmData.push(d.toJSON());\n }\n });\n }\n return response;\n }\n}\n","import MediaEntry from '../entities/media-entry';\n\nexport default class EntryList {\n /**\n * @member - entry list items\n * @type {Array<MediaEntry>}\n */\n public items: Array<MediaEntry>;\n\n constructor() {\n this.items = [];\n }\n}\n","export default class Bumper {\n /**\n * @member - bumper url\n * @type {string}\n */\n public url: string;\n /**\n * @member - bumper click through url\n * @type {string}\n */\n public clickThroughUrl: string;\n\n /**\n * @constructor\n * @param {Object} data - The bumper response\n */\n constructor(data: any) {\n this.url = data.url;\n this.clickThroughUrl = data.clickThroughUrl;\n }\n}\n","import getLogger from '../../util/logger';\nimport KalturaPlaybackSource from './response-types/kaltura-playback-source';\nimport KalturaPlaybackContext from './response-types/kaltura-playback-context';\nimport KalturaAsset from './response-types/kaltura-asset';\nimport MediaEntry from '../../entities/media-entry';\nimport Drm from '../../entities/drm';\nimport MediaSource from '../../entities/media-source';\nimport MediaSources from '../../entities/media-sources';\nimport EntryList from '../../entities/entry-list';\nimport Bumper from '../../entities/bumper';\nimport {SupportedStreamFormat, isProgressiveSource} from '../../entities/media-format';\nimport {KalturaDrmPlaybackPluginData} from '../common/response-types/kaltura-drm-playback-plugin-data';\nimport KalturaRuleAction from './response-types/kaltura-rule-action';\nimport {KalturaAccessControlMessage} from '../common/response-types/kaltura-access-control-message';\nimport type {OTTAssetLoaderResponse} from './loaders/asset-loader';\nimport KalturaBumpersPlaybackPluginData from './response-types/kaltura-bumper-playback-plugin-data';\nimport {ProviderMediaInfoObject, Poster} from '../../types';\n\nconst LIVE_ASST_OBJECT_TYPE: string = 'KalturaLiveAsset';\n\nconst MediaTypeCombinations: {[mediaType: string]: any} = {\n [KalturaAsset.Type.MEDIA]: {\n [KalturaPlaybackContext.Type.TRAILER]: () => ({type: MediaEntry.Type.VOD}),\n [KalturaPlaybackContext.Type.PLAYBACK]: mediaAssetData => {\n if (mediaAssetData.objectType === LIVE_ASST_OBJECT_TYPE) {\n return {type: MediaEntry.Type.LIVE, dvrStatus: mediaAssetData.enableTrickPlay ? MediaEntry.DvrStatus.ON : MediaEntry.DvrStatus.OFF};\n } else if (parseInt(mediaAssetData.externalIds) > 0) {\n return {type: MediaEntry.Type.LIVE, dvrStatus: MediaEntry.DvrStatus.OFF};\n }\n return {type: MediaEntry.Type.VOD};\n }\n },\n [KalturaAsset.Type.EPG]: {\n [KalturaPlaybackContext.Type.CATCHUP]: () => ({type: MediaEntry.Type.VOD}),\n [KalturaPlaybackContext.Type.START_OVER]: () => ({type: MediaEntry.Type.LIVE, dvrStatus: MediaEntry.DvrStatus.ON})\n },\n [KalturaAsset.Type.RECORDING]: {\n [KalturaPlaybackContext.Type.PLAYBACK]: () => ({type: MediaEntry.Type.VOD})\n }\n};\n\nexport default class OTTProviderParser {\n private static _logger = getLogger('OTTProviderParser');\n\n /**\n * Returns parsed media entry by given OTT response objects.\n * @function getMediaEntry\n * @param {any} assetResponse - The asset response.\n * @param {Object} requestData - The request data object.\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n public static getMediaEntry(assetResponse: any, requestData: any): MediaEntry {\n const mediaEntry = new MediaEntry();\n OTTProviderParser._fillBaseData(mediaEntry, assetResponse, requestData);\n const playbackContext = assetResponse.playBackContextResult;\n const mediaAsset = assetResponse.mediaDataResult;\n const kalturaSources = playbackContext.sources;\n const filteredKalturaSources = OTTProviderParser._filterSourcesByFormats(kalturaSources, requestData.formats);\n mediaEntry.sources = OTTProviderParser._getParsedSources(filteredKalturaSources);\n const typeData = OTTProviderParser._getMediaType(mediaAsset.data, requestData.mediaType, requestData.contextType);\n mediaEntry.type = typeData.type;\n mediaEntry.dvrStatus = typeData.dvrStatus;\n // eslint-disable-next-line prefer-spread\n mediaEntry.duration = Math.max.apply(\n Math,\n kalturaSources.map(source => source.duration)\n );\n return mediaEntry;\n }\n\n /**\n * Returns parsed entry list by given OTT response objects\n * @function getEntryList\n * @param {any} playlistResponse - response\n * @param {Array<ProviderMediaInfoObject>} requestEntries - entries list\n * @returns {Playlist} - The entry list\n * @static\n * @public\n */\n public static getEntryList(playlistResponse: any, requestEntries: Array<ProviderMediaInfoObject>): EntryList {\n const entryList = new EntryList();\n const playlistItems = playlistResponse.playlistItems.entries;\n playlistItems.forEach(entry => {\n const mediaEntry = new MediaEntry();\n const requestData = requestEntries.find(requestEntry => requestEntry.entryId === entry.mediaDataResult.id);\n OTTProviderParser._fillBaseData(mediaEntry, entry, requestData);\n entryList.items.push(mediaEntry);\n });\n return entryList;\n }\n\n /**\n * Returns parsed bumper by given OTT response objects.\n * @function getBumper\n * @param {any} assetResponse - The asset response.\n * @returns {?Bumper} - The bumper\n * @static\n * @public\n */\n public static getBumper(assetResponse: any): Bumper | unknown {\n const playbackContext = assetResponse.playBackContextResult;\n const progressiveBumper = playbackContext.plugins.find(\n bumper => bumper.streamertype === KalturaBumpersPlaybackPluginData.StreamerType.PROGRESSIVE\n );\n if (progressiveBumper) {\n return new Bumper(progressiveBumper);\n }\n }\n\n private static _fillBaseData(mediaEntry: MediaEntry, assetResponse: any, requestData: any): MediaEntry {\n const mediaAsset = assetResponse.mediaDataResult;\n const metaData = OTTProviderParser.reconstructMetadata(mediaAsset);\n metaData.description = mediaAsset.description;\n metaData.name = mediaAsset.name;\n if (mediaAsset.createDate) metaData.createdAt = mediaAsset.createDate;\n if (mediaAsset.endDate) metaData.endDate = mediaAsset.endDate;\n if (mediaAsset.data.entryId) metaData.entryId = mediaAsset.data.entryId;\n if (mediaAsset.data.epgId) metaData.epgId = mediaAsset.data.epgId;\n if (mediaAsset.data.recordingId) metaData.recordingId = mediaAsset.data.recordingId;\n if (requestData && requestData.mediaType) metaData.mediaType = requestData.mediaType;\n if (requestData && requestData.contextType) metaData.contextType = requestData.contextType;\n mediaEntry.metadata = metaData;\n mediaEntry.poster = OTTProviderParser._getPoster(mediaAsset.pictures);\n mediaEntry.id = mediaAsset.id;\n return mediaEntry;\n }\n\n /**\n * reconstruct the metadata\n * @param {Object} mediaAsset the mediaAsset that contains the response with the metadata.\n * @returns {Object} reconstructed metadata object\n */\n public static reconstructMetadata(mediaAsset: any): any {\n const metadata = {\n metas: OTTProviderParser.addToMetaObject(mediaAsset.metas),\n tags: OTTProviderParser.addToMetaObject(mediaAsset.tags)\n };\n return metadata;\n }\n\n /**\n * transform an array of [{key: value},{key: value}...] to an object\n * @param {Array<Object>} list a list of objects\n * @returns {Object} an mapped object of the arrayed list.\n */\n public static addToMetaObject(list: Array<any>): any {\n const categoryObj = {};\n if (list) {\n list.forEach(item => {\n categoryObj[item.key] = item.value;\n });\n }\n return categoryObj;\n }\n\n /**\n * Gets the poster url without width and height.\n * @param {Array<Object>} pictures - Media pictures.\n * @returns {string | Array<Object>} - Poster base url or array of poster candidates.\n * @private\n */\n public static _getPoster(pictures: Poster[]): string | Poster[] {\n if (pictures && pictures.length > 0) {\n const picObj = pictures[0];\n const url = picObj.url;\n // Search for thumbnail service\n const regex = /.*\\/thumbnail\\/.*(?:width|height)\\/\\d+\\/(?:height|width)\\/\\d+/;\n if (regex.test(url)) {\n return url;\n }\n return pictures.map(pic => ({url: pic.url, width: pic.width, height: pic.height}));\n }\n return '';\n }\n\n /**\n * Gets the media type (LIVE/VOD)\n * @param {Object} mediaAssetData - The media asset data.\n * @param {string} mediaType - The asset media type.\n * @param {string} contextType - The asset context type.\n * @returns {Object} - The type data object.\n * @private\n */\n public static _getMediaType(mediaAssetData: any, mediaType: string, contextType: string): any {\n let typeData = {type: MediaEntry.Type.UNKNOWN};\n if (MediaTypeCombinations[mediaType] && MediaTypeCombinations[mediaType][contextType]) {\n typeData = MediaTypeCombinations[mediaType][contextType](mediaAssetData);\n }\n return typeData;\n }\n\n /**\n * Filtered the kalturaSources array by device type.\n * @param {Array<KalturaPlaybackSource>} kalturaSources - The kaltura sources.\n * @param {Array<string>} formats - Partner device formats.\n * @returns {Array<KalturaPlaybackSource>} - Filtered kalturaSources array.\n * @private\n */\n public static _filterSourcesByFormats(kalturaSources: Array<KalturaPlaybackSource>, formats: Array<string>): Array<KalturaPlaybackSource> {\n if (formats.length > 0) {\n kalturaSources = kalturaSources.filter(source => formats.includes(source.type));\n }\n return kalturaSources;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array<KalturaPlaybackSource>} kalturaSources - The kaltura sources\n * @param {Object} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n public static _getParsedSources(kalturaSources: Array<KalturaPlaybackSource>): MediaSources {\n const sources = new MediaSources();\n const addAdaptiveSource = (source: KalturaPlaybackSource): void => {\n const parsedSource = OTTProviderParser._parseAdaptiveSource(source);\n if (parsedSource) {\n const sourceFormat = SupportedStreamFormat.get(source.format);\n sources.map(parsedSource, sourceFormat);\n }\n };\n const parseAdaptiveSources = (): void => {\n kalturaSources.filter(source => !isProgressiveSource(source.format)).forEach(addAdaptiveSource);\n };\n const parseProgressiveSources = (): void => {\n kalturaSources.filter(source => isProgressiveSource(source.format)).forEach(addAdaptiveSource);\n };\n if (kalturaSources && kalturaSources.length > 0) {\n parseAdaptiveSources();\n parseProgressiveSources();\n }\n return sources;\n }\n\n /**\n * Returns a parsed adaptive source\n * @function _parseAdaptiveSource\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @returns {?MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n public static _parseAdaptiveSource(kalturaSource?: KalturaPlaybackSource): MediaSource | null {\n const mediaSource = new MediaSource();\n if (kalturaSource) {\n const playUrl = kalturaSource.url;\n const mediaFormat = SupportedStreamFormat.get(kalturaSource.format);\n if (mediaFormat) {\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n if (!playUrl) {\n OTTProviderParser._logger.error(\n `failed to create play url from source, discarding source: (${kalturaSource.fileId}), ${kalturaSource.format}.`\n );\n return null;\n }\n mediaSource.url = playUrl;\n mediaSource.id = kalturaSource.fileId + ',' + kalturaSource.format;\n if (kalturaSource.hasDrmData()) {\n const drmParams: Array<Drm> = [];\n kalturaSource.drm.forEach(drm => {\n drmParams.push(new Drm(drm.licenseURL, KalturaDrmPlaybackPluginData.Scheme[drm.scheme], drm.certificate));\n });\n mediaSource.drmData = drmParams;\n }\n }\n return mediaSource;\n }\n\n public static hasBlockAction(response: OTTAssetLoaderResponse): boolean {\n return response.playBackContextResult.hasBlockAction();\n }\n\n public static getBlockAction(response: OTTAssetLoaderResponse): KalturaRuleAction | undefined {\n return response.playBackContextResult.getBlockAction();\n }\n\n public static getErrorMessages(response: OTTAssetLoaderResponse): Array<KalturaAccessControlMessage> {\n return response.playBackContextResult.getErrorMessages();\n }\n}\n","import BaseProvider from '../common/base-provider';\nimport getLogger from '../../util/logger';\nimport OTTConfiguration from './config';\nimport OTTDataLoaderManager from './loaders/data-loader-manager';\nimport OTTSessionLoader from './loaders/session-loader';\nimport OTTAssetLoader from './loaders/asset-loader';\nimport OTTAssetListLoader from './loaders/asset-list-loader';\nimport OTTProviderParser from './provider-parser';\nimport KalturaAsset from './response-types/kaltura-asset';\nimport KalturaPlaybackContext from './response-types/kaltura-playback-context';\nimport MediaEntry from '../../entities/media-entry';\nimport Error from '../../util/error/error';\nimport {\n ILoader,\n OTTProviderMediaInfoObject,\n ProviderEntryListObject,\n ProviderMediaConfigObject,\n ProviderMediaConfigSourcesObject, ProviderMediaInfoObject,\n ProviderOptionsObject,\n ProviderPlaybackContextOptions,\n ProviderPlaylistObject\n} from '../../types';\n\nexport default class OTTProvider extends BaseProvider<OTTProviderMediaInfoObject> {\n /**\n * @constructor\n * @param {ProviderOptionsObject} options - provider options\n * @param {string} playerVersion - player version\n */\n constructor(options: ProviderOptionsObject, playerVersion: string) {\n super(options, playerVersion);\n this._logger = getLogger('OTTProvider');\n OTTConfiguration.set(options.env);\n this._networkRetryConfig = Object.assign(this._networkRetryConfig, options.networkRetryParameters);\n }\n\n public get env(): any {\n return OTTConfiguration.get();\n }\n\n /**\n * Gets the backend media config.\n * @param {OTTProviderMediaInfoObject} mediaInfo - ott media info\n * @returns {Promise<ProviderMediaConfigObject>} - The provider media config\n */\n public getMediaConfig(mediaInfo: OTTProviderMediaInfoObject): Promise<ProviderMediaConfigObject> {\n if (mediaInfo.ks) {\n this.ks = mediaInfo.ks;\n this._isAnonymous = false;\n }\n this._dataLoader = new OTTDataLoaderManager(this.partnerId, this.ks, this._networkRetryConfig);\n return new Promise((resolve, reject) => {\n const entryId = mediaInfo.entryId;\n if (entryId) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OTTSessionLoader, {partnerId: this.partnerId});\n }\n const contextType = mediaInfo.contextType || KalturaPlaybackContext.Type.PLAYBACK;\n const mediaType = mediaInfo.mediaType || KalturaAsset.Type.MEDIA;\n const assetReferenceType = mediaInfo.assetReferenceType || KalturaAsset.AssetReferenceType.MEDIA;\n const playbackContext: ProviderPlaybackContextOptions = {\n mediaProtocol: mediaInfo.protocol,\n assetFileIds: mediaInfo.fileIds,\n context: contextType\n };\n if (mediaInfo.streamerType) {\n playbackContext.streamerType = mediaInfo.streamerType;\n }\n if (mediaInfo.urlType) {\n playbackContext.urlType = mediaInfo.urlType;\n }\n if (mediaInfo.adapterData) {\n playbackContext.adapterData = mediaInfo.adapterData;\n }\n this._dataLoader.add(OTTAssetLoader, {\n entryId: entryId,\n ks: ks,\n type: mediaType,\n playbackContext: playbackContext,\n assetReferenceType: assetReferenceType\n });\n const requestData = {\n contextType: contextType,\n mediaType: mediaType,\n formats: mediaInfo.formats || []\n };\n return this._dataLoader.fetchData().then(\n response => {\n try {\n resolve(this._parseDataFromResponse(response, requestData));\n } catch (err) {\n reject(err);\n }\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject(new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.MISSING_MANDATORY_PARAMS, {message: 'missing entry id'}));\n }\n });\n }\n\n private _parseDataFromResponse(data: Map<string, ILoader>, requestData: any): ProviderMediaConfigObject {\n this._logger.debug('Data parsing started');\n const mediaConfig: ProviderMediaConfigObject = {\n session: {\n isAnonymous: this._isAnonymous,\n partnerId: this.partnerId\n },\n sources: this._getDefaultSourcesObject(),\n plugins: {}\n } as ProviderMediaConfigObject;\n if (this.uiConfId) {\n mediaConfig.session.uiConfId = this.uiConfId;\n }\n if (data) {\n if (data.has(OTTSessionLoader.id)) {\n const sessionLoader = data.get(OTTSessionLoader.id);\n if (sessionLoader && sessionLoader.response) {\n mediaConfig.session.ks = sessionLoader.response;\n }\n } else {\n mediaConfig.session.ks = this.ks;\n }\n if (data.has(OTTAssetLoader.id)) {\n const assetLoader = data.get(OTTAssetLoader.id);\n if (assetLoader && assetLoader.response && Object.keys(assetLoader.response).length) {\n const response = (assetLoader as unknown as OTTAssetLoader).response;\n if (OTTProviderParser.hasBlockAction(response)) {\n throw new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.BLOCK_ACTION, {\n action: OTTProviderParser.getBlockAction(response),\n messages: OTTProviderParser.getErrorMessages(response)\n });\n }\n const mediaEntry = OTTProviderParser.getMediaEntry(response, requestData);\n Object.assign(mediaConfig.sources, this._getSourcesObject(mediaEntry));\n this._verifyHasSources(mediaConfig.sources);\n const bumper = OTTProviderParser.getBumper(response);\n if (bumper) {\n Object.assign(mediaConfig.plugins, {bumper});\n }\n }\n }\n }\n this._logger.debug('Data parsing finished', mediaConfig);\n return mediaConfig;\n }\n\n /**\n * Gets the playlist config from entry list.\n * @param {ProviderEntryListObject} entryListInfo - ott entry list info\n * @returns {Promise<ProviderPlaylistObject>} - The provider playlist config\n */\n public getEntryListConfig(entryListInfo: ProviderEntryListObject): Promise<ProviderPlaylistObject> {\n if (entryListInfo.ks) {\n this.ks = entryListInfo.ks;\n this._isAnonymous = false;\n }\n this._dataLoader = new OTTDataLoaderManager(this.partnerId, this.ks, this._networkRetryConfig);\n return new Promise((resolve, reject) => {\n const entries = entryListInfo.entries;\n if (entries && entries.length) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OTTSessionLoader, {partnerId: this.partnerId});\n }\n this._dataLoader.add(OTTAssetListLoader, {entries, ks});\n this._dataLoader.fetchData(false).then(\n response => {\n resolve(this._parseEntryListDataFromResponse(response, entries));\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject({success: false, data: 'Missing mandatory parameter'});\n }\n });\n }\n\n private _parseEntryListDataFromResponse(data: Map<string, ILoader>, requestEntries: Array<ProviderMediaInfoObject>): ProviderPlaylistObject {\n this._logger.debug('Data parsing started');\n const playlistConfig: ProviderPlaylistObject = {\n id: '',\n metadata: {\n name: '',\n description: ''\n },\n poster: '',\n items: [],\n playlistLastEntryId: ''\n };\n if (data && data.has(OTTAssetListLoader.id)) {\n const playlistLoader = data.get(OTTAssetListLoader.id);\n if (playlistLoader && playlistLoader.response) {\n const entryList = OTTProviderParser.getEntryList(playlistLoader.response, requestEntries);\n entryList.items.forEach(i => playlistConfig.items.push({sources: this._getSourcesObject(i)}));\n }\n }\n this._logger.debug('Data parsing finished', playlistConfig);\n return playlistConfig;\n }\n\n private _getDefaultSourcesObject(): ProviderMediaConfigSourcesObject {\n return {\n hls: [],\n dash: [],\n progressive: [],\n image: [],\n document: [],\n id: '',\n duration: 0,\n type: MediaEntry.Type.UNKNOWN,\n poster: '',\n dvr: false,\n vr: null,\n metadata: {\n name: '',\n description: '',\n tags: ''\n }\n };\n }\n\n private _getSourcesObject(mediaEntry: MediaEntry): ProviderMediaConfigSourcesObject {\n const sourcesObject: ProviderMediaConfigSourcesObject = this._getDefaultSourcesObject();\n const mediaSources = mediaEntry.sources.toJSON();\n sourcesObject.hls = mediaSources.hls;\n sourcesObject.dash = mediaSources.dash;\n sourcesObject.progressive = mediaSources.progressive;\n sourcesObject.id = mediaEntry.id;\n sourcesObject.duration = mediaEntry.duration;\n sourcesObject.type = mediaEntry.type;\n sourcesObject.dvr = !!mediaEntry.dvrStatus;\n sourcesObject.poster = mediaEntry.poster;\n if (\n mediaEntry.metadata &&\n mediaEntry.metadata.metas &&\n typeof mediaEntry.metadata.metas.tags === 'string' &&\n mediaEntry.metadata.metas.tags.indexOf('360') > -1\n ) {\n sourcesObject.vr = {};\n }\n Object.assign(sourcesObject.metadata, mediaEntry.metadata);\n return sourcesObject;\n }\n}\n","import OTTProvider from './provider';\nimport KalturaPlaybackContext from './response-types/kaltura-playback-context';\nimport KalturaAsset from './response-types/kaltura-asset';\n\ndeclare let __VERSION__: string;\ndeclare let __NAME__: string;\n\nconst NAME = __NAME__ + '-ott';\nconst VERSION = __VERSION__;\n\nconst ContextType = KalturaPlaybackContext.Type;\nconst MediaType = KalturaAsset.Type;\n\nexport {OTTProvider as Provider, ContextType, MediaType, NAME, VERSION};\n"],"names":["root","factory","exports","module","define","amd","a","i","self","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","_classCallCheck","instance","Constructor","TypeError","_typeof","iterator","constructor","_toPropertyKey","arg","input","hint","prim","toPrimitive","undefined","res","String","_defineProperties","target","props","length","descriptor","configurable","writable","_createClass","protoProps","staticProps","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inherits","subClass","superClass","create","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","_getPrototypeOf","getPrototypeOf","_defineProperty","JsLogger","VERSION","DEBUG","name","ERROR","INFO","OFF","TIME","TRACE","WARN","createDefaultHandler","debug","enabledFor","error","getLevel","info","log","setHandler","setLevel","time","timeEnd","trace","useDefaults","warn","LogLevel","getLogger","Error","severity","category","code","data","arguments","this","_logger","concat","RECOVERABLE","CRITICAL","NETWORK","SERVICE","PROVIDER","UNSUPPORTED_SCHEME","BAD_HTTP_STATUS","HTTP_ERROR","TIMEOUT","MALFORMED_DATA_URI","BAD_SERVER_RESPONSE","MULTIREQUEST_API_ERROR","API_RESPONSE_MISMATCH","BLOCK_ACTION","MEDIA_STATUS_NOT_READY","SCHEDULED_RESTRICTED","MISSING_MANDATORY_PARAMS","MISSING_PLAY_SOURCE","METHOD_NOT_IMPLEMENTED","BaseProvider","options","playerVersion","async","timeout","maxAttempts","logger","setLogger","_partnerId","partnerId","_widgetId","widgetId","_uiConfId","uiConfId","_isAnonymous","ks","_ks","_playerVersion","_referrer","referrer","defaultWidgetId","set","mediaInfo","Promise","reject","Severity","Category","Code","message","playlistInfo","entryListInfo","sources","hls","dash","progressive","image","document","action","messages","id","getLogLevel","level","setLogLevel","clone","node","Array","isArray","slice","forEach","e","assign","keys","defaultConfig","serviceParams","apiVersion","OTTConfiguration","clientConfig","DataLoaderManager","networkRetryConfig","Map","_networkRetryConfig","loader","params","_this","execution_loader","isValid","_loaders","startIndex","_multiRequest","requests","retryConfig","request","add","executionLoaderResponseMap","from","val","index","_loadersResponseMap","requestsMustSucceed","_this2","resolve","execute","then","_multiResponse","response","prepareData","success","headers","err","_this3","loaderDataIndexes","results","RequestBuilder","serviceUrl","service","promise","_requestPromise","url","_createXHR","XMLHttpRequest","onreadystatechange","readyState","status","JSON","parse","responseText","responseHeaders","_getResponseHeaders","_createError","text","open","method","requestTime","performance","now","ontimeout","_handleError","statusText","onerror","onabort","setRequestHeader","send","getAllResponseHeaders","split","filter","header","toLowerCase","indexOf","_attemptCounter","attempt","ServiceResult","objectType","hasError","ServiceError","MultiRequestBuilder","_RequestBuilder","_super","_len","args","_key","apply","push","requestParams","serviceDef","stringify","FAILED_PARSING_REQUEST","doHttpRequest","multiRequestResult","MultiRequestResult","result","map","errorResults","serviceResult","OTTService","config","ottParams","multiReq","getUrl","OTTDataLoaderManager","_DataLoaderManager","getMultiRequest","OTTUserService","_OTTService","udid","OTTSessionLoader","buildRequests","_requests","_response","UserService","anonymousLogin","SERVICE_NAME","OTTAssetService","assetId","type","playbackContextOptions","contextDataParams","assetType","assetReferenceType","KalturaAccessControlMessage","KalturaRuleAction","BLOCK","START_DATE_OFFSET","END_DATE_OFFSET","USER_BLOCK","ALLOW_PLAYBACK","BLOCK_PLAYBACK","APPLY_DISCOUNT_MODULE","KalturaDrmPlaybackPluginData","drm","scheme","licenseURL","certificate","WIDEVINE_CENC","PLAYREADY_CENC","FAIRPLAY","KalturaPlaybackSource","source","format","adsPolicy","adsParam","duration","fileId","protocols","protocol","returnValue","KalturaBumpersPlaybackPluginData","streamertype","HLS","DASH","PROGRESSIVE","KalturaPlaybackContext","_ServiceResult","actions","plugins","plugin","getBlockAction","find","Type","DOWNLOAD","TRAILER","CATCHUP","START_OVER","PLAYBACK","KalturaAsset","description","createDate","endDate","plays","views","metas","_formatTagsMetas","tags","pictures","images","objectToParse","parsed","objects","object","MEDIA","RECORDING","EPG","EPG_INTERNAL","EPG_EXTERNAL","NPVR","OTTAssetLoader","_entryId","entryId","mediaDataResult","playBackContextResult","getPlaybackContext","playbackContext","OTTAssetListLoader","playlistItems","entries","_entries","item","entry","AssetReferenceType","MediaFormat","mimeType","pathExt","WVM","MP4","MP3","SupportedStreamFormat","isProgressiveSource","formatName","sourceFormat","MediaSources","mediaFormat","toJSON","h","d","MediaEntry","metadata","UNKNOWN","dvrStatus","poster","downloadUrl","rawThumbnailUrl","rootEntryId","capabilities","VOD","LIVE","IMAGE","AUDIO","DOCUMENT","ON","Drm","licenseUrl","MediaSource","mimetype","bandwidth","width","height","label","drmData","EntryList","items","Bumper","clickThroughUrl","MediaTypeCombinations","mediaAssetData","enableTrickPlay","DvrStatus","parseInt","externalIds","OTTProviderParser","assetResponse","requestData","mediaEntry","_fillBaseData","mediaAsset","kalturaSources","filteredKalturaSources","_filterSourcesByFormats","formats","_getParsedSources","typeData","_getMediaType","mediaType","contextType","Math","max","playlistResponse","requestEntries","entryList","requestEntry","progressiveBumper","bumper","StreamerType","metaData","reconstructMetadata","createdAt","epgId","recordingId","_getPoster","addToMetaObject","list","categoryObj","test","pic","includes","addAdaptiveSource","parsedSource","_parseAdaptiveSource","kalturaSource","mediaSource","playUrl","hasDrmData","drmParams","Scheme","hasBlockAction","getErrorMessages","OTTProvider","_BaseProvider","env","networkRetryParameters","_dataLoader","mediaProtocol","assetFileIds","fileIds","context","streamerType","urlType","adapterData","fetchData","_parseDataFromResponse","mediaConfig","session","isAnonymous","_getDefaultSourcesObject","has","sessionLoader","assetLoader","getMediaEntry","_getSourcesObject","_verifyHasSources","getBumper","_parseEntryListDataFromResponse","_this4","playlistConfig","playlistLastEntryId","playlistLoader","getEntryList","dvr","vr","sourcesObject","mediaSources","NAME","__NAME__","__VERSION__","ContextType","MediaType"],"sourceRoot":""}
1
+ {"version":3,"file":"playkit-ott-provider.js","mappings":"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","sources":["webpack://@playkit-js/playkit-js-providers/webpack/universalModuleDefinition","webpack://@playkit-js/playkit-js-providers/webpack/bootstrap","webpack://@playkit-js/playkit-js-providers/webpack/runtime/define property getters","webpack://@playkit-js/playkit-js-providers/webpack/runtime/hasOwnProperty shorthand","webpack://@playkit-js/playkit-js-providers/webpack/runtime/make namespace object","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@playkit-js/playkit-js-providers/./src/util/logger.ts","webpack://@playkit-js/playkit-js-providers/./src/util/error/error.ts","webpack://@playkit-js/playkit-js-providers/./src/util/error/severity.ts","webpack://@playkit-js/playkit-js-providers/./src/util/error/category.ts","webpack://@playkit-js/playkit-js-providers/./src/util/error/code.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/base-provider.ts","webpack://@playkit-js/playkit-js-providers/./src/util/clone.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/config.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/data-loader-manager.ts","webpack://@playkit-js/playkit-js-providers/./src/util/request-builder.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/base-service-result.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/multi-request-builder.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/services/ott-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/loaders/data-loader-manager.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/services/user-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/loaders/session-loader.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/services/asset-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/response-types/kaltura-access-control-message.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/response-types/kaltura-rule-action.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/response-types/kaltura-drm-playback-plugin-data.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/response-types/kaltura-playback-source.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/response-types/kaltura-bumper-playback-plugin-data.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/response-types/kaltura-playback-context.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/response-types/kaltura-asset.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/loaders/asset-loader.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/loaders/asset-list-loader.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/media-format.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/media-sources.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/media-entry.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/drm.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/media-source.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/entry-list.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/bumper.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/provider-parser.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/provider.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/index.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export type LogLevelObject = {value: number, name: string};\nexport type LogLevelType = {[level: string]: LogLevelObject};\nexport type loggerFunctionType = {\n VERSION: string,\n DEBUG: LogLevelObject,\n ERROR: LogLevelObject,\n INFO: LogLevelObject,\n OFF: LogLevelObject,\n TIME: LogLevelObject,\n TRACE: LogLevelObject,\n WARN: LogLevelObject,\n createDefaultHandler: () => any\n debug: () => any\n enabledFor: () => any\n error: () => any\n get: () => any\n getLevel: () => any\n info: () => any\n log: () => any\n setHandler: () => any\n setLevel: () => any\n time: () => any\n timeEnd: () => any\n trace: () => any\n useDefaults: () => any\n warn: () => any\n};\n\ntype LoggerType = {\n getLogger: loggerFunctionType,\n LogLevel: LogLevelType\n};\n\nconst JsLogger = {\n get: (): any => ({\n VERSION: '',\n DEBUG: {value: '', name: ''},\n ERROR: {value: '', name: ''},\n INFO: {value: '', name: ''},\n OFF: {value: '', name: ''},\n TIME: {value: '', name: ''},\n TRACE: {value: '', name: ''},\n WARN: {value: '', name: ''},\n createDefaultHandler: (): any => {},\n debug: (): any => {},\n enabledFor: (): any => {},\n error: (): any => {},\n get: (): any => {},\n getLevel: (): any => {},\n info: (): any => {},\n log: (): any => {},\n setHandler: (): any => {},\n setLevel: (): any => {},\n time: (): any => {},\n timeEnd: (): any => {},\n trace: (): any => {},\n useDefaults: (): any => {},\n warn: (): any => {}\n })\n};\n\nlet LogLevel: LogLevelType = {};\n/**\n * set logger\n * @param {LoggerType} logger - the logger\n * @returns {void}\n */\nfunction setLogger(logger?: LoggerType): void {\n if (logger && typeof logger.getLogger === 'function') {\n JsLogger.get = logger.getLogger;\n }\n if (logger && logger.LogLevel) {\n LogLevel = logger.LogLevel;\n }\n}\n\n/**\n * get a logger\n * @param {?string} name - the logger name\n * @returns {Object} - the logger class\n */\nfunction getLogger(name?: string): any {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n //@ts-ignore\n return JsLogger.get(name);\n}\n\n/**\n * get the log level\n * @param {?string} name - the logger name\n * @returns {LogLevelObject} - the log level\n */\nfunction getLogLevel(name?: string): LogLevelObject {\n return getLogger(name).getLevel();\n}\n\n/**\n * sets the logger level\n * @param {LogLevelObject} level - the log level\n * @param {?string} name - the logger name\n * @returns {void}\n */\nfunction setLogLevel(level: LogLevelObject, name?: string): void {\n getLogger(name).setLevel(level);\n}\n\nexport default getLogger;\nexport {getLogLevel, setLogLevel, setLogger, LogLevel, LoggerType};\n","import getLogger from '../logger';\nimport {Severity} from './severity';\nimport type {SeverityType} from './severity';\nimport {Code} from './code';\nimport type {CodeType} from './code';\nimport {Category} from './category';\nimport type {CategoryType} from './category';\n\nconst CLASS_NAME: string = 'Error';\n\n/**\n * @classdesc This is a description of the error class.\n */\nexport default class Error {\n public severity: number;\n public category: number;\n public code: number;\n public data: any;\n /**\n * @enum {number}\n */\n public static Severity: SeverityType = Severity;\n /**\n * @enum {number}\n */\n public static Category: CategoryType = Category;\n /**\n * @enum {number}\n */\n public static Code: CodeType = Code;\n private static _logger: any = getLogger(CLASS_NAME);\n\n /**\n * @constructor\n * @param {number} severity - error's severity\n * @param {number} category - error's category.\n * @param {number} code - error's code.\n * @param {any} data - additional data for the error.\n */\n constructor(severity: number, category: number, code: number, data: any = {}) {\n this.severity = severity;\n this.category = category;\n this.code = code;\n this.data = data;\n Error._logger.error(`Category:${category} | Code:${code} |`, data);\n }\n}\n","type SeverityType = {[severity: string]: number};\n\nconst Severity: SeverityType = {\n /**\n * An error occurred, but the Player is attempting to recover from the error.\n *\n * If the Player cannot ultimately recover, it still may not throw a CRITICAL\n * error. For example, retrying for a media segment will never result in\n * a CRITICAL error (the Player will just retry forever).\n */\n RECOVERABLE: 1,\n /**\n * A critical error that the library cannot recover from. These usually cause\n * the Player to stop loading or updating. A new manifest must be loaded\n * to reset the library.\n */\n CRITICAL: 2\n};\n\nexport {Severity};\nexport type {SeverityType};\n","type CategoryType = {[category: string]: number};\n\nconst Category: CategoryType = {\n /** Errors from the network stack. */\n NETWORK: 1,\n SERVICE: 2,\n PROVIDER: 3\n};\n\nexport {Category};\nexport type {CategoryType};\n","type CodeType = {[code: string]: number};\n\nconst Code: CodeType = {\n /**\n * A network request was made using an unsupported URI scheme.\n */\n UNSUPPORTED_SCHEME: 1000,\n\n /**\n * An HTTP network request returned an HTTP status that indicated a failure.\n */\n BAD_HTTP_STATUS: 1001,\n\n /**\n * An HTTP network request failed with an error, but not from the server.\n */\n HTTP_ERROR: 1002,\n\n /**\n * A network request timed out.\n */\n TIMEOUT: 1003,\n\n /**\n * A network request was made with a malformed data URI.\n */\n MALFORMED_DATA_URI: 1004,\n\n /**\n * The server responsded with 2xx response, but it couldn't be parsed\n */\n BAD_SERVER_RESPONSE: 1005,\n\n /**\n * The server response had a valid structure but contained an error from the API\n */\n MULTIREQUEST_API_ERROR: 1006,\n\n /**\n * The server response had a valid structure and valid API result, but it did not match the request\n */\n API_RESPONSE_MISMATCH: 1007,\n\n /**\n * The server responded with an error\n */\n ERROR: 2000,\n\n /**\n * The server responded with a block action\n */\n BLOCK_ACTION: 2001,\n\n /**\n * The server responded with status import or pre convert\n */\n MEDIA_STATUS_NOT_READY: 2002,\n\n /**\n * The server responded with a scheduled restricted code\n */\n SCHEDULED_RESTRICTED: 2003,\n\n /**\n * The provider is missing mandatory parameter/s\n */\n\n MISSING_MANDATORY_PARAMS: 3000,\n\n /**\n * The server responded with empty sources objects (for HLS, Dash and progressive)\n */\n MISSING_PLAY_SOURCE: 3001,\n\n /**\n * The provider doesn't implement the called api\n */\n METHOD_NOT_IMPLEMENTED: 3002\n};\n\nexport {Code};\nexport type {CodeType};\n","import {getLogLevel, setLogLevel, setLogger, LogLevelType, LogLevel} from '../../util/logger';\nimport DataLoaderManager from './data-loader-manager';\nimport Error from '../../util/error/error';\nimport {\n ProviderEntryListObject,\n ProviderMediaConfigObject,\n ProviderPlaylistInfoObject,\n ProviderMediaConfigSourcesObject,\n ProviderNetworkRetryParameters,\n ProviderOptionsObject,\n ProviderPlaylistObject\n} from '../../types';\n\nexport default class BaseProvider<MI> {\n private _partnerId: number;\n private _widgetId?: string;\n protected _ks: string;\n private _uiConfId?: number;\n public _dataLoader!: DataLoaderManager;\n private _playerVersion: string;\n public _logger: any;\n public _referrer?: string;\n protected _isAnonymous: boolean | undefined;\n\n public _networkRetryConfig: ProviderNetworkRetryParameters = {\n async: true,\n timeout: 0,\n maxAttempts: 4\n };\n\n public get partnerId(): number {\n return this._partnerId;\n }\n\n public get widgetId(): string {\n return this._widgetId || this.defaultWidgetId;\n }\n\n public get defaultWidgetId(): string {\n return '_' + this._partnerId;\n }\n\n public get uiConfId(): number | undefined {\n return this._uiConfId;\n }\n\n public get ks(): string {\n return this._ks;\n }\n\n public set ks(value: string) {\n this._ks = value;\n }\n\n public get playerVersion(): string {\n return this._playerVersion;\n }\n\n public get isAnonymous(): boolean | undefined {\n return this._isAnonymous;\n }\n\n constructor(options: ProviderOptionsObject, playerVersion: string) {\n setLogger(options.logger);\n this._partnerId = options.partnerId;\n this._widgetId = options.widgetId;\n this._uiConfId = options.uiConfId;\n this._isAnonymous = !options.ks;\n this._ks = options.ks || '';\n this._playerVersion = playerVersion;\n this._referrer = options.referrer;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getMediaConfig(mediaInfo: MI): Promise<ProviderMediaConfigObject> {\n return Promise.reject(\n new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.METHOD_NOT_IMPLEMENTED, {\n message: 'getMediaConfig method must be implement by the derived class'\n })\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getPlaylistConfig(playlistInfo: ProviderPlaylistInfoObject): Promise<ProviderPlaylistObject> {\n return Promise.reject(\n new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.METHOD_NOT_IMPLEMENTED, {\n message: 'The provider does not support loading playlist by id'\n })\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n public getEntryListConfig(entryListInfo: ProviderEntryListObject): Promise<ProviderPlaylistObject> {\n return Promise.reject(\n new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.METHOD_NOT_IMPLEMENTED, {\n message: 'The provider does not support loading entry list'\n })\n );\n }\n\n protected _verifyHasSources(sources: ProviderMediaConfigSourcesObject): void {\n if (sources.hls.concat(sources.dash, sources.progressive, sources.image, sources.document).length === 0) {\n throw new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.MISSING_PLAY_SOURCE, {\n action: '',\n messages: `No play source for entry id: ${sources.id}`\n });\n }\n }\n\n public get LogLevel(): LogLevelType {\n return LogLevel;\n }\n\n public getLogLevel(name?: string): any {\n return getLogLevel(name);\n }\n\n public setLogLevel(level: any, name?: string): void {\n setLogLevel(level, name);\n }\n}\n\nexport {BaseProvider};\n","const clone = (data): any => {\n let node;\n if (Array.isArray(data)) {\n node = data.length > 0 ? data.slice(0) : [];\n node.forEach((e, i) => {\n if ((typeof e === 'object') || (Array.isArray(e) && e.length > 0)) {\n node[i] = clone(e);\n }\n });\n } else if (typeof data === 'object') {\n node = Object.assign({}, data);\n Object.keys(node).forEach(key => {\n if ((typeof node[key] === 'object') || (Array.isArray(node[key]) && node[key].length > 0)) {\n node[key] = clone(node[key]);\n }\n });\n } else {\n node = data;\n }\n return node;\n};\n\nexport {clone};\n","import {clone} from '../../util/clone';\nimport {ProviderEnvConfigObject} from '../../types';\n\nconst defaultConfig: any = {\n serviceParams: {\n apiVersion: '7.8.1'\n }\n};\n\nexport default class OTTConfiguration {\n public static set(clientConfig?: ProviderEnvConfigObject): void {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n public static get(): any {\n return clone(defaultConfig);\n }\n}\n\nexport {OTTConfiguration};\n","import MultiRequestBuilder, {MultiRequestResult} from './multi-request-builder';\nimport Error from '../../util/error/error';\nimport {ILoader, ProviderNetworkRetryParameters} from '../../types';\n\nexport default class DataLoaderManager {\n /**\n * @member - Loaders response map index\n * @type {Map<string,Array<number>>}\n * @private\n */\n private _loadersResponseMap: Map<string, Array<number>> = new Map();\n /**\n * @member - Loaders multi request\n * @type {MultiRequestBuilder}\n * @protected\n */\n protected _multiRequest!: MultiRequestBuilder;\n /**\n * @member - Loaders multi response\n * @type {MultiRequestResult}\n * @private\n */\n private _multiResponse!: MultiRequestResult;\n /**\n * @member - Loaders to execute\n * @type {Map<string,Function>}\n * @private\n */\n private _loaders: Map<string, ILoader> = new Map();\n\n private _networkRetryConfig: ProviderNetworkRetryParameters;\n\n constructor(networkRetryConfig: ProviderNetworkRetryParameters) {\n this._networkRetryConfig = networkRetryConfig;\n }\n\n /**\n * Add loader to execution loaders map\n * @function\n * @param {Function} loader Loader to add\n * @param {Object} params Loader params\n * @param {string} ks ks\n * @returns {void}\n */\n public add(loader: {new(...params): ILoader, id: string}, params: any, ks?: string): void {\n const execution_loader = new loader(params);\n if (execution_loader.isValid()) {\n this._loaders.set(loader.id, execution_loader);\n // Get the start index from the multiReqeust before adding current execution_loader requests\n const startIndex = this._multiRequest.requests.length;\n // Get the requests\n const requests = execution_loader.requests;\n this._multiRequest.retryConfig = this._networkRetryConfig;\n // Add requests to multiRequest queue\n requests.forEach(request => {\n request.params = request.params || {};\n request.params.ks = request.params.ks || ks;\n this._multiRequest.add(request);\n });\n // Create range array of current execution_loader requests\n const executionLoaderResponseMap = Array.from(new Array(requests.length), (val, index) => index + startIndex);\n // Add to map\n this._loadersResponseMap.set(loader.id, executionLoaderResponseMap);\n }\n }\n\n /**\n * Get data from all loaders using multi request\n * @param {boolean} requestsMustSucceed whether all of the requests must succeed or not\n * @function\n * @returns {Promise} Promise\n */\n public fetchData(requestsMustSucceed?: boolean): Promise<any> {\n return new Promise((resolve, reject) => {\n this._multiRequest.execute(requestsMustSucceed).then(\n data => {\n this._multiResponse = data.response;\n const preparedData: any = this.prepareData(data.response);\n if (preparedData.success) {\n resolve(this._loaders);\n } else {\n reject(\n new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, Error.Code.API_RESPONSE_MISMATCH, {\n headers: data.headers\n })\n );\n }\n },\n err => {\n reject(err);\n }\n );\n });\n }\n\n /**\n * Prepare fetched data\n * @function\n * @param {MultiRequestResult} response - The multi request result\n * @returns {Object} - The prepared data\n */\n public prepareData(response: MultiRequestResult): any {\n this._loaders.forEach((loader, name) => {\n const loaderDataIndexes = this._loadersResponseMap.get(name);\n try {\n if (loaderDataIndexes && loaderDataIndexes.length > 0) {\n loader.response = response.results.slice(loaderDataIndexes[0], loaderDataIndexes[loaderDataIndexes.length - 1] + 1);\n }\n } catch (err) {\n return {success: false, error: err};\n }\n });\n return {success: true, data: this._loaders};\n }\n}\n","import Error from './error/error';\nimport {ProviderNetworkRetryParameters} from '../types';\n\nconst KALTURA_HEADER_PREFIX: string = 'x-';\n\nexport default class RequestBuilder {\n /**\n * @member - Service name\n * @type {string}\n */\n public service!: string;\n /**\n * @member - Service action\n * @type {string}\n */\n public action!: string;\n /**\n * @member - Service params\n * @type {any}\n */\n public params: any;\n /**\n * @memberof - Service headers\n * @type {Map<string, string>}\n */\n public headers: Map<string, string>;\n /**\n * @memberof - Service URL\n * @type {string}\n */\n public url!: string;\n /**\n * @memberof - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n public method!: string;\n /**\n * @memberof - Service tag\n * @type {string}\n */\n public tag!: string;\n /**\n * @memberof - the response headers of the arra\n * @type {Array<string>}\n */\n public responseHeaders!: Array<string>;\n /**\n * @description network retry configuration\n * @memberof RequestBuilder\n * @type {ProviderNetworkRetryParameters}\n */\n public retryConfig: ProviderNetworkRetryParameters = {\n async: true,\n timeout: 0,\n maxAttempts: 4\n };\n\n /**\n * @description number of xhr attempts for the same multi - request.\n * @memberof RequestBuilder\n * @type {number}\n * @private\n */\n private _attemptCounter: number = 1;\n\n /**\n * @description hold the promise result of the XHR request(s) - if all tries fails, it rejects with the error.\n * @memberof RequestBuilder\n * @type {Object}\n * @private\n */\n private _requestPromise: any;\n\n /**\n * @constructor\n * @param {Map<string, string>} headers The request headers\n */\n constructor(headers: Map<string, string> = new Map()) {\n this.headers = headers;\n }\n\n /**\n * Builds restful service URL\n * @function getUrl\n * @param {string} serviceUrl - The service base URL\n * @returns {string} The service URL\n */\n public getUrl(serviceUrl: string): string {\n return serviceUrl + '/service/' + this.service + (this.action ? '/action/' + this.action : '');\n }\n\n /**\n * Executes service\n * @function doHttpRequest\n * @returns {Promise.<any>} Service response as promise\n */\n public doHttpRequest(): Promise<any> {\n const promise = new Promise((resolve, reject) => {\n this._requestPromise = {\n resolve,\n reject\n };\n });\n if (!this.url) {\n this._requestPromise.reject(\n new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, Error.Code.MALFORMED_DATA_URI, {\n url: this.url\n })\n );\n }\n this._createXHR();\n return promise;\n }\n\n private _createXHR(): void {\n const request = new XMLHttpRequest();\n request.onreadystatechange = (): void => {\n if (request.readyState === 4) {\n if (request.status === 200) {\n try {\n const response = JSON.parse(request.responseText);\n this.responseHeaders = this._getResponseHeaders(request);\n // the promise returns the response for backwards compatibility\n return this._requestPromise.resolve(response);\n } catch (error) {\n this._requestPromise.reject(\n this._createError(request, Error.Code.BAD_SERVER_RESPONSE, {\n text: request.responseText\n })\n );\n }\n }\n }\n };\n request.open(this.method, this.url, this.retryConfig.async);\n if (this.retryConfig.async && this.retryConfig.timeout) {\n request.timeout = this.retryConfig.timeout;\n }\n const requestTime = performance.now();\n request.ontimeout = (): void => {\n this._handleError(request, Error.Code.TIMEOUT, {\n timeout: (performance.now() - requestTime) / 1000,\n statusText: request.statusText\n });\n };\n request.onerror = request.onabort = (): void => {\n this._handleError(request, Error.Code.HTTP_ERROR, {\n text: request.responseText,\n statusText: request.statusText\n });\n };\n this.headers.forEach((value, key) => {\n request.setRequestHeader(key, value);\n });\n request.send(this.params);\n }\n\n private _getResponseHeaders(request: XMLHttpRequest): Array<string> {\n return request\n .getAllResponseHeaders()\n .split('\\n')\n .filter(header => header.toLowerCase().indexOf(KALTURA_HEADER_PREFIX) === 0);\n }\n\n private _handleError(request: XMLHttpRequest, code: number, data: any): Promise<void> | void {\n const error = this._createError(request, code, data);\n request.onreadystatechange = function (): void {};\n request.onerror = function (): void {};\n request.ontimeout = function (): void {};\n request.onabort = function (): void {};\n if (this.retryConfig.maxAttempts && this._attemptCounter < this.retryConfig.maxAttempts) {\n this._attemptCounter++;\n this._createXHR();\n } else {\n return this._requestPromise.reject(error);\n }\n }\n\n private _createError(request: XMLHttpRequest, code: number, data: any): Error {\n Object.assign(data, {\n url: this.url,\n headers: this._getResponseHeaders(request),\n attempt: this._attemptCounter\n });\n return new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, code, data);\n }\n}\n","export default class ServiceResult {\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n public hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n public error!: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n public data: any;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: any) {\n if (response.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.code, response.message);\n } else if (response.error && response.error.objectType === 'KalturaAPIException') {\n this.hasError = true;\n this.error = new ServiceError(response.error.code, response.error.message);\n } else {\n this.data = response;\n }\n }\n}\n\nclass ServiceError {\n /**\n * @member - The error code\n * @type {string}\n */\n public code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n public message: string;\n\n /**\n * @constructor\n * @param {string} code - The result code\n * @param {string} message - The result message\n */\n constructor(code: string, message: string) {\n this.code = code;\n this.message = message;\n }\n}\n","import RequestBuilder from '../../util/request-builder';\nimport getLogger from '../../util/logger';\nimport ServiceResult from './base-service-result';\nimport Error from '../../util/error/error';\n\nexport default class MultiRequestBuilder extends RequestBuilder {\n private static _logger = getLogger('MultiRequestBuilder');\n /**\n * @memberof - MultiRequestBuilder\n * @type {Array<RequestBuilder>}\n */\n public requests: Array<RequestBuilder> = [];\n /**\n * Adds request to requests array\n * @function add\n * @param {RequestBuilder} request The request\n * @returns {MultiRequestBuilder} The multiRequest\n */\n public add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n const requestParams = {};\n const serviceDef: any = {service: request.service, action: request.action};\n Object.assign(requestParams, {[this.requests.length]: Object.assign(serviceDef, request.params)});\n Object.assign(requestParams, this.params);\n this.params = requestParams;\n return this;\n }\n\n /**\n * Executes a multi request\n * @function execute\n * @param {boolean} requestsMustSucceed whether all of the requests must succeed or not\n * @returns {Promise} The multirequest execution promise\n */\n public execute(requestsMustSucceed?: boolean): Promise<any> {\n return new Promise((resolve, reject) => {\n try {\n this.params = JSON.stringify(this.params);\n } catch (err) {\n MultiRequestBuilder._logger.error(`${err.message}`);\n reject(\n new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.FAILED_PARSING_REQUEST, {\n error: err,\n params: this.params\n })\n );\n }\n this.doHttpRequest().then(\n data => {\n const multiRequestResult = new MultiRequestResult(data, requestsMustSucceed);\n if (multiRequestResult.success) {\n resolve({\n headers: this.responseHeaders,\n response: multiRequestResult\n });\n } else {\n reject(\n new Error(Error.Severity.CRITICAL, Error.Category.NETWORK, Error.Code.MULTIREQUEST_API_ERROR, {\n url: this.url,\n headers: this.responseHeaders,\n results: multiRequestResult.results\n })\n );\n }\n },\n err => {\n reject(err);\n }\n );\n });\n }\n}\n\nexport class MultiRequestResult {\n private static _logger = getLogger('MultiRequestResult');\n /**\n * @memberof MultiRequestResult\n * @type {boolean}\n */\n public success: boolean;\n /**\n * @memberof MultiRequestResult\n * @type {Object}\n */\n public results: Array<ServiceResult> = [];\n /**\n * @constructor\n * @param {Object} response data\n * @param {boolean} requestsMustSucceed whether all of the requests must succeed\n */\n constructor(response: any, requestsMustSucceed: boolean = true) {\n const result = response.result ? response.result : response;\n const responseArr = Array.isArray(result) ? result : [result];\n const results = responseArr.map(result => new ServiceResult(result));\n const errorResults = results.filter(serviceResult => serviceResult.hasError);\n\n errorResults.forEach(serviceResult => {\n MultiRequestResult._logger.error(\n `Service returned an error with error code: ${serviceResult.error.code} and message: ${serviceResult.error.message}.`\n );\n });\n\n this.results = results;\n if ((requestsMustSucceed && errorResults.length) || errorResults.length === this.results.length) {\n this.success = false;\n } else {\n this.results = this.results.filter(serviceResult => !serviceResult.hasError);\n this.success = true;\n }\n }\n}\n","import MultiRequestBuilder from '../../common/multi-request-builder';\nimport OTTConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OTTService {\n /**\n * Gets a new instance of MultiRequestBuilder with ott params\n * @function getMultiRequest\n * @param {string} ks The ks\n * @param {string} partnerId The partner ID\n * @returns {MultiRequestBuilder} The multi request builder\n * @static\n */\n public static getMultiRequest(ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OTTConfiguration.get();\n const ottParams = config.serviceParams;\n if (ks) {\n Object.assign(ottParams, {ks: ks});\n }\n if (partnerId) {\n Object.assign(ottParams, {partnerId: partnerId});\n }\n const headers: Map<string, string> = new Map();\n headers.set('Content-Type', 'application/json');\n const multiReq = new MultiRequestBuilder(headers);\n multiReq.method = 'POST';\n multiReq.service = SERVICE_NAME;\n multiReq.url = multiReq.getUrl(config.serviceUrl);\n multiReq.params = ottParams;\n return multiReq;\n }\n}\n","import DataLoaderManager from '../../common/data-loader-manager';\nimport OTTService from '../services/ott-service';\nimport {ProviderNetworkRetryParameters} from '../../../types';\n/**\n * OTTDataLoaderManager is a class that handles the OTT data loading\n * @param {string} partnerId - partner id\n * @param {string} ks - ks\n * @param {ProviderNetworkRetryParameters} [networkRetryConfig] - network retry configuration\n */\nexport default class OTTDataLoaderManager extends DataLoaderManager {\n constructor(partnerId: number, ks: string = '', networkRetryConfig: ProviderNetworkRetryParameters) {\n super(networkRetryConfig);\n this._multiRequest = OTTService.getMultiRequest(ks, partnerId);\n }\n}\n","import OTTService from './ott-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'ottuser';\n\nexport default class OTTUserService extends OTTService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} partnerId The partner ID\n * @param {string} udid The udid\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static anonymousLogin(serviceUrl: string, partnerId: number, udid?: string): RequestBuilder {\n const headers: Map<string, string> = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'anonymousLogin';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n const params: any = {partnerId: partnerId};\n if (udid) {\n Object.assign(params, {udid: udid});\n }\n request.params = params;\n return request;\n }\n}\n","import UserService from '../services/user-service';\nimport OTTConfiguration from '../config';\nimport RequestBuilder from '../../../util/request-builder';\nimport {ILoader} from '../../../types';\n\nexport default class OTTSessionLoader implements ILoader {\n private _partnerId: number;\n private _requests!: Array<RequestBuilder>;\n private _response: any = {};\n\n public static get id(): string {\n return 'session';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: any) {\n this.requests = this.buildRequests(params);\n this._partnerId = params.partnerId;\n }\n\n public set requests(requests: Array<RequestBuilder>) {\n this._requests = requests;\n }\n\n public get requests(): Array<RequestBuilder> {\n return this._requests;\n }\n\n public set response(response: any) {\n this._response.ks = response[0].data.ks;\n }\n\n public get response(): any {\n return this._response.ks;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public buildRequests(params: any): Array<RequestBuilder> {\n const config = OTTConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n requests.push(UserService.anonymousLogin(config.serviceUrl, params.partnerId, params.udid));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n public isValid(): boolean {\n return !!this._partnerId;\n }\n}\n","import OTTService from './ott-service';\nimport RequestBuilder from '../../../util/request-builder';\nimport {ProviderPlaybackContextOptions} from '../../../types';\n\nconst SERVICE_NAME: string = 'asset';\n\nexport default class OTTAssetService extends OTTService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The partner ID\n * @param {string} assetId The asset ID\n * @param {string} type The asset type (media/recording/epg)\n * @param {ProviderPlaybackContextOptions} playbackContextOptions The playbackContextOptions\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static getPlaybackContext(\n serviceUrl: string,\n ks: string,\n assetId: string,\n type: string,\n playbackContextOptions: ProviderPlaybackContextOptions\n ): RequestBuilder {\n const headers: Map<string, string> = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'getPlaybackContext';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n const contextDataParams: any = {objectType: 'KalturaPlaybackContextOptions'};\n Object.assign(contextDataParams, playbackContextOptions);\n request.params = {assetId: assetId, assetType: type, contextDataParams: contextDataParams, ks: ks};\n return request;\n }\n\n public static get(serviceUrl: string, ks: string, assetId: string, assetReferenceType: string): RequestBuilder {\n const headers: Map<string, string> = new Map();\n headers.set('Content-Type', 'application/json');\n const request = new RequestBuilder(headers);\n request.service = SERVICE_NAME;\n request.action = 'get';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.params = {id: assetId, assetReferenceType: assetReferenceType, ks: ks};\n return request;\n }\n}\n","export class KalturaAccessControlMessage {\n /**\n * @member - The access control message\n * @type {string}\n */\n public message: string;\n /**\n * @member - The access control message code\n * @@type {string}\n */\n public code: string;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: any) {\n this.message = data.message;\n this.code = data.code;\n }\n}\n","export default class KalturaRuleAction {\n public static Type: {[type: string]: string | number} = {\n BLOCK: 'BLOCK',\n START_DATE_OFFSET: 'START_DATE_OFFSET',\n END_DATE_OFFSET: 'END_DATE_OFFSET',\n USER_BLOCK: 'USER_BLOCK',\n ALLOW_PLAYBACK: 'ALLOW_PLAYBACK',\n BLOCK_PLAYBACK: 'BLOCK_PLAYBACK',\n APPLY_DISCOUNT_MODULE: 'APPLY_DISCOUNT_MODULE'\n };\n\n /**\n * @member - The type of the action\n * @type {string|number}\n */\n public type: string | number;\n\n /**\n * @constructor\n * @param {Object} data - The response\n */\n constructor(data: any) {\n this.type = data.type;\n }\n}\n","export class KalturaDrmPlaybackPluginData {\n public static Scheme: {[scheme: string]: string} = {\n 'drm.PLAYREADY_CENC': 'com.microsoft.playready',\n 'drm.WIDEVINE_CENC': 'com.widevine.alpha',\n 'fairplay.FAIRPLAY': 'com.apple.fairplay',\n WIDEVINE_CENC: 'com.widevine.alpha',\n PLAYREADY_CENC: 'com.microsoft.playready',\n FAIRPLAY: 'com.apple.fairplay'\n };\n\n /**\n * @member - The drm scheme\n * @type {string}\n */\n public scheme: string;\n\n /**\n * @member - The license URL\n * @type {string}\n */\n public licenseURL: string;\n\n /**\n * @member - The drm certificate\n * @type {?string}\n */\n public certificate?: string;\n\n /**\n * @constructor\n * @param {Object} drm The json response\n */\n constructor(drm: any) {\n this.scheme = drm.scheme;\n this.licenseURL = drm.licenseURL;\n this.certificate = drm.certificate;\n }\n}\n","import {KalturaDrmPlaybackPluginData} from '../../common/response-types/kaltura-drm-playback-plugin-data';\n\nexport type OTTKalturaPlaybackSource = KalturaPlaybackSource;\n\nexport default class KalturaPlaybackSource {\n public format: string;\n public protocols: string;\n public drm: Array<KalturaDrmPlaybackPluginData> = [];\n public adsPolicy: string;\n public adsParam: string;\n public duration: number;\n public url: string;\n public type: string;\n public fileId: number;\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n constructor(source: any) {\n this.format = source.format;\n this.adsPolicy = source.adsPolicy;\n this.adsParam = source.adsParam;\n this.duration = source.duration;\n this.url = source.url;\n this.type = source.type;\n this.fileId = source.id;\n this.protocols = source.protocols;\n if (source.drm) {\n source.drm.map(drm => this.drm.push(new KalturaDrmPlaybackPluginData(drm)));\n }\n }\n\n /**\n * Checks if source has DRM data\n * @function hasDrmData\n * @returns {boolean} Is source has DRM\n */\n public hasDrmData(): boolean {\n return this.drm && this.drm.length > 0;\n }\n\n /**\n * Returns source desired protocol if supported\n * @param {string} protocol - the desired protocol for the source (base play url protocol)\n * @returns {string} - protocol if protocol is in the protocols list - if not empty string returned\n */\n public getProtocol(protocol: string): string {\n let returnValue: string = '';\n if (this.protocols && this.protocols.length > 0) {\n const protocolsArr: Array<string> = this.protocols.split(',');\n protocolsArr.forEach(p => {\n if (p === protocol) {\n returnValue = p;\n }\n });\n } else if (protocol === 'http') {\n return protocol;\n }\n return returnValue;\n }\n}\n","export default class KalturaBumpersPlaybackPluginData {\n public static StreamerType: {[type: string]: string} = {\n HLS: 'hls',\n DASH: 'dash',\n PROGRESSIVE: 'progressive'\n };\n\n /**\n * @member - The streamer type\n * @type {string}\n */\n public streamertype: string;\n /**\n * @member - The url\n * @type {string}\n */\n public url: string;\n\n /**\n * @constructor\n * @param {Object} data - The response\n */\n constructor(data: any) {\n this.streamertype = data.streamertype;\n this.url = data.url;\n }\n}\n","import ServiceResult from '../../common/base-service-result';\nimport {KalturaAccessControlMessage} from '../../common/response-types/kaltura-access-control-message';\nimport KalturaRuleAction from './kaltura-rule-action';\nimport KalturaPlaybackSource from './kaltura-playback-source';\nimport KalturaBumpersPlaybackPluginData from './kaltura-bumper-playback-plugin-data';\n\nexport default class KalturaPlaybackContext extends ServiceResult {\n public static Type: {[type: string]: string} = {\n DOWNLOAD: 'DOWNLOAD',\n TRAILER: 'TRAILER',\n CATCHUP: 'CATCHUP',\n START_OVER: 'START_OVER',\n PLAYBACK: 'PLAYBACK'\n };\n /**\n * @member - The playback sources\n * @type {Array<KalturaPlaybackSource>}\n */\n public sources: Array<KalturaPlaybackSource> = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array<KalturaRuleAction>}\n */\n public actions: KalturaRuleAction[] = [];\n /**\n * @member - Array of access control massages\n * @type {Array<KalturaAccessControlMessage>}\n */\n public messages: Array<KalturaAccessControlMessage> = [];\n /**\n * @member - Array of bumper plugins\n * @type {Array<KalturaBumpersPlaybackPluginData>}\n */\n public plugins: Array<KalturaBumpersPlaybackPluginData> = [];\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n constructor(response: any) {\n super(response);\n if (!this.hasError) {\n const messages = response.messages;\n if (messages) {\n messages.map(message => this.messages.push(new KalturaAccessControlMessage(message)));\n }\n const actions = response.actions;\n if (actions) {\n actions.map(action => this.actions.push(new KalturaRuleAction(action)));\n }\n const sources = response.sources;\n if (sources) {\n sources.map(source => this.sources.push(new KalturaPlaybackSource(source)));\n }\n const plugins = response.plugins;\n if (plugins) {\n plugins.map(plugin => this.plugins.push(new KalturaBumpersPlaybackPluginData(plugin)));\n }\n }\n }\n\n public hasBlockAction(): boolean {\n return this.getBlockAction() !== undefined;\n }\n\n public getBlockAction(): KalturaRuleAction | undefined {\n return this.actions.find(action => action.type === KalturaRuleAction.Type.BLOCK);\n }\n\n public getErrorMessages(): Array<KalturaAccessControlMessage> {\n return this.messages;\n }\n}\n","import ServiceResult from '../../common/base-service-result';\nimport {Poster} from '../../../types';\n\nexport default class KalturaAsset extends ServiceResult {\n public static Type: {[type: string]: string} = {\n MEDIA: 'media',\n RECORDING: 'recording',\n EPG: 'epg'\n };\n\n public static AssetReferenceType: {[type: string]: string} = {\n MEDIA: 'media',\n EPG_INTERNAL: 'epg_internal',\n EPG_EXTERNAL: 'epg_external',\n NPVR: 'nPVR'\n };\n /**\n * @member - The asset id\n * @type {number}\n */\n public id!: number;\n /**\n * @member - The asset createDate - Specifies when was the Asset was created. Date and time represented as epoch\n * @type {number}\n */\n public createDate!: number;\n /**\n * @member - The asset endDate - epoch For VOD: till when the asset be available in the catalog. For EPG/Linear: program end time and date\n * @type {number}\n */\n public endDate!: number;\n /**\n * @member - The asset name\n * @type {string}\n */\n public name: string = '';\n /**\n * @member - The asset name description\n * @type {string}\n */\n public description: string = '';\n /**\n * @member - The asset tags\n * @type {Array<Object>}\n */\n public tags: Array<any> = [];\n /**\n * @member - The asset metas\n * @type {Array<Object>}\n */\n public metas: Array<any> = [];\n /**\n * @member - The asset images\n * @type {Array<any>}\n */\n public pictures: Array<Poster> = [];\n\n /**\n * @member - Number of plays\n * @type {number}\n */\n public plays!: number;\n\n /**\n * @member - Number of views\n * @type {number}\n */\n public views!: number;\n\n /**\n * @constructor\n * @param {Object} response The response\n */\n constructor(response: any) {\n super(response);\n if (!this.hasError) {\n this.id = response.id;\n this.name = response.name;\n this.description = response.description;\n this.createDate = response.createDate;\n this.endDate = response.endDate;\n this.plays = response.plays;\n this.views = response.views;\n this.metas = this._formatTagsMetas(response.metas);\n this.tags = this._formatTagsMetas(response.tags);\n this.pictures = response.images;\n }\n }\n\n private _formatTagsMetas(objectToParse: any): Array<any> {\n const parsed: { key: string; value: any; }[] = [];\n Object.keys(objectToParse).forEach((key) => {\n if (objectToParse[key].objects) {\n let value = '';\n objectToParse[key].objects.forEach((object) => {\n value += object.value + '|';\n });\n parsed.push({key: key, value: value});\n } else {\n parsed.push({key: key, value: objectToParse[key].value});\n }\n });\n return parsed;\n }\n}\n","import OTTAssetService from '../services/asset-service';\nimport OTTConfiguration from '../config';\nimport RequestBuilder from '../../../util/request-builder';\nimport KalturaPlaybackContext from '../response-types/kaltura-playback-context';\nimport KalturaAsset from '../response-types/kaltura-asset';\nimport {ILoader} from '../../../types';\n\ntype OTTAssetLoaderResponse = {mediaDataResult: KalturaAsset, playBackContextResult: KalturaPlaybackContext};\nexport type {OTTAssetLoaderResponse};\n\nexport default class OTTAssetLoader implements ILoader {\n private _entryId: string;\n private _requests!: Array<RequestBuilder>;\n private _response: any = {};\n\n public static get id(): string {\n return 'asset';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: any) {\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n }\n\n public set requests(requests: Array<RequestBuilder>) {\n this._requests = requests;\n }\n\n public get requests(): Array<RequestBuilder> {\n return this._requests;\n }\n\n public set response(response: any) {\n this._response.mediaDataResult = new KalturaAsset(response[0].data);\n this._response.playBackContextResult = new KalturaPlaybackContext(response[1].data);\n }\n\n public get response(): OTTAssetLoaderResponse {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public buildRequests(params: any): Array<RequestBuilder> {\n const config = OTTConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n requests.push(OTTAssetService.get(config.serviceUrl, params.ks, params.entryId, params.assetReferenceType));\n requests.push(OTTAssetService.getPlaybackContext(config.serviceUrl, params.ks, params.entryId, params.type, params.playbackContext));\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n public isValid(): boolean {\n return !!this._entryId;\n }\n}\n","import RequestBuilder from '../../../util/request-builder';\nimport OTTConfiguration from '../config';\nimport OTTAssetService from '../services/asset-service';\nimport KalturaAsset from '../response-types/kaltura-asset';\nimport {ILoader} from '../../../types';\n\nexport default class OTTAssetListLoader implements ILoader {\n private _entries: Array<string>;\n private _requests!: Array<RequestBuilder>;\n private _response: any = {playlistItems: {entries: []}};\n\n public static get id(): string {\n return 'asset_list';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: any) {\n this.requests = this.buildRequests(params);\n this._entries = params.entries;\n }\n\n public set requests(requests: Array<RequestBuilder>) {\n this._requests = requests;\n }\n\n public get requests(): Array<RequestBuilder> {\n return this._requests;\n }\n\n public set response(response: any) {\n response.forEach(item => {\n this._response.playlistItems.entries.push({mediaDataResult: new KalturaAsset(item.data)});\n });\n }\n\n public get response(): any {\n return this._response;\n }\n\n /**\n * Builds loader requests\n * @function\n * @param {Object} params Requests parameters\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public buildRequests(params: any): Array<RequestBuilder> {\n const config = OTTConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n params.entries.forEach(entry => {\n const assetReferenceType = entry.assetReferenceType || KalturaAsset.AssetReferenceType.MEDIA;\n requests.push(OTTAssetService.get(config.serviceUrl, params.ks, entry.entryId || entry, assetReferenceType));\n });\n return requests;\n }\n\n /**\n * Loader validation function\n * @function\n * @returns {boolean} Is valid\n */\n public isValid(): boolean {\n return !!(this._entries && this._entries.length);\n }\n}\n","import {ProviderMediaFormatType} from '../types';\n\nexport const MediaFormat: {[name: string]: ProviderMediaFormatType} = {\n DASH: {\n name: 'dash',\n mimeType: 'application/dash+xml',\n pathExt: 'mpd'\n },\n HLS: {\n name: 'hls',\n mimeType: 'application/x-mpegURL',\n pathExt: 'm3u8'\n },\n WVM: {\n name: 'wvm',\n mimeType: 'video/wvm',\n pathExt: 'wvm'\n },\n MP4: {\n name: 'mp4',\n mimeType: 'video/mp4',\n pathExt: 'mp4'\n },\n MP3: {\n name: 'mp3',\n mimeType: 'audio/mpeg',\n pathExt: 'mp3'\n }\n};\n\nexport const SupportedStreamFormat: Map<string, ProviderMediaFormatType> = new Map([\n ['mpegdash', MediaFormat.DASH],\n ['applehttp', MediaFormat.HLS],\n ['url', MediaFormat.MP4]\n]);\n\n/**\n * returns a boolean whether a source is progressive or not\n * @param {string} formatName - the format name\n * @returns {boolean} - if source is progressive or not\n */\nfunction isProgressiveSource(formatName: string): boolean {\n const sourceFormat = SupportedStreamFormat.get(formatName);\n return !!sourceFormat && sourceFormat.name === MediaFormat.MP4.name;\n}\n\nexport {isProgressiveSource};\n","import MediaSource from './media-source';\nimport {MediaFormat} from './media-format';\nimport {ImageSource} from './image-source';\nimport {DocumentSource} from './document-source';\nimport {PKExternalCaptionObject, ProviderMediaFormatType, ProviderMediaSourcesObject} from '../types';\n\nexport default class MediaSources {\n /**\n * Progressive download media sources container.\n * @type {Array<MediaSource>}\n * @public\n */\n public progressive: Array<MediaSource>;\n /**\n * Dash media sources container.\n * @type {Array<MediaSource>}\n * @public\n */\n public dash: Array<MediaSource>;\n /**\n * Hls media sources container.\n * @type {Array<MediaSource>}\n * @public\n */\n public hls: Array<MediaSource>;\n public image: Array<ImageSource>;\n public document: Array<DocumentSource>;\n public captions?: Array<PKExternalCaptionObject>;\n\n /**\n * @constructor\n */\n constructor() {\n this.progressive = [];\n this.dash = [];\n this.hls = [];\n this.image = [];\n this.document = [];\n }\n\n /**\n * Maps the source to one of the containers according to his media format.\n * @param {MediaSource} source - The source to add to one of the containers.\n * @param {MediaFormat} mediaFormat - The media format of the source.\n * @returns {void}\n */\n public map(source: MediaSource, mediaFormat?: ProviderMediaFormatType): void {\n if (mediaFormat) {\n switch (mediaFormat.name) {\n case MediaFormat.MP4.name:\n this.progressive.push(source);\n break;\n case MediaFormat.DASH.name:\n this.dash.push(source);\n break;\n case MediaFormat.HLS.name:\n this.hls.push(source);\n break;\n default:\n break;\n }\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourcesObject} - The json class object.\n */\n public toJSON(): ProviderMediaSourcesObject {\n const response: ProviderMediaSourcesObject = {\n progressive: [],\n dash: [],\n hls: [],\n image: [],\n document: []\n };\n this.progressive.forEach(p => response.progressive.push(p.toJSON()));\n this.hls.forEach(h => response.hls.push(h.toJSON()));\n this.dash.forEach(d => response.dash.push(d.toJSON()));\n response.image = this.image;\n response.document = this.document;\n return response;\n }\n}\n","import MediaSources from './media-sources';\nimport {ProviderMediaEntryObject} from '../types';\nimport {Poster} from '../types/poster';\n\nexport default class MediaEntry {\n public static Type: {[type: string]: string} = {\n VOD: 'Vod',\n LIVE: 'Live',\n IMAGE: 'Image',\n AUDIO: 'Audio',\n UNKNOWN: 'Unknown',\n DOCUMENT: 'Document'\n };\n public static DvrStatus: {[type: string]: number} = {\n ON: 1,\n OFF: 0\n };\n\n /**\n * @member - entry id\n * @type {string}\n */\n public id?: string;\n /**\n * @member - entry name\n * @type {string}\n */\n public name?: string;\n /**\n * @member - entry sources\n * @type {MediaSources}\n */\n public sources: MediaSources;\n /**\n * @member - entry duration\n * @type {number}\n */\n public duration?: number;\n /**\n * @member - entry type\n * @type {string}\n */\n public type: string;\n /**\n * @member - entry metadata\n * @type {Object}\n */\n public metadata: any;\n /**\n * @member - DVR status\n * @type {number}\n */\n public dvrStatus?: number;\n /**\n * @member - media status\n * @type {number}\n */\n public status?: number;\n /**\n * @member - media poster\n * @type {string | Array<Object>}\n */\n public poster?: string | Poster[];\n\n /**\n * @member - assetReferenceType\n * @type {string }\n */\n public assetReferenceType?: string;\n\n /**\n * @member - The download URL of the entry.\n * @type {string}\n */\n public downloadUrl?: string;\n\n /**\n * @member - The raw thumbnail URL\n * @type {string}\n */\n public rawThumbnailUrl?: string;\n\n /**\n * @member - The root entry ID\n * @type {string}\n */\n public rootEntryId?: string;\n\n /**\n * @member - The capabilities of the entry\n * @type {Array<string>}\n */\n public capabilities?: Array<string>;\n\n /**\n * @constructor\n */\n constructor() {\n this.metadata = new Map();\n this.sources = new MediaSources();\n this.type = MediaEntry.Type.UNKNOWN;\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaEntryObject} - The json class object.\n */\n public toJSON(): ProviderMediaEntryObject {\n return {\n id: this.id,\n name: this.name,\n sources: this.sources.toJSON(),\n duration: this.duration,\n dvrStatus: this.dvrStatus,\n status: this.status,\n metadata: this.metadata,\n type: this.type,\n poster: this.poster,\n assetReferenceType: this.assetReferenceType,\n downloadUrl: this.downloadUrl,\n rawThumbnailUrl: this.rawThumbnailUrl,\n rootEntryId: this.rootEntryId,\n capabilities: this.capabilities\n };\n }\n}\n","import {ProviderDrmDataObject} from '../types';\n\nexport default class Drm {\n /**\n * @member - license url\n * @type {string}\n */\n public licenseUrl: string;\n /**\n * @member - drm scheme\n * @type {string}\n */\n public scheme: string;\n\n /**\n * @member - drm certificate\n * @type {string}\n */\n public certificate?: string;\n\n /**\n * @constructor\n * @param {string} licenseUrl - the license url\n * @param {string} scheme - the drm scheme\n * @param {?string} certificate - the drm certificate\n */\n constructor(licenseUrl: string, scheme: string, certificate?: string) {\n this.licenseUrl = licenseUrl;\n this.scheme = scheme;\n if (certificate) {\n this.certificate = certificate;\n }\n }\n\n /**\n * Convert class to native js object.\n * @returns {ProviderDrmDataObject} - The json class object.\n */\n public toJSON(): ProviderDrmDataObject {\n const response: ProviderDrmDataObject = {\n licenseUrl: this.licenseUrl,\n scheme: this.scheme\n };\n if (this.certificate) response.certificate = this.certificate;\n return response;\n }\n}\n","import Drm from './drm';\nimport {ProviderMediaSourceObject} from '../types';\n\nexport default class MediaSource {\n /**\n * @member - media source id\n * @type {string}\n */\n public id!: string;\n /**\n * @member - media source url\n * @type {string}\n */\n public url!: string;\n /**\n * @member - media source mimetype\n * @type {string}\n */\n public mimetype!: string;\n /**\n * @member - media source drm data\n * @type {Array<Drm>}\n */\n public drmData?: Array<Drm>;\n /**\n * @member - media source bandwidth\n * @type {number}\n */\n public bandwidth?: number;\n /**\n * @member - media source width\n * @type {number}\n */\n public width?: number;\n /**\n * @member - media source height\n * @type {number}\n */\n public height?: number;\n /**\n * @member - media source label\n * @type {string}\n */\n public label?: string;\n\n /**\n * Convert class to native js object.\n * @returns {ProviderMediaSourceObject} - The json class object.\n */\n public toJSON(): ProviderMediaSourceObject {\n const response: ProviderMediaSourceObject = {\n id: this.id,\n url: this.url,\n mimetype: this.mimetype\n };\n if (this.bandwidth) response.bandwidth = this.bandwidth;\n if (this.width) response.width = this.width;\n if (this.height) response.height = this.height;\n if (this.label) response.label = this.label;\n if (this.drmData && this.drmData.length > 0) {\n response.drmData = [];\n this.drmData.forEach(d => {\n if (Array.isArray(response.drmData)) {\n response.drmData.push(d.toJSON());\n }\n });\n }\n return response;\n }\n}\n","import MediaEntry from '../entities/media-entry';\n\nexport default class EntryList {\n /**\n * @member - entry list items\n * @type {Array<MediaEntry>}\n */\n public items: Array<MediaEntry>;\n\n constructor() {\n this.items = [];\n }\n}\n","export default class Bumper {\n /**\n * @member - bumper url\n * @type {string}\n */\n public url: string;\n /**\n * @member - bumper click through url\n * @type {string}\n */\n public clickThroughUrl: string;\n\n /**\n * @constructor\n * @param {Object} data - The bumper response\n */\n constructor(data: any) {\n this.url = data.url;\n this.clickThroughUrl = data.clickThroughUrl;\n }\n}\n","import getLogger from '../../util/logger';\nimport KalturaPlaybackSource from './response-types/kaltura-playback-source';\nimport KalturaPlaybackContext from './response-types/kaltura-playback-context';\nimport KalturaAsset from './response-types/kaltura-asset';\nimport MediaEntry from '../../entities/media-entry';\nimport Drm from '../../entities/drm';\nimport MediaSource from '../../entities/media-source';\nimport MediaSources from '../../entities/media-sources';\nimport EntryList from '../../entities/entry-list';\nimport Bumper from '../../entities/bumper';\nimport {SupportedStreamFormat, isProgressiveSource} from '../../entities/media-format';\nimport {KalturaDrmPlaybackPluginData} from '../common/response-types/kaltura-drm-playback-plugin-data';\nimport KalturaRuleAction from './response-types/kaltura-rule-action';\nimport {KalturaAccessControlMessage} from '../common/response-types/kaltura-access-control-message';\nimport type {OTTAssetLoaderResponse} from './loaders/asset-loader';\nimport KalturaBumpersPlaybackPluginData from './response-types/kaltura-bumper-playback-plugin-data';\nimport {ProviderMediaInfoObject, Poster} from '../../types';\n\nconst LIVE_ASST_OBJECT_TYPE: string = 'KalturaLiveAsset';\n\nconst MediaTypeCombinations: {[mediaType: string]: any} = {\n [KalturaAsset.Type.MEDIA]: {\n [KalturaPlaybackContext.Type.TRAILER]: () => ({type: MediaEntry.Type.VOD}),\n [KalturaPlaybackContext.Type.PLAYBACK]: mediaAssetData => {\n if (mediaAssetData.objectType === LIVE_ASST_OBJECT_TYPE) {\n return {type: MediaEntry.Type.LIVE, dvrStatus: mediaAssetData.enableTrickPlay ? MediaEntry.DvrStatus.ON : MediaEntry.DvrStatus.OFF};\n } else if (parseInt(mediaAssetData.externalIds) > 0) {\n return {type: MediaEntry.Type.LIVE, dvrStatus: MediaEntry.DvrStatus.OFF};\n }\n return {type: MediaEntry.Type.VOD};\n }\n },\n [KalturaAsset.Type.EPG]: {\n [KalturaPlaybackContext.Type.CATCHUP]: () => ({type: MediaEntry.Type.VOD}),\n [KalturaPlaybackContext.Type.START_OVER]: () => ({type: MediaEntry.Type.LIVE, dvrStatus: MediaEntry.DvrStatus.ON})\n },\n [KalturaAsset.Type.RECORDING]: {\n [KalturaPlaybackContext.Type.PLAYBACK]: () => ({type: MediaEntry.Type.VOD})\n }\n};\n\nexport default class OTTProviderParser {\n private static _logger = getLogger('OTTProviderParser');\n\n /**\n * Returns parsed media entry by given OTT response objects.\n * @function getMediaEntry\n * @param {any} assetResponse - The asset response.\n * @param {Object} requestData - The request data object.\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n public static getMediaEntry(assetResponse: any, requestData: any): MediaEntry {\n const mediaEntry = new MediaEntry();\n OTTProviderParser._fillBaseData(mediaEntry, assetResponse, requestData);\n const playbackContext = assetResponse.playBackContextResult;\n const mediaAsset = assetResponse.mediaDataResult;\n const kalturaSources = playbackContext.sources;\n const filteredKalturaSources = OTTProviderParser._filterSourcesByFormats(kalturaSources, requestData.formats);\n mediaEntry.sources = OTTProviderParser._getParsedSources(filteredKalturaSources);\n const typeData = OTTProviderParser._getMediaType(mediaAsset.data, requestData.mediaType, requestData.contextType);\n mediaEntry.type = typeData.type;\n mediaEntry.dvrStatus = typeData.dvrStatus;\n // eslint-disable-next-line prefer-spread\n mediaEntry.duration = Math.max.apply(\n Math,\n kalturaSources.map(source => source.duration)\n );\n return mediaEntry;\n }\n\n /**\n * Returns parsed entry list by given OTT response objects\n * @function getEntryList\n * @param {any} playlistResponse - response\n * @param {Array<ProviderMediaInfoObject>} requestEntries - entries list\n * @returns {Playlist} - The entry list\n * @static\n * @public\n */\n public static getEntryList(playlistResponse: any, requestEntries: Array<ProviderMediaInfoObject>): EntryList {\n const entryList = new EntryList();\n const playlistItems = playlistResponse.playlistItems.entries;\n playlistItems.forEach(entry => {\n const mediaEntry = new MediaEntry();\n const requestData = requestEntries.find(requestEntry => requestEntry.entryId === entry.mediaDataResult.id);\n OTTProviderParser._fillBaseData(mediaEntry, entry, requestData);\n entryList.items.push(mediaEntry);\n });\n return entryList;\n }\n\n /**\n * Returns parsed bumper by given OTT response objects.\n * @function getBumper\n * @param {any} assetResponse - The asset response.\n * @returns {?Bumper} - The bumper\n * @static\n * @public\n */\n public static getBumper(assetResponse: any): Bumper | unknown {\n const playbackContext = assetResponse.playBackContextResult;\n const progressiveBumper = playbackContext.plugins.find(\n bumper => bumper.streamertype === KalturaBumpersPlaybackPluginData.StreamerType.PROGRESSIVE\n );\n if (progressiveBumper) {\n return new Bumper(progressiveBumper);\n }\n }\n\n private static _fillBaseData(mediaEntry: MediaEntry, assetResponse: any, requestData: any): MediaEntry {\n const mediaAsset = assetResponse.mediaDataResult;\n const metaData = OTTProviderParser.reconstructMetadata(mediaAsset);\n metaData.description = mediaAsset.description;\n metaData.name = mediaAsset.name;\n if (mediaAsset.createDate) metaData.createdAt = mediaAsset.createDate;\n if (mediaAsset.endDate) metaData.endDate = mediaAsset.endDate;\n if (mediaAsset.data.entryId) metaData.entryId = mediaAsset.data.entryId;\n if (mediaAsset.data.epgId) metaData.epgId = mediaAsset.data.epgId;\n if (mediaAsset.data.recordingId) metaData.recordingId = mediaAsset.data.recordingId;\n if (requestData && requestData.mediaType) metaData.mediaType = requestData.mediaType;\n if (requestData && requestData.contextType) metaData.contextType = requestData.contextType;\n mediaEntry.metadata = metaData;\n mediaEntry.poster = OTTProviderParser._getPoster(mediaAsset.pictures);\n mediaEntry.id = mediaAsset.id;\n return mediaEntry;\n }\n\n /**\n * reconstruct the metadata\n * @param {Object} mediaAsset the mediaAsset that contains the response with the metadata.\n * @returns {Object} reconstructed metadata object\n */\n public static reconstructMetadata(mediaAsset: any): any {\n const metadata = {\n metas: OTTProviderParser.addToMetaObject(mediaAsset.metas),\n tags: OTTProviderParser.addToMetaObject(mediaAsset.tags)\n };\n return metadata;\n }\n\n /**\n * transform an array of [{key: value},{key: value}...] to an object\n * @param {Array<Object>} list a list of objects\n * @returns {Object} an mapped object of the arrayed list.\n */\n public static addToMetaObject(list: Array<any>): any {\n const categoryObj = {};\n if (list) {\n list.forEach(item => {\n categoryObj[item.key] = item.value;\n });\n }\n return categoryObj;\n }\n\n /**\n * Gets the poster url without width and height.\n * @param {Array<Object>} pictures - Media pictures.\n * @returns {string | Array<Object>} - Poster base url or array of poster candidates.\n * @private\n */\n public static _getPoster(pictures: Poster[]): string | Poster[] {\n if (pictures && pictures.length > 0) {\n const picObj = pictures[0];\n const url = picObj.url;\n // Search for thumbnail service\n const regex = /.*\\/thumbnail\\/.*(?:width|height)\\/\\d+\\/(?:height|width)\\/\\d+/;\n if (regex.test(url)) {\n return url;\n }\n return pictures.map(pic => ({url: pic.url, width: pic.width, height: pic.height}));\n }\n return '';\n }\n\n /**\n * Gets the media type (LIVE/VOD)\n * @param {Object} mediaAssetData - The media asset data.\n * @param {string} mediaType - The asset media type.\n * @param {string} contextType - The asset context type.\n * @returns {Object} - The type data object.\n * @private\n */\n public static _getMediaType(mediaAssetData: any, mediaType: string, contextType: string): any {\n let typeData = {type: MediaEntry.Type.UNKNOWN};\n if (MediaTypeCombinations[mediaType] && MediaTypeCombinations[mediaType][contextType]) {\n typeData = MediaTypeCombinations[mediaType][contextType](mediaAssetData);\n }\n return typeData;\n }\n\n /**\n * Filtered the kalturaSources array by device type.\n * @param {Array<KalturaPlaybackSource>} kalturaSources - The kaltura sources.\n * @param {Array<string>} formats - Partner device formats.\n * @returns {Array<KalturaPlaybackSource>} - Filtered kalturaSources array.\n * @private\n */\n public static _filterSourcesByFormats(kalturaSources: Array<KalturaPlaybackSource>, formats: Array<string>): Array<KalturaPlaybackSource> {\n if (formats.length > 0) {\n kalturaSources = kalturaSources.filter(source => formats.includes(source.type));\n }\n return kalturaSources;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array<KalturaPlaybackSource>} kalturaSources - The kaltura sources\n * @param {Object} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n public static _getParsedSources(kalturaSources: Array<KalturaPlaybackSource>): MediaSources {\n const sources = new MediaSources();\n const addAdaptiveSource = (source: KalturaPlaybackSource): void => {\n const parsedSource = OTTProviderParser._parseAdaptiveSource(source);\n if (parsedSource) {\n const sourceFormat = SupportedStreamFormat.get(source.format);\n sources.map(parsedSource, sourceFormat);\n }\n };\n const parseAdaptiveSources = (): void => {\n kalturaSources.filter(source => !isProgressiveSource(source.format)).forEach(addAdaptiveSource);\n };\n const parseProgressiveSources = (): void => {\n kalturaSources.filter(source => isProgressiveSource(source.format)).forEach(addAdaptiveSource);\n };\n if (kalturaSources && kalturaSources.length > 0) {\n parseAdaptiveSources();\n parseProgressiveSources();\n }\n return sources;\n }\n\n /**\n * Returns a parsed adaptive source\n * @function _parseAdaptiveSource\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @returns {?MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n public static _parseAdaptiveSource(kalturaSource?: KalturaPlaybackSource): MediaSource | null {\n const mediaSource = new MediaSource();\n if (kalturaSource) {\n const playUrl = kalturaSource.url;\n const mediaFormat = SupportedStreamFormat.get(kalturaSource.format);\n if (mediaFormat) {\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n if (!playUrl) {\n OTTProviderParser._logger.error(\n `failed to create play url from source, discarding source: (${kalturaSource.fileId}), ${kalturaSource.format}.`\n );\n return null;\n }\n mediaSource.url = playUrl;\n mediaSource.id = kalturaSource.fileId + ',' + kalturaSource.format;\n if (kalturaSource.hasDrmData()) {\n const drmParams: Array<Drm> = [];\n kalturaSource.drm.forEach(drm => {\n drmParams.push(new Drm(drm.licenseURL, KalturaDrmPlaybackPluginData.Scheme[drm.scheme], drm.certificate));\n });\n mediaSource.drmData = drmParams;\n }\n }\n return mediaSource;\n }\n\n public static hasBlockAction(response: OTTAssetLoaderResponse): boolean {\n return response.playBackContextResult.hasBlockAction();\n }\n\n public static getBlockAction(response: OTTAssetLoaderResponse): KalturaRuleAction | undefined {\n return response.playBackContextResult.getBlockAction();\n }\n\n public static getErrorMessages(response: OTTAssetLoaderResponse): Array<KalturaAccessControlMessage> {\n return response.playBackContextResult.getErrorMessages();\n }\n}\n","import BaseProvider from '../common/base-provider';\nimport getLogger from '../../util/logger';\nimport OTTConfiguration from './config';\nimport OTTDataLoaderManager from './loaders/data-loader-manager';\nimport OTTSessionLoader from './loaders/session-loader';\nimport OTTAssetLoader from './loaders/asset-loader';\nimport OTTAssetListLoader from './loaders/asset-list-loader';\nimport OTTProviderParser from './provider-parser';\nimport KalturaAsset from './response-types/kaltura-asset';\nimport KalturaPlaybackContext from './response-types/kaltura-playback-context';\nimport MediaEntry from '../../entities/media-entry';\nimport Error from '../../util/error/error';\nimport {\n ILoader,\n OTTProviderMediaInfoObject,\n ProviderEntryListObject,\n ProviderMediaConfigObject,\n ProviderMediaConfigSourcesObject, ProviderMediaInfoObject,\n ProviderOptionsObject,\n ProviderPlaybackContextOptions,\n ProviderPlaylistObject\n} from '../../types';\n\nexport default class OTTProvider extends BaseProvider<OTTProviderMediaInfoObject> {\n /**\n * @constructor\n * @param {ProviderOptionsObject} options - provider options\n * @param {string} playerVersion - player version\n */\n constructor(options: ProviderOptionsObject, playerVersion: string) {\n super(options, playerVersion);\n this._logger = getLogger('OTTProvider');\n OTTConfiguration.set(options.env);\n this._networkRetryConfig = Object.assign(this._networkRetryConfig, options.networkRetryParameters);\n }\n\n public get env(): any {\n return OTTConfiguration.get();\n }\n\n /**\n * Gets the backend media config.\n * @param {OTTProviderMediaInfoObject} mediaInfo - ott media info\n * @returns {Promise<ProviderMediaConfigObject>} - The provider media config\n */\n public getMediaConfig(mediaInfo: OTTProviderMediaInfoObject): Promise<ProviderMediaConfigObject> {\n if (mediaInfo.ks) {\n this.ks = mediaInfo.ks;\n this._isAnonymous = false;\n }\n this._dataLoader = new OTTDataLoaderManager(this.partnerId, this.ks, this._networkRetryConfig);\n return new Promise((resolve, reject) => {\n const entryId = mediaInfo.entryId;\n if (entryId) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OTTSessionLoader, {partnerId: this.partnerId});\n }\n const contextType = mediaInfo.contextType || KalturaPlaybackContext.Type.PLAYBACK;\n const mediaType = mediaInfo.mediaType || KalturaAsset.Type.MEDIA;\n const assetReferenceType = mediaInfo.assetReferenceType || KalturaAsset.AssetReferenceType.MEDIA;\n const playbackContext: ProviderPlaybackContextOptions = {\n mediaProtocol: mediaInfo.protocol,\n assetFileIds: mediaInfo.fileIds,\n context: contextType\n };\n if (mediaInfo.streamerType) {\n playbackContext.streamerType = mediaInfo.streamerType;\n }\n if (mediaInfo.urlType) {\n playbackContext.urlType = mediaInfo.urlType;\n }\n if (mediaInfo.adapterData) {\n playbackContext.adapterData = mediaInfo.adapterData;\n }\n this._dataLoader.add(OTTAssetLoader, {\n entryId: entryId,\n ks: ks,\n type: mediaType,\n playbackContext: playbackContext,\n assetReferenceType: assetReferenceType\n });\n const requestData = {\n contextType: contextType,\n mediaType: mediaType,\n formats: mediaInfo.formats || []\n };\n return this._dataLoader.fetchData().then(\n response => {\n try {\n resolve(this._parseDataFromResponse(response, requestData));\n } catch (err) {\n reject(err);\n }\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject(new Error(Error.Severity.CRITICAL, Error.Category.PROVIDER, Error.Code.MISSING_MANDATORY_PARAMS, {message: 'missing entry id'}));\n }\n });\n }\n\n private _parseDataFromResponse(data: Map<string, ILoader>, requestData: any): ProviderMediaConfigObject {\n this._logger.debug('Data parsing started');\n const mediaConfig: ProviderMediaConfigObject = {\n session: {\n isAnonymous: this._isAnonymous,\n partnerId: this.partnerId\n },\n sources: this._getDefaultSourcesObject(),\n plugins: {}\n } as ProviderMediaConfigObject;\n if (this.uiConfId) {\n mediaConfig.session.uiConfId = this.uiConfId;\n }\n if (data) {\n if (data.has(OTTSessionLoader.id)) {\n const sessionLoader = data.get(OTTSessionLoader.id);\n if (sessionLoader && sessionLoader.response) {\n mediaConfig.session.ks = sessionLoader.response;\n }\n } else {\n mediaConfig.session.ks = this.ks;\n }\n if (data.has(OTTAssetLoader.id)) {\n const assetLoader = data.get(OTTAssetLoader.id);\n if (assetLoader && assetLoader.response && Object.keys(assetLoader.response).length) {\n const response = (assetLoader as unknown as OTTAssetLoader).response;\n if (OTTProviderParser.hasBlockAction(response)) {\n throw new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.BLOCK_ACTION, {\n action: OTTProviderParser.getBlockAction(response),\n messages: OTTProviderParser.getErrorMessages(response)\n });\n }\n const mediaEntry = OTTProviderParser.getMediaEntry(response, requestData);\n Object.assign(mediaConfig.sources, this._getSourcesObject(mediaEntry));\n this._verifyHasSources(mediaConfig.sources);\n const bumper = OTTProviderParser.getBumper(response);\n if (bumper) {\n Object.assign(mediaConfig.plugins, {bumper});\n }\n }\n }\n }\n this._logger.debug('Data parsing finished', mediaConfig);\n return mediaConfig;\n }\n\n /**\n * Gets the playlist config from entry list.\n * @param {ProviderEntryListObject} entryListInfo - ott entry list info\n * @returns {Promise<ProviderPlaylistObject>} - The provider playlist config\n */\n public getEntryListConfig(entryListInfo: ProviderEntryListObject): Promise<ProviderPlaylistObject> {\n if (entryListInfo.ks) {\n this.ks = entryListInfo.ks;\n this._isAnonymous = false;\n }\n this._dataLoader = new OTTDataLoaderManager(this.partnerId, this.ks, this._networkRetryConfig);\n return new Promise((resolve, reject) => {\n const entries = entryListInfo.entries;\n if (entries && entries.length) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OTTSessionLoader, {partnerId: this.partnerId});\n }\n this._dataLoader.add(OTTAssetListLoader, {entries, ks});\n this._dataLoader.fetchData(false).then(\n response => {\n resolve(this._parseEntryListDataFromResponse(response, entries));\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject({success: false, data: 'Missing mandatory parameter'});\n }\n });\n }\n\n private _parseEntryListDataFromResponse(data: Map<string, ILoader>, requestEntries: Array<ProviderMediaInfoObject>): ProviderPlaylistObject {\n this._logger.debug('Data parsing started');\n const playlistConfig: ProviderPlaylistObject = {\n id: '',\n metadata: {\n name: '',\n description: ''\n },\n poster: '',\n items: [],\n playlistLastEntryId: ''\n };\n if (data && data.has(OTTAssetListLoader.id)) {\n const playlistLoader = data.get(OTTAssetListLoader.id);\n if (playlistLoader && playlistLoader.response) {\n const entryList = OTTProviderParser.getEntryList(playlistLoader.response, requestEntries);\n entryList.items.forEach(i => playlistConfig.items.push({sources: this._getSourcesObject(i)}));\n }\n }\n this._logger.debug('Data parsing finished', playlistConfig);\n return playlistConfig;\n }\n\n private _getDefaultSourcesObject(): ProviderMediaConfigSourcesObject {\n return {\n hls: [],\n dash: [],\n progressive: [],\n image: [],\n document: [],\n id: '',\n duration: 0,\n type: MediaEntry.Type.UNKNOWN,\n poster: '',\n dvr: false,\n vr: null,\n metadata: {\n name: '',\n description: '',\n tags: ''\n }\n };\n }\n\n private _getSourcesObject(mediaEntry: MediaEntry): ProviderMediaConfigSourcesObject {\n const sourcesObject: ProviderMediaConfigSourcesObject = this._getDefaultSourcesObject();\n const mediaSources = mediaEntry.sources.toJSON();\n sourcesObject.hls = mediaSources.hls;\n sourcesObject.dash = mediaSources.dash;\n sourcesObject.progressive = mediaSources.progressive;\n sourcesObject.id = mediaEntry.id;\n sourcesObject.duration = mediaEntry.duration;\n sourcesObject.type = mediaEntry.type;\n sourcesObject.dvr = !!mediaEntry.dvrStatus;\n sourcesObject.poster = mediaEntry.poster;\n if (\n mediaEntry.metadata &&\n mediaEntry.metadata.metas &&\n typeof mediaEntry.metadata.metas.tags === 'string' &&\n mediaEntry.metadata.metas.tags.indexOf('360') > -1\n ) {\n sourcesObject.vr = {};\n }\n Object.assign(sourcesObject.metadata, mediaEntry.metadata);\n return sourcesObject;\n }\n}\n","import OTTProvider from './provider';\nimport KalturaPlaybackContext from './response-types/kaltura-playback-context';\nimport KalturaAsset from './response-types/kaltura-asset';\n\ndeclare let __VERSION__: string;\ndeclare let __NAME__: string;\n\nconst NAME = __NAME__ + '-ott';\nconst VERSION = __VERSION__;\n\nconst ContextType = KalturaPlaybackContext.Type;\nconst MediaType = KalturaAsset.Type;\n\nexport {OTTProvider as Provider, ContextType, MediaType, NAME, VERSION};\n"],"names":["root","factory","exports","module","define","amd","a","i","self","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","_classCallCheck","instance","Constructor","TypeError","_typeof","iterator","constructor","_toPropertyKey","arg","input","hint","prim","toPrimitive","undefined","res","String","_defineProperties","target","props","length","descriptor","configurable","writable","_createClass","protoProps","staticProps","_setPrototypeOf","p","setPrototypeOf","bind","__proto__","_inherits","subClass","superClass","create","_assertThisInitialized","ReferenceError","_possibleConstructorReturn","_getPrototypeOf","getPrototypeOf","_defineProperty","JsLogger","VERSION","DEBUG","name","ERROR","INFO","OFF","TIME","TRACE","WARN","createDefaultHandler","debug","enabledFor","error","getLevel","info","log","setHandler","setLevel","time","timeEnd","trace","useDefaults","warn","LogLevel","getLogger","Error","severity","category","code","data","arguments","this","_logger","concat","RECOVERABLE","CRITICAL","NETWORK","SERVICE","PROVIDER","UNSUPPORTED_SCHEME","BAD_HTTP_STATUS","HTTP_ERROR","TIMEOUT","MALFORMED_DATA_URI","BAD_SERVER_RESPONSE","MULTIREQUEST_API_ERROR","API_RESPONSE_MISMATCH","BLOCK_ACTION","MEDIA_STATUS_NOT_READY","SCHEDULED_RESTRICTED","MISSING_MANDATORY_PARAMS","MISSING_PLAY_SOURCE","METHOD_NOT_IMPLEMENTED","BaseProvider","options","playerVersion","async","timeout","maxAttempts","logger","setLogger","_partnerId","partnerId","_widgetId","widgetId","_uiConfId","uiConfId","_isAnonymous","ks","_ks","_playerVersion","_referrer","referrer","defaultWidgetId","set","mediaInfo","Promise","reject","Severity","Category","Code","message","playlistInfo","entryListInfo","sources","hls","dash","progressive","image","document","action","messages","id","getLogLevel","level","setLogLevel","clone","node","Array","isArray","slice","forEach","e","assign","keys","defaultConfig","serviceParams","apiVersion","OTTConfiguration","clientConfig","DataLoaderManager","networkRetryConfig","Map","_networkRetryConfig","loader","params","_this","execution_loader","isValid","_loaders","startIndex","_multiRequest","requests","retryConfig","request","add","executionLoaderResponseMap","from","val","index","_loadersResponseMap","requestsMustSucceed","_this2","resolve","execute","then","_multiResponse","response","prepareData","success","headers","err","_this3","loaderDataIndexes","results","RequestBuilder","serviceUrl","service","promise","_requestPromise","url","_createXHR","XMLHttpRequest","onreadystatechange","readyState","status","JSON","parse","responseText","responseHeaders","_getResponseHeaders","_createError","text","open","method","requestTime","performance","now","ontimeout","_handleError","statusText","onerror","onabort","setRequestHeader","send","getAllResponseHeaders","split","filter","header","toLowerCase","indexOf","_attemptCounter","attempt","ServiceResult","objectType","hasError","ServiceError","MultiRequestBuilder","_RequestBuilder","_super","_len","args","_key","apply","push","requestParams","serviceDef","stringify","FAILED_PARSING_REQUEST","doHttpRequest","multiRequestResult","MultiRequestResult","result","map","errorResults","serviceResult","OTTService","config","ottParams","multiReq","getUrl","OTTDataLoaderManager","_DataLoaderManager","getMultiRequest","OTTUserService","_OTTService","udid","OTTSessionLoader","buildRequests","_requests","_response","UserService","anonymousLogin","SERVICE_NAME","OTTAssetService","assetId","type","playbackContextOptions","contextDataParams","assetType","assetReferenceType","KalturaAccessControlMessage","KalturaRuleAction","BLOCK","START_DATE_OFFSET","END_DATE_OFFSET","USER_BLOCK","ALLOW_PLAYBACK","BLOCK_PLAYBACK","APPLY_DISCOUNT_MODULE","KalturaDrmPlaybackPluginData","drm","scheme","licenseURL","certificate","WIDEVINE_CENC","PLAYREADY_CENC","FAIRPLAY","KalturaPlaybackSource","source","format","adsPolicy","adsParam","duration","fileId","protocols","protocol","returnValue","KalturaBumpersPlaybackPluginData","streamertype","HLS","DASH","PROGRESSIVE","KalturaPlaybackContext","_ServiceResult","actions","plugins","plugin","getBlockAction","find","Type","DOWNLOAD","TRAILER","CATCHUP","START_OVER","PLAYBACK","KalturaAsset","description","createDate","endDate","plays","views","metas","_formatTagsMetas","tags","pictures","images","objectToParse","parsed","objects","object","MEDIA","RECORDING","EPG","EPG_INTERNAL","EPG_EXTERNAL","NPVR","OTTAssetLoader","_entryId","entryId","mediaDataResult","playBackContextResult","getPlaybackContext","playbackContext","OTTAssetListLoader","playlistItems","entries","_entries","item","entry","AssetReferenceType","MediaFormat","mimeType","pathExt","WVM","MP4","MP3","SupportedStreamFormat","isProgressiveSource","formatName","sourceFormat","MediaSources","mediaFormat","toJSON","h","d","MediaEntry","metadata","UNKNOWN","dvrStatus","poster","downloadUrl","rawThumbnailUrl","rootEntryId","capabilities","VOD","LIVE","IMAGE","AUDIO","DOCUMENT","ON","Drm","licenseUrl","MediaSource","mimetype","bandwidth","width","height","label","drmData","EntryList","items","Bumper","clickThroughUrl","MediaTypeCombinations","mediaAssetData","enableTrickPlay","DvrStatus","parseInt","externalIds","OTTProviderParser","assetResponse","requestData","mediaEntry","_fillBaseData","mediaAsset","kalturaSources","filteredKalturaSources","_filterSourcesByFormats","formats","_getParsedSources","typeData","_getMediaType","mediaType","contextType","Math","max","playlistResponse","requestEntries","entryList","requestEntry","progressiveBumper","bumper","StreamerType","metaData","reconstructMetadata","createdAt","epgId","recordingId","_getPoster","addToMetaObject","list","categoryObj","test","pic","includes","addAdaptiveSource","parsedSource","_parseAdaptiveSource","kalturaSource","mediaSource","playUrl","hasDrmData","drmParams","Scheme","hasBlockAction","getErrorMessages","OTTProvider","_BaseProvider","env","networkRetryParameters","_dataLoader","mediaProtocol","assetFileIds","fileIds","context","streamerType","urlType","adapterData","fetchData","_parseDataFromResponse","mediaConfig","session","isAnonymous","_getDefaultSourcesObject","has","sessionLoader","assetLoader","getMediaEntry","_getSourcesObject","_verifyHasSources","getBumper","_parseEntryListDataFromResponse","_this4","playlistConfig","playlistLastEntryId","playlistLoader","getEntryList","dvr","vr","sourcesObject","mediaSources","NAME","__NAME__","__VERSION__","ContextType","MediaType"],"sourceRoot":""}