@playkit-js/playkit-js-providers 2.45.0-canary.0-877671b → 2.45.0-canary.0-0441953
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ott-provider.d.ts +53 -0
- package/dist/ovp-provider.d.ts +53 -0
- package/dist/playkit-analytics-service.js +1 -1
- package/dist/playkit-bookmark-service.js +1 -1
- package/dist/playkit-ott-provider.js +2 -1
- package/dist/playkit-ott-provider.js.LICENSE.txt +1 -0
- package/dist/playkit-ott-provider.js.map +1 -1
- package/dist/playkit-ovp-provider.js +1 -1
- package/dist/playkit-ovp-provider.js.map +1 -1
- package/dist/playkit-stats-service.js +1 -1
- package/package.json +1 -1
- package/src/k-provider/common/data-loader-manager.ts +40 -18
- package/src/k-provider/ott/loaders/asset-loader.ts +5 -0
- package/src/k-provider/ott/loaders/session-loader.ts +5 -0
- package/src/k-provider/ott/request-sequence-builder.ts +168 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playkit-ovp-provider.js","mappings":"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","sources":["webpack://@playkit-js/playkit-js-providers/webpack/universalModuleDefinition","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/typeof.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/regenerator/index.js","webpack://@playkit-js/playkit-js-providers/webpack/bootstrap","webpack://@playkit-js/playkit-js-providers/webpack/runtime/compat get default export","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/asyncToGenerator.js","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/assertThisInitialized.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/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/clone.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/config.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/base-service-result.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-media-entry.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-base-entry-list-response.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-rule-action.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-access-control-modify-request-host-regex-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/ovp/response-types/kaltura-playback-source.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-bumper.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-flavor-asset.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-media-entries.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-metadata.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-metadata-list-response.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/ovp/response-types/kaltura-playback-context.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-playlist.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-ui-conf-response.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-user-entry.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-user-entry-list-response.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/play-source-url-builder.ts","webpack://@playkit-js/playkit-js-providers/./src/util/xml-parser.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/playlist.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/ovp/external-captions-builder.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/image-source.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/document-source.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/provider-parser.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/util/request-builder.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/multi-request-builder.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/services/ovp-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/request-params/base-entry-response-profile.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/services/base-entry-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/services/meta-data-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/loaders/media-entry-loader.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/services/session-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/loaders/session-loader.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/loaders/data-loader-manager.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/data-loader-manager.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/services/playlist-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/loaders/playlist-loader.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/base-provider.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/loaders/entry-list-loader.ts","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/regex-action-handler.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/services/user-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-user-get-response.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/provider.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/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 ","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\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};","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\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 _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}","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}","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","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 serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: 'https://cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n },\n useApiCaptions: true,\n loadThumbnailWithKs: false,\n replaceHostOnlyManifestUrls: false\n};\n\nexport default class OVPConfiguration {\n public static set(clientConfig?: ProviderEnvConfigObject): void {\n if (clientConfig?.overrideServiceUrl) {\n clientConfig.serviceUrl = clientConfig.overrideServiceUrl;\n }\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n public static get(): any {\n return clone(defaultConfig);\n }\n\n public static get serviceUrl(): string {\n return defaultConfig.serviceUrl;\n }\n}\n\nexport {OVPConfiguration};\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","export class KalturaMediaEntry {\n public static EntryType: {[entryType: string]: {value: number | string}} = {\n AUTOMATIC: {value: -1},\n EXTERNAL_MEDIA: {value: 'externalMedia.externalMedia'},\n MEDIA_CLIP: {value: 1},\n MIX: {value: 2},\n PLAYLIST: {value: 5},\n DATA: {value: 6},\n LIVE_STREAM: {value: 7},\n LIVE_CHANNEL: {value: 8},\n DOCUMENT: {value: 10}\n };\n\n public static MediaType: {[mediaType: string]: {value: number}} = {\n VIDEO: {value: 1},\n IMAGE: {value: 2},\n AUDIO: {value: 5},\n LIVE_STREAM_FLASH: {value: 201},\n LIVE_STREAM_WINDOWS_MEDIA: {value: 202},\n LIVE_STREAM_REAL_MEDIA: {value: 203},\n LIVE_STREAM_QUICK_TIME: {value: 204}\n };\n\n public static EntryStatus: {[status: string]: string | number} = {\n ERROR_IMPORTING: -2,\n ERROR_CONVERTING: -1,\n SCAN_FAILURE: 'virusScan.ScanFailure',\n IMPORT: 0,\n INFECTED: 'virusScan.Infected',\n PRECONVERT: 1,\n READY: 2,\n DELETED: 3,\n PENDING: 4,\n MODERATE: 5,\n BLOCKED: 6,\n NO_CONTENT: 7\n };\n\n public static EntryModerationStatus: {[status: string]: number} = {\n PENDING_MODERATION: 1,\n APPROVED: 2,\n REJECTED: 3,\n FLAGGED_FOR_REVIEW: 4,\n MODERATE: 5,\n AUTO_APPROVED: 6\n };\n\n /**\n * @member - The entry id\n * @type {string}\n */\n public id: string;\n /**\n * @member - The entry referenceId\n * @type {string}\n */\n public referenceId: string;\n /**\n * @member - The entry externalSourceType\n * @type {string}\n */\n public externalSourceType: string;\n /**\n * @member - Entry name (Min 1 chars)\n * @type {string}\n */\n public name: string;\n /**\n * @member - Entry description\n * @type {string}\n */\n public description: string;\n /**\n * @member - The URL used for playback. This is not the download URL.\n * @type {string}\n */\n public dataUrl: string;\n /**\n * @member - Comma separated flavor params ids that exists for this media entry\n * @type {string}\n */\n public flavorParamsIds: string;\n /**\n * @member - The entry duration\n * @type {number}\n */\n public duration: number;\n /**\n * @member - The type of the entry, this is auto filled by the derived entry object\n * @type {string | number}\n */\n public type: string | number;\n /**\n * @member - The type of the entry, this is auto filled by the derived entry object (Image, Audio etc.)\n * @type {number}\n */\n public entryType: number;\n /**\n * @member - Entry poster image\n * @type {string}\n */\n public poster: string;\n /**\n * @member - DVR status\n * @type {number}\n */\n public dvrStatus: number;\n /**\n * @member - Entry tags\n * @type {string}\n */\n public tags: string;\n\n /**\n * @member - Entry status\n * @type {number}\n */\n public status: number;\n\n /**\n * @member - Entry creation date as Unix timestamp (In seconds)\n * @type {number}\n */\n public createdAt: number;\n\n /**\n * @member - Entry updation date as Unix timestamp (In seconds)\n * @type {number}\n */\n public updatedAt: number;\n\n /**\n * @member - Entry end date as Unix timestamp (In seconds)\n * @type {number}\n */\n public endDate: number;\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 * @member - The download URL of the entry.\n * @type {string}\n */\n public downloadUrl: string;\n\n /**\n * @member - ID of entry creator.\n * @type {string}\n */\n public creatorId: string;\n\n /**\n * @member - ID of entry owner.\n * @type {string}\n */\n public userId: 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 {string}\n */\n public capabilities: string;\n\n /**\n * @member - Admin tags\n * @type {string}\n */\n public adminTags: string;\n\n /**\n * @constructor\n * @param {Object} entry The json response\n */\n constructor(entry: any) {\n this.id = entry.id;\n this.referenceId = entry.referenceId;\n this.externalSourceType = entry.externalSourceType;\n this.name = entry.name;\n this.description = entry.description;\n this.dataUrl = entry.dataUrl;\n this.type = entry.type;\n this.entryType = entry.mediaType;\n this.flavorParamsIds = entry.flavorParamsIds;\n this.duration = entry.duration;\n this.poster = entry.thumbnailUrl;\n this.rawThumbnailUrl = entry.thumbnailUrl;\n this.status = entry.status;\n this.dvrStatus = entry.dvrStatus;\n this.tags = entry.tags;\n this.adminTags = entry.adminTags;\n this.createdAt = entry.createdAt;\n this.updatedAt = entry.updatedAt;\n this.creatorId = entry.creatorId;\n this.userId = entry.userId;\n this.endDate = entry.endDate;\n this.plays = entry.plays;\n this.views = entry.views;\n this.downloadUrl = entry.downloadUrl;\n this.rootEntryId = entry.rootEntryId;\n this.capabilities = entry.capabilities;\n }\n}\n","import ServiceResult from '../../common/base-service-result';\nimport {KalturaMediaEntry} from './kaltura-media-entry';\n\nexport class KalturaBaseEntryListResponse extends ServiceResult {\n /**\n * @member - The total count\n * @type {number}\n */\n public totalCount!: number;\n /**\n * @member - The entries\n * @type {Array<KalturaMediaEntry>}\n */\n public entries!: Array<KalturaMediaEntry>;\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n constructor(responseObj: any) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n if (this.totalCount > 0) {\n this.entries = [];\n responseObj.objects.map(entry => this.entries.push(new KalturaMediaEntry(entry)));\n }\n }\n }\n}\n","export class KalturaRuleAction {\n public static Type: {[type: string]: string | number} = {\n DRM_POLICY: 'drm.DRM_POLICY',\n BLOCK: 1,\n PREVIEW: 2,\n LIMIT_FLAVORS: 3,\n ADD_TO_STORAGE: 4,\n LIMIT_DELIVERY_PROFILES: 5,\n SERVE_FROM_REMOTE_SERVER: 6,\n REQUEST_HOST_REGEX: 7,\n LIMIT_THUMBNAIL_CAPTURE: 8,\n SCHEDULED_RESTRICTED: 'SCHEDULED_RESTRICTED'\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","import {KalturaRuleAction} from './kaltura-rule-action';\n\nexport class KalturaAccessControlModifyRequestHostRegexAction extends KalturaRuleAction {\n /**\n * @member - Request host regex pattern\n * @type {string}\n */\n public pattern: string;\n /**\n * @member - Request host regex replacement\n * @type {string}\n */\n public replacement: string;\n /**\n * @member - serverNodeId to generate replacment host from\n * @type {number}\n */\n public replacmenServerNodeId: number;\n /**\n * @member - checkAliveTimeout in milliseconds\n * @type {number}\n */\n public checkAliveTimeoutMs: number;\n /**\n * @constructor\n * @param {Object} data - The response\n */\n constructor(data: any) {\n super(data);\n this.pattern = data.pattern;\n this.replacement = data.replacement;\n this.replacmenServerNodeId = data.replacmenServerNodeId;\n this.checkAliveTimeoutMs = data.checkAliveTimeoutMs;\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 OVPKalturaPlaybackSource = KalturaPlaybackSource;\n\nexport class KalturaPlaybackSource {\n /**\n * @member - source format according to delivery profile streamer type (applehttp, mpegdash etc.)\n * @type {string}\n */\n public format: string;\n /**\n * @member - delivery profile Id\n * @type {string}\n */\n public deliveryProfileId: string;\n /**\n * @member - The source URL\n * @type {string}\n */\n public url: string;\n /**\n * @member - comma separated string according to deliveryProfile media protocols ('http,https' etc.)\n * @type {string}\n */\n public protocols: string;\n /**\n * @member - comma separated string of flavor ids\n * @type {string}\n */\n public flavorIds: string;\n /**\n * @member - drm data object containing relevant license url ,scheme name and certificate\n * @type {Array<KalturaDrmPlaybackPluginData>}\n */\n public drm: Array<KalturaDrmPlaybackPluginData> = [];\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n constructor(source: any) {\n this.format = source.format;\n this.deliveryProfileId = source.deliveryProfileId;\n this.url = source.url;\n this.protocols = source.protocols;\n this.flavorIds = source.flavorIds;\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 * Checks if source has flavor IDs\n * @function hasFlavorIds\n * @returns {boolean} Is source ha flavor IDs\n */\n public hasFlavorIds(): boolean {\n return !!this.flavorIds && this.flavorIds.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","import {KalturaPlaybackSource} from './kaltura-playback-source';\n\nexport class KalturaBumper {\n /**\n * @member - The bumper entry ID\n * @type {string}\n */\n public entryId: string;\n /**\n * @member - The bumper click through url\n * @type {string}\n */\n public clickThroughUrl: string;\n /**\n * @member - The bumper sources\n * @type {Array<KalturaPlaybackSource>}\n */\n public sources: Array<KalturaPlaybackSource>;\n\n constructor(data: any) {\n this.entryId = data.entryId;\n this.clickThroughUrl = data.url;\n this.sources = data.sources ? data.sources.map(source => new KalturaPlaybackSource(source)) : [];\n }\n}\n","export class KalturaFlavorAsset {\n public static Status: {[status: string]: number} = {\n ERROR: -1,\n QUEUED: 0,\n CONVERTING: 1,\n READY: 2,\n DELETED: 3,\n NOT_APPLICABLE: 4,\n TEMP: 5,\n WAIT_FOR_CONVERT: 6,\n IMPORTING: 7,\n VALIDATING: 8,\n EXPORTING: 9\n };\n\n /**\n * @member - The ID of the Flavor Asset\n * @type {string}\n */\n public id: string;\n /**\n * @member -The Flavor Params used to create this Flavor Asset\n * @type {string}\n */\n public flavorParamsId: string;\n /**\n * @member -The file extension\n * @type {string}\n */\n public fileExt: string;\n /**\n * @member - The overall bitrate (in KBits) of the Flavor Asset\n * @type {string}\n */\n public bitrate: number;\n /**\n * @member - The width of the Flavor Asset\n * @type {number}\n */\n public width: number;\n /**\n * @member - The height of the Flavor Asset\n * @type {number}\n */\n public height: number;\n /**\n * @member - The frame rate (in FPS) of the Flavor Asset\n * @type {number}\n */\n public frameRate: number;\n /**\n * @member - True if this Flavor Asset is the original source\n * @type {number}\n */\n public isOriginal: boolean;\n /**\n * @member - True if this Flavor Asset is playable in KDP\n * @type {boolean}\n */\n public isWeb: boolean;\n /**\n * @member - The container format\n * @type {boolean}\n */\n public containerFormat: string;\n /**\n *@member - The video codec\n * @type {boolean}\n */\n public videoCodecId: string;\n /**\n * @member - The status of the Flavor Asset\n * @type {number}\n */\n public status: number;\n /**\n * @member - The language of the flavor asset\n * @type {Status}\n */\n public language: string;\n /**\n * @member - The label of the flavor asset\n * @type {string}\n */\n public label: string;\n\n /**\n * @member - tags\n * @type {Array<string>}\n */\n public tags: Array<string>;\n\n /**\n * @function\n * @param {string} tags The tags\n * @returns {Array<string>} tags array\n * @static\n */\n public static parseTags(tags = ''): Array<string> {\n return tags.split(',');\n }\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: any) {\n this.id = data.id;\n this.flavorParamsId = data.flavorParamsId;\n this.fileExt = data.fileExt;\n this.bitrate = data.bitrate;\n this.width = data.width;\n this.height = data.height;\n this.id = data.id;\n this.frameRate = data.frameRate;\n this.isOriginal = data.isOriginal;\n this.isWeb = data.isWeb;\n this.containerFormat = data.containerFormat;\n this.videoCodecId = data.videoCodecId;\n this.status = data.status;\n this.language = data.language;\n this.label = data.label;\n this.tags = KalturaFlavorAsset.parseTags(data.tags);\n }\n}\n","import ServiceResult from '../../common/base-service-result';\nimport {KalturaMediaEntry} from './kaltura-media-entry';\n\nexport class KalturaMediaEntries extends ServiceResult {\n /**\n * @member - The entries\n * @type {Array<KalturaMediaEntry>}\n */\n public entries!: Array<KalturaMediaEntry>;\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n constructor(responseObj: any) {\n super(responseObj);\n if (!this.hasError) {\n this.entries = [];\n responseObj.map(entry => this.entries.push(new KalturaMediaEntry(entry)));\n }\n }\n}\n","export class KalturaMetadata {\n public static ObjectType: {[type: string]: string | number} = {\n AD_CUE_POINT: 'adCuePointMetadata.AdCuePoint',\n ANNOTATION: 'annotationMetadata.Annotation',\n CODE_CUE_POINT: 'codeCuePointMetadata.CodeCuePoint',\n THUMB_CUE_POINT: 'thumbCuePointMetadata.thumbCuePoint',\n ENTRY: 1,\n CATEGORY: 2,\n USER: 3,\n PARTNER: 4,\n DYNAMIC_OBJECT: 5\n };\n\n public static Status: {[status: string]: number} = {\n VALID: 1,\n INVALID: 2,\n DELETED: 3\n };\n\n public id: number;\n public metadataProfileId: number;\n public metadataProfileVersion: number;\n public metadataObjectType: string | number;\n public objectId: string;\n public version: number;\n public created: Date;\n public updated: Date;\n public status: number;\n public xml: string;\n\n /**\n * @constructor\n * @param {Object} data The response\n */\n constructor(data: any) {\n this.id = data.id;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataProfileVersion = data.metadataProfileVersion;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataObjectType = data.metadataObjectType;\n this.objectId = data.objectId;\n this.version = data.version;\n this.created = new Date(0);\n this.created.setUTCSeconds(data.createdAt);\n this.updated = new Date(0);\n this.updated.setUTCSeconds(data.updatedAt);\n this.status = data.status;\n this.xml = data.xml;\n }\n}\n","import ServiceResult from '../../common/base-service-result';\nimport {KalturaMetadata} from './kaltura-metadata';\n\nexport class KalturaMetadataListResponse extends ServiceResult {\n public totalCount!: number;\n public metas!: Array<KalturaMetadata>;\n\n /**\n * @constructor\n * @param {Object} responseObj The response\n */\n constructor(responseObj: any) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n if (this.totalCount > 0) {\n this.metas = [];\n responseObj.objects.map(meta => this.metas.push(new KalturaMetadata(meta)));\n }\n }\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","import ServiceResult from '../../common/base-service-result';\nimport {KalturaAccessControlMessage} from '../../common/response-types/kaltura-access-control-message';\nimport {KalturaPlaybackSource} from './kaltura-playback-source';\nimport {KalturaAccessControlModifyRequestHostRegexAction} from './kaltura-access-control-modify-request-host-regex-action';\nimport {KalturaRuleAction} from './kaltura-rule-action';\nimport {KalturaFlavorAsset} from './kaltura-flavor-asset';\nimport {KalturaBumper} from './kaltura-bumper';\nimport {ActiveLiveStreamTime} from './kaltura-active-live-stream-time';\n\nexport class KalturaPlaybackContext extends ServiceResult {\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: Array<KalturaRuleAction> = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array<KalturaAccessControlMessage>}\n */\n public messages: Array<KalturaAccessControlMessage> = [];\n /**\n * @member - The flavor assets\n * @type {Array<KalturaFlavorAsset>}\n */\n public flavorAssets: Array<KalturaFlavorAsset> = [];\n /**\n * @member - The bumper data\n * @type {Array<KalturaBumper>}\n */\n public bumperData: Array<KalturaBumper> = [];\n\n public activeLiveStreamTime?: ActiveLiveStreamTime | undefined;\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 => {\n if (action.type === KalturaRuleAction.Type.REQUEST_HOST_REGEX) {\n this.actions.push(new KalturaAccessControlModifyRequestHostRegexAction(action));\n } else {\n this.actions.push(new KalturaRuleAction(action));\n }\n });\n }\n const sources = response.sources;\n if (sources) {\n sources.map(source => this.sources.push(new KalturaPlaybackSource(source)));\n }\n const flavorAssets = response.flavorAssets;\n if (flavorAssets) {\n flavorAssets.map(flavor => this.flavorAssets.push(new KalturaFlavorAsset(flavor)));\n }\n const bumperData = response.bumperData;\n if (bumperData) {\n bumperData.map(bumper => this.bumperData.push(new KalturaBumper(bumper)));\n }\n\n if (response.activeLiveStreamTime) {\n this.activeLiveStreamTime = {\n startTime: response.activeLiveStreamTime.startTime,\n endTime: response.activeLiveStreamTime.endTime\n };\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 hasScheduledRestriction(): boolean {\n return this.messages.some(message => message.code === KalturaRuleAction.Type.SCHEDULED_RESTRICTED);\n }\n\n public getErrorMessages(): Array<KalturaAccessControlMessage> {\n return this.messages;\n }\n\n /**\n * Get the KalturaAccessControlModifyRequestHostRegexAction action\n * @function getRequestHostRegexAction\n * @returns {?KalturaAccessControlModifyRequestHostRegexAction} The action\n * */\n public getRequestHostRegexAction(): KalturaAccessControlModifyRequestHostRegexAction | undefined {\n const action = this.actions.find(action => action.type === KalturaRuleAction.Type.REQUEST_HOST_REGEX);\n if (action instanceof KalturaAccessControlModifyRequestHostRegexAction) {\n return action;\n }\n }\n}\n","export class KalturaPlaylist {\n /**\n * @member - playlist id\n * @type {string}\n */\n public id: string;\n /**\n * @member - playlist name\n * @type {string}\n */\n public name: string;\n /**\n * @member - playlist description\n * @type {string}\n */\n public description: string;\n /**\n * @member - playlist poster image\n * @type {string}\n */\n public poster: string;\n\n /**\n * @constructor\n * @param {Object} playlist - The json response\n */\n constructor(playlist: any) {\n this.id = playlist.id;\n this.name = playlist.name;\n this.description = playlist.description;\n this.poster = playlist.thumbnailUrl;\n }\n}\n","import ServiceResult from '../../common/base-service-result';\n\nexport class KalturaUIConfResponse extends ServiceResult {\n public static Type: {[type: string]: number} = {\n PLAYER: 1,\n CONTRIBUTION_WIZARD: 2,\n SIMPLE_EDITOR: 3,\n ADVANCED_EDITOR: 4,\n PLAYLIST: 5,\n APP_STUDIO: 6,\n KRECORD: 7,\n PLAYER_V3: 8,\n KMC_ACCOUNT: 9,\n KMC_ANALYTICS: 10,\n KMC_CONTENT: 11,\n KMC_DASHBOARD: 12,\n KMC_LOGIN: 13,\n PLAYER_SL: 14,\n CLIENTSIDE_ENCODER: 15,\n KMC_GENERAL: 16,\n KMC_ROLES_AND_PERMISSIONS: 17,\n CLIPPER: 18,\n KSR: 19,\n KUPLOAD: 20,\n WEBCASTING: 21\n };\n\n public static CreationMode: {[mode: string]: number} = {\n WIZARD: 2,\n ADVANCED: 3\n };\n\n public description!: string;\n public objTypeAsString!: string;\n public width!: number;\n public height!: number;\n public htmlParams!: string;\n public swfUrl!: string;\n public confFilePath!: string;\n public confFile!: string;\n public confFileFeatures!: string;\n public name!: string;\n public config!: string;\n public confVars!: string;\n public useCdn!: boolean;\n public tags!: string;\n public swfUrlVersion!: string;\n public created!: Date;\n public updated!: Date;\n public html5Url!: string;\n public version!: string;\n public partnerTags!: string;\n public objType!: number;\n public creationMode!: number;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: any) {\n super(data);\n if (!this.hasError) {\n this.name = data.name;\n this.description = data.description;\n this.objTypeAsString = data.objTypeAsString;\n this.width = data.width;\n this.height = data.height;\n this.htmlParams = data.htmlParams;\n this.swfUrl = data.swfUrl;\n this.confFilePath = data.confFilePath;\n this.confFile = data.confFile;\n this.confFileFeatures = data.confFileFeatures;\n this.config = data.config;\n this.confVars = data.confVars;\n this.useCdn = data.useCdn;\n this.tags = data.tags;\n this.swfUrlVersion = data.swfUrlVersion;\n this.created = new Date(0);\n this.created.setUTCSeconds(data.createdAt);\n this.updated = new Date(0);\n this.updated.setUTCSeconds(data.updatedAt);\n this.html5Url = data.description;\n this.version = data.description;\n this.partnerTags = data.description;\n this.objType = data.description;\n this.creationMode = data.description;\n }\n }\n}\n","export class KalturaUserEntry {\n /**\n * @member - The last played playlist entry\n * @type {string}\n */\n public playlistLastEntryId: string;\n /**\n * @member - The entry referenceId\n * @type {string}\n */\n private entryId: string;\n /**\n * @member - The entry id\n * @type {number}\n */\n private id: number;\n /**\n * @member - username\n * @type {string}\n */\n private userId: string;\n /**\n * @member - partner id\n * @type {number}\n */\n private partnerId: number;\n /**\n * @member - entry status\n * @type {number}\n */\n private status: number;\n /**\n * @member - Entry creation date as Unix timestamp (In seconds)\n * @type {number}\n */\n private createdAt: number;\n /**\n * @member - Entry updation date as Unix timestamp (In seconds)\n * @type {number}\n */\n private updatedAt: number;\n\n /**\n * @constructor\n * @param {Object} entry The json response\n */\n constructor(entry: any) {\n this.playlistLastEntryId = entry.playlistLastEntryId;\n this.entryId = entry.entryId;\n this.id = entry.id;\n this.userId = entry.userId;\n this.partnerId = entry.partnerId;\n this.status = entry.status;\n this.createdAt = entry.createdAt;\n this.updatedAt = entry.updatedAt;\n }\n}\n","import ServiceResult from '../../common/base-service-result';\nimport {KalturaUserEntry} from './kaltura-user-entry';\n\nexport class KalturaUserEntryListResponse extends ServiceResult {\n /**\n * @member - The total count\n * @type {number}\n */\n private totalCount!: number;\n /**\n * @member - The entries\n * @type {Array<KalturaUserEntry>}\n */\n private entries!: Array<KalturaUserEntry>;\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n constructor(responseObj: any) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n this.entries = [];\n if (this.totalCount > 0) {\n responseObj.objects.map(entry => this.entries.push(new KalturaUserEntry(entry)));\n }\n }\n }\n}\n","import OVPConfiguration from './config';\n\ntype urlParamsType = {\n partnerId: number,\n entryId: string,\n ks: string,\n uiConfId?: number,\n format: string,\n protocol: string,\n extension: string,\n flavorIds?: string\n};\n\nexport default class PlaySourceUrlBuilder {\n /**\n * Returns source url by given url params\n * @function build\n * @param {urlParamsType} urlParams The params\n * @returns {string} The URL\n * @static\n */\n public static build(urlParams: urlParamsType): string {\n const config = OVPConfiguration.get();\n const serviceUrlOrigin: string = config.serviceUrl.substr(0, config.serviceUrl.lastIndexOf('/'));\n const {partnerId, entryId, ks, uiConfId, format, protocol, extension, flavorIds} = urlParams;\n\n //verify mandatory params\n // @ts-expect-error - fff\n if (!serviceUrlOrigin || isNaN(Number.parseInt(partnerId)) || !entryId || !format || !protocol) {\n return '';\n }\n\n let playUrl = serviceUrlOrigin;\n if (!serviceUrlOrigin.endsWith('/')) {\n playUrl += '/';\n }\n playUrl += 'p/' + partnerId + '/sp/' + partnerId + '00' + '/playManifest/entryId/' + entryId + '/protocol/' + protocol + '/format/' + format;\n\n if (flavorIds) {\n playUrl += '/flavorIds/' + flavorIds;\n } else if (uiConfId) {\n playUrl += '/uiConfId/' + uiConfId;\n }\n\n if (ks !== '') {\n playUrl += '/ks/' + ks;\n }\n\n if (extension !== '') {\n playUrl += '/a.' + extension;\n }\n\n if (uiConfId && flavorIds !== '') {\n playUrl += '?uiConfId=' + uiConfId;\n }\n\n return playUrl;\n }\n}\n","export default class XmlParser {\n /**\n * Parses xml string to json object\n * @param {string} xml The xml to parse\n * @returns {{}} The parsed xml as Json object\n * @static\n */\n public static xmlToJson(xml: Document | ChildNode): any {\n let obj: any = {};\n if (xml.nodeType === 1) {\n if (xml['attributes'].length > 0) {\n obj['@attributes'] = {};\n for (let j = 0; j < xml['attributes'].length; j++) {\n const attribute = xml['attributes'].item(j);\n obj['@attributes'][attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n const item = xml.childNodes.item(i);\n const nodeName = item.nodeName;\n if (typeof obj[nodeName] === 'undefined') {\n obj[nodeName] = this.xmlToJson(item);\n } else {\n if (typeof obj[nodeName].push === 'undefined') {\n const old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(this.xmlToJson(item));\n }\n }\n }\n return obj;\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';\nimport {ActiveLiveStreamTime} from '../k-provider/ovp/response-types/kaltura-active-live-stream-time';\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 public activeLiveStreamTime?: ActiveLiveStreamTime;\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 Playlist {\n /**\n * @member - playlist id\n * @type {string}\n */\n public id?: string;\n /**\n * @member - playlist name\n * @type {string}\n */\n public name?: string;\n /**\n * @member - playlist description\n * @type {string}\n */\n public description?: string;\n\n /**\n * @member - playlist poster\n * @type {string}\n */\n public poster?: string;\n\n /**\n * @member - playlist items\n * @type {Array<MediaEntry>}\n */\n public items: Array<MediaEntry>;\n\n /**\n * @member - playlist last played entry\n * @type {string}\n */\n public playlistLastEntryId?: string;\n\n constructor() {\n this.items = [];\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 {addKsToUrl} from './provider-parser';\nimport {CaptionType, PKExternalCaptionObject} from '../../types';\n\nconst KalturaCaptionType: CaptionType = {\n SRT: '1',\n DFXP: '2',\n WEBVTT: '3',\n CAP: '4'\n};\n\nconst CaptionsFormatsMap: {[format: string]: string} = {\n '3': 'vtt',\n '1': 'srt'\n};\n\nclass ExternalCaptionsBuilder {\n public static createConfig(captions: Array<any>, ks: string): Array<PKExternalCaptionObject> {\n return captions.map(caption => {\n let url = caption.url;\n let type = CaptionsFormatsMap[caption.format];\n if ([KalturaCaptionType.DFXP, KalturaCaptionType.CAP].includes(caption.format)) {\n url = caption.webVttUrl;\n type = CaptionsFormatsMap[KalturaCaptionType.WEBVTT];\n }\n url = addKsToUrl(url, ks);\n return {\n default: !!caption.isDefault,\n type: type,\n language: caption.languageCode,\n label: caption.label,\n url: url\n };\n });\n }\n}\n\nexport {ExternalCaptionsBuilder};\n","const BASE_THUMBNAIL_URL_TEMPLATE = '.+entry_id/[a-zA-Z0-9_]+/';\n\nexport default class ImageSource {\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 constructor(entry: any) {\n this.id = entry.id;\n this.url = ImageSource.extractBaseThumbnailUrl(entry.dataUrl);\n this.mimetype = '';\n }\n\n /**\n * Extract the base thumbnail url.\n * @param {string} url - dataUrl.\n * @returns {string} - The base thumbnail url.\n */\n public static extractBaseThumbnailUrl(url: string): string {\n return url.match(BASE_THUMBNAIL_URL_TEMPLATE)![0].slice(0, -1);\n }\n}\n\nexport {ImageSource}\n","export default class DocumentSource {\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 - thumbnail url\n * @type {string}\n */\n public thumbnailUrl: string;\n /**\n * @member - media source mimetype\n * @type {string}\n */\n public mimetype: string;\n\n constructor(entry: any) {\n this.id = entry.id;\n this.url = entry.downloadUrl;\n this.thumbnailUrl = entry.poster;\n this.mimetype = '';\n }\n}\n\nexport {DocumentSource}\n","import {KalturaPlaybackContext, KalturaUserEntry} from './response-types';\nimport {KalturaMetadataListResponse} from './response-types';\nimport {KalturaMediaEntry} from './response-types';\nimport {KalturaPlaybackSource} from './response-types';\nimport {KalturaBumper} from './response-types';\nimport {KalturaDrmPlaybackPluginData} from '../common/response-types/kaltura-drm-playback-plugin-data';\nimport PlaySourceUrlBuilder from './play-source-url-builder';\nimport XmlParser from '../../util/xml-parser';\nimport getLogger from '../../util/logger';\nimport OVPConfiguration from './config';\nimport MediaEntry from '../../entities/media-entry';\nimport Drm from '../../entities/drm';\nimport MediaSource from '../../entities/media-source';\nimport MediaSources from '../../entities/media-sources';\nimport {SupportedStreamFormat, isProgressiveSource} from '../../entities/media-format';\nimport Playlist from '../../entities/playlist';\nimport EntryList from '../../entities/entry-list';\nimport Bumper from '../../entities/bumper';\nimport {KalturaRuleAction} from './response-types';\nimport {KalturaAccessControlMessage} from '../common/response-types/kaltura-access-control-message';\nimport type {OVPMediaEntryLoaderResponse} from './loaders/media-entry-loader';\nimport {ExternalCaptionsBuilder} from './external-captions-builder';\nimport {ImageSource} from '../../entities/image-source';\nimport {DocumentSource} from '../../entities/document-source';\n\nclass OVPProviderParser {\n private static _logger = getLogger('OVPProviderParser');\n\n /**\n * Returns parsed media entry by given OVP response objects\n * @function getMediaEntry\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {any} mediaEntryResponse - The media entry response\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n public static getMediaEntry(ks: string, partnerId: number, uiConfId: number | undefined, mediaEntryResponse: any): MediaEntry {\n const mediaEntry = new MediaEntry();\n const entry = mediaEntryResponse.entry;\n const playbackContext = mediaEntryResponse.playBackContextResult;\n const metadataList = mediaEntryResponse.metadataListResult;\n const kalturaSources = playbackContext.sources;\n mediaEntry.activeLiveStreamTime = playbackContext.activeLiveStreamTime;\n mediaEntry.sources = OVPProviderParser._getParsedSources(kalturaSources, ks, partnerId, uiConfId, entry, playbackContext);\n OVPProviderParser._fillBaseData(mediaEntry, entry, metadataList, playbackContext);\n if (mediaEntry.type !== MediaEntry.Type.LIVE && OVPConfiguration.get().useApiCaptions && playbackContext.data.playbackCaptions) {\n mediaEntry.sources.captions = ExternalCaptionsBuilder.createConfig(playbackContext.data.playbackCaptions, ks);\n }\n return mediaEntry;\n }\n\n /**\n * Returns the url with KS\n * @function addKsToUrl\n * @param {String} url - The url to add the KS\n * @param {string} ks - The ks\n * @returns {string} - The url with KS\n * @static\n * @public\n */\n public static addKsToUrl(url: string, ks: string): string {\n const hasUrlExtension = (path): boolean => {\n const pathWithoutQuery = path.split('?')[0];\n const pathAfterLastSlash = pathWithoutQuery.replace(/^.*[\\\\/]/, '');\n return pathAfterLastSlash.indexOf('.') !== -1;\n };\n let ksParam;\n if (ks) {\n if (hasUrlExtension(url)) {\n ksParam = url.indexOf('?') === -1 ? '?ks=' : '&ks=';\n } else {\n ksParam = '/ks/';\n }\n return url + ksParam + ks;\n }\n return url;\n }\n\n /**\n * Returns parsed playlist by given OVP response objects\n * @function getPlaylist\n * @param {any} playlistResponse - The playlist response\n * @returns {Playlist} - The playlist\n * @static\n * @public\n */\n public static getPlaylist(playlistResponse: any): Playlist {\n const playlist = new Playlist();\n const playlistData = playlistResponse.playlistData;\n const playlistItems = playlistResponse.playlistItems.entries;\n const playlistUserEntries = playlistResponse.playlistUserEntries.entries;\n playlist.id = playlistData.id;\n playlist.name = playlistData.name;\n playlist.description = playlistData.description;\n playlist.poster = playlistData.poster;\n playlist.playlistLastEntryId = playlistUserEntries.map((entry: KalturaUserEntry) => {\n return entry.playlistLastEntryId;\n })[0];\n playlistItems.forEach((entry: KalturaMediaEntry) => {\n const mediaEntry = new MediaEntry();\n OVPProviderParser._fillBaseData(mediaEntry, entry);\n playlist.items.push(mediaEntry);\n });\n return playlist;\n }\n\n /**\n * Returns parsed entry list by given OVP response objects\n * @function getEntryList\n * @param {any} playlistResponse - response\n * @returns {Playlist} - The entry list\n * @static\n * @public\n */\n public static getEntryList(playlistResponse: any): EntryList {\n const entryList = new EntryList();\n const playlistItems = playlistResponse.playlistItems.entries;\n playlistItems.forEach(entry => {\n const mediaEntry = new MediaEntry();\n OVPProviderParser._fillBaseData(mediaEntry, entry);\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 * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @returns {?Bumper} - The bumper\n * @static\n * @public\n */\n public static getBumper(assetResponse: any, ks: string, partnerId: number): Bumper | undefined {\n const playbackContext = assetResponse.playBackContextResult;\n const bumperData: KalturaBumper = playbackContext.bumperData[0];\n if (bumperData) {\n const bumperSources = bumperData && bumperData.sources;\n const progressiveBumper = bumperSources.find(bumper => isProgressiveSource(bumper.format));\n if (progressiveBumper) {\n const parsedSources = OVPProviderParser._parseProgressiveSources(progressiveBumper, playbackContext, ks, partnerId, 0, bumperData.entryId);\n if (parsedSources[0]) {\n return new Bumper({url: parsedSources[0].url, clickThroughUrl: bumperData.clickThroughUrl});\n }\n }\n }\n }\n\n private static _fillBaseData(\n mediaEntry: MediaEntry,\n entry: KalturaMediaEntry,\n metadataList?: KalturaMetadataListResponse,\n playbackContext?: any\n ): MediaEntry {\n mediaEntry.poster = entry.poster;\n mediaEntry.rawThumbnailUrl = entry.rawThumbnailUrl;\n mediaEntry.id = entry.id;\n mediaEntry.duration = entry.duration;\n mediaEntry.downloadUrl = entry.downloadUrl || '';\n mediaEntry.metadata = OVPProviderParser._parseMetadata(metadataList);\n mediaEntry.metadata.description = entry.description || '';\n mediaEntry.metadata.entryId = entry.id || '';\n mediaEntry.metadata.name = entry.name || '';\n if (entry.createdAt) mediaEntry.metadata.createdAt = entry.createdAt;\n if (entry.updatedAt) mediaEntry.metadata.updatedAt = entry.updatedAt;\n if (entry.creatorId) mediaEntry.metadata.creatorId = entry.creatorId;\n if (entry.userId) mediaEntry.metadata.userId = entry.userId;\n if (entry.endDate) mediaEntry.metadata.endDate = entry.endDate;\n if (entry.views) mediaEntry.metadata.views = entry.views;\n if (entry.plays) mediaEntry.metadata.plays = entry.plays;\n mediaEntry.metadata.tags = entry.tags || '';\n mediaEntry.metadata.adminTags = entry.adminTags || '';\n mediaEntry.status = entry.status;\n mediaEntry.rootEntryId = entry.rootEntryId;\n mediaEntry.capabilities = entry.capabilities ? entry.capabilities.split(',') : [];\n\n mediaEntry.type = OVPProviderParser._getEntryType(entry.entryType, entry.type);\n if (mediaEntry.type === MediaEntry.Type.LIVE) {\n mediaEntry.dvrStatus = entry.dvrStatus;\n }\n\n if (playbackContext && playbackContext.flavorAssets[0] && playbackContext.flavorAssets[0].width && playbackContext.flavorAssets[0].height) {\n const {height, width} = playbackContext.flavorAssets[0];\n mediaEntry.metadata.aspectRatio = +Number(width / height).toFixed(2);\n }\n\n if (playbackContext && Array.isArray(playbackContext.flavorAssets)) {\n mediaEntry.metadata.audioFlavors = playbackContext.flavorAssets.filter(flavor => flavor.bitrate && !flavor.width && !flavor.height);\n }\n return mediaEntry;\n }\n\n private static _getEntryType(entryTypeEnum: number, typeEnum: number | string): string {\n let type = MediaEntry.Type.UNKNOWN;\n switch (entryTypeEnum) {\n case KalturaMediaEntry.MediaType.IMAGE.value:\n type = MediaEntry.Type.IMAGE;\n break;\n case KalturaMediaEntry.MediaType.AUDIO.value:\n type = MediaEntry.Type.AUDIO;\n break;\n default:\n switch (typeEnum) {\n case KalturaMediaEntry.EntryType.MEDIA_CLIP.value:\n type = MediaEntry.Type.VOD;\n break;\n case KalturaMediaEntry.EntryType.LIVE_STREAM.value:\n case KalturaMediaEntry.EntryType.LIVE_CHANNEL.value:\n type = MediaEntry.Type.LIVE;\n break;\n case KalturaMediaEntry.EntryType.DOCUMENT.value:\n type = MediaEntry.Type.DOCUMENT;\n break;\n default:\n type = MediaEntry.Type.UNKNOWN;\n }\n }\n return type;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array<KalturaPlaybackSource>} kalturaSources - The kaltura sources\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {Object} entry - The entry\n * @param {KalturaPlaybackContext} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n private static _getParsedSources(\n kalturaSources: Array<KalturaPlaybackSource>,\n ks: string,\n partnerId: number,\n uiConfId: number | undefined,\n entry: any,\n playbackContext: KalturaPlaybackContext\n ): MediaSources {\n const sources = new MediaSources();\n const addAdaptiveSource = (source: KalturaPlaybackSource): void => {\n const parsedSource = OVPProviderParser._parseAdaptiveSource(source, playbackContext, ks, partnerId, uiConfId, entry.id);\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 // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const parseProgressiveSources = () => {\n const progressiveSource = kalturaSources.find(source => {\n //match progressive source with supported protocol(http/s)\n return isProgressiveSource(source.format) && source.getProtocol(OVPProviderParser._getBaseProtocol()) !== '';\n });\n sources.progressive = OVPProviderParser._parseProgressiveSources(progressiveSource, playbackContext, ks, partnerId, uiConfId, entry.id);\n };\n\n const parseImageSources = (): void => {\n sources.image.push(new ImageSource(entry));\n };\n\n const parseDocumentSources = (): void => {\n sources.document.push(new DocumentSource(entry));\n };\n\n const parseExternalMedia = (): void => {\n const mediaSource = new MediaSource();\n mediaSource.mimetype = 'video/youtube';\n mediaSource.url = entry.referenceId;\n mediaSource.id = entry.id + '_youtube';\n sources.progressive.push(mediaSource);\n };\n\n if (entry.type === KalturaMediaEntry.EntryType.EXTERNAL_MEDIA.value) {\n parseExternalMedia();\n } else if (entry.entryType === KalturaMediaEntry.MediaType.IMAGE.value) {\n parseImageSources();\n } else if (entry.type === KalturaMediaEntry.EntryType.DOCUMENT.value) {\n parseDocumentSources();\n } else 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 * @param {KalturaPlaybackContext} playbackContext - The playback context\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {?MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n private static _parseAdaptiveSource(\n kalturaSource: KalturaPlaybackSource,\n playbackContext: KalturaPlaybackContext,\n ks: string,\n partnerId: number,\n uiConfId: number | undefined,\n entryId: string\n ): MediaSource | null {\n const mediaSource: MediaSource = new MediaSource();\n if (kalturaSource) {\n let playUrl: string = '';\n const mediaFormat = SupportedStreamFormat.get(kalturaSource.format);\n const protocol = kalturaSource.getProtocol(OVPProviderParser._getBaseProtocol());\n const deliveryProfileId = kalturaSource.deliveryProfileId;\n const format = kalturaSource.format;\n let extension: string = '';\n if (mediaFormat) {\n extension = mediaFormat.pathExt;\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n // in case playbackSource doesn't have flavors we don't need to build the url and we'll use the provided one.\n if (kalturaSource.hasFlavorIds()) {\n if (!extension && playbackContext.flavorAssets && playbackContext.flavorAssets.length > 0) {\n extension = playbackContext.flavorAssets[0].fileExt;\n }\n playUrl = PlaySourceUrlBuilder.build({\n entryId,\n flavorIds: kalturaSource.flavorIds,\n format,\n ks,\n partnerId,\n uiConfId,\n extension,\n protocol\n });\n } else {\n playUrl = OVPProviderParser.addKsToUrl(kalturaSource.url, ks);\n }\n if (!playUrl) {\n const message = `failed to create play url from source, discarding source: (${entryId}_${deliveryProfileId}), ${format}`;\n OVPProviderParser._logger.warn(message);\n return null;\n }\n mediaSource.url = playUrl;\n mediaSource.id = entryId + '_' + deliveryProfileId + ',' + 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 /**\n * Returns parsed progressive sources\n * @function _parseProgressiveSources\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {KalturaPlaybackContext} playbackContext - The playback context\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {Array<MediaSource>} - The parsed progressive kalturaSources\n * @static\n * @private\n */\n private static _parseProgressiveSources(\n kalturaSource: KalturaPlaybackSource | undefined,\n playbackContext: KalturaPlaybackContext,\n ks: string,\n partnerId: number,\n uiConfId: number | undefined,\n entryId: string\n ): Array<MediaSource> {\n const videoSources: Array<MediaSource> = [];\n const audioSources: Array<MediaSource> = [];\n if (kalturaSource) {\n const protocol = kalturaSource.getProtocol(OVPProviderParser._getBaseProtocol());\n const format = kalturaSource.format;\n const deliveryProfileId = kalturaSource.deliveryProfileId;\n const sourceId = deliveryProfileId + ',' + format;\n playbackContext.flavorAssets.map(flavor => {\n const mediaSource: MediaSource = new MediaSource();\n mediaSource.id = flavor.id + sourceId;\n mediaSource.mimetype = flavor.fileExt === 'mp3' ? 'audio/mp3' : 'video/mp4';\n mediaSource.height = flavor.height;\n mediaSource.width = flavor.width;\n mediaSource.bandwidth = flavor.bitrate * 1024;\n mediaSource.label = flavor.label || flavor.language;\n const playUrl = PlaySourceUrlBuilder.build({\n entryId,\n flavorIds: flavor.id,\n format,\n ks,\n partnerId: partnerId,\n uiConfId: uiConfId,\n extension: flavor.fileExt,\n protocol\n });\n if (playUrl === '') {\n OVPProviderParser._logger.warn(`failed to create play url from source, discarding source: (${entryId}_${deliveryProfileId}), ${format}.`);\n return null;\n } else {\n mediaSource.url = playUrl;\n if (flavor.height && flavor.width) {\n videoSources.push(mediaSource);\n } else {\n audioSources.push(mediaSource);\n }\n }\n });\n }\n //If we have only audio flavors return them, otherwise return video flavors\n return audioSources.length && !videoSources.length ? audioSources : videoSources;\n }\n\n /**\n * Ovp metadata parser\n * @function _parseMetaData\n * @param {KalturaMetadataListResponse} metadataList The metadata list\n * @returns {Object} Parsed metadata\n * @static\n * @private\n */\n private static _parseMetadata(metadataList: KalturaMetadataListResponse | undefined): any {\n const metadata: any = {};\n if (metadataList && metadataList.metas && metadataList.metas.length > 0) {\n metadataList.metas.forEach(meta => {\n if (meta.xml) {\n const domParser: DOMParser = new DOMParser();\n meta.xml = meta.xml.replace(/\\r?\\n|\\r/g, '');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n const metaXml: any = domParser.parseFromString(meta.xml, 'text/xml');\n const metasObj: any = XmlParser.xmlToJson(metaXml);\n const metaKeys = Object.keys(metasObj.metadata);\n metaKeys.forEach(key => {\n metadata[key] = metasObj.metadata[key]['#text'];\n });\n }\n });\n }\n return metadata;\n }\n\n /**\n * Returns the base protocol\n * @function _getBaseProtocol\n * @returns {string} - The base protocol\n * @static\n * @private\n */\n private static _getBaseProtocol(): string {\n const config = OVPConfiguration.get();\n const protocolRegex = /^https?:/;\n const result = protocolRegex.exec(config.cdnUrl);\n const protocol = result ? result[0] : document.location.protocol;\n if (typeof protocol === 'string') {\n return protocol.slice(0, -1); // remove ':' from the end\n }\n return 'https';\n }\n\n public static hasBlockAction(response: OVPMediaEntryLoaderResponse): boolean {\n return response.playBackContextResult.hasBlockAction();\n }\n\n public static getBlockAction(response: OVPMediaEntryLoaderResponse): KalturaRuleAction | undefined {\n return response.playBackContextResult.getBlockAction();\n }\n\n public static hasScheduledRestriction(response: OVPMediaEntryLoaderResponse): boolean {\n return response.playBackContextResult.hasScheduledRestriction();\n }\n\n public static getErrorMessages(response: OVPMediaEntryLoaderResponse): Array<KalturaAccessControlMessage> {\n return response.playBackContextResult.getErrorMessages();\n }\n}\n\nexport const addKsToUrl = OVPProviderParser.addKsToUrl;\nexport default OVPProviderParser;\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 entry status is deleted\n */\n DELETED_ENTRY: 2004,\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 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","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 OVPConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OVPService {\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\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(playerVersion: string, ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OVPConfiguration.get();\n const ovpParams = config.serviceParams;\n Object.assign(ovpParams, {ks: ks, clientTag: 'html5:v' + playerVersion});\n if (partnerId) {\n Object.assign(ovpParams, {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 = ovpParams;\n return multiReq;\n }\n}\n","const FIELDS =\n 'id,referenceId,name,description,thumbnailUrl,dataUrl,duration,msDuration,flavorParamsIds,mediaType,type,tags,dvrStatus,externalSourceType,status,createdAt,updatedAt,endDate,plays,views,downloadUrl,creatorId,userId,rootEntryId,capabilities,adminTags';\nconst RESPONSE_PROFILE_TYPE = {\n INCLUDE_FIELDS: 1,\n EXCLUDE_FIELDS: 2\n};\nexport class BaseEntryResponseProfile {\n public static Type: {[type: string]: number} = RESPONSE_PROFILE_TYPE;\n /**\n * @member - the response profile type\n * @type {number}\n */\n public type: number;\n /**\n * @member - Comma separated fields list to be included or excluded\n * @type {string}\n */\n public fields: string;\n\n /**\n * @constructor\n * @param {Object} responseProfile -\n */\n constructor(responseProfile: any = {}) {\n this.type = responseProfile.type || BaseEntryResponseProfile.Type.INCLUDE_FIELDS;\n this.fields = responseProfile.fields || FIELDS;\n }\n}\n","import OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\nimport {BaseEntryResponseProfile} from '../request-params/base-entry-response-profile';\n\nconst SERVICE_NAME: string = 'baseEntry';\n\nexport default class OVPBaseEntryService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for baseentry.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {serviceEntryId} serviceEntryId The entry id from the request result (to support loading by referenceId)\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static getPlaybackContext(serviceUrl: string, ks: string, serviceEntryId: string, referrer?: 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 = 'getPlaybackContext';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'baseEntry-getPlaybackContext';\n const contextDataParams = {objectType: 'KalturaContextDataParams', flavorTags: 'all'};\n if (referrer) {\n contextDataParams['referrer'] = referrer;\n }\n request.params = {entryId: serviceEntryId, ks: ks, contextDataParams: contextDataParams};\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for baseentry.list\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @param {boolean} redirectFromEntryId whether the live entry should continue and play the VOD one after the live stream ends.\n * @param {string} referenceId a Reference id instead of an entry id\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static list(serviceUrl: string, ks: string, entryId: string, redirectFromEntryId: boolean, referenceId: 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 = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'list';\n request.params = OVPBaseEntryService.getEntryListReqParams(entryId, ks, redirectFromEntryId, referenceId);\n return request;\n }\n\n /**\n * Gets baseentry.list service params\n * @function getEntryListReqParams\n * @param {string} entryId The entry ID\n * @param {string} ks The ks\n * @param {boolean} redirectFromEntryId whether the live entry should continue and play the VOD one after the live stream ends.\n * @param {string} referenceId a Reference id instead of an entry id\n * @returns {{ks: string, filter: {redirectFromEntryId: string}, responseProfile: {fields: string, type: number}}} The service params object\n * @static\n */\n public static getEntryListReqParams(entryId: string, ks: string, redirectFromEntryId: boolean, referenceId: string): any {\n let filterParams = {};\n if (entryId) {\n filterParams = redirectFromEntryId ? {redirectFromEntryId: entryId} : {idEqual: entryId};\n } else if (referenceId) {\n filterParams = {objectType: 'KalturaBaseEntryFilter', referenceIdEqual: referenceId};\n }\n\n return {ks: ks, filter: filterParams, responseProfile: new BaseEntryResponseProfile()};\n }\n}\n","import OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'metadata_metadata';\n\nexport default class OVPMetadataService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for metadata_metadata.list\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static list(serviceUrl: string, ks: string, entryId: 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 = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'metadata_metadata-list';\n const filter = {objectType: 'KalturaMetadataFilter', objectIdEqual: entryId, metadataObjectTypeEqual: '1'};\n request.params = {filter: filter, ks: ks};\n return request;\n }\n}\n","import RequestBuilder from '../../../util/request-builder';\nimport OVPBaseEntryService from '../services/base-entry-service';\nimport OVPMetadataService from '../services/meta-data-service';\nimport OVPConfiguration from '../config';\nimport {KalturaPlaybackContext} from '../response-types';\nimport {KalturaMetadataListResponse} from '../response-types';\nimport {KalturaBaseEntryListResponse} from '../response-types';\nimport {KalturaMediaEntry} from '../response-types';\nimport {ILoader} from '../../../types';\n\ntype OVPMediaEntryLoaderResponse = {\n entry: KalturaMediaEntry;\n playBackContextResult: KalturaPlaybackContext;\n metadataListResult: KalturaMetadataListResponse;\n};\nexport type {OVPMediaEntryLoaderResponse};\n\nexport default class OVPMediaEntryLoader implements ILoader {\n private _entryId: string;\n private _referenceId: string;\n private _requests!: Array<RequestBuilder>;\n private _response: any = {};\n\n public static get id(): string {\n return 'media';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n * @boolean {boolean} useExternalCaptions - if we should add captions request to the multirequests.\n */\n constructor(params: any) {\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n this._referenceId = params.referenceId;\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 const mediaEntryResponse: KalturaBaseEntryListResponse = new KalturaBaseEntryListResponse(response[0].data);\n this._response.entry = mediaEntryResponse.entries[0];\n this._response.playBackContextResult = new KalturaPlaybackContext(response[1].data);\n this._response.metadataListResult = new KalturaMetadataListResponse(response[2].data);\n }\n\n public get response(): OVPMediaEntryLoaderResponse {\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 = OVPConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n requests.push(OVPBaseEntryService.list(config.serviceUrl, params.ks, params.entryId, params.redirectFromEntryId, params.referenceId));\n // Use the entry id from the request result to support loading by referenceId\n const serviceEntryId = params.ks === '{1:result:ks}' ? '{2:result:objects:0:id}' : '{1:result:objects:0:id}';\n requests.push(OVPBaseEntryService.getPlaybackContext(config.serviceUrl, params.ks, serviceEntryId, params.referrer));\n requests.push(OVPMetadataService.list(config.serviceUrl, params.ks, serviceEntryId));\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 || this._referenceId);\n }\n}\n","import OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'session';\n\nexport default class OVPSessionService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} widgetId The widget ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static anonymousSession(serviceUrl: string, widgetId: 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 = 'startWidgetSession';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'session-startWidget';\n request.params = {widgetId};\n return request;\n }\n}\n","import OVPSessionService from '../services/session-service';\nimport OVPConfiguration from '../config';\nimport RequestBuilder from '../../../util/request-builder';\nimport {ILoader} from '../../../types';\n\nexport default class OVPSessionLoader implements ILoader {\n private _widgetId: string;\n private _requests!: Array<RequestBuilder>;\n private _response: any = {};\n\n public static get id(): string {\n return 'session';\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 * @constructor\n * @param {Object} params loader params\n */\n constructor(params: any) {\n this.requests = this.buildRequests(params);\n this._widgetId = params.widgetId;\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 = OVPConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n requests.push(OVPSessionService.anonymousSession(config.serviceUrl, params.widgetId));\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._widgetId;\n }\n}\n","import DataLoaderManager from '../../common/data-loader-manager';\nimport OVPService from '../services/ovp-service';\nimport {ProviderNetworkRetryParameters} from '../../../types';\n\n/**\n * OTTDataLoaderManager is a class that handles the OVP data loading\n * @param {string} playerVersion - player version\n * @param {string} partnerId - partner id\n * @param {string} ks - ks\n * @param {ProviderNetworkRetryParameters} [networkRetryConfig] - network retry configuration\n */\nexport default class OVPDataLoaderManager extends DataLoaderManager {\n constructor(playerVersion: string, partnerId: number, ks: string = '', networkRetryConfig: ProviderNetworkRetryParameters) {\n super(networkRetryConfig);\n this._multiRequest = OVPService.getMultiRequest(playerVersion, ks, partnerId);\n }\n}\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 OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\nimport {BaseEntryResponseProfile} from '../request-params/base-entry-response-profile';\n\nconst SERVICE_NAME: string = 'playlist';\n\nexport default class OVPPlaylistService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for playlist.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static execute(serviceUrl: string, ks: string, playlistId: string, cacheToken?: 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 = 'execute';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = `${SERVICE_NAME}-execute`;\n\n const responseProfile = new BaseEntryResponseProfile();\n // Append commas cache token to fields to bust cache on retry\n if (cacheToken) {\n responseProfile.fields = responseProfile.fields + cacheToken;\n }\n\n request.params = {\n ks: ks,\n id: playlistId,\n responseProfile: responseProfile\n };\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for playlist.list\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static get(serviceUrl: string, ks: string, playlistId: 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.tag = `${SERVICE_NAME}-get`;\n request.params = {\n ks: ks,\n id: playlistId,\n responseProfile: {\n fields: 'id,name,description,thumbnailUrl',\n type: 1\n }\n };\n return request;\n }\n\n /**\n * gets latest played entry ID\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static getLastEntryId(serviceUrl: string, ks: string, playlistId: 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 = 'userEntry';\n request.action = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'userEntry-list';\n request.params = {\n ks: ks,\n filter: {\n objectType: 'KalturaViewHistoryUserEntry',\n entryIdEqual: playlistId,\n userIdEqualCurrent: 1\n },\n responseProfile: {\n fields: 'playlistLastEntryId',\n type: 1\n }\n };\n return request;\n }\n}\n","import RequestBuilder from '../../../util/request-builder';\nimport OVPPlaylistService from '../services/playlist-service';\nimport OVPConfiguration from '../config';\nimport {KalturaPlaylist} from '../response-types';\nimport {KalturaMediaEntries} from '../response-types';\nimport {ILoader} from '../../../types';\nimport { KalturaUserEntryListResponse } from '../response-types';\n\nexport default class OVPPlaylistLoader implements ILoader {\n private _playlistId: string;\n private _requests!: Array<RequestBuilder>;\n private _response: any = {};\n\n public static get id(): string {\n return 'playlist';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: any) {\n this.requests = this.buildRequests(params);\n this._playlistId = params.playlistId;\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.playlistData = new KalturaPlaylist(response[0].data);\n this._response.playlistItems = new KalturaMediaEntries(response[1].data);\n this._response.playlistUserEntries = new KalturaUserEntryListResponse(response[2].data);\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 = OVPConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n requests.push(OVPPlaylistService.get(config.serviceUrl, params.ks, params.playlistId));\n requests.push(OVPPlaylistService.execute(config.serviceUrl, params.ks, params.playlistId, params.cacheToken));\n requests.push(OVPPlaylistService.getLastEntryId(config.serviceUrl, params.ks, params.playlistId));\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._playlistId;\n }\n}\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","import RequestBuilder from '../../../util/request-builder';\nimport OVPConfiguration from '../config';\nimport OVPBaseEntryService from '../services/base-entry-service';\nimport {KalturaBaseEntryListResponse} from '../response-types/kaltura-base-entry-list-response';\nimport {ILoader} from '../../../types';\n\nexport default class OVPEntryListLoader 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 'entry_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 let mediaEntryResponse: KalturaBaseEntryListResponse;\n response.forEach(item => {\n mediaEntryResponse = new KalturaBaseEntryListResponse(item.data);\n this._response.playlistItems.entries.push(mediaEntryResponse.entries[0]);\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 = OVPConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n params.entries.forEach(entry => {\n requests.push(OVPBaseEntryService.list(config.serviceUrl, params.ks, entry.entryId || entry, params.redirectFromEntryId, entry.referenceId));\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","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import getLogger from '../../util/logger';\nimport OVPConfiguration from './config';\nimport {KalturaAccessControlModifyRequestHostRegexAction} from './response-types';\nimport OVPMediaEntryLoader from './loaders/media-entry-loader';\nimport {ILoader, ProviderMediaConfigObject} from '../../types';\n\nclass RegexActionHandler {\n private static _logger = getLogger('RegexActionHandler');\n\n /**\n * Applies the request host regex on the url\n * @function _applyRegexAction\n * @param {KalturaAccessControlModifyRequestHostRegexAction} regexAction - The regex action\n * @param {string} url - The url to modify\n * @returns {string} - The request host regex applied url\n * @static\n * @private\n */\n private static _applyRegexAction(regexAction: KalturaAccessControlModifyRequestHostRegexAction, url: string): string {\n if (regexAction) {\n const regex = new RegExp(regexAction.pattern, 'i');\n if (url.match(regex)) {\n return url.replace(regex, regexAction.replacement + '/');\n }\n }\n return url;\n }\n\n /**\n * Ping the ECDN url and replace the host urls if needed\n * @function _pingECDNAndReplaceHostUrls\n * @param {ProviderMediaConfigObject} mediaConfig - The media config\n * @param {KalturaAccessControlModifyRequestHostRegexAction} regexAction - The regex action\n * @param {string} cdnUrl - The CDN url\n * @returns {Promise<ProviderMediaConfigObject>} - The media config with old or modified urls\n * @static\n * @private\n */\n private static _pingECDNAndReplaceHostUrls(\n mediaConfig: ProviderMediaConfigObject,\n regexAction: KalturaAccessControlModifyRequestHostRegexAction,\n cdnUrl: string\n ): Promise<ProviderMediaConfigObject> {\n return new Promise(resolve => {\n const urlPing = cdnUrl + '/api_v3/service/system/action/ping/format/1';\n const req = new XMLHttpRequest();\n req.open('GET', urlPing);\n req.timeout = regexAction.checkAliveTimeoutMs;\n req.onreadystatechange = ():void => {\n if (req.readyState === 4) {\n if (req.status === 200) {\n RegexActionHandler._replaceHostUrls(mediaConfig, regexAction);\n }\n resolve(mediaConfig);\n }\n };\n req.ontimeout = ():void => {\n RegexActionHandler._logger.warn(`Got timeout while pinging the ECDN url. the ping url: ${urlPing}`);\n resolve(mediaConfig);\n };\n req.send();\n });\n }\n\n /**\n * Handles regex action\n * @function handleRegexAction\n * @param {ProviderMediaConfigObject} mediaConfig - The media config\n * @param {Map<string, Function>} rawResponse - The raw response data from backend\n * @returns {ProviderMediaConfigObject} - The media config with old or modified urls\n * @static\n */\n public static handleRegexAction(mediaConfig: ProviderMediaConfigObject, rawResponse: Map<string, ILoader>): Promise<ProviderMediaConfigObject> {\n return new Promise(resolve => {\n const cdnUrl = OVPConfiguration.get().cdnUrl;\n const regexAction = RegexActionHandler._extractRegexActionFromData(rawResponse);\n const regExp = RegexActionHandler._getRegExp(regexAction);\n\n if(\n cdnUrl &&\n regexAction &&\n regExp &&\n cdnUrl.match(regExp)\n ) {\n if (regexAction.checkAliveTimeoutMs > 0) {\n RegexActionHandler._logger.debug('executing ping request...');\n RegexActionHandler._pingECDNAndReplaceHostUrls(mediaConfig, regexAction, cdnUrl.replace(regExp, regexAction.replacement)).then(resolve);\n } else {\n RegexActionHandler._replaceHostUrls(mediaConfig, regexAction);\n resolve(mediaConfig);\n }\n } else {\n RegexActionHandler._logger.debug('exiting handleRegexAction - not applying regex action.');\n resolve(mediaConfig);\n }\n });\n }\n\n /**\n * Modify the host urls - injects the configured cdn before the original host, to route requests\n * @function _replaceHostUrls\n * @param {ProviderMediaConfigObject} mediaConfig - The media config\n * @param {KalturaAccessControlModifyRequestHostRegexAction} regexAction - The regex action\n * @returns {void}\n * @static\n * @private\n */\n private static _replaceHostUrls(mediaConfig: ProviderMediaConfigObject, regexAction: KalturaAccessControlModifyRequestHostRegexAction): void {\n RegexActionHandler._logger.debug('Starting to modify urls...');\n const sources = mediaConfig.sources;\n const {hls, dash, progressive, image} = sources;\n\n [...hls, ...dash, ...progressive, ...image].forEach(src => (src.url = RegexActionHandler._applyRegexAction(regexAction, src.url)));\n\n if (!OVPConfiguration.get().replaceHostOnlyManifestUrls) {\n RegexActionHandler._logger.debug('replaceHostOnlyManifestUrls flag is off - modifying captions and poster URLs');\n if (sources.captions) {\n sources.captions.forEach(src => (src.url = RegexActionHandler._applyRegexAction(regexAction, src.url)));\n }\n\n // fix flow - poster can also be an array, but only for ott.\n if (typeof sources.poster === 'string') {\n sources.poster = RegexActionHandler._applyRegexAction(regexAction, sources.poster);\n }\n }\n RegexActionHandler._logger.debug('Finished modifying urls');\n }\n\n /**\n * Extracts the regex action from the data response\n * @function _extractRegexActionFromData\n * @param {Map<string, Function>} data - The response data\n * @returns {KalturaAccessControlModifyRequestHostRegexAction} regexAction - The regex action\n * @static\n * @private\n */\n private static _extractRegexActionFromData(data: Map<string, ILoader>): KalturaAccessControlModifyRequestHostRegexAction | undefined {\n return data.get(OVPMediaEntryLoader.id)?.response?.playBackContextResult.getRequestHostRegexAction();\n }\n\n /**\n * Extracts the regex action from the data response\n * @function _extractRegexActionFromData\n * @param {KalturaAccessControlModifyRequestHostRegexAction} regexAction - The regex action\n * @returns {RegExp} The regex expression\n * @static\n * @private\n */\n private static _getRegExp(regexAction: KalturaAccessControlModifyRequestHostRegexAction | undefined): RegExp | undefined {\n if (regexAction && regexAction.pattern && regexAction.replacement) {\n return new RegExp(regexAction.pattern, 'i');\n }\n }\n}\n\nexport default RegexActionHandler;\n","import OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'user';\n\nexport default class OVPUserService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for user.get\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static get(serviceUrl: string, ks: 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.tag = 'user-get';\n request.params = { ks: ks, format: 1 };\n return request;\n }\n}\n","export class KalturaUserGetResponse {\n public id: string;\n private static readonly INVALID_IDS = ['0', '', null, undefined];\n\n constructor(response: any) {\n this.id = response.id;\n }\n\n public isAnonymous(): boolean {\n return KalturaUserGetResponse.INVALID_IDS.includes(this.id);\n }\n}\n","import getLogger from '../../util/logger';\nimport OVPConfiguration from './config';\nimport OVPProviderParser from './provider-parser';\nimport {KalturaMediaEntry} from './response-types';\nimport OVPMediaEntryLoader from './loaders/media-entry-loader';\nimport OVPSessionLoader from './loaders/session-loader';\nimport OVPDataLoaderManager from './loaders/data-loader-manager';\nimport OVPPlaylistLoader from './loaders/playlist-loader';\nimport BaseProvider from '../common/base-provider';\nimport MediaEntry from '../../entities/media-entry';\nimport OVPEntryListLoader from './loaders/entry-list-loader';\nimport Error from '../../util/error/error';\nimport RegexActionHandler from './regex-action-handler';\nimport {\n ILoader,\n OVPProviderMediaInfoObject,\n ProviderEntryListObject,\n ProviderFilterOptionsObject,\n ProviderMediaConfigObject,\n ProviderMediaConfigSourcesObject,\n ProviderOptionsObject,\n ProviderPlaylistInfoObject,\n ProviderPlaylistObject,\n RequestLoader\n} from '../../types';\nimport OVPUserService from './services/user-service';\nimport {KalturaUserGetResponse} from './response-types/kaltura-user-get-response';\n\nconst MAX_RETRY_ATTEMPTS = 10;\nconst RETRY_INTERVAL = 10000;\n\nexport default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject> {\n private _filterOptionsConfig: ProviderFilterOptionsObject = {redirectFromEntryId: true};\n private _vrTag: string;\n private _retryAttempts = 0;\n private _useHeaderForKs: boolean;\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('OVPProvider');\n OVPConfiguration.set(options.env);\n this._setFilterOptionsConfig(options.filterOptions);\n this._vrTag = options.vrTag || '360';\n this._networkRetryConfig = Object.assign(this._networkRetryConfig, options.networkRetryParameters);\n this._useHeaderForKs = options.useHeaderForKs || false;\n\n this._isAnonymous = !this._ks ? true : undefined;\n if (this._isAnonymous === undefined) {\n this.initializeUserResponse(OVPConfiguration.serviceUrl, this._ks)\n .then(() => {\n this._logger.info('User response initialized');\n })\n .catch(err => {\n this._logger.error('Failed to initialize user response', err);\n });\n }\n }\n\n public get env(): any {\n return OVPConfiguration.get();\n }\n\n public async initializeUserResponse(serviceUrl: string, ks: string): Promise<void> {\n const request = OVPUserService.get(serviceUrl, ks);\n request.params = JSON.stringify(request.params);\n const response = await request.doHttpRequest();\n const userResponse = new KalturaUserGetResponse(response);\n this._isAnonymous = userResponse.isAnonymous();\n }\n\n /**\n * Gets the backend media config object.\n * @param {OVPProviderMediaInfoObject} mediaInfo - ovp media info\n * @returns {Promise<ProviderMediaConfigObject>} - The provider media config\n */\n public getMediaConfig(mediaInfo: OVPProviderMediaInfoObject): Promise<ProviderMediaConfigObject> {\n if (mediaInfo.ks) {\n this.ks = mediaInfo.ks;\n }\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks, this._networkRetryConfig);\n return new Promise((resolve, reject) => {\n const entryId = mediaInfo.entryId;\n const referenceId = mediaInfo.referenceId;\n if (entryId || referenceId) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OVPSessionLoader, {widgetId: this.widgetId});\n }\n const redirectFromEntryId = this._getEntryRedirectFilter(mediaInfo);\n this._dataLoader.add(OVPMediaEntryLoader, {entryId, ks, redirectFromEntryId, referenceId, referrer: this._referrer});\n return this._dataLoader.fetchData().then(\n response => {\n try {\n const mediaConfig = this._parseDataFromResponse(response);\n RegexActionHandler.handleRegexAction(mediaConfig, response).then(resolve);\n } catch (err) {\n reject(err);\n }\n },\n err => {\n const baseEntryListResponse = err.data?.results?.find(result => result.data?.objectType === 'KalturaBaseEntryListResponse');\n if (baseEntryListResponse?.data?.objects?.[0].status === KalturaMediaEntry.EntryStatus.DELETED) {\n err = new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.DELETED_ENTRY);\n }\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 public doRequest(loaders: Array<RequestLoader>, ks?: string, requestsMustSucceed?: boolean): Promise<any> {\n const theKs: string = ks || this.ks;\n const dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, theKs, this._networkRetryConfig);\n\n return new Promise((resolve, reject) => {\n if (!theKs) {\n dataLoader.add(OVPSessionLoader, {widgetId: this.widgetId});\n }\n loaders.forEach((loaderRequest: RequestLoader) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n dataLoader.add(loaderRequest.loader, loaderRequest.params, theKs || '{1:result:ks}');\n });\n return dataLoader.fetchData(requestsMustSucceed).then(\n response => {\n try {\n resolve(response);\n } catch (err) {\n reject(err);\n }\n },\n err => {\n reject(err);\n }\n );\n });\n }\n\n private _getEntryRedirectFilter(mediaInfo: any): boolean {\n return typeof mediaInfo.redirectFromEntryId === 'boolean'\n ? mediaInfo.redirectFromEntryId\n : typeof this._filterOptionsConfig.redirectFromEntryId === 'boolean'\n ? this._filterOptionsConfig.redirectFromEntryId\n : true;\n }\n\n private _setFilterOptionsConfig(options?: ProviderFilterOptionsObject): void {\n if (options && typeof options.redirectFromEntryId === 'boolean') {\n this._filterOptionsConfig.redirectFromEntryId = options.redirectFromEntryId;\n }\n }\n\n private _parseDataFromResponse(data: Map<string, ILoader>): 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\n if (this.uiConfId) {\n mediaConfig.session.uiConfId = this.uiConfId;\n }\n\n if (data) {\n if (data.has(OVPSessionLoader.id)) {\n const sessionLoader = data.get(OVPSessionLoader.id);\n if (sessionLoader && sessionLoader.response) {\n mediaConfig.session.ks = sessionLoader.response;\n if (this.widgetId !== this.defaultWidgetId) {\n this.ks = mediaConfig.session.ks!;\n }\n }\n } else {\n mediaConfig.session.ks = this.ks;\n }\n if (data.has(OVPMediaEntryLoader.id)) {\n const mediaLoader = data.get(OVPMediaEntryLoader.id);\n if (mediaLoader && mediaLoader.response) {\n const response = (mediaLoader as OVPMediaEntryLoader).response;\n if (OVPProviderParser.hasBlockAction(response)) {\n throw new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.BLOCK_ACTION, {\n action: OVPProviderParser.getBlockAction(response),\n messages: OVPProviderParser.getErrorMessages(response)\n });\n } else if (OVPProviderParser.hasScheduledRestriction(response)) {\n throw new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.SCHEDULED_RESTRICTED, {\n messages: OVPProviderParser.getErrorMessages(response)\n });\n }\n\n const mediaEntry = OVPProviderParser.getMediaEntry(this._useHeaderForKs ? '' : this.ks, this.partnerId, this.uiConfId, response);\n Object.assign(mediaConfig.sources, this._getSourcesObject(mediaEntry));\n this._verifyMediaStatus(mediaEntry);\n this._verifyHasSources(mediaConfig.sources);\n const bumper = OVPProviderParser.getBumper(response, this.ks, this.partnerId);\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 * Checks if media is ready for playback (not being imported or converted)\n * @param {MediaEntry} mediaEntry - the media entry info\n * @returns {void}\n */\n private _verifyMediaStatus(mediaEntry: MediaEntry): void {\n if ([KalturaMediaEntry.EntryStatus.IMPORT, KalturaMediaEntry.EntryStatus.PRECONVERT].includes(mediaEntry.status!)) {\n throw new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.MEDIA_STATUS_NOT_READY, {\n messages: `Status of entry id ${mediaEntry.id} is ${mediaEntry.status} and is still being imported or converted`,\n data: {status}\n });\n }\n }\n /**\n * Gets the backend playlist config.\n * @param {ProviderPlaylistInfoObject} playlistInfo - ovp playlist info\n * @returns {Promise<ProviderPlaylistObject>} - The provider playlist config\n */\n public getPlaylistConfig(playlistInfo: ProviderPlaylistInfoObject): Promise<ProviderPlaylistObject> {\n if (playlistInfo.ks) {\n this.ks = playlistInfo.ks;\n }\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks, this._networkRetryConfig);\n return new Promise((resolve, reject) => {\n const playlistId = playlistInfo.playlistId;\n if (playlistId) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OVPSessionLoader, {widgetId: this.widgetId});\n }\n this._dataLoader.add(OVPPlaylistLoader, {playlistId, ks});\n this._dataLoader.fetchData().then(\n response => {\n try {\n this._handlePlaylistResponse(response, resolve, reject, playlistInfo);\n } catch (err) {\n reject(err);\n }\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject({success: false, data: 'Missing mandatory parameter'});\n }\n });\n }\n\n private _handlePlaylistResponse(\n response: Map<string, ILoader>,\n resolve: (value: ProviderPlaylistObject) => void,\n reject: (reason?: any) => void,\n playlistInfo: ProviderPlaylistInfoObject\n ): void {\n this._logger.debug('Handling playlist response', {attempt: this._retryAttempts + 1, maxAttempts: MAX_RETRY_ATTEMPTS});\n const playlistData = this._parsePlaylistDataFromResponse(response);\n\n if (playlistData.items.length > 0) {\n this._handlePlaylistSuccess(playlistData, resolve);\n } else {\n this._handlePlaylistRetry(resolve, reject, playlistInfo);\n }\n }\n\n private _handlePlaylistSuccess(playlistData: ProviderPlaylistObject, resolve: (value: ProviderPlaylistObject) => void): void {\n this._logger.debug('Playlist items found', {itemsCount: playlistData.items.length, totalAttempts: this._retryAttempts + 1});\n this._retryAttempts = 0;\n resolve(playlistData);\n }\n\n private _handlePlaylistRetry(\n resolve: (value: ProviderPlaylistObject) => void,\n reject: (reason?: any) => void,\n playlistInfo: ProviderPlaylistInfoObject\n ): void {\n if (this._retryAttempts >= MAX_RETRY_ATTEMPTS) {\n this._handleMaxRetriesReached(reject);\n } else {\n this._retryAttempts++;\n this._schedulePlaylistRetry(resolve, reject, playlistInfo);\n }\n }\n\n private _handleMaxRetriesReached(reject: (reason?: any) => void): void {\n this._logger.error('Max retry attempts reached - rejecting playlist', {maxAttempts: MAX_RETRY_ATTEMPTS});\n this._retryAttempts = 0;\n const playlistData = this._getPlaylistObject();\n reject(playlistData);\n }\n\n private _schedulePlaylistRetry(\n resolve: (value: ProviderPlaylistObject) => void,\n reject: (reason?: any) => void,\n playlistInfo: ProviderPlaylistInfoObject\n ): void {\n setTimeout(() => {\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks, this._networkRetryConfig);\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OVPSessionLoader, {widgetId: this.widgetId});\n }\n // Add commas to BaseEntryResponseProfile fields to bust cache on retry\n const retryParams = {\n playlistId: playlistInfo.playlistId,\n ks,\n cacheToken: ','.repeat(this._retryAttempts)\n };\n this._dataLoader.add(OVPPlaylistLoader, retryParams);\n this._dataLoader.fetchData().then(\n retryResponse => {\n this._handlePlaylistResponse(retryResponse, resolve, reject, playlistInfo);\n },\n err => {\n reject(err);\n }\n );\n }, RETRY_INTERVAL);\n }\n\n private _parsePlaylistDataFromResponse(data: Map<string, ILoader>): ProviderPlaylistObject {\n this._logger.debug('Data parsing started');\n const playlistConfig: ProviderPlaylistObject = this._getPlaylistObject();\n if (data && data.has(OVPPlaylistLoader.id)) {\n const playlistLoader = data.get(OVPPlaylistLoader.id);\n if (playlistLoader && playlistLoader.response) {\n const playlist = OVPProviderParser.getPlaylist(playlistLoader.response);\n playlistConfig.id = playlist.id!;\n playlistConfig.poster = playlist.poster!;\n playlistConfig.metadata.name = playlist.name!;\n playlistConfig.metadata.description = playlist.description!;\n playlistConfig.playlistLastEntryId = playlist.playlistLastEntryId;\n playlist.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 /**\n * Gets playlist config from entry list.\n * @param {ProviderEntryListObject} entryListInfo - ovp 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 }\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, 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(OVPSessionLoader, {widgetId: this.widgetId});\n }\n const redirectFromEntryId = this._getEntryRedirectFilter(entryListInfo);\n this._dataLoader.add(OVPEntryListLoader, {entries, ks, redirectFromEntryId});\n this._dataLoader.fetchData(false).then(\n response => {\n resolve(this._parseEntryListDataFromResponse(response));\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>): ProviderPlaylistObject {\n this._logger.debug('Data parsing started');\n const playlistConfig: ProviderPlaylistObject = this._getPlaylistObject();\n if (data && data.has(OVPEntryListLoader.id)) {\n const playlistLoader = data.get(OVPEntryListLoader.id);\n if (playlistLoader && playlistLoader.response) {\n const entryList = OVPProviderParser.getEntryList(playlistLoader.response);\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 _getPlaylistObject(): ProviderPlaylistObject {\n return {\n id: '',\n metadata: {\n name: '',\n description: ''\n },\n poster: '',\n playlistLastEntryId: '',\n items: []\n };\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 rawThumbnailUrl: '',\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.image = mediaSources.image;\n sourcesObject.document = mediaSources.document;\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 sourcesObject.rawThumbnailUrl = mediaEntry.rawThumbnailUrl;\n sourcesObject.downloadUrl = mediaEntry.downloadUrl;\n sourcesObject.rootEntryId = mediaEntry.rootEntryId;\n sourcesObject.capabilities = mediaEntry.capabilities;\n if (mediaEntry.activeLiveStreamTime) {\n sourcesObject.activeLiveStreamTime = mediaEntry.activeLiveStreamTime;\n }\n if (mediaEntry.sources.captions) {\n sourcesObject.captions = mediaEntry.sources.captions;\n }\n if (\n mediaEntry.metadata &&\n typeof mediaEntry.metadata.tags === 'string' &&\n mediaEntry.metadata.tags.split(',').some(tag => tag.trim() === this._vrTag)\n ) {\n sourcesObject.vr = {};\n }\n\n Object.assign(sourcesObject.metadata, mediaEntry.metadata);\n return sourcesObject;\n }\n}\n","import OVPProvider from './provider';\nimport OVPProviderParser from './provider-parser';\nimport RequestBuilder from '../../util/request-builder';\nimport * as ResponseTypes from './response-types';\n\ndeclare let __VERSION__: string;\ndeclare let __NAME__: string;\n\nconst NAME = __NAME__ + '-ovp';\nconst VERSION = __VERSION__;\n\nexport {OVPProvider as Provider, OVPProviderParser as ProviderParser, NAME, VERSION, RequestBuilder, ResponseTypes};\n\n"],"names":["root","factory","exports","module","define","amd","a","i","self","_typeof","_regeneratorRuntime","e","__esModule","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","Symbol","iterator","c","asyncIterator","u","toStringTag","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","this","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","definition","key","get","obj","prop","asyncGeneratorStep","gen","reject","_next","_throw","info","error","_classCallCheck","instance","Constructor","_toPropertyKey","input","hint","prim","toPrimitive","res","String","_defineProperties","target","props","descriptor","_createClass","protoProps","staticProps","_assertThisInitialized","ReferenceError","_setPrototypeOf","bind","_inherits","subClass","superClass","_possibleConstructorReturn","_getPrototypeOf","_defineProperty","JsLogger","VERSION","DEBUG","ERROR","INFO","OFF","TIME","TRACE","WARN","createDefaultHandler","debug","enabledFor","getLevel","log","setHandler","setLevel","time","timeEnd","trace","useDefaults","warn","LogLevel","getLogger","clone","data","node","Array","isArray","assign","defaultConfig","serviceUrl","cdnUrl","serviceParams","apiVersion","format","useApiCaptions","loadThumbnailWithKs","replaceHostOnlyManifestUrls","OVPConfiguration","clientConfig","overrideServiceUrl","ServiceResult","response","objectType","hasError","ServiceError","code","message","KalturaMediaEntry","entry","id","referenceId","externalSourceType","description","dataUrl","entryType","mediaType","flavorParamsIds","duration","poster","thumbnailUrl","rawThumbnailUrl","status","dvrStatus","tags","adminTags","createdAt","updatedAt","creatorId","userId","endDate","plays","views","downloadUrl","rootEntryId","capabilities","AUTOMATIC","EXTERNAL_MEDIA","MEDIA_CLIP","MIX","PLAYLIST","DATA","LIVE_STREAM","LIVE_CHANNEL","DOCUMENT","VIDEO","IMAGE","AUDIO","LIVE_STREAM_FLASH","LIVE_STREAM_WINDOWS_MEDIA","LIVE_STREAM_REAL_MEDIA","LIVE_STREAM_QUICK_TIME","ERROR_IMPORTING","ERROR_CONVERTING","SCAN_FAILURE","IMPORT","INFECTED","PRECONVERT","READY","DELETED","PENDING","MODERATE","BLOCKED","NO_CONTENT","PENDING_MODERATION","APPROVED","REJECTED","FLAGGED_FOR_REVIEW","AUTO_APPROVED","KalturaBaseEntryListResponse","_ServiceResult","_super","responseObj","_this","totalCount","entries","objects","map","KalturaRuleAction","DRM_POLICY","BLOCK","PREVIEW","LIMIT_FLAVORS","ADD_TO_STORAGE","LIMIT_DELIVERY_PROFILES","SERVE_FROM_REMOTE_SERVER","REQUEST_HOST_REGEX","LIMIT_THUMBNAIL_CAPTURE","SCHEDULED_RESTRICTED","KalturaAccessControlModifyRequestHostRegexAction","_KalturaRuleAction","pattern","replacement","replacmenServerNodeId","checkAliveTimeoutMs","KalturaDrmPlaybackPluginData","drm","scheme","licenseURL","certificate","WIDEVINE_CENC","PLAYREADY_CENC","FAIRPLAY","KalturaPlaybackSource","source","deliveryProfileId","url","protocols","flavorIds","protocol","returnValue","split","KalturaBumper","entryId","clickThroughUrl","sources","KalturaFlavorAsset","flavorParamsId","fileExt","bitrate","width","height","frameRate","isOriginal","isWeb","containerFormat","videoCodecId","language","label","parseTags","arguments","QUEUED","CONVERTING","NOT_APPLICABLE","TEMP","WAIT_FOR_CONVERT","IMPORTING","VALIDATING","EXPORTING","KalturaMediaEntries","KalturaMetadata","metadataProfileId","metadataProfileVersion","metadataObjectType","objectId","version","created","Date","setUTCSeconds","updated","xml","AD_CUE_POINT","ANNOTATION","CODE_CUE_POINT","THUMB_CUE_POINT","ENTRY","CATEGORY","USER","PARTNER","DYNAMIC_OBJECT","VALID","INVALID","KalturaMetadataListResponse","metas","meta","KalturaAccessControlMessage","KalturaPlaybackContext","messages","actions","action","Type","flavorAssets","flavor","bumperData","bumper","activeLiveStreamTime","startTime","endTime","getBlockAction","find","some","KalturaPlaylist","playlist","KalturaUIConfResponse","objTypeAsString","htmlParams","swfUrl","confFilePath","confFile","confFileFeatures","config","confVars","useCdn","swfUrlVersion","html5Url","partnerTags","objType","creationMode","PLAYER","CONTRIBUTION_WIZARD","SIMPLE_EDITOR","ADVANCED_EDITOR","APP_STUDIO","KRECORD","PLAYER_V3","KMC_ACCOUNT","KMC_ANALYTICS","KMC_CONTENT","KMC_DASHBOARD","KMC_LOGIN","PLAYER_SL","CLIENTSIDE_ENCODER","KMC_GENERAL","KMC_ROLES_AND_PERMISSIONS","CLIPPER","KSR","KUPLOAD","WEBCASTING","WIZARD","ADVANCED","KalturaUserEntry","playlistLastEntryId","partnerId","KalturaUserEntryListResponse","PlaySourceUrlBuilder","urlParams","serviceUrlOrigin","substr","lastIndexOf","ks","uiConfId","extension","Number","parseInt","playUrl","endsWith","XmlParser","nodeType","j","attribute","item","nodeName","nodeValue","hasChildNodes","childNodes","xmlToJson","old","MediaFormat","DASH","mimeType","pathExt","HLS","WVM","MP4","MP3","SupportedStreamFormat","Map","isProgressiveSource","formatName","sourceFormat","MediaSources","progressive","dash","hls","image","document","mediaFormat","toJSON","MediaEntry","metadata","UNKNOWN","assetReferenceType","VOD","LIVE","ON","Drm","licenseUrl","MediaSource","mimetype","bandwidth","drmData","Playlist","items","EntryList","Bumper","KalturaCaptionType","SRT","DFXP","WEBVTT","CAP","CaptionsFormatsMap","ExternalCaptionsBuilder","captions","caption","includes","webVttUrl","addKsToUrl","default","isDefault","languageCode","ImageSource","extractBaseThumbnailUrl","match","DocumentSource","OVPProviderParser","mediaEntryResponse","mediaEntry","playbackContext","playBackContextResult","metadataList","metadataListResult","kalturaSources","_getParsedSources","_fillBaseData","playbackCaptions","createConfig","ksParam","replace","indexOf","playlistResponse","playlistData","playlistItems","playlistUserEntries","entryList","assetResponse","progressiveBumper","parsedSources","_parseProgressiveSources","_parseMetadata","_getEntryType","_playbackContext$flav","aspectRatio","toFixed","audioFlavors","filter","entryTypeEnum","typeEnum","MediaType","EntryType","progressiveSource","mediaSource","parsedSource","_parseAdaptiveSource","getProtocol","_getBaseProtocol","kalturaSource","hasFlavorIds","build","concat","_logger","hasDrmData","drmParams","Scheme","videoSources","audioSources","sourceId","domParser","DOMParser","metaXml","parseFromString","metasObj","result","exec","location","hasBlockAction","hasScheduledRestriction","getErrorMessages","severity","category","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","DELETED_ENTRY","MISSING_MANDATORY_PARAMS","MISSING_PLAY_SOURCE","METHOD_NOT_IMPLEMENTED","RequestBuilder","headers","timeout","maxAttempts","service","promise","_requestPromise","Severity","Category","Code","_createXHR","_this2","request","XMLHttpRequest","onreadystatechange","readyState","JSON","parse","responseText","responseHeaders","_getResponseHeaders","_createError","text","open","retryConfig","requestTime","performance","now","ontimeout","_handleError","statusText","onerror","onabort","setRequestHeader","send","params","getAllResponseHeaders","header","toLowerCase","_attemptCounter","attempt","MultiRequestBuilder","_RequestBuilder","_len","args","_key","apply","requests","requestParams","serviceDef","requestsMustSucceed","stringify","err","FAILED_PARSING_REQUEST","doHttpRequest","multiRequestResult","MultiRequestResult","success","results","errorResults","serviceResult","OVPService","playerVersion","ovpParams","clientTag","set","multiReq","getUrl","BaseEntryResponseProfile","responseProfile","INCLUDE_FIELDS","fields","EXCLUDE_FIELDS","SERVICE_NAME","OVPBaseEntryService","_OVPService","serviceEntryId","referrer","tag","contextDataParams","flavorTags","redirectFromEntryId","getEntryListReqParams","filterParams","idEqual","referenceIdEqual","OVPMetadataService","objectIdEqual","metadataObjectTypeEqual","OVPMediaEntryLoader","buildRequests","_entryId","_referenceId","_requests","_response","list","getPlaybackContext","OVPSessionService","widgetId","OVPSessionLoader","_widgetId","anonymousSession","OVPDataLoaderManager","_DataLoaderManager","networkRetryConfig","_multiRequest","getMultiRequest","DataLoaderManager","_networkRetryConfig","loader","execution_loader","isValid","_loaders","startIndex","add","executionLoaderResponseMap","from","val","index","_loadersResponseMap","execute","_multiResponse","prepareData","_this3","loaderDataIndexes","OVPPlaylistService","playlistId","cacheToken","entryIdEqual","userIdEqualCurrent","OVPPlaylistLoader","_playlistId","getLastEntryId","BaseProvider","options","logger","setLogger","_partnerId","_uiConfId","_isAnonymous","_ks","_playerVersion","_referrer","defaultWidgetId","mediaInfo","playlistInfo","entryListInfo","getLogLevel","level","setLogLevel","OVPEntryListLoader","_entries","_arrayLikeToArray","arr","len","arr2","_toConsumableArray","iter","minLen","toString","test","RegexActionHandler","regexAction","regex","RegExp","mediaConfig","urlPing","req","_replaceHostUrls","rawResponse","_extractRegexActionFromData","regExp","_getRegExp","_pingECDNAndReplaceHostUrls","src","_applyRegexAction","_data$get","getRequestHostRegexAction","OVPUserService","KalturaUserGetResponse","INVALID_IDS","OVPProvider","_BaseProvider","fn","_initializeUserResponse","env","_setFilterOptionsConfig","filterOptions","_vrTag","vrTag","networkRetryParameters","_useHeaderForKs","useHeaderForKs","initializeUserResponse","catch","_callee","userResponse","_context","isAnonymous","_x","_x2","_dataLoader","_getEntryRedirectFilter","fetchData","_parseDataFromResponse","handleRegexAction","_err$data","_baseEntryListRespons","baseEntryListResponse","_result$data","EntryStatus","loaders","theKs","dataLoader","loaderRequest","_filterOptionsConfig","session","_getDefaultSourcesObject","plugins","has","sessionLoader","mediaLoader","getMediaEntry","_getSourcesObject","_verifyMediaStatus","_verifyHasSources","getBumper","_this4","_handlePlaylistResponse","_retryAttempts","_parsePlaylistDataFromResponse","_handlePlaylistSuccess","_handlePlaylistRetry","itemsCount","totalAttempts","_handleMaxRetriesReached","_schedulePlaylistRetry","_getPlaylistObject","_this5","setTimeout","retryParams","repeat","retryResponse","_this6","playlistConfig","playlistLoader","getPlaylist","_this7","_parseEntryListDataFromResponse","_this8","getEntryList","dvr","vr","_this9","sourcesObject","mediaSources","trim","NAME","__NAME__","__VERSION__"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"playkit-ovp-provider.js","mappings":"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","sources":["webpack://@playkit-js/playkit-js-providers/webpack/universalModuleDefinition","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/typeof.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/regenerator/index.js","webpack://@playkit-js/playkit-js-providers/webpack/bootstrap","webpack://@playkit-js/playkit-js-providers/webpack/runtime/compat get default export","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/asyncToGenerator.js","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/assertThisInitialized.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/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/clone.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/config.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/base-service-result.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-media-entry.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-base-entry-list-response.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-rule-action.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-access-control-modify-request-host-regex-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/ovp/response-types/kaltura-playback-source.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-bumper.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-flavor-asset.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-media-entries.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-metadata.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-metadata-list-response.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/ovp/response-types/kaltura-playback-context.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-playlist.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-ui-conf-response.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-user-entry.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-user-entry-list-response.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/play-source-url-builder.ts","webpack://@playkit-js/playkit-js-providers/./src/util/xml-parser.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/playlist.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/ovp/external-captions-builder.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/image-source.ts","webpack://@playkit-js/playkit-js-providers/./src/entities/document-source.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/provider-parser.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/util/request-builder.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/multi-request-builder.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/services/ovp-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/request-params/base-entry-response-profile.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/services/base-entry-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/services/meta-data-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/loaders/media-entry-loader.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/services/session-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/loaders/session-loader.ts","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://@playkit-js/playkit-js-providers/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/config.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ott/request-sequence-builder.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/loaders/data-loader-manager.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/data-loader-manager.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/services/playlist-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/loaders/playlist-loader.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/common/base-provider.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/loaders/entry-list-loader.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/regex-action-handler.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/services/user-service.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/response-types/kaltura-user-get-response.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/provider.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/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 ","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return e;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var t,\n e = {},\n r = Object.prototype,\n n = r.hasOwnProperty,\n o = Object.defineProperty || function (t, e, r) {\n t[e] = r.value;\n },\n i = \"function\" == typeof Symbol ? Symbol : {},\n a = i.iterator || \"@@iterator\",\n c = i.asyncIterator || \"@@asyncIterator\",\n u = i.toStringTag || \"@@toStringTag\";\n function define(t, e, r) {\n return Object.defineProperty(t, e, {\n value: r,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), t[e];\n }\n try {\n define({}, \"\");\n } catch (t) {\n define = function define(t, e, r) {\n return t[e] = r;\n };\n }\n function wrap(t, e, r, n) {\n var i = e && e.prototype instanceof Generator ? e : Generator,\n a = Object.create(i.prototype),\n c = new Context(n || []);\n return o(a, \"_invoke\", {\n value: makeInvokeMethod(t, r, c)\n }), a;\n }\n function tryCatch(t, e, r) {\n try {\n return {\n type: \"normal\",\n arg: t.call(e, r)\n };\n } catch (t) {\n return {\n type: \"throw\",\n arg: t\n };\n }\n }\n e.wrap = wrap;\n var h = \"suspendedStart\",\n l = \"suspendedYield\",\n f = \"executing\",\n s = \"completed\",\n y = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var p = {};\n define(p, a, function () {\n return this;\n });\n var d = Object.getPrototypeOf,\n v = d && d(d(values([])));\n v && v !== r && n.call(v, a) && (p = v);\n var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);\n function defineIteratorMethods(t) {\n [\"next\", \"throw\", \"return\"].forEach(function (e) {\n define(t, e, function (t) {\n return this._invoke(e, t);\n });\n });\n }\n function AsyncIterator(t, e) {\n function invoke(r, o, i, a) {\n var c = tryCatch(t[r], t, o);\n if (\"throw\" !== c.type) {\n var u = c.arg,\n h = u.value;\n return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) {\n invoke(\"next\", t, i, a);\n }, function (t) {\n invoke(\"throw\", t, i, a);\n }) : e.resolve(h).then(function (t) {\n u.value = t, i(u);\n }, function (t) {\n return invoke(\"throw\", t, i, a);\n });\n }\n a(c.arg);\n }\n var r;\n o(this, \"_invoke\", {\n value: function value(t, n) {\n function callInvokeWithMethodAndArg() {\n return new e(function (e, r) {\n invoke(t, n, e, r);\n });\n }\n return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(e, r, n) {\n var o = h;\n return function (i, a) {\n if (o === f) throw new Error(\"Generator is already running\");\n if (o === s) {\n if (\"throw\" === i) throw a;\n return {\n value: t,\n done: !0\n };\n }\n for (n.method = i, n.arg = a;;) {\n var c = n.delegate;\n if (c) {\n var u = maybeInvokeDelegate(c, n);\n if (u) {\n if (u === y) continue;\n return u;\n }\n }\n if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) {\n if (o === h) throw o = s, n.arg;\n n.dispatchException(n.arg);\n } else \"return\" === n.method && n.abrupt(\"return\", n.arg);\n o = f;\n var p = tryCatch(e, r, n);\n if (\"normal\" === p.type) {\n if (o = n.done ? s : l, p.arg === y) continue;\n return {\n value: p.arg,\n done: n.done\n };\n }\n \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg);\n }\n };\n }\n function maybeInvokeDelegate(e, r) {\n var n = r.method,\n o = e.iterator[n];\n if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y;\n var i = tryCatch(o, e.iterator, r.arg);\n if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y;\n var a = i.arg;\n return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y);\n }\n function pushTryEntry(t) {\n var e = {\n tryLoc: t[0]\n };\n 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);\n }\n function resetTryEntry(t) {\n var e = t.completion || {};\n e.type = \"normal\", delete e.arg, t.completion = e;\n }\n function Context(t) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], t.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(e) {\n if (e || \"\" === e) {\n var r = e[a];\n if (r) return r.call(e);\n if (\"function\" == typeof e.next) return e;\n if (!isNaN(e.length)) {\n var o = -1,\n i = function next() {\n for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;\n return next.value = t, next.done = !0, next;\n };\n return i.next = i;\n }\n }\n throw new TypeError(_typeof(e) + \" is not iterable\");\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), o(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) {\n var e = \"function\" == typeof t && t.constructor;\n return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name));\n }, e.mark = function (t) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t;\n }, e.awrap = function (t) {\n return {\n __await: t\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {\n return this;\n }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {\n void 0 === i && (i = Promise);\n var a = new AsyncIterator(wrap(t, r, n, o), i);\n return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {\n return t.done ? t.value : a.next();\n });\n }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () {\n return this;\n }), define(g, \"toString\", function () {\n return \"[object Generator]\";\n }), e.keys = function (t) {\n var e = Object(t),\n r = [];\n for (var n in e) r.push(n);\n return r.reverse(), function next() {\n for (; r.length;) {\n var t = r.pop();\n if (t in e) return next.value = t, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, e.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(e) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);\n },\n stop: function stop() {\n this.done = !0;\n var t = this.tryEntries[0].completion;\n if (\"throw\" === t.type) throw t.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(e) {\n if (this.done) throw e;\n var r = this;\n function handle(n, o) {\n return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o;\n }\n for (var o = this.tryEntries.length - 1; o >= 0; --o) {\n var i = this.tryEntries[o],\n a = i.completion;\n if (\"root\" === i.tryLoc) return handle(\"end\");\n if (i.tryLoc <= this.prev) {\n var c = n.call(i, \"catchLoc\"),\n u = n.call(i, \"finallyLoc\");\n if (c && u) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n } else if (c) {\n if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);\n } else {\n if (!u) throw new Error(\"try statement without catch or finally\");\n if (this.prev < i.finallyLoc) return handle(i.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(t, e) {\n for (var r = this.tryEntries.length - 1; r >= 0; --r) {\n var o = this.tryEntries[r];\n if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) {\n var i = o;\n break;\n }\n }\n i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);\n var a = i ? i.completion : {};\n return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a);\n },\n complete: function complete(t, e) {\n if (\"throw\" === t.type) throw t.arg;\n return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y;\n },\n finish: function finish(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;\n }\n },\n \"catch\": function _catch(t) {\n for (var e = this.tryEntries.length - 1; e >= 0; --e) {\n var r = this.tryEntries[e];\n if (r.tryLoc === t) {\n var n = r.completion;\n if (\"throw\" === n.type) {\n var o = n.arg;\n resetTryEntry(r);\n }\n return o;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(e, r, n) {\n return this.delegate = {\n iterator: values(e),\n resultName: r,\n nextLoc: n\n }, \"next\" === this.method && (this.arg = t), y;\n }\n }, e;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(o);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\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};","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\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 _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}","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}","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","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 serviceUrl: 'https://cdnapisec.kaltura.com/api_v3',\n cdnUrl: 'https://cdnapisec.kaltura.com',\n serviceParams: {\n apiVersion: '3.3.0',\n format: 1\n },\n useApiCaptions: true,\n loadThumbnailWithKs: false,\n replaceHostOnlyManifestUrls: false\n};\n\nexport default class OVPConfiguration {\n public static set(clientConfig?: ProviderEnvConfigObject): void {\n if (clientConfig?.overrideServiceUrl) {\n clientConfig.serviceUrl = clientConfig.overrideServiceUrl;\n }\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n public static get(): any {\n return clone(defaultConfig);\n }\n\n public static get serviceUrl(): string {\n return defaultConfig.serviceUrl;\n }\n}\n\nexport {OVPConfiguration};\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","export class KalturaMediaEntry {\n public static EntryType: {[entryType: string]: {value: number | string}} = {\n AUTOMATIC: {value: -1},\n EXTERNAL_MEDIA: {value: 'externalMedia.externalMedia'},\n MEDIA_CLIP: {value: 1},\n MIX: {value: 2},\n PLAYLIST: {value: 5},\n DATA: {value: 6},\n LIVE_STREAM: {value: 7},\n LIVE_CHANNEL: {value: 8},\n DOCUMENT: {value: 10}\n };\n\n public static MediaType: {[mediaType: string]: {value: number}} = {\n VIDEO: {value: 1},\n IMAGE: {value: 2},\n AUDIO: {value: 5},\n LIVE_STREAM_FLASH: {value: 201},\n LIVE_STREAM_WINDOWS_MEDIA: {value: 202},\n LIVE_STREAM_REAL_MEDIA: {value: 203},\n LIVE_STREAM_QUICK_TIME: {value: 204}\n };\n\n public static EntryStatus: {[status: string]: string | number} = {\n ERROR_IMPORTING: -2,\n ERROR_CONVERTING: -1,\n SCAN_FAILURE: 'virusScan.ScanFailure',\n IMPORT: 0,\n INFECTED: 'virusScan.Infected',\n PRECONVERT: 1,\n READY: 2,\n DELETED: 3,\n PENDING: 4,\n MODERATE: 5,\n BLOCKED: 6,\n NO_CONTENT: 7\n };\n\n public static EntryModerationStatus: {[status: string]: number} = {\n PENDING_MODERATION: 1,\n APPROVED: 2,\n REJECTED: 3,\n FLAGGED_FOR_REVIEW: 4,\n MODERATE: 5,\n AUTO_APPROVED: 6\n };\n\n /**\n * @member - The entry id\n * @type {string}\n */\n public id: string;\n /**\n * @member - The entry referenceId\n * @type {string}\n */\n public referenceId: string;\n /**\n * @member - The entry externalSourceType\n * @type {string}\n */\n public externalSourceType: string;\n /**\n * @member - Entry name (Min 1 chars)\n * @type {string}\n */\n public name: string;\n /**\n * @member - Entry description\n * @type {string}\n */\n public description: string;\n /**\n * @member - The URL used for playback. This is not the download URL.\n * @type {string}\n */\n public dataUrl: string;\n /**\n * @member - Comma separated flavor params ids that exists for this media entry\n * @type {string}\n */\n public flavorParamsIds: string;\n /**\n * @member - The entry duration\n * @type {number}\n */\n public duration: number;\n /**\n * @member - The type of the entry, this is auto filled by the derived entry object\n * @type {string | number}\n */\n public type: string | number;\n /**\n * @member - The type of the entry, this is auto filled by the derived entry object (Image, Audio etc.)\n * @type {number}\n */\n public entryType: number;\n /**\n * @member - Entry poster image\n * @type {string}\n */\n public poster: string;\n /**\n * @member - DVR status\n * @type {number}\n */\n public dvrStatus: number;\n /**\n * @member - Entry tags\n * @type {string}\n */\n public tags: string;\n\n /**\n * @member - Entry status\n * @type {number}\n */\n public status: number;\n\n /**\n * @member - Entry creation date as Unix timestamp (In seconds)\n * @type {number}\n */\n public createdAt: number;\n\n /**\n * @member - Entry updation date as Unix timestamp (In seconds)\n * @type {number}\n */\n public updatedAt: number;\n\n /**\n * @member - Entry end date as Unix timestamp (In seconds)\n * @type {number}\n */\n public endDate: number;\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 * @member - The download URL of the entry.\n * @type {string}\n */\n public downloadUrl: string;\n\n /**\n * @member - ID of entry creator.\n * @type {string}\n */\n public creatorId: string;\n\n /**\n * @member - ID of entry owner.\n * @type {string}\n */\n public userId: 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 {string}\n */\n public capabilities: string;\n\n /**\n * @member - Admin tags\n * @type {string}\n */\n public adminTags: string;\n\n /**\n * @constructor\n * @param {Object} entry The json response\n */\n constructor(entry: any) {\n this.id = entry.id;\n this.referenceId = entry.referenceId;\n this.externalSourceType = entry.externalSourceType;\n this.name = entry.name;\n this.description = entry.description;\n this.dataUrl = entry.dataUrl;\n this.type = entry.type;\n this.entryType = entry.mediaType;\n this.flavorParamsIds = entry.flavorParamsIds;\n this.duration = entry.duration;\n this.poster = entry.thumbnailUrl;\n this.rawThumbnailUrl = entry.thumbnailUrl;\n this.status = entry.status;\n this.dvrStatus = entry.dvrStatus;\n this.tags = entry.tags;\n this.adminTags = entry.adminTags;\n this.createdAt = entry.createdAt;\n this.updatedAt = entry.updatedAt;\n this.creatorId = entry.creatorId;\n this.userId = entry.userId;\n this.endDate = entry.endDate;\n this.plays = entry.plays;\n this.views = entry.views;\n this.downloadUrl = entry.downloadUrl;\n this.rootEntryId = entry.rootEntryId;\n this.capabilities = entry.capabilities;\n }\n}\n","import ServiceResult from '../../common/base-service-result';\nimport {KalturaMediaEntry} from './kaltura-media-entry';\n\nexport class KalturaBaseEntryListResponse extends ServiceResult {\n /**\n * @member - The total count\n * @type {number}\n */\n public totalCount!: number;\n /**\n * @member - The entries\n * @type {Array<KalturaMediaEntry>}\n */\n public entries!: Array<KalturaMediaEntry>;\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n constructor(responseObj: any) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n if (this.totalCount > 0) {\n this.entries = [];\n responseObj.objects.map(entry => this.entries.push(new KalturaMediaEntry(entry)));\n }\n }\n }\n}\n","export class KalturaRuleAction {\n public static Type: {[type: string]: string | number} = {\n DRM_POLICY: 'drm.DRM_POLICY',\n BLOCK: 1,\n PREVIEW: 2,\n LIMIT_FLAVORS: 3,\n ADD_TO_STORAGE: 4,\n LIMIT_DELIVERY_PROFILES: 5,\n SERVE_FROM_REMOTE_SERVER: 6,\n REQUEST_HOST_REGEX: 7,\n LIMIT_THUMBNAIL_CAPTURE: 8,\n SCHEDULED_RESTRICTED: 'SCHEDULED_RESTRICTED'\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","import {KalturaRuleAction} from './kaltura-rule-action';\n\nexport class KalturaAccessControlModifyRequestHostRegexAction extends KalturaRuleAction {\n /**\n * @member - Request host regex pattern\n * @type {string}\n */\n public pattern: string;\n /**\n * @member - Request host regex replacement\n * @type {string}\n */\n public replacement: string;\n /**\n * @member - serverNodeId to generate replacment host from\n * @type {number}\n */\n public replacmenServerNodeId: number;\n /**\n * @member - checkAliveTimeout in milliseconds\n * @type {number}\n */\n public checkAliveTimeoutMs: number;\n /**\n * @constructor\n * @param {Object} data - The response\n */\n constructor(data: any) {\n super(data);\n this.pattern = data.pattern;\n this.replacement = data.replacement;\n this.replacmenServerNodeId = data.replacmenServerNodeId;\n this.checkAliveTimeoutMs = data.checkAliveTimeoutMs;\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 OVPKalturaPlaybackSource = KalturaPlaybackSource;\n\nexport class KalturaPlaybackSource {\n /**\n * @member - source format according to delivery profile streamer type (applehttp, mpegdash etc.)\n * @type {string}\n */\n public format: string;\n /**\n * @member - delivery profile Id\n * @type {string}\n */\n public deliveryProfileId: string;\n /**\n * @member - The source URL\n * @type {string}\n */\n public url: string;\n /**\n * @member - comma separated string according to deliveryProfile media protocols ('http,https' etc.)\n * @type {string}\n */\n public protocols: string;\n /**\n * @member - comma separated string of flavor ids\n * @type {string}\n */\n public flavorIds: string;\n /**\n * @member - drm data object containing relevant license url ,scheme name and certificate\n * @type {Array<KalturaDrmPlaybackPluginData>}\n */\n public drm: Array<KalturaDrmPlaybackPluginData> = [];\n\n /**\n * @constructor\n * @param {Object} source The response\n */\n constructor(source: any) {\n this.format = source.format;\n this.deliveryProfileId = source.deliveryProfileId;\n this.url = source.url;\n this.protocols = source.protocols;\n this.flavorIds = source.flavorIds;\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 * Checks if source has flavor IDs\n * @function hasFlavorIds\n * @returns {boolean} Is source ha flavor IDs\n */\n public hasFlavorIds(): boolean {\n return !!this.flavorIds && this.flavorIds.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","import {KalturaPlaybackSource} from './kaltura-playback-source';\n\nexport class KalturaBumper {\n /**\n * @member - The bumper entry ID\n * @type {string}\n */\n public entryId: string;\n /**\n * @member - The bumper click through url\n * @type {string}\n */\n public clickThroughUrl: string;\n /**\n * @member - The bumper sources\n * @type {Array<KalturaPlaybackSource>}\n */\n public sources: Array<KalturaPlaybackSource>;\n\n constructor(data: any) {\n this.entryId = data.entryId;\n this.clickThroughUrl = data.url;\n this.sources = data.sources ? data.sources.map(source => new KalturaPlaybackSource(source)) : [];\n }\n}\n","export class KalturaFlavorAsset {\n public static Status: {[status: string]: number} = {\n ERROR: -1,\n QUEUED: 0,\n CONVERTING: 1,\n READY: 2,\n DELETED: 3,\n NOT_APPLICABLE: 4,\n TEMP: 5,\n WAIT_FOR_CONVERT: 6,\n IMPORTING: 7,\n VALIDATING: 8,\n EXPORTING: 9\n };\n\n /**\n * @member - The ID of the Flavor Asset\n * @type {string}\n */\n public id: string;\n /**\n * @member -The Flavor Params used to create this Flavor Asset\n * @type {string}\n */\n public flavorParamsId: string;\n /**\n * @member -The file extension\n * @type {string}\n */\n public fileExt: string;\n /**\n * @member - The overall bitrate (in KBits) of the Flavor Asset\n * @type {string}\n */\n public bitrate: number;\n /**\n * @member - The width of the Flavor Asset\n * @type {number}\n */\n public width: number;\n /**\n * @member - The height of the Flavor Asset\n * @type {number}\n */\n public height: number;\n /**\n * @member - The frame rate (in FPS) of the Flavor Asset\n * @type {number}\n */\n public frameRate: number;\n /**\n * @member - True if this Flavor Asset is the original source\n * @type {number}\n */\n public isOriginal: boolean;\n /**\n * @member - True if this Flavor Asset is playable in KDP\n * @type {boolean}\n */\n public isWeb: boolean;\n /**\n * @member - The container format\n * @type {boolean}\n */\n public containerFormat: string;\n /**\n *@member - The video codec\n * @type {boolean}\n */\n public videoCodecId: string;\n /**\n * @member - The status of the Flavor Asset\n * @type {number}\n */\n public status: number;\n /**\n * @member - The language of the flavor asset\n * @type {Status}\n */\n public language: string;\n /**\n * @member - The label of the flavor asset\n * @type {string}\n */\n public label: string;\n\n /**\n * @member - tags\n * @type {Array<string>}\n */\n public tags: Array<string>;\n\n /**\n * @function\n * @param {string} tags The tags\n * @returns {Array<string>} tags array\n * @static\n */\n public static parseTags(tags = ''): Array<string> {\n return tags.split(',');\n }\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: any) {\n this.id = data.id;\n this.flavorParamsId = data.flavorParamsId;\n this.fileExt = data.fileExt;\n this.bitrate = data.bitrate;\n this.width = data.width;\n this.height = data.height;\n this.id = data.id;\n this.frameRate = data.frameRate;\n this.isOriginal = data.isOriginal;\n this.isWeb = data.isWeb;\n this.containerFormat = data.containerFormat;\n this.videoCodecId = data.videoCodecId;\n this.status = data.status;\n this.language = data.language;\n this.label = data.label;\n this.tags = KalturaFlavorAsset.parseTags(data.tags);\n }\n}\n","import ServiceResult from '../../common/base-service-result';\nimport {KalturaMediaEntry} from './kaltura-media-entry';\n\nexport class KalturaMediaEntries extends ServiceResult {\n /**\n * @member - The entries\n * @type {Array<KalturaMediaEntry>}\n */\n public entries!: Array<KalturaMediaEntry>;\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n constructor(responseObj: any) {\n super(responseObj);\n if (!this.hasError) {\n this.entries = [];\n responseObj.map(entry => this.entries.push(new KalturaMediaEntry(entry)));\n }\n }\n}\n","export class KalturaMetadata {\n public static ObjectType: {[type: string]: string | number} = {\n AD_CUE_POINT: 'adCuePointMetadata.AdCuePoint',\n ANNOTATION: 'annotationMetadata.Annotation',\n CODE_CUE_POINT: 'codeCuePointMetadata.CodeCuePoint',\n THUMB_CUE_POINT: 'thumbCuePointMetadata.thumbCuePoint',\n ENTRY: 1,\n CATEGORY: 2,\n USER: 3,\n PARTNER: 4,\n DYNAMIC_OBJECT: 5\n };\n\n public static Status: {[status: string]: number} = {\n VALID: 1,\n INVALID: 2,\n DELETED: 3\n };\n\n public id: number;\n public metadataProfileId: number;\n public metadataProfileVersion: number;\n public metadataObjectType: string | number;\n public objectId: string;\n public version: number;\n public created: Date;\n public updated: Date;\n public status: number;\n public xml: string;\n\n /**\n * @constructor\n * @param {Object} data The response\n */\n constructor(data: any) {\n this.id = data.id;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataProfileVersion = data.metadataProfileVersion;\n this.metadataProfileId = data.metadataProfileId;\n this.metadataObjectType = data.metadataObjectType;\n this.objectId = data.objectId;\n this.version = data.version;\n this.created = new Date(0);\n this.created.setUTCSeconds(data.createdAt);\n this.updated = new Date(0);\n this.updated.setUTCSeconds(data.updatedAt);\n this.status = data.status;\n this.xml = data.xml;\n }\n}\n","import ServiceResult from '../../common/base-service-result';\nimport {KalturaMetadata} from './kaltura-metadata';\n\nexport class KalturaMetadataListResponse extends ServiceResult {\n public totalCount!: number;\n public metas!: Array<KalturaMetadata>;\n\n /**\n * @constructor\n * @param {Object} responseObj The response\n */\n constructor(responseObj: any) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n if (this.totalCount > 0) {\n this.metas = [];\n responseObj.objects.map(meta => this.metas.push(new KalturaMetadata(meta)));\n }\n }\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","import ServiceResult from '../../common/base-service-result';\nimport {KalturaAccessControlMessage} from '../../common/response-types/kaltura-access-control-message';\nimport {KalturaPlaybackSource} from './kaltura-playback-source';\nimport {KalturaAccessControlModifyRequestHostRegexAction} from './kaltura-access-control-modify-request-host-regex-action';\nimport {KalturaRuleAction} from './kaltura-rule-action';\nimport {KalturaFlavorAsset} from './kaltura-flavor-asset';\nimport {KalturaBumper} from './kaltura-bumper';\nimport {ActiveLiveStreamTime} from './kaltura-active-live-stream-time';\n\nexport class KalturaPlaybackContext extends ServiceResult {\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: Array<KalturaRuleAction> = [];\n /**\n * @member - Array of actions as received from the rules that invalidated\n * @type {Array<KalturaAccessControlMessage>}\n */\n public messages: Array<KalturaAccessControlMessage> = [];\n /**\n * @member - The flavor assets\n * @type {Array<KalturaFlavorAsset>}\n */\n public flavorAssets: Array<KalturaFlavorAsset> = [];\n /**\n * @member - The bumper data\n * @type {Array<KalturaBumper>}\n */\n public bumperData: Array<KalturaBumper> = [];\n\n public activeLiveStreamTime?: ActiveLiveStreamTime | undefined;\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 => {\n if (action.type === KalturaRuleAction.Type.REQUEST_HOST_REGEX) {\n this.actions.push(new KalturaAccessControlModifyRequestHostRegexAction(action));\n } else {\n this.actions.push(new KalturaRuleAction(action));\n }\n });\n }\n const sources = response.sources;\n if (sources) {\n sources.map(source => this.sources.push(new KalturaPlaybackSource(source)));\n }\n const flavorAssets = response.flavorAssets;\n if (flavorAssets) {\n flavorAssets.map(flavor => this.flavorAssets.push(new KalturaFlavorAsset(flavor)));\n }\n const bumperData = response.bumperData;\n if (bumperData) {\n bumperData.map(bumper => this.bumperData.push(new KalturaBumper(bumper)));\n }\n\n if (response.activeLiveStreamTime) {\n this.activeLiveStreamTime = {\n startTime: response.activeLiveStreamTime.startTime,\n endTime: response.activeLiveStreamTime.endTime\n };\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 hasScheduledRestriction(): boolean {\n return this.messages.some(message => message.code === KalturaRuleAction.Type.SCHEDULED_RESTRICTED);\n }\n\n public getErrorMessages(): Array<KalturaAccessControlMessage> {\n return this.messages;\n }\n\n /**\n * Get the KalturaAccessControlModifyRequestHostRegexAction action\n * @function getRequestHostRegexAction\n * @returns {?KalturaAccessControlModifyRequestHostRegexAction} The action\n * */\n public getRequestHostRegexAction(): KalturaAccessControlModifyRequestHostRegexAction | undefined {\n const action = this.actions.find(action => action.type === KalturaRuleAction.Type.REQUEST_HOST_REGEX);\n if (action instanceof KalturaAccessControlModifyRequestHostRegexAction) {\n return action;\n }\n }\n}\n","export class KalturaPlaylist {\n /**\n * @member - playlist id\n * @type {string}\n */\n public id: string;\n /**\n * @member - playlist name\n * @type {string}\n */\n public name: string;\n /**\n * @member - playlist description\n * @type {string}\n */\n public description: string;\n /**\n * @member - playlist poster image\n * @type {string}\n */\n public poster: string;\n\n /**\n * @constructor\n * @param {Object} playlist - The json response\n */\n constructor(playlist: any) {\n this.id = playlist.id;\n this.name = playlist.name;\n this.description = playlist.description;\n this.poster = playlist.thumbnailUrl;\n }\n}\n","import ServiceResult from '../../common/base-service-result';\n\nexport class KalturaUIConfResponse extends ServiceResult {\n public static Type: {[type: string]: number} = {\n PLAYER: 1,\n CONTRIBUTION_WIZARD: 2,\n SIMPLE_EDITOR: 3,\n ADVANCED_EDITOR: 4,\n PLAYLIST: 5,\n APP_STUDIO: 6,\n KRECORD: 7,\n PLAYER_V3: 8,\n KMC_ACCOUNT: 9,\n KMC_ANALYTICS: 10,\n KMC_CONTENT: 11,\n KMC_DASHBOARD: 12,\n KMC_LOGIN: 13,\n PLAYER_SL: 14,\n CLIENTSIDE_ENCODER: 15,\n KMC_GENERAL: 16,\n KMC_ROLES_AND_PERMISSIONS: 17,\n CLIPPER: 18,\n KSR: 19,\n KUPLOAD: 20,\n WEBCASTING: 21\n };\n\n public static CreationMode: {[mode: string]: number} = {\n WIZARD: 2,\n ADVANCED: 3\n };\n\n public description!: string;\n public objTypeAsString!: string;\n public width!: number;\n public height!: number;\n public htmlParams!: string;\n public swfUrl!: string;\n public confFilePath!: string;\n public confFile!: string;\n public confFileFeatures!: string;\n public name!: string;\n public config!: string;\n public confVars!: string;\n public useCdn!: boolean;\n public tags!: string;\n public swfUrlVersion!: string;\n public created!: Date;\n public updated!: Date;\n public html5Url!: string;\n public version!: string;\n public partnerTags!: string;\n public objType!: number;\n public creationMode!: number;\n\n /**\n * @constructor\n * @param {Object} data The json response\n */\n constructor(data: any) {\n super(data);\n if (!this.hasError) {\n this.name = data.name;\n this.description = data.description;\n this.objTypeAsString = data.objTypeAsString;\n this.width = data.width;\n this.height = data.height;\n this.htmlParams = data.htmlParams;\n this.swfUrl = data.swfUrl;\n this.confFilePath = data.confFilePath;\n this.confFile = data.confFile;\n this.confFileFeatures = data.confFileFeatures;\n this.config = data.config;\n this.confVars = data.confVars;\n this.useCdn = data.useCdn;\n this.tags = data.tags;\n this.swfUrlVersion = data.swfUrlVersion;\n this.created = new Date(0);\n this.created.setUTCSeconds(data.createdAt);\n this.updated = new Date(0);\n this.updated.setUTCSeconds(data.updatedAt);\n this.html5Url = data.description;\n this.version = data.description;\n this.partnerTags = data.description;\n this.objType = data.description;\n this.creationMode = data.description;\n }\n }\n}\n","export class KalturaUserEntry {\n /**\n * @member - The last played playlist entry\n * @type {string}\n */\n public playlistLastEntryId: string;\n /**\n * @member - The entry referenceId\n * @type {string}\n */\n private entryId: string;\n /**\n * @member - The entry id\n * @type {number}\n */\n private id: number;\n /**\n * @member - username\n * @type {string}\n */\n private userId: string;\n /**\n * @member - partner id\n * @type {number}\n */\n private partnerId: number;\n /**\n * @member - entry status\n * @type {number}\n */\n private status: number;\n /**\n * @member - Entry creation date as Unix timestamp (In seconds)\n * @type {number}\n */\n private createdAt: number;\n /**\n * @member - Entry updation date as Unix timestamp (In seconds)\n * @type {number}\n */\n private updatedAt: number;\n\n /**\n * @constructor\n * @param {Object} entry The json response\n */\n constructor(entry: any) {\n this.playlistLastEntryId = entry.playlistLastEntryId;\n this.entryId = entry.entryId;\n this.id = entry.id;\n this.userId = entry.userId;\n this.partnerId = entry.partnerId;\n this.status = entry.status;\n this.createdAt = entry.createdAt;\n this.updatedAt = entry.updatedAt;\n }\n}\n","import ServiceResult from '../../common/base-service-result';\nimport {KalturaUserEntry} from './kaltura-user-entry';\n\nexport class KalturaUserEntryListResponse extends ServiceResult {\n /**\n * @member - The total count\n * @type {number}\n */\n private totalCount!: number;\n /**\n * @member - The entries\n * @type {Array<KalturaUserEntry>}\n */\n private entries!: Array<KalturaUserEntry>;\n\n /**\n * @constructor\n * @param {Object} responseObj The json response\n */\n constructor(responseObj: any) {\n super(responseObj);\n if (!this.hasError) {\n this.totalCount = responseObj.totalCount;\n this.entries = [];\n if (this.totalCount > 0) {\n responseObj.objects.map(entry => this.entries.push(new KalturaUserEntry(entry)));\n }\n }\n }\n}\n","import OVPConfiguration from './config';\n\ntype urlParamsType = {\n partnerId: number,\n entryId: string,\n ks: string,\n uiConfId?: number,\n format: string,\n protocol: string,\n extension: string,\n flavorIds?: string\n};\n\nexport default class PlaySourceUrlBuilder {\n /**\n * Returns source url by given url params\n * @function build\n * @param {urlParamsType} urlParams The params\n * @returns {string} The URL\n * @static\n */\n public static build(urlParams: urlParamsType): string {\n const config = OVPConfiguration.get();\n const serviceUrlOrigin: string = config.serviceUrl.substr(0, config.serviceUrl.lastIndexOf('/'));\n const {partnerId, entryId, ks, uiConfId, format, protocol, extension, flavorIds} = urlParams;\n\n //verify mandatory params\n // @ts-expect-error - fff\n if (!serviceUrlOrigin || isNaN(Number.parseInt(partnerId)) || !entryId || !format || !protocol) {\n return '';\n }\n\n let playUrl = serviceUrlOrigin;\n if (!serviceUrlOrigin.endsWith('/')) {\n playUrl += '/';\n }\n playUrl += 'p/' + partnerId + '/sp/' + partnerId + '00' + '/playManifest/entryId/' + entryId + '/protocol/' + protocol + '/format/' + format;\n\n if (flavorIds) {\n playUrl += '/flavorIds/' + flavorIds;\n } else if (uiConfId) {\n playUrl += '/uiConfId/' + uiConfId;\n }\n\n if (ks !== '') {\n playUrl += '/ks/' + ks;\n }\n\n if (extension !== '') {\n playUrl += '/a.' + extension;\n }\n\n if (uiConfId && flavorIds !== '') {\n playUrl += '?uiConfId=' + uiConfId;\n }\n\n return playUrl;\n }\n}\n","export default class XmlParser {\n /**\n * Parses xml string to json object\n * @param {string} xml The xml to parse\n * @returns {{}} The parsed xml as Json object\n * @static\n */\n public static xmlToJson(xml: Document | ChildNode): any {\n let obj: any = {};\n if (xml.nodeType === 1) {\n if (xml['attributes'].length > 0) {\n obj['@attributes'] = {};\n for (let j = 0; j < xml['attributes'].length; j++) {\n const attribute = xml['attributes'].item(j);\n obj['@attributes'][attribute.nodeName] = attribute.nodeValue;\n }\n }\n } else if (xml.nodeType === 3) {\n obj = xml.nodeValue;\n }\n if (xml.hasChildNodes()) {\n for (let i = 0; i < xml.childNodes.length; i++) {\n const item = xml.childNodes.item(i);\n const nodeName = item.nodeName;\n if (typeof obj[nodeName] === 'undefined') {\n obj[nodeName] = this.xmlToJson(item);\n } else {\n if (typeof obj[nodeName].push === 'undefined') {\n const old = obj[nodeName];\n obj[nodeName] = [];\n obj[nodeName].push(old);\n }\n obj[nodeName].push(this.xmlToJson(item));\n }\n }\n }\n return obj;\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';\nimport {ActiveLiveStreamTime} from '../k-provider/ovp/response-types/kaltura-active-live-stream-time';\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 public activeLiveStreamTime?: ActiveLiveStreamTime;\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 Playlist {\n /**\n * @member - playlist id\n * @type {string}\n */\n public id?: string;\n /**\n * @member - playlist name\n * @type {string}\n */\n public name?: string;\n /**\n * @member - playlist description\n * @type {string}\n */\n public description?: string;\n\n /**\n * @member - playlist poster\n * @type {string}\n */\n public poster?: string;\n\n /**\n * @member - playlist items\n * @type {Array<MediaEntry>}\n */\n public items: Array<MediaEntry>;\n\n /**\n * @member - playlist last played entry\n * @type {string}\n */\n public playlistLastEntryId?: string;\n\n constructor() {\n this.items = [];\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 {addKsToUrl} from './provider-parser';\nimport {CaptionType, PKExternalCaptionObject} from '../../types';\n\nconst KalturaCaptionType: CaptionType = {\n SRT: '1',\n DFXP: '2',\n WEBVTT: '3',\n CAP: '4'\n};\n\nconst CaptionsFormatsMap: {[format: string]: string} = {\n '3': 'vtt',\n '1': 'srt'\n};\n\nclass ExternalCaptionsBuilder {\n public static createConfig(captions: Array<any>, ks: string): Array<PKExternalCaptionObject> {\n return captions.map(caption => {\n let url = caption.url;\n let type = CaptionsFormatsMap[caption.format];\n if ([KalturaCaptionType.DFXP, KalturaCaptionType.CAP].includes(caption.format)) {\n url = caption.webVttUrl;\n type = CaptionsFormatsMap[KalturaCaptionType.WEBVTT];\n }\n url = addKsToUrl(url, ks);\n return {\n default: !!caption.isDefault,\n type: type,\n language: caption.languageCode,\n label: caption.label,\n url: url\n };\n });\n }\n}\n\nexport {ExternalCaptionsBuilder};\n","const BASE_THUMBNAIL_URL_TEMPLATE = '.+entry_id/[a-zA-Z0-9_]+/';\n\nexport default class ImageSource {\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 constructor(entry: any) {\n this.id = entry.id;\n this.url = ImageSource.extractBaseThumbnailUrl(entry.dataUrl);\n this.mimetype = '';\n }\n\n /**\n * Extract the base thumbnail url.\n * @param {string} url - dataUrl.\n * @returns {string} - The base thumbnail url.\n */\n public static extractBaseThumbnailUrl(url: string): string {\n return url.match(BASE_THUMBNAIL_URL_TEMPLATE)![0].slice(0, -1);\n }\n}\n\nexport {ImageSource}\n","export default class DocumentSource {\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 - thumbnail url\n * @type {string}\n */\n public thumbnailUrl: string;\n /**\n * @member - media source mimetype\n * @type {string}\n */\n public mimetype: string;\n\n constructor(entry: any) {\n this.id = entry.id;\n this.url = entry.downloadUrl;\n this.thumbnailUrl = entry.poster;\n this.mimetype = '';\n }\n}\n\nexport {DocumentSource}\n","import {KalturaPlaybackContext, KalturaUserEntry} from './response-types';\nimport {KalturaMetadataListResponse} from './response-types';\nimport {KalturaMediaEntry} from './response-types';\nimport {KalturaPlaybackSource} from './response-types';\nimport {KalturaBumper} from './response-types';\nimport {KalturaDrmPlaybackPluginData} from '../common/response-types/kaltura-drm-playback-plugin-data';\nimport PlaySourceUrlBuilder from './play-source-url-builder';\nimport XmlParser from '../../util/xml-parser';\nimport getLogger from '../../util/logger';\nimport OVPConfiguration from './config';\nimport MediaEntry from '../../entities/media-entry';\nimport Drm from '../../entities/drm';\nimport MediaSource from '../../entities/media-source';\nimport MediaSources from '../../entities/media-sources';\nimport {SupportedStreamFormat, isProgressiveSource} from '../../entities/media-format';\nimport Playlist from '../../entities/playlist';\nimport EntryList from '../../entities/entry-list';\nimport Bumper from '../../entities/bumper';\nimport {KalturaRuleAction} from './response-types';\nimport {KalturaAccessControlMessage} from '../common/response-types/kaltura-access-control-message';\nimport type {OVPMediaEntryLoaderResponse} from './loaders/media-entry-loader';\nimport {ExternalCaptionsBuilder} from './external-captions-builder';\nimport {ImageSource} from '../../entities/image-source';\nimport {DocumentSource} from '../../entities/document-source';\n\nclass OVPProviderParser {\n private static _logger = getLogger('OVPProviderParser');\n\n /**\n * Returns parsed media entry by given OVP response objects\n * @function getMediaEntry\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {any} mediaEntryResponse - The media entry response\n * @returns {MediaEntry} - The media entry\n * @static\n * @public\n */\n public static getMediaEntry(ks: string, partnerId: number, uiConfId: number | undefined, mediaEntryResponse: any): MediaEntry {\n const mediaEntry = new MediaEntry();\n const entry = mediaEntryResponse.entry;\n const playbackContext = mediaEntryResponse.playBackContextResult;\n const metadataList = mediaEntryResponse.metadataListResult;\n const kalturaSources = playbackContext.sources;\n mediaEntry.activeLiveStreamTime = playbackContext.activeLiveStreamTime;\n mediaEntry.sources = OVPProviderParser._getParsedSources(kalturaSources, ks, partnerId, uiConfId, entry, playbackContext);\n OVPProviderParser._fillBaseData(mediaEntry, entry, metadataList, playbackContext);\n if (mediaEntry.type !== MediaEntry.Type.LIVE && OVPConfiguration.get().useApiCaptions && playbackContext.data.playbackCaptions) {\n mediaEntry.sources.captions = ExternalCaptionsBuilder.createConfig(playbackContext.data.playbackCaptions, ks);\n }\n return mediaEntry;\n }\n\n /**\n * Returns the url with KS\n * @function addKsToUrl\n * @param {String} url - The url to add the KS\n * @param {string} ks - The ks\n * @returns {string} - The url with KS\n * @static\n * @public\n */\n public static addKsToUrl(url: string, ks: string): string {\n const hasUrlExtension = (path): boolean => {\n const pathWithoutQuery = path.split('?')[0];\n const pathAfterLastSlash = pathWithoutQuery.replace(/^.*[\\\\/]/, '');\n return pathAfterLastSlash.indexOf('.') !== -1;\n };\n let ksParam;\n if (ks) {\n if (hasUrlExtension(url)) {\n ksParam = url.indexOf('?') === -1 ? '?ks=' : '&ks=';\n } else {\n ksParam = '/ks/';\n }\n return url + ksParam + ks;\n }\n return url;\n }\n\n /**\n * Returns parsed playlist by given OVP response objects\n * @function getPlaylist\n * @param {any} playlistResponse - The playlist response\n * @returns {Playlist} - The playlist\n * @static\n * @public\n */\n public static getPlaylist(playlistResponse: any): Playlist {\n const playlist = new Playlist();\n const playlistData = playlistResponse.playlistData;\n const playlistItems = playlistResponse.playlistItems.entries;\n const playlistUserEntries = playlistResponse.playlistUserEntries.entries;\n playlist.id = playlistData.id;\n playlist.name = playlistData.name;\n playlist.description = playlistData.description;\n playlist.poster = playlistData.poster;\n playlist.playlistLastEntryId = playlistUserEntries.map((entry: KalturaUserEntry) => {\n return entry.playlistLastEntryId;\n })[0];\n playlistItems.forEach((entry: KalturaMediaEntry) => {\n const mediaEntry = new MediaEntry();\n OVPProviderParser._fillBaseData(mediaEntry, entry);\n playlist.items.push(mediaEntry);\n });\n return playlist;\n }\n\n /**\n * Returns parsed entry list by given OVP response objects\n * @function getEntryList\n * @param {any} playlistResponse - response\n * @returns {Playlist} - The entry list\n * @static\n * @public\n */\n public static getEntryList(playlistResponse: any): EntryList {\n const entryList = new EntryList();\n const playlistItems = playlistResponse.playlistItems.entries;\n playlistItems.forEach(entry => {\n const mediaEntry = new MediaEntry();\n OVPProviderParser._fillBaseData(mediaEntry, entry);\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 * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @returns {?Bumper} - The bumper\n * @static\n * @public\n */\n public static getBumper(assetResponse: any, ks: string, partnerId: number): Bumper | undefined {\n const playbackContext = assetResponse.playBackContextResult;\n const bumperData: KalturaBumper = playbackContext.bumperData[0];\n if (bumperData) {\n const bumperSources = bumperData && bumperData.sources;\n const progressiveBumper = bumperSources.find(bumper => isProgressiveSource(bumper.format));\n if (progressiveBumper) {\n const parsedSources = OVPProviderParser._parseProgressiveSources(progressiveBumper, playbackContext, ks, partnerId, 0, bumperData.entryId);\n if (parsedSources[0]) {\n return new Bumper({url: parsedSources[0].url, clickThroughUrl: bumperData.clickThroughUrl});\n }\n }\n }\n }\n\n private static _fillBaseData(\n mediaEntry: MediaEntry,\n entry: KalturaMediaEntry,\n metadataList?: KalturaMetadataListResponse,\n playbackContext?: any\n ): MediaEntry {\n mediaEntry.poster = entry.poster;\n mediaEntry.rawThumbnailUrl = entry.rawThumbnailUrl;\n mediaEntry.id = entry.id;\n mediaEntry.duration = entry.duration;\n mediaEntry.downloadUrl = entry.downloadUrl || '';\n mediaEntry.metadata = OVPProviderParser._parseMetadata(metadataList);\n mediaEntry.metadata.description = entry.description || '';\n mediaEntry.metadata.entryId = entry.id || '';\n mediaEntry.metadata.name = entry.name || '';\n if (entry.createdAt) mediaEntry.metadata.createdAt = entry.createdAt;\n if (entry.updatedAt) mediaEntry.metadata.updatedAt = entry.updatedAt;\n if (entry.creatorId) mediaEntry.metadata.creatorId = entry.creatorId;\n if (entry.userId) mediaEntry.metadata.userId = entry.userId;\n if (entry.endDate) mediaEntry.metadata.endDate = entry.endDate;\n if (entry.views) mediaEntry.metadata.views = entry.views;\n if (entry.plays) mediaEntry.metadata.plays = entry.plays;\n mediaEntry.metadata.tags = entry.tags || '';\n mediaEntry.metadata.adminTags = entry.adminTags || '';\n mediaEntry.status = entry.status;\n mediaEntry.rootEntryId = entry.rootEntryId;\n mediaEntry.capabilities = entry.capabilities ? entry.capabilities.split(',') : [];\n\n mediaEntry.type = OVPProviderParser._getEntryType(entry.entryType, entry.type);\n if (mediaEntry.type === MediaEntry.Type.LIVE) {\n mediaEntry.dvrStatus = entry.dvrStatus;\n }\n\n if (playbackContext && playbackContext.flavorAssets[0] && playbackContext.flavorAssets[0].width && playbackContext.flavorAssets[0].height) {\n const {height, width} = playbackContext.flavorAssets[0];\n mediaEntry.metadata.aspectRatio = +Number(width / height).toFixed(2);\n }\n\n if (playbackContext && Array.isArray(playbackContext.flavorAssets)) {\n mediaEntry.metadata.audioFlavors = playbackContext.flavorAssets.filter(flavor => flavor.bitrate && !flavor.width && !flavor.height);\n }\n return mediaEntry;\n }\n\n private static _getEntryType(entryTypeEnum: number, typeEnum: number | string): string {\n let type = MediaEntry.Type.UNKNOWN;\n switch (entryTypeEnum) {\n case KalturaMediaEntry.MediaType.IMAGE.value:\n type = MediaEntry.Type.IMAGE;\n break;\n case KalturaMediaEntry.MediaType.AUDIO.value:\n type = MediaEntry.Type.AUDIO;\n break;\n default:\n switch (typeEnum) {\n case KalturaMediaEntry.EntryType.MEDIA_CLIP.value:\n type = MediaEntry.Type.VOD;\n break;\n case KalturaMediaEntry.EntryType.LIVE_STREAM.value:\n case KalturaMediaEntry.EntryType.LIVE_CHANNEL.value:\n type = MediaEntry.Type.LIVE;\n break;\n case KalturaMediaEntry.EntryType.DOCUMENT.value:\n type = MediaEntry.Type.DOCUMENT;\n break;\n default:\n type = MediaEntry.Type.UNKNOWN;\n }\n }\n return type;\n }\n\n /**\n * Returns the parsed sources\n * @function _getParsedSources\n * @param {Array<KalturaPlaybackSource>} kalturaSources - The kaltura sources\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {Object} entry - The entry\n * @param {KalturaPlaybackContext} playbackContext - The playback context\n * @return {MediaSources} - A media sources\n * @static\n * @private\n */\n private static _getParsedSources(\n kalturaSources: Array<KalturaPlaybackSource>,\n ks: string,\n partnerId: number,\n uiConfId: number | undefined,\n entry: any,\n playbackContext: KalturaPlaybackContext\n ): MediaSources {\n const sources = new MediaSources();\n const addAdaptiveSource = (source: KalturaPlaybackSource): void => {\n const parsedSource = OVPProviderParser._parseAdaptiveSource(source, playbackContext, ks, partnerId, uiConfId, entry.id);\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 // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\n const parseProgressiveSources = () => {\n const progressiveSource = kalturaSources.find(source => {\n //match progressive source with supported protocol(http/s)\n return isProgressiveSource(source.format) && source.getProtocol(OVPProviderParser._getBaseProtocol()) !== '';\n });\n sources.progressive = OVPProviderParser._parseProgressiveSources(progressiveSource, playbackContext, ks, partnerId, uiConfId, entry.id);\n };\n\n const parseImageSources = (): void => {\n sources.image.push(new ImageSource(entry));\n };\n\n const parseDocumentSources = (): void => {\n sources.document.push(new DocumentSource(entry));\n };\n\n const parseExternalMedia = (): void => {\n const mediaSource = new MediaSource();\n mediaSource.mimetype = 'video/youtube';\n mediaSource.url = entry.referenceId;\n mediaSource.id = entry.id + '_youtube';\n sources.progressive.push(mediaSource);\n };\n\n if (entry.type === KalturaMediaEntry.EntryType.EXTERNAL_MEDIA.value) {\n parseExternalMedia();\n } else if (entry.entryType === KalturaMediaEntry.MediaType.IMAGE.value) {\n parseImageSources();\n } else if (entry.type === KalturaMediaEntry.EntryType.DOCUMENT.value) {\n parseDocumentSources();\n } else 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 * @param {KalturaPlaybackContext} playbackContext - The playback context\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {?MediaSource} - The parsed adaptive kalturaSource\n * @static\n * @private\n */\n private static _parseAdaptiveSource(\n kalturaSource: KalturaPlaybackSource,\n playbackContext: KalturaPlaybackContext,\n ks: string,\n partnerId: number,\n uiConfId: number | undefined,\n entryId: string\n ): MediaSource | null {\n const mediaSource: MediaSource = new MediaSource();\n if (kalturaSource) {\n let playUrl: string = '';\n const mediaFormat = SupportedStreamFormat.get(kalturaSource.format);\n const protocol = kalturaSource.getProtocol(OVPProviderParser._getBaseProtocol());\n const deliveryProfileId = kalturaSource.deliveryProfileId;\n const format = kalturaSource.format;\n let extension: string = '';\n if (mediaFormat) {\n extension = mediaFormat.pathExt;\n mediaSource.mimetype = mediaFormat.mimeType;\n }\n // in case playbackSource doesn't have flavors we don't need to build the url and we'll use the provided one.\n if (kalturaSource.hasFlavorIds()) {\n if (!extension && playbackContext.flavorAssets && playbackContext.flavorAssets.length > 0) {\n extension = playbackContext.flavorAssets[0].fileExt;\n }\n playUrl = PlaySourceUrlBuilder.build({\n entryId,\n flavorIds: kalturaSource.flavorIds,\n format,\n ks,\n partnerId,\n uiConfId,\n extension,\n protocol\n });\n } else {\n playUrl = OVPProviderParser.addKsToUrl(kalturaSource.url, ks);\n }\n if (!playUrl) {\n const message = `failed to create play url from source, discarding source: (${entryId}_${deliveryProfileId}), ${format}`;\n OVPProviderParser._logger.warn(message);\n return null;\n }\n mediaSource.url = playUrl;\n mediaSource.id = entryId + '_' + deliveryProfileId + ',' + 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 /**\n * Returns parsed progressive sources\n * @function _parseProgressiveSources\n * @param {KalturaPlaybackSource} kalturaSource - A kaltura source\n * @param {KalturaPlaybackContext} playbackContext - The playback context\n * @param {string} ks - The ks\n * @param {number} partnerId - The partner ID\n * @param {number} uiConfId - The uiConf ID\n * @param {string} entryId - The entry id\n * @returns {Array<MediaSource>} - The parsed progressive kalturaSources\n * @static\n * @private\n */\n private static _parseProgressiveSources(\n kalturaSource: KalturaPlaybackSource | undefined,\n playbackContext: KalturaPlaybackContext,\n ks: string,\n partnerId: number,\n uiConfId: number | undefined,\n entryId: string\n ): Array<MediaSource> {\n const videoSources: Array<MediaSource> = [];\n const audioSources: Array<MediaSource> = [];\n if (kalturaSource) {\n const protocol = kalturaSource.getProtocol(OVPProviderParser._getBaseProtocol());\n const format = kalturaSource.format;\n const deliveryProfileId = kalturaSource.deliveryProfileId;\n const sourceId = deliveryProfileId + ',' + format;\n playbackContext.flavorAssets.map(flavor => {\n const mediaSource: MediaSource = new MediaSource();\n mediaSource.id = flavor.id + sourceId;\n mediaSource.mimetype = flavor.fileExt === 'mp3' ? 'audio/mp3' : 'video/mp4';\n mediaSource.height = flavor.height;\n mediaSource.width = flavor.width;\n mediaSource.bandwidth = flavor.bitrate * 1024;\n mediaSource.label = flavor.label || flavor.language;\n const playUrl = PlaySourceUrlBuilder.build({\n entryId,\n flavorIds: flavor.id,\n format,\n ks,\n partnerId: partnerId,\n uiConfId: uiConfId,\n extension: flavor.fileExt,\n protocol\n });\n if (playUrl === '') {\n OVPProviderParser._logger.warn(`failed to create play url from source, discarding source: (${entryId}_${deliveryProfileId}), ${format}.`);\n return null;\n } else {\n mediaSource.url = playUrl;\n if (flavor.height && flavor.width) {\n videoSources.push(mediaSource);\n } else {\n audioSources.push(mediaSource);\n }\n }\n });\n }\n //If we have only audio flavors return them, otherwise return video flavors\n return audioSources.length && !videoSources.length ? audioSources : videoSources;\n }\n\n /**\n * Ovp metadata parser\n * @function _parseMetaData\n * @param {KalturaMetadataListResponse} metadataList The metadata list\n * @returns {Object} Parsed metadata\n * @static\n * @private\n */\n private static _parseMetadata(metadataList: KalturaMetadataListResponse | undefined): any {\n const metadata: any = {};\n if (metadataList && metadataList.metas && metadataList.metas.length > 0) {\n metadataList.metas.forEach(meta => {\n if (meta.xml) {\n const domParser: DOMParser = new DOMParser();\n meta.xml = meta.xml.replace(/\\r?\\n|\\r/g, '');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n meta.xml = meta.xml.replace(/>\\s*/g, '>');\n const metaXml: any = domParser.parseFromString(meta.xml, 'text/xml');\n const metasObj: any = XmlParser.xmlToJson(metaXml);\n const metaKeys = Object.keys(metasObj.metadata);\n metaKeys.forEach(key => {\n metadata[key] = metasObj.metadata[key]['#text'];\n });\n }\n });\n }\n return metadata;\n }\n\n /**\n * Returns the base protocol\n * @function _getBaseProtocol\n * @returns {string} - The base protocol\n * @static\n * @private\n */\n private static _getBaseProtocol(): string {\n const config = OVPConfiguration.get();\n const protocolRegex = /^https?:/;\n const result = protocolRegex.exec(config.cdnUrl);\n const protocol = result ? result[0] : document.location.protocol;\n if (typeof protocol === 'string') {\n return protocol.slice(0, -1); // remove ':' from the end\n }\n return 'https';\n }\n\n public static hasBlockAction(response: OVPMediaEntryLoaderResponse): boolean {\n return response.playBackContextResult.hasBlockAction();\n }\n\n public static getBlockAction(response: OVPMediaEntryLoaderResponse): KalturaRuleAction | undefined {\n return response.playBackContextResult.getBlockAction();\n }\n\n public static hasScheduledRestriction(response: OVPMediaEntryLoaderResponse): boolean {\n return response.playBackContextResult.hasScheduledRestriction();\n }\n\n public static getErrorMessages(response: OVPMediaEntryLoaderResponse): Array<KalturaAccessControlMessage> {\n return response.playBackContextResult.getErrorMessages();\n }\n}\n\nexport const addKsToUrl = OVPProviderParser.addKsToUrl;\nexport default OVPProviderParser;\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 entry status is deleted\n */\n DELETED_ENTRY: 2004,\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 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","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 OVPConfiguration from '../config';\n\nconst SERVICE_NAME: string = 'multirequest';\n\nexport default class OVPService {\n /**\n * Gets a new instance of MultiRequestBuilder with ovp params\n * @function getMultiRequest\n * @param {string} playerVersion The player version\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(playerVersion: string, ks: string, partnerId?: number): MultiRequestBuilder {\n const config = OVPConfiguration.get();\n const ovpParams = config.serviceParams;\n Object.assign(ovpParams, {ks: ks, clientTag: 'html5:v' + playerVersion});\n if (partnerId) {\n Object.assign(ovpParams, {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 = ovpParams;\n return multiReq;\n }\n}\n","const FIELDS =\n 'id,referenceId,name,description,thumbnailUrl,dataUrl,duration,msDuration,flavorParamsIds,mediaType,type,tags,dvrStatus,externalSourceType,status,createdAt,updatedAt,endDate,plays,views,downloadUrl,creatorId,userId,rootEntryId,capabilities,adminTags';\nconst RESPONSE_PROFILE_TYPE = {\n INCLUDE_FIELDS: 1,\n EXCLUDE_FIELDS: 2\n};\nexport class BaseEntryResponseProfile {\n public static Type: {[type: string]: number} = RESPONSE_PROFILE_TYPE;\n /**\n * @member - the response profile type\n * @type {number}\n */\n public type: number;\n /**\n * @member - Comma separated fields list to be included or excluded\n * @type {string}\n */\n public fields: string;\n\n /**\n * @constructor\n * @param {Object} responseProfile -\n */\n constructor(responseProfile: any = {}) {\n this.type = responseProfile.type || BaseEntryResponseProfile.Type.INCLUDE_FIELDS;\n this.fields = responseProfile.fields || FIELDS;\n }\n}\n","import OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\nimport {BaseEntryResponseProfile} from '../request-params/base-entry-response-profile';\n\nconst SERVICE_NAME: string = 'baseEntry';\n\nexport default class OVPBaseEntryService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for baseentry.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {serviceEntryId} serviceEntryId The entry id from the request result (to support loading by referenceId)\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static getPlaybackContext(serviceUrl: string, ks: string, serviceEntryId: string, referrer?: 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 = 'getPlaybackContext';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'baseEntry-getPlaybackContext';\n const contextDataParams = {objectType: 'KalturaContextDataParams', flavorTags: 'all'};\n if (referrer) {\n contextDataParams['referrer'] = referrer;\n }\n request.params = {entryId: serviceEntryId, ks: ks, contextDataParams: contextDataParams};\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for baseentry.list\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @param {boolean} redirectFromEntryId whether the live entry should continue and play the VOD one after the live stream ends.\n * @param {string} referenceId a Reference id instead of an entry id\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static list(serviceUrl: string, ks: string, entryId: string, redirectFromEntryId: boolean, referenceId: 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 = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'list';\n request.params = OVPBaseEntryService.getEntryListReqParams(entryId, ks, redirectFromEntryId, referenceId);\n return request;\n }\n\n /**\n * Gets baseentry.list service params\n * @function getEntryListReqParams\n * @param {string} entryId The entry ID\n * @param {string} ks The ks\n * @param {boolean} redirectFromEntryId whether the live entry should continue and play the VOD one after the live stream ends.\n * @param {string} referenceId a Reference id instead of an entry id\n * @returns {{ks: string, filter: {redirectFromEntryId: string}, responseProfile: {fields: string, type: number}}} The service params object\n * @static\n */\n public static getEntryListReqParams(entryId: string, ks: string, redirectFromEntryId: boolean, referenceId: string): any {\n let filterParams = {};\n if (entryId) {\n filterParams = redirectFromEntryId ? {redirectFromEntryId: entryId} : {idEqual: entryId};\n } else if (referenceId) {\n filterParams = {objectType: 'KalturaBaseEntryFilter', referenceIdEqual: referenceId};\n }\n\n return {ks: ks, filter: filterParams, responseProfile: new BaseEntryResponseProfile()};\n }\n}\n","import OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'metadata_metadata';\n\nexport default class OVPMetadataService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for metadata_metadata.list\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} entryId The entry ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static list(serviceUrl: string, ks: string, entryId: 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 = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'metadata_metadata-list';\n const filter = {objectType: 'KalturaMetadataFilter', objectIdEqual: entryId, metadataObjectTypeEqual: '1'};\n request.params = {filter: filter, ks: ks};\n return request;\n }\n}\n","import RequestBuilder from '../../../util/request-builder';\nimport OVPBaseEntryService from '../services/base-entry-service';\nimport OVPMetadataService from '../services/meta-data-service';\nimport OVPConfiguration from '../config';\nimport {KalturaPlaybackContext} from '../response-types';\nimport {KalturaMetadataListResponse} from '../response-types';\nimport {KalturaBaseEntryListResponse} from '../response-types';\nimport {KalturaMediaEntry} from '../response-types';\nimport {ILoader} from '../../../types';\n\ntype OVPMediaEntryLoaderResponse = {\n entry: KalturaMediaEntry;\n playBackContextResult: KalturaPlaybackContext;\n metadataListResult: KalturaMetadataListResponse;\n};\nexport type {OVPMediaEntryLoaderResponse};\n\nexport default class OVPMediaEntryLoader implements ILoader {\n private _entryId: string;\n private _referenceId: string;\n private _requests!: Array<RequestBuilder>;\n private _response: any = {};\n\n public static get id(): string {\n return 'media';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n * @boolean {boolean} useExternalCaptions - if we should add captions request to the multirequests.\n */\n constructor(params: any) {\n this.requests = this.buildRequests(params);\n this._entryId = params.entryId;\n this._referenceId = params.referenceId;\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 const mediaEntryResponse: KalturaBaseEntryListResponse = new KalturaBaseEntryListResponse(response[0].data);\n this._response.entry = mediaEntryResponse.entries[0];\n this._response.playBackContextResult = new KalturaPlaybackContext(response[1].data);\n this._response.metadataListResult = new KalturaMetadataListResponse(response[2].data);\n }\n\n public get response(): OVPMediaEntryLoaderResponse {\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 = OVPConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n requests.push(OVPBaseEntryService.list(config.serviceUrl, params.ks, params.entryId, params.redirectFromEntryId, params.referenceId));\n // Use the entry id from the request result to support loading by referenceId\n const serviceEntryId = params.ks === '{1:result:ks}' ? '{2:result:objects:0:id}' : '{1:result:objects:0:id}';\n requests.push(OVPBaseEntryService.getPlaybackContext(config.serviceUrl, params.ks, serviceEntryId, params.referrer));\n requests.push(OVPMetadataService.list(config.serviceUrl, params.ks, serviceEntryId));\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 || this._referenceId);\n }\n}\n","import OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'session';\n\nexport default class OVPSessionService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for session.startWidgetSession\n * @function anonymousSession\n * @param {string} serviceUrl The service base URL\n * @param {string} widgetId The widget ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static anonymousSession(serviceUrl: string, widgetId: 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 = 'startWidgetSession';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'session-startWidget';\n request.params = {widgetId};\n return request;\n }\n}\n","import OVPSessionService from '../services/session-service';\nimport OVPConfiguration from '../config';\nimport RequestBuilder from '../../../util/request-builder';\nimport {ILoader} from '../../../types';\n\nexport default class OVPSessionLoader implements ILoader {\n private _widgetId: string;\n private _requests!: Array<RequestBuilder>;\n private _response: any = {};\n\n public static get id(): string {\n return 'session';\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 * @constructor\n * @param {Object} params loader params\n */\n constructor(params: any) {\n this.requests = this.buildRequests(params);\n this._widgetId = params.widgetId;\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 = OVPConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n requests.push(OVPSessionService.anonymousSession(config.serviceUrl, params.widgetId));\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._widgetId;\n }\n}\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\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 { ILoader } from '../../types';\nimport getLogger from '../../util/logger';\nimport OTTConfiguration from './config';\nimport RequestBuilder from '../../util/request-builder';\nimport ServiceResult from '../common/base-service-result';\nimport Error from '../../util/error/error';\n\n/**\n * RequestSequenceBuilder provides a builder pattern for executing multiple individual requests\n * sequentially, as an alternative to the MultiRequestBuilder which batches them together.\n * @class RequestSequenceBuilder\n */\nexport default class RequestSequenceBuilder {\n private _logger = getLogger('RequestSequenceBuilder');\n\n /**\n * Loaders to be executed\n * @type {Map<string, ILoader>}\n * @private\n */\n public loaders: Map<string, ILoader> = new Map();\n\n /**\n * Global parameters for all requests\n * @type {Record<string, unknown>}\n * @private\n */\n private _globalParams: Record<string, unknown> = { apiVersion: OTTConfiguration.get().serviceParams?.apiVersion };\n\n\n /**\n * Add a loader to the builder\n * @function add\n * @param {ILoader} loader The loader to add\n */\n public add(loader: ILoader): void {\n this.loaders.set(loader.constructor.name, loader);\n }\n\n /**\n * Executes a single request\n * @function execute\n * @param {RequestBuilder} request - The request to execute\n * @returns {Promise<ServiceResult>} - Promise with the service result\n */\n private async _executeRequest(\n request: RequestBuilder\n ): Promise<ServiceResult> {\n request.params = JSON.stringify({ ...this._globalParams, ...request.params });\n try {\n const data = await request.doHttpRequest();\n const serviceResult = new ServiceResult(data.result || data);\n if (serviceResult.hasError) {\n const { code, message } = serviceResult.error;\n this._logger.error(\n `Service returned an error with error code: ${code} and message: ${message}.`\n );\n }\n return serviceResult;\n } catch (error) {\n throw new Error(\n Error.Severity.CRITICAL,\n Error.Category.NETWORK,\n Error.Code.API_RESPONSE_MISMATCH,\n { error, request }\n );\n }\n }\n\n /**\n * Executes multiple requests sequentially\n * @function executeSequence\n * @param {Array<RequestBuilder>} requests - The requests to execute in order\n * @returns {Promise<SingleRequestsResult>} - Promise with the combined results\n */\n private async _executeSequence(\n requests: Array<RequestBuilder>\n ): Promise<SingleRequestsResult> {\n const results: Array<ServiceResult> = [];\n\n for (const request of requests) {\n try {\n const serviceResult = await this._executeRequest(request);\n results.push(serviceResult);\n } catch (error) {\n this._logger.error(`Request execution failed: ${error.message}`);\n }\n }\n // Create result object and check for success\n const singleRequestsResult = new SingleRequestsResult(results);\n if (singleRequestsResult.success) {\n return singleRequestsResult;\n } else {\n const errorResult = results.find(result => result.hasError);\n if (errorResult) {\n const { message, code } = errorResult.error;\n throw new Error(\n Error.Severity.CRITICAL,\n Error.Category.NETWORK,\n Error.Code.API_RESPONSE_MISMATCH,\n {\n error: errorResult.error,\n errorMessage: `Request returned an error: ${message} (code: ${code})`\n }\n );\n }\n return singleRequestsResult;\n }\n }\n\n /**\n * Executes all added loaders as separate requests\n * @function execute\n * @returns {Promise<Map<string, ILoader>>} - Promise with the loaded loaders\n */\n public async execute(): Promise<Map<string, ILoader>> {\n const sessionLoader = this.loaders.get('OTTSessionLoader');\n const assetLoader = this.loaders.get('OTTAssetLoader');\n let ks = '';\n try {\n if (sessionLoader) {\n const serviceResult = await this._executeRequest(sessionLoader.requests[0]);\n sessionLoader.response = [{ data: serviceResult.data }];\n ks = serviceResult.data.ks || '';\n }\n if (assetLoader) {\n assetLoader.requests.forEach((request: RequestBuilder) => {\n if (request.params.ks === '{1:result:ks}') {\n request.params.ks = ks;\n }\n });\n const requestsResult = await this._executeSequence(assetLoader.requests);\n assetLoader.response = requestsResult.results;\n }\n } catch (error) {\n this._logger.error(`loaders execution failed: ${error.message}`);\n }\n return this.loaders;\n }\n}\n\nexport class SingleRequestsResult {\n private static _logger = getLogger('SingleRequestsResult');\n public success: boolean;\n public results: Array<ServiceResult>;\n\n constructor(results: Array<ServiceResult>, requestsMustSucceed = true) {\n this.results = [...results];\n const errorResults = this.results.filter(({ hasError }) => hasError);\n for (const serviceResult of errorResults) {\n const { code, message } = serviceResult.error;\n SingleRequestsResult._logger.error(\n `Service returned an error with error code: ${code} and message: ${message}.`\n );\n }\n const allRequestsFailed = errorResults.length === this.results.length;\n const someRequestsFailed = requestsMustSucceed && errorResults.length > 0;\n\n if (allRequestsFailed || someRequestsFailed) {\n this.success = false;\n } else {\n if (!requestsMustSucceed) {\n this.results = this.results.filter(serviceResult => !serviceResult.hasError);\n }\n this.success = true;\n }\n }\n}","import DataLoaderManager from '../../common/data-loader-manager';\nimport OVPService from '../services/ovp-service';\nimport {ProviderNetworkRetryParameters} from '../../../types';\n\n/**\n * OTTDataLoaderManager is a class that handles the OVP data loading\n * @param {string} playerVersion - player version\n * @param {string} partnerId - partner id\n * @param {string} ks - ks\n * @param {ProviderNetworkRetryParameters} [networkRetryConfig] - network retry configuration\n */\nexport default class OVPDataLoaderManager extends DataLoaderManager {\n constructor(playerVersion: string, partnerId: number, ks: string = '', networkRetryConfig: ProviderNetworkRetryParameters) {\n super(networkRetryConfig);\n this._multiRequest = OVPService.getMultiRequest(playerVersion, ks, partnerId);\n }\n}\n","import MultiRequestBuilder, {MultiRequestResult} from './multi-request-builder';\nimport Error from '../../util/error/error';\nimport {ILoader, ProviderNetworkRetryParameters} from '../../types';\nimport RequestSequenceBuilder from '../ott/request-sequence-builder';\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 /**\n * @member - Loaders single requests\n * @type {RequestSequenceBuilder}\n * @protected\n */\n protected _singleRequests!: RequestSequenceBuilder;\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 this._singleRequests = new RequestSequenceBuilder();\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 const disableMultirequest = (execution_loader as any).disableMultirequest;\n if (disableMultirequest) {\n this._singleRequests.add(execution_loader);\n }\n else {\n // Get the start index from the multiRequest 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 /**\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 if (this._singleRequests.loaders.size > 0) {\n this._singleRequests.execute()\n .then(() => resolve(this._loaders))\n .catch(err => reject(err));\n }\n else {\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 /**\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 OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\nimport {BaseEntryResponseProfile} from '../request-params/base-entry-response-profile';\n\nconst SERVICE_NAME: string = 'playlist';\n\nexport default class OVPPlaylistService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for playlist.getPlaybackContext\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static execute(serviceUrl: string, ks: string, playlistId: string, cacheToken?: 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 = 'execute';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = `${SERVICE_NAME}-execute`;\n\n const responseProfile = new BaseEntryResponseProfile();\n // Append commas cache token to fields to bust cache on retry\n if (cacheToken) {\n responseProfile.fields = responseProfile.fields + cacheToken;\n }\n\n request.params = {\n ks: ks,\n id: playlistId,\n responseProfile: responseProfile\n };\n return request;\n }\n\n /**\n * Creates an instance of RequestBuilder for playlist.list\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static get(serviceUrl: string, ks: string, playlistId: 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.tag = `${SERVICE_NAME}-get`;\n request.params = {\n ks: ks,\n id: playlistId,\n responseProfile: {\n fields: 'id,name,description,thumbnailUrl',\n type: 1\n }\n };\n return request;\n }\n\n /**\n * gets latest played entry ID\n * @function list\n * @param {string} serviceUrl The base URL\n * @param {string} ks The ks\n * @param {string} playlistId The playlist ID\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static getLastEntryId(serviceUrl: string, ks: string, playlistId: 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 = 'userEntry';\n request.action = 'list';\n request.method = 'POST';\n request.url = request.getUrl(serviceUrl);\n request.tag = 'userEntry-list';\n request.params = {\n ks: ks,\n filter: {\n objectType: 'KalturaViewHistoryUserEntry',\n entryIdEqual: playlistId,\n userIdEqualCurrent: 1\n },\n responseProfile: {\n fields: 'playlistLastEntryId',\n type: 1\n }\n };\n return request;\n }\n}\n","import RequestBuilder from '../../../util/request-builder';\nimport OVPPlaylistService from '../services/playlist-service';\nimport OVPConfiguration from '../config';\nimport {KalturaPlaylist} from '../response-types';\nimport {KalturaMediaEntries} from '../response-types';\nimport {ILoader} from '../../../types';\nimport { KalturaUserEntryListResponse } from '../response-types';\n\nexport default class OVPPlaylistLoader implements ILoader {\n private _playlistId: string;\n private _requests!: Array<RequestBuilder>;\n private _response: any = {};\n\n public static get id(): string {\n return 'playlist';\n }\n\n /**\n * @constructor\n * @param {Object} params loader params\n */\n constructor(params: any) {\n this.requests = this.buildRequests(params);\n this._playlistId = params.playlistId;\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.playlistData = new KalturaPlaylist(response[0].data);\n this._response.playlistItems = new KalturaMediaEntries(response[1].data);\n this._response.playlistUserEntries = new KalturaUserEntryListResponse(response[2].data);\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 = OVPConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n requests.push(OVPPlaylistService.get(config.serviceUrl, params.ks, params.playlistId));\n requests.push(OVPPlaylistService.execute(config.serviceUrl, params.ks, params.playlistId, params.cacheToken));\n requests.push(OVPPlaylistService.getLastEntryId(config.serviceUrl, params.ks, params.playlistId));\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._playlistId;\n }\n}\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","import RequestBuilder from '../../../util/request-builder';\nimport OVPConfiguration from '../config';\nimport OVPBaseEntryService from '../services/base-entry-service';\nimport {KalturaBaseEntryListResponse} from '../response-types/kaltura-base-entry-list-response';\nimport {ILoader} from '../../../types';\n\nexport default class OVPEntryListLoader 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 'entry_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 let mediaEntryResponse: KalturaBaseEntryListResponse;\n response.forEach(item => {\n mediaEntryResponse = new KalturaBaseEntryListResponse(item.data);\n this._response.playlistItems.entries.push(mediaEntryResponse.entries[0]);\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 = OVPConfiguration.get();\n const requests: Array<RequestBuilder> = [];\n params.entries.forEach(entry => {\n requests.push(OVPBaseEntryService.list(config.serviceUrl, params.ks, entry.entryId || entry, params.redirectFromEntryId, entry.referenceId));\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 getLogger from '../../util/logger';\nimport OVPConfiguration from './config';\nimport {KalturaAccessControlModifyRequestHostRegexAction} from './response-types';\nimport OVPMediaEntryLoader from './loaders/media-entry-loader';\nimport {ILoader, ProviderMediaConfigObject} from '../../types';\n\nclass RegexActionHandler {\n private static _logger = getLogger('RegexActionHandler');\n\n /**\n * Applies the request host regex on the url\n * @function _applyRegexAction\n * @param {KalturaAccessControlModifyRequestHostRegexAction} regexAction - The regex action\n * @param {string} url - The url to modify\n * @returns {string} - The request host regex applied url\n * @static\n * @private\n */\n private static _applyRegexAction(regexAction: KalturaAccessControlModifyRequestHostRegexAction, url: string): string {\n if (regexAction) {\n const regex = new RegExp(regexAction.pattern, 'i');\n if (url.match(regex)) {\n return url.replace(regex, regexAction.replacement + '/');\n }\n }\n return url;\n }\n\n /**\n * Ping the ECDN url and replace the host urls if needed\n * @function _pingECDNAndReplaceHostUrls\n * @param {ProviderMediaConfigObject} mediaConfig - The media config\n * @param {KalturaAccessControlModifyRequestHostRegexAction} regexAction - The regex action\n * @param {string} cdnUrl - The CDN url\n * @returns {Promise<ProviderMediaConfigObject>} - The media config with old or modified urls\n * @static\n * @private\n */\n private static _pingECDNAndReplaceHostUrls(\n mediaConfig: ProviderMediaConfigObject,\n regexAction: KalturaAccessControlModifyRequestHostRegexAction,\n cdnUrl: string\n ): Promise<ProviderMediaConfigObject> {\n return new Promise(resolve => {\n const urlPing = cdnUrl + '/api_v3/service/system/action/ping/format/1';\n const req = new XMLHttpRequest();\n req.open('GET', urlPing);\n req.timeout = regexAction.checkAliveTimeoutMs;\n req.onreadystatechange = ():void => {\n if (req.readyState === 4) {\n if (req.status === 200) {\n RegexActionHandler._replaceHostUrls(mediaConfig, regexAction);\n }\n resolve(mediaConfig);\n }\n };\n req.ontimeout = ():void => {\n RegexActionHandler._logger.warn(`Got timeout while pinging the ECDN url. the ping url: ${urlPing}`);\n resolve(mediaConfig);\n };\n req.send();\n });\n }\n\n /**\n * Handles regex action\n * @function handleRegexAction\n * @param {ProviderMediaConfigObject} mediaConfig - The media config\n * @param {Map<string, Function>} rawResponse - The raw response data from backend\n * @returns {ProviderMediaConfigObject} - The media config with old or modified urls\n * @static\n */\n public static handleRegexAction(mediaConfig: ProviderMediaConfigObject, rawResponse: Map<string, ILoader>): Promise<ProviderMediaConfigObject> {\n return new Promise(resolve => {\n const cdnUrl = OVPConfiguration.get().cdnUrl;\n const regexAction = RegexActionHandler._extractRegexActionFromData(rawResponse);\n const regExp = RegexActionHandler._getRegExp(regexAction);\n\n if(\n cdnUrl &&\n regexAction &&\n regExp &&\n cdnUrl.match(regExp)\n ) {\n if (regexAction.checkAliveTimeoutMs > 0) {\n RegexActionHandler._logger.debug('executing ping request...');\n RegexActionHandler._pingECDNAndReplaceHostUrls(mediaConfig, regexAction, cdnUrl.replace(regExp, regexAction.replacement)).then(resolve);\n } else {\n RegexActionHandler._replaceHostUrls(mediaConfig, regexAction);\n resolve(mediaConfig);\n }\n } else {\n RegexActionHandler._logger.debug('exiting handleRegexAction - not applying regex action.');\n resolve(mediaConfig);\n }\n });\n }\n\n /**\n * Modify the host urls - injects the configured cdn before the original host, to route requests\n * @function _replaceHostUrls\n * @param {ProviderMediaConfigObject} mediaConfig - The media config\n * @param {KalturaAccessControlModifyRequestHostRegexAction} regexAction - The regex action\n * @returns {void}\n * @static\n * @private\n */\n private static _replaceHostUrls(mediaConfig: ProviderMediaConfigObject, regexAction: KalturaAccessControlModifyRequestHostRegexAction): void {\n RegexActionHandler._logger.debug('Starting to modify urls...');\n const sources = mediaConfig.sources;\n const {hls, dash, progressive, image} = sources;\n\n [...hls, ...dash, ...progressive, ...image].forEach(src => (src.url = RegexActionHandler._applyRegexAction(regexAction, src.url)));\n\n if (!OVPConfiguration.get().replaceHostOnlyManifestUrls) {\n RegexActionHandler._logger.debug('replaceHostOnlyManifestUrls flag is off - modifying captions and poster URLs');\n if (sources.captions) {\n sources.captions.forEach(src => (src.url = RegexActionHandler._applyRegexAction(regexAction, src.url)));\n }\n\n // fix flow - poster can also be an array, but only for ott.\n if (typeof sources.poster === 'string') {\n sources.poster = RegexActionHandler._applyRegexAction(regexAction, sources.poster);\n }\n }\n RegexActionHandler._logger.debug('Finished modifying urls');\n }\n\n /**\n * Extracts the regex action from the data response\n * @function _extractRegexActionFromData\n * @param {Map<string, Function>} data - The response data\n * @returns {KalturaAccessControlModifyRequestHostRegexAction} regexAction - The regex action\n * @static\n * @private\n */\n private static _extractRegexActionFromData(data: Map<string, ILoader>): KalturaAccessControlModifyRequestHostRegexAction | undefined {\n return data.get(OVPMediaEntryLoader.id)?.response?.playBackContextResult.getRequestHostRegexAction();\n }\n\n /**\n * Extracts the regex action from the data response\n * @function _extractRegexActionFromData\n * @param {KalturaAccessControlModifyRequestHostRegexAction} regexAction - The regex action\n * @returns {RegExp} The regex expression\n * @static\n * @private\n */\n private static _getRegExp(regexAction: KalturaAccessControlModifyRequestHostRegexAction | undefined): RegExp | undefined {\n if (regexAction && regexAction.pattern && regexAction.replacement) {\n return new RegExp(regexAction.pattern, 'i');\n }\n }\n}\n\nexport default RegexActionHandler;\n","import OVPService from './ovp-service';\nimport RequestBuilder from '../../../util/request-builder';\n\nconst SERVICE_NAME: string = 'user';\n\nexport default class OVPUserService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for user.get\n * @function getPlaybackContext\n * @param {string} serviceUrl The service base URL\n * @param {string} ks The ks\n * @returns {RequestBuilder} The request builder\n * @static\n */\n public static get(serviceUrl: string, ks: 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.tag = 'user-get';\n request.params = { ks: ks, format: 1 };\n return request;\n }\n}\n","export class KalturaUserGetResponse {\n public id: string;\n private static readonly INVALID_IDS = ['0', '', null, undefined];\n\n constructor(response: any) {\n this.id = response.id;\n }\n\n public isAnonymous(): boolean {\n return KalturaUserGetResponse.INVALID_IDS.includes(this.id);\n }\n}\n","import getLogger from '../../util/logger';\nimport OVPConfiguration from './config';\nimport OVPProviderParser from './provider-parser';\nimport {KalturaMediaEntry} from './response-types';\nimport OVPMediaEntryLoader from './loaders/media-entry-loader';\nimport OVPSessionLoader from './loaders/session-loader';\nimport OVPDataLoaderManager from './loaders/data-loader-manager';\nimport OVPPlaylistLoader from './loaders/playlist-loader';\nimport BaseProvider from '../common/base-provider';\nimport MediaEntry from '../../entities/media-entry';\nimport OVPEntryListLoader from './loaders/entry-list-loader';\nimport Error from '../../util/error/error';\nimport RegexActionHandler from './regex-action-handler';\nimport {\n ILoader,\n OVPProviderMediaInfoObject,\n ProviderEntryListObject,\n ProviderFilterOptionsObject,\n ProviderMediaConfigObject,\n ProviderMediaConfigSourcesObject,\n ProviderOptionsObject,\n ProviderPlaylistInfoObject,\n ProviderPlaylistObject,\n RequestLoader\n} from '../../types';\nimport OVPUserService from './services/user-service';\nimport {KalturaUserGetResponse} from './response-types/kaltura-user-get-response';\n\nconst MAX_RETRY_ATTEMPTS = 10;\nconst RETRY_INTERVAL = 10000;\n\nexport default class OVPProvider extends BaseProvider<OVPProviderMediaInfoObject> {\n private _filterOptionsConfig: ProviderFilterOptionsObject = {redirectFromEntryId: true};\n private _vrTag: string;\n private _retryAttempts = 0;\n private _useHeaderForKs: boolean;\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('OVPProvider');\n OVPConfiguration.set(options.env);\n this._setFilterOptionsConfig(options.filterOptions);\n this._vrTag = options.vrTag || '360';\n this._networkRetryConfig = Object.assign(this._networkRetryConfig, options.networkRetryParameters);\n this._useHeaderForKs = options.useHeaderForKs || false;\n\n this._isAnonymous = !this._ks ? true : undefined;\n if (this._isAnonymous === undefined) {\n this.initializeUserResponse(OVPConfiguration.serviceUrl, this._ks)\n .then(() => {\n this._logger.info('User response initialized');\n })\n .catch(err => {\n this._logger.error('Failed to initialize user response', err);\n });\n }\n }\n\n public get env(): any {\n return OVPConfiguration.get();\n }\n\n public async initializeUserResponse(serviceUrl: string, ks: string): Promise<void> {\n const request = OVPUserService.get(serviceUrl, ks);\n request.params = JSON.stringify(request.params);\n const response = await request.doHttpRequest();\n const userResponse = new KalturaUserGetResponse(response);\n this._isAnonymous = userResponse.isAnonymous();\n }\n\n /**\n * Gets the backend media config object.\n * @param {OVPProviderMediaInfoObject} mediaInfo - ovp media info\n * @returns {Promise<ProviderMediaConfigObject>} - The provider media config\n */\n public getMediaConfig(mediaInfo: OVPProviderMediaInfoObject): Promise<ProviderMediaConfigObject> {\n if (mediaInfo.ks) {\n this.ks = mediaInfo.ks;\n }\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks, this._networkRetryConfig);\n return new Promise((resolve, reject) => {\n const entryId = mediaInfo.entryId;\n const referenceId = mediaInfo.referenceId;\n if (entryId || referenceId) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OVPSessionLoader, {widgetId: this.widgetId});\n }\n const redirectFromEntryId = this._getEntryRedirectFilter(mediaInfo);\n this._dataLoader.add(OVPMediaEntryLoader, {entryId, ks, redirectFromEntryId, referenceId, referrer: this._referrer});\n return this._dataLoader.fetchData().then(\n response => {\n try {\n const mediaConfig = this._parseDataFromResponse(response);\n RegexActionHandler.handleRegexAction(mediaConfig, response).then(resolve);\n } catch (err) {\n reject(err);\n }\n },\n err => {\n const baseEntryListResponse = err.data?.results?.find(result => result.data?.objectType === 'KalturaBaseEntryListResponse');\n if (baseEntryListResponse?.data?.objects?.[0].status === KalturaMediaEntry.EntryStatus.DELETED) {\n err = new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.DELETED_ENTRY);\n }\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 public doRequest(loaders: Array<RequestLoader>, ks?: string, requestsMustSucceed?: boolean): Promise<any> {\n const theKs: string = ks || this.ks;\n const dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, theKs, this._networkRetryConfig);\n\n return new Promise((resolve, reject) => {\n if (!theKs) {\n dataLoader.add(OVPSessionLoader, {widgetId: this.widgetId});\n }\n loaders.forEach((loaderRequest: RequestLoader) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n dataLoader.add(loaderRequest.loader, loaderRequest.params, theKs || '{1:result:ks}');\n });\n return dataLoader.fetchData(requestsMustSucceed).then(\n response => {\n try {\n resolve(response);\n } catch (err) {\n reject(err);\n }\n },\n err => {\n reject(err);\n }\n );\n });\n }\n\n private _getEntryRedirectFilter(mediaInfo: any): boolean {\n return typeof mediaInfo.redirectFromEntryId === 'boolean'\n ? mediaInfo.redirectFromEntryId\n : typeof this._filterOptionsConfig.redirectFromEntryId === 'boolean'\n ? this._filterOptionsConfig.redirectFromEntryId\n : true;\n }\n\n private _setFilterOptionsConfig(options?: ProviderFilterOptionsObject): void {\n if (options && typeof options.redirectFromEntryId === 'boolean') {\n this._filterOptionsConfig.redirectFromEntryId = options.redirectFromEntryId;\n }\n }\n\n private _parseDataFromResponse(data: Map<string, ILoader>): 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\n if (this.uiConfId) {\n mediaConfig.session.uiConfId = this.uiConfId;\n }\n\n if (data) {\n if (data.has(OVPSessionLoader.id)) {\n const sessionLoader = data.get(OVPSessionLoader.id);\n if (sessionLoader && sessionLoader.response) {\n mediaConfig.session.ks = sessionLoader.response;\n if (this.widgetId !== this.defaultWidgetId) {\n this.ks = mediaConfig.session.ks!;\n }\n }\n } else {\n mediaConfig.session.ks = this.ks;\n }\n if (data.has(OVPMediaEntryLoader.id)) {\n const mediaLoader = data.get(OVPMediaEntryLoader.id);\n if (mediaLoader && mediaLoader.response) {\n const response = (mediaLoader as OVPMediaEntryLoader).response;\n if (OVPProviderParser.hasBlockAction(response)) {\n throw new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.BLOCK_ACTION, {\n action: OVPProviderParser.getBlockAction(response),\n messages: OVPProviderParser.getErrorMessages(response)\n });\n } else if (OVPProviderParser.hasScheduledRestriction(response)) {\n throw new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.SCHEDULED_RESTRICTED, {\n messages: OVPProviderParser.getErrorMessages(response)\n });\n }\n\n const mediaEntry = OVPProviderParser.getMediaEntry(this._useHeaderForKs ? '' : this.ks, this.partnerId, this.uiConfId, response);\n Object.assign(mediaConfig.sources, this._getSourcesObject(mediaEntry));\n this._verifyMediaStatus(mediaEntry);\n this._verifyHasSources(mediaConfig.sources);\n const bumper = OVPProviderParser.getBumper(response, this.ks, this.partnerId);\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 * Checks if media is ready for playback (not being imported or converted)\n * @param {MediaEntry} mediaEntry - the media entry info\n * @returns {void}\n */\n private _verifyMediaStatus(mediaEntry: MediaEntry): void {\n if ([KalturaMediaEntry.EntryStatus.IMPORT, KalturaMediaEntry.EntryStatus.PRECONVERT].includes(mediaEntry.status!)) {\n throw new Error(Error.Severity.CRITICAL, Error.Category.SERVICE, Error.Code.MEDIA_STATUS_NOT_READY, {\n messages: `Status of entry id ${mediaEntry.id} is ${mediaEntry.status} and is still being imported or converted`,\n data: {status}\n });\n }\n }\n /**\n * Gets the backend playlist config.\n * @param {ProviderPlaylistInfoObject} playlistInfo - ovp playlist info\n * @returns {Promise<ProviderPlaylistObject>} - The provider playlist config\n */\n public getPlaylistConfig(playlistInfo: ProviderPlaylistInfoObject): Promise<ProviderPlaylistObject> {\n if (playlistInfo.ks) {\n this.ks = playlistInfo.ks;\n }\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks, this._networkRetryConfig);\n return new Promise((resolve, reject) => {\n const playlistId = playlistInfo.playlistId;\n if (playlistId) {\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OVPSessionLoader, {widgetId: this.widgetId});\n }\n this._dataLoader.add(OVPPlaylistLoader, {playlistId, ks});\n this._dataLoader.fetchData().then(\n response => {\n try {\n this._handlePlaylistResponse(response, resolve, reject, playlistInfo);\n } catch (err) {\n reject(err);\n }\n },\n err => {\n reject(err);\n }\n );\n } else {\n reject({success: false, data: 'Missing mandatory parameter'});\n }\n });\n }\n\n private _handlePlaylistResponse(\n response: Map<string, ILoader>,\n resolve: (value: ProviderPlaylistObject) => void,\n reject: (reason?: any) => void,\n playlistInfo: ProviderPlaylistInfoObject\n ): void {\n this._logger.debug('Handling playlist response', {attempt: this._retryAttempts + 1, maxAttempts: MAX_RETRY_ATTEMPTS});\n const playlistData = this._parsePlaylistDataFromResponse(response);\n\n if (playlistData.items.length > 0) {\n this._handlePlaylistSuccess(playlistData, resolve);\n } else {\n this._handlePlaylistRetry(resolve, reject, playlistInfo);\n }\n }\n\n private _handlePlaylistSuccess(playlistData: ProviderPlaylistObject, resolve: (value: ProviderPlaylistObject) => void): void {\n this._logger.debug('Playlist items found', {itemsCount: playlistData.items.length, totalAttempts: this._retryAttempts + 1});\n this._retryAttempts = 0;\n resolve(playlistData);\n }\n\n private _handlePlaylistRetry(\n resolve: (value: ProviderPlaylistObject) => void,\n reject: (reason?: any) => void,\n playlistInfo: ProviderPlaylistInfoObject\n ): void {\n if (this._retryAttempts >= MAX_RETRY_ATTEMPTS) {\n this._handleMaxRetriesReached(reject);\n } else {\n this._retryAttempts++;\n this._schedulePlaylistRetry(resolve, reject, playlistInfo);\n }\n }\n\n private _handleMaxRetriesReached(reject: (reason?: any) => void): void {\n this._logger.error('Max retry attempts reached - rejecting playlist', {maxAttempts: MAX_RETRY_ATTEMPTS});\n this._retryAttempts = 0;\n const playlistData = this._getPlaylistObject();\n reject(playlistData);\n }\n\n private _schedulePlaylistRetry(\n resolve: (value: ProviderPlaylistObject) => void,\n reject: (reason?: any) => void,\n playlistInfo: ProviderPlaylistInfoObject\n ): void {\n setTimeout(() => {\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, this.partnerId, this.ks, this._networkRetryConfig);\n let ks: string = this.ks;\n if (!ks) {\n ks = '{1:result:ks}';\n this._dataLoader.add(OVPSessionLoader, {widgetId: this.widgetId});\n }\n // Add commas to BaseEntryResponseProfile fields to bust cache on retry\n const retryParams = {\n playlistId: playlistInfo.playlistId,\n ks,\n cacheToken: ','.repeat(this._retryAttempts)\n };\n this._dataLoader.add(OVPPlaylistLoader, retryParams);\n this._dataLoader.fetchData().then(\n retryResponse => {\n this._handlePlaylistResponse(retryResponse, resolve, reject, playlistInfo);\n },\n err => {\n reject(err);\n }\n );\n }, RETRY_INTERVAL);\n }\n\n private _parsePlaylistDataFromResponse(data: Map<string, ILoader>): ProviderPlaylistObject {\n this._logger.debug('Data parsing started');\n const playlistConfig: ProviderPlaylistObject = this._getPlaylistObject();\n if (data && data.has(OVPPlaylistLoader.id)) {\n const playlistLoader = data.get(OVPPlaylistLoader.id);\n if (playlistLoader && playlistLoader.response) {\n const playlist = OVPProviderParser.getPlaylist(playlistLoader.response);\n playlistConfig.id = playlist.id!;\n playlistConfig.poster = playlist.poster!;\n playlistConfig.metadata.name = playlist.name!;\n playlistConfig.metadata.description = playlist.description!;\n playlistConfig.playlistLastEntryId = playlist.playlistLastEntryId;\n playlist.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 /**\n * Gets playlist config from entry list.\n * @param {ProviderEntryListObject} entryListInfo - ovp 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 }\n this._dataLoader = new OVPDataLoaderManager(this.playerVersion, 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(OVPSessionLoader, {widgetId: this.widgetId});\n }\n const redirectFromEntryId = this._getEntryRedirectFilter(entryListInfo);\n this._dataLoader.add(OVPEntryListLoader, {entries, ks, redirectFromEntryId});\n this._dataLoader.fetchData(false).then(\n response => {\n resolve(this._parseEntryListDataFromResponse(response));\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>): ProviderPlaylistObject {\n this._logger.debug('Data parsing started');\n const playlistConfig: ProviderPlaylistObject = this._getPlaylistObject();\n if (data && data.has(OVPEntryListLoader.id)) {\n const playlistLoader = data.get(OVPEntryListLoader.id);\n if (playlistLoader && playlistLoader.response) {\n const entryList = OVPProviderParser.getEntryList(playlistLoader.response);\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 _getPlaylistObject(): ProviderPlaylistObject {\n return {\n id: '',\n metadata: {\n name: '',\n description: ''\n },\n poster: '',\n playlistLastEntryId: '',\n items: []\n };\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 rawThumbnailUrl: '',\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.image = mediaSources.image;\n sourcesObject.document = mediaSources.document;\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 sourcesObject.rawThumbnailUrl = mediaEntry.rawThumbnailUrl;\n sourcesObject.downloadUrl = mediaEntry.downloadUrl;\n sourcesObject.rootEntryId = mediaEntry.rootEntryId;\n sourcesObject.capabilities = mediaEntry.capabilities;\n if (mediaEntry.activeLiveStreamTime) {\n sourcesObject.activeLiveStreamTime = mediaEntry.activeLiveStreamTime;\n }\n if (mediaEntry.sources.captions) {\n sourcesObject.captions = mediaEntry.sources.captions;\n }\n if (\n mediaEntry.metadata &&\n typeof mediaEntry.metadata.tags === 'string' &&\n mediaEntry.metadata.tags.split(',').some(tag => tag.trim() === this._vrTag)\n ) {\n sourcesObject.vr = {};\n }\n\n Object.assign(sourcesObject.metadata, mediaEntry.metadata);\n return sourcesObject;\n }\n}\n","import OVPProvider from './provider';\nimport OVPProviderParser from './provider-parser';\nimport RequestBuilder from '../../util/request-builder';\nimport * as ResponseTypes from './response-types';\n\ndeclare let __VERSION__: string;\ndeclare let __NAME__: string;\n\nconst NAME = __NAME__ + '-ovp';\nconst VERSION = __VERSION__;\n\nexport {OVPProvider as Provider, OVPProviderParser as ProviderParser, NAME, VERSION, RequestBuilder, ResponseTypes};\n\n"],"names":["root","factory","exports","module","define","amd","a","i","self","_typeof","_regeneratorRuntime","e","__esModule","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","Symbol","iterator","c","asyncIterator","u","toStringTag","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","type","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","this","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","then","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","Function","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","definition","key","get","obj","prop","asyncGeneratorStep","gen","reject","_next","_throw","info","error","_asyncToGenerator","fn","args","arguments","apply","err","_classCallCheck","instance","Constructor","_toPropertyKey","input","hint","prim","toPrimitive","res","String","_defineProperties","target","props","descriptor","_createClass","protoProps","staticProps","_assertThisInitialized","ReferenceError","_setPrototypeOf","bind","_inherits","subClass","superClass","_possibleConstructorReturn","_getPrototypeOf","_defineProperty","JsLogger","VERSION","DEBUG","ERROR","INFO","OFF","TIME","TRACE","WARN","createDefaultHandler","debug","enabledFor","getLevel","log","setHandler","setLevel","time","timeEnd","trace","useDefaults","warn","LogLevel","getLogger","clone","data","node","Array","isArray","assign","defaultConfig","serviceUrl","cdnUrl","serviceParams","apiVersion","format","useApiCaptions","loadThumbnailWithKs","replaceHostOnlyManifestUrls","OVPConfiguration","clientConfig","overrideServiceUrl","ServiceResult","response","objectType","hasError","ServiceError","code","message","KalturaMediaEntry","entry","id","referenceId","externalSourceType","description","dataUrl","entryType","mediaType","flavorParamsIds","duration","poster","thumbnailUrl","rawThumbnailUrl","status","dvrStatus","tags","adminTags","createdAt","updatedAt","creatorId","userId","endDate","plays","views","downloadUrl","rootEntryId","capabilities","AUTOMATIC","EXTERNAL_MEDIA","MEDIA_CLIP","MIX","PLAYLIST","DATA","LIVE_STREAM","LIVE_CHANNEL","DOCUMENT","VIDEO","IMAGE","AUDIO","LIVE_STREAM_FLASH","LIVE_STREAM_WINDOWS_MEDIA","LIVE_STREAM_REAL_MEDIA","LIVE_STREAM_QUICK_TIME","ERROR_IMPORTING","ERROR_CONVERTING","SCAN_FAILURE","IMPORT","INFECTED","PRECONVERT","READY","DELETED","PENDING","MODERATE","BLOCKED","NO_CONTENT","PENDING_MODERATION","APPROVED","REJECTED","FLAGGED_FOR_REVIEW","AUTO_APPROVED","KalturaBaseEntryListResponse","_ServiceResult","_super","responseObj","_this","totalCount","entries","objects","map","KalturaRuleAction","DRM_POLICY","BLOCK","PREVIEW","LIMIT_FLAVORS","ADD_TO_STORAGE","LIMIT_DELIVERY_PROFILES","SERVE_FROM_REMOTE_SERVER","REQUEST_HOST_REGEX","LIMIT_THUMBNAIL_CAPTURE","SCHEDULED_RESTRICTED","KalturaAccessControlModifyRequestHostRegexAction","_KalturaRuleAction","pattern","replacement","replacmenServerNodeId","checkAliveTimeoutMs","KalturaDrmPlaybackPluginData","drm","scheme","licenseURL","certificate","WIDEVINE_CENC","PLAYREADY_CENC","FAIRPLAY","KalturaPlaybackSource","source","deliveryProfileId","url","protocols","flavorIds","protocol","returnValue","split","KalturaBumper","entryId","clickThroughUrl","sources","KalturaFlavorAsset","flavorParamsId","fileExt","bitrate","width","height","frameRate","isOriginal","isWeb","containerFormat","videoCodecId","language","label","parseTags","QUEUED","CONVERTING","NOT_APPLICABLE","TEMP","WAIT_FOR_CONVERT","IMPORTING","VALIDATING","EXPORTING","KalturaMediaEntries","KalturaMetadata","metadataProfileId","metadataProfileVersion","metadataObjectType","objectId","version","created","Date","setUTCSeconds","updated","xml","AD_CUE_POINT","ANNOTATION","CODE_CUE_POINT","THUMB_CUE_POINT","ENTRY","CATEGORY","USER","PARTNER","DYNAMIC_OBJECT","VALID","INVALID","KalturaMetadataListResponse","metas","meta","KalturaAccessControlMessage","KalturaPlaybackContext","messages","actions","action","Type","flavorAssets","flavor","bumperData","bumper","activeLiveStreamTime","startTime","endTime","getBlockAction","find","some","KalturaPlaylist","playlist","KalturaUIConfResponse","objTypeAsString","htmlParams","swfUrl","confFilePath","confFile","confFileFeatures","config","confVars","useCdn","swfUrlVersion","html5Url","partnerTags","objType","creationMode","PLAYER","CONTRIBUTION_WIZARD","SIMPLE_EDITOR","ADVANCED_EDITOR","APP_STUDIO","KRECORD","PLAYER_V3","KMC_ACCOUNT","KMC_ANALYTICS","KMC_CONTENT","KMC_DASHBOARD","KMC_LOGIN","PLAYER_SL","CLIENTSIDE_ENCODER","KMC_GENERAL","KMC_ROLES_AND_PERMISSIONS","CLIPPER","KSR","KUPLOAD","WEBCASTING","WIZARD","ADVANCED","KalturaUserEntry","playlistLastEntryId","partnerId","KalturaUserEntryListResponse","PlaySourceUrlBuilder","urlParams","serviceUrlOrigin","substr","lastIndexOf","ks","uiConfId","extension","Number","parseInt","playUrl","endsWith","XmlParser","nodeType","j","attribute","item","nodeName","nodeValue","hasChildNodes","childNodes","xmlToJson","old","MediaFormat","DASH","mimeType","pathExt","HLS","WVM","MP4","MP3","SupportedStreamFormat","Map","isProgressiveSource","formatName","sourceFormat","MediaSources","progressive","dash","hls","image","document","mediaFormat","toJSON","MediaEntry","metadata","UNKNOWN","assetReferenceType","VOD","LIVE","ON","Drm","licenseUrl","MediaSource","mimetype","bandwidth","drmData","Playlist","items","EntryList","Bumper","KalturaCaptionType","SRT","DFXP","WEBVTT","CAP","CaptionsFormatsMap","ExternalCaptionsBuilder","captions","caption","includes","webVttUrl","addKsToUrl","default","isDefault","languageCode","ImageSource","extractBaseThumbnailUrl","match","DocumentSource","OVPProviderParser","mediaEntryResponse","mediaEntry","playbackContext","playBackContextResult","metadataList","metadataListResult","kalturaSources","_getParsedSources","_fillBaseData","playbackCaptions","createConfig","ksParam","replace","indexOf","playlistResponse","playlistData","playlistItems","playlistUserEntries","entryList","assetResponse","progressiveBumper","parsedSources","_parseProgressiveSources","_parseMetadata","_getEntryType","_playbackContext$flav","aspectRatio","toFixed","audioFlavors","filter","entryTypeEnum","typeEnum","MediaType","EntryType","progressiveSource","mediaSource","parsedSource","_parseAdaptiveSource","getProtocol","_getBaseProtocol","kalturaSource","hasFlavorIds","build","concat","_logger","hasDrmData","drmParams","Scheme","videoSources","audioSources","sourceId","domParser","DOMParser","metaXml","parseFromString","metasObj","result","exec","location","hasBlockAction","hasScheduledRestriction","getErrorMessages","severity","category","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","DELETED_ENTRY","MISSING_MANDATORY_PARAMS","MISSING_PLAY_SOURCE","METHOD_NOT_IMPLEMENTED","RequestBuilder","headers","timeout","maxAttempts","service","promise","_requestPromise","Severity","Category","Code","_createXHR","_this2","request","XMLHttpRequest","onreadystatechange","readyState","JSON","parse","responseText","responseHeaders","_getResponseHeaders","_createError","text","open","retryConfig","requestTime","performance","now","ontimeout","_handleError","statusText","onerror","onabort","setRequestHeader","send","params","getAllResponseHeaders","header","toLowerCase","_attemptCounter","attempt","MultiRequestBuilder","_RequestBuilder","_len","_key","requests","requestParams","serviceDef","requestsMustSucceed","stringify","FAILED_PARSING_REQUEST","doHttpRequest","multiRequestResult","MultiRequestResult","success","results","errorResults","serviceResult","OVPService","playerVersion","ovpParams","clientTag","set","multiReq","getUrl","BaseEntryResponseProfile","responseProfile","INCLUDE_FIELDS","fields","EXCLUDE_FIELDS","SERVICE_NAME","OVPBaseEntryService","_OVPService","serviceEntryId","referrer","tag","contextDataParams","flavorTags","redirectFromEntryId","getEntryListReqParams","filterParams","idEqual","referenceIdEqual","OVPMetadataService","objectIdEqual","metadataObjectTypeEqual","OVPMediaEntryLoader","buildRequests","_entryId","_referenceId","_requests","_response","list","getPlaybackContext","OVPSessionService","widgetId","OVPSessionLoader","_widgetId","anonymousSession","_arrayLikeToArray","arr","len","arr2","_toConsumableArray","iter","from","minLen","toString","test","OTTConfiguration","RequestSequenceBuilder","_OTTConfiguration$get","_execute","_executeSequence2","_executeRequest2","loader","loaders","_callee","_serviceResult$error","_context","_objectSpread","_globalParams","t0","_x","_callee2","_iterator","_step","singleRequestsResult","errorResult","_errorResult$error","_context2","_createForOfIteratorHelper","_executeRequest","t1","SingleRequestsResult","errorMessage","_x2","_callee3","sessionLoader","assetLoader","requestsResult","_context3","_executeSequence","_step2","_ref","_iterator2","_serviceResult$error2","allRequestsFailed","someRequestsFailed","OVPDataLoaderManager","_DataLoaderManager","networkRetryConfig","_multiRequest","getMultiRequest","DataLoaderManager","_networkRetryConfig","_singleRequests","execution_loader","isValid","_loaders","disableMultirequest","add","startIndex","executionLoaderResponseMap","val","index","_loadersResponseMap","size","execute","catch","_multiResponse","prepareData","_this3","loaderDataIndexes","OVPPlaylistService","playlistId","cacheToken","entryIdEqual","userIdEqualCurrent","OVPPlaylistLoader","_playlistId","getLastEntryId","BaseProvider","options","logger","setLogger","_partnerId","_uiConfId","_isAnonymous","_ks","_playerVersion","_referrer","defaultWidgetId","mediaInfo","playlistInfo","entryListInfo","getLogLevel","level","setLogLevel","OVPEntryListLoader","_entries","RegexActionHandler","regexAction","regex","RegExp","mediaConfig","urlPing","req","_replaceHostUrls","rawResponse","_extractRegexActionFromData","regExp","_getRegExp","_pingECDNAndReplaceHostUrls","src","_applyRegexAction","_data$get","getRequestHostRegexAction","OVPUserService","KalturaUserGetResponse","INVALID_IDS","OVPProvider","_BaseProvider","_initializeUserResponse","env","_setFilterOptionsConfig","filterOptions","_vrTag","vrTag","networkRetryParameters","_useHeaderForKs","useHeaderForKs","initializeUserResponse","userResponse","isAnonymous","_dataLoader","_getEntryRedirectFilter","fetchData","_parseDataFromResponse","handleRegexAction","_err$data","_baseEntryListRespons","baseEntryListResponse","_result$data","EntryStatus","theKs","dataLoader","loaderRequest","_filterOptionsConfig","session","_getDefaultSourcesObject","plugins","has","mediaLoader","getMediaEntry","_getSourcesObject","_verifyMediaStatus","_verifyHasSources","getBumper","_this4","_handlePlaylistResponse","_retryAttempts","_parsePlaylistDataFromResponse","_handlePlaylistSuccess","_handlePlaylistRetry","itemsCount","totalAttempts","_handleMaxRetriesReached","_schedulePlaylistRetry","_getPlaylistObject","_this5","setTimeout","retryParams","repeat","retryResponse","_this6","playlistConfig","playlistLoader","getPlaylist","_this7","_parseEntryListDataFromResponse","_this8","getEntryList","dvr","vr","_this9","sourcesObject","mediaSources","trim","NAME","__NAME__","__VERSION__"],"sourceRoot":""}
|