@playkit-js/playkit-js-providers 2.40.1 → 2.41.0-canary.0-2452bbc

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/index.d.ts +1624 -0
  2. package/dist/playkit-analytics-service.js +1 -1
  3. package/dist/playkit-analytics-service.js.map +1 -1
  4. package/dist/playkit-bookmark-service.js +1 -1
  5. package/dist/playkit-bookmark-service.js.map +1 -1
  6. package/dist/playkit-ott-provider.js +1 -1
  7. package/dist/playkit-ott-provider.js.map +1 -1
  8. package/dist/playkit-ovp-provider.js +1 -1
  9. package/dist/playkit-ovp-provider.js.map +1 -1
  10. package/dist/playkit-stats-service.js +1 -1
  11. package/dist/playkit-stats-service.js.map +1 -1
  12. package/dist/tsdoc-metadata.json +11 -0
  13. package/flow-typed/types/media-config-sources.js +1 -1
  14. package/flow-typed/types/media-sources.js +1 -1
  15. package/package.json +48 -45
  16. package/playkit-analytics-service/package.json +5 -0
  17. package/playkit-bookmark-service/package.json +5 -0
  18. package/playkit-ott-provider/package.json +5 -0
  19. package/playkit-ovp-provider/package.json +5 -0
  20. package/playkit-stats-service/package.json +5 -0
  21. package/src/entities/bumper.ts +21 -0
  22. package/src/entities/drm.ts +47 -0
  23. package/src/entities/entry-list.ts +13 -0
  24. package/src/entities/image-source.ts +36 -0
  25. package/src/entities/media-entry.ts +104 -0
  26. package/src/entities/media-format.ts +47 -0
  27. package/src/entities/media-source.ts +70 -0
  28. package/src/entities/media-sources.ts +79 -0
  29. package/src/entities/playlist.ts +41 -0
  30. package/src/k-provider/common/base-provider-parser.ts +0 -0
  31. package/src/k-provider/common/base-provider.ts +112 -0
  32. package/src/k-provider/common/base-service-result.ts +56 -0
  33. package/src/k-provider/common/data-loader-manager.ts +115 -0
  34. package/src/k-provider/common/multi-request-builder.ts +111 -0
  35. package/src/k-provider/common/response-types/kaltura-access-control-message.ts +21 -0
  36. package/src/k-provider/common/response-types/kaltura-drm-playback-plugin-data.ts +38 -0
  37. package/src/k-provider/ott/config.ts +22 -0
  38. package/src/k-provider/ott/index.ts +14 -0
  39. package/src/k-provider/ott/loaders/asset-list-loader.ts +68 -0
  40. package/src/k-provider/ott/loaders/asset-loader.ts +69 -0
  41. package/src/k-provider/ott/loaders/data-loader-manager.ts +15 -0
  42. package/src/k-provider/ott/loaders/session-loader.ts +62 -0
  43. package/src/k-provider/ott/provider-parser.ts +285 -0
  44. package/src/k-provider/ott/provider.ts +252 -0
  45. package/src/k-provider/ott/response-types/kaltura-asset.ts +105 -0
  46. package/src/k-provider/ott/response-types/kaltura-bumper-playback-plugin-data.ts +27 -0
  47. package/src/k-provider/ott/response-types/kaltura-playback-context.ts +73 -0
  48. package/src/k-provider/ott/response-types/kaltura-playback-source.ts +62 -0
  49. package/src/k-provider/ott/response-types/kaltura-rule-action.ts +25 -0
  50. package/src/k-provider/ott/services/asset-service.ts +50 -0
  51. package/src/k-provider/ott/services/bookmark/bookmark-service.ts +48 -0
  52. package/src/k-provider/ott/services/bookmark/index.ts +11 -0
  53. package/src/k-provider/ott/services/ott-service.ts +33 -0
  54. package/src/k-provider/ott/services/user-service.ts +31 -0
  55. package/src/k-provider/ovp/config.ts +28 -0
  56. package/src/k-provider/ovp/external-captions-builder.ts +37 -0
  57. package/src/k-provider/ovp/index.ts +13 -0
  58. package/src/k-provider/ovp/loaders/data-loader-manager.ts +17 -0
  59. package/src/k-provider/ovp/loaders/entry-list-loader.ts +69 -0
  60. package/src/k-provider/ovp/loaders/media-entry-loader.ts +84 -0
  61. package/src/k-provider/ovp/loaders/playlist-loader.ts +69 -0
  62. package/src/k-provider/ovp/loaders/session-loader.ts +62 -0
  63. package/src/k-provider/ovp/loaders/ui-config-loader.ts +71 -0
  64. package/src/k-provider/ovp/play-source-url-builder.ts +59 -0
  65. package/src/k-provider/ovp/provider-parser.ts +461 -0
  66. package/src/k-provider/ovp/provider.ts +358 -0
  67. package/src/k-provider/ovp/regex-action-handler.ts +149 -0
  68. package/src/k-provider/ovp/request-params/base-entry-response-profile.ts +28 -0
  69. package/src/k-provider/ovp/response-types/index.ts +21 -0
  70. package/src/k-provider/ovp/response-types/kaltura-access-control-modify-request-host-regex-action.ts +35 -0
  71. package/src/k-provider/ovp/response-types/kaltura-base-entry-list-response.ts +30 -0
  72. package/src/k-provider/ovp/response-types/kaltura-bumper.ts +25 -0
  73. package/src/k-provider/ovp/response-types/kaltura-flavor-asset.ts +108 -0
  74. package/src/k-provider/ovp/response-types/kaltura-media-entries.ts +28 -0
  75. package/src/k-provider/ovp/response-types/kaltura-media-entry.ts +189 -0
  76. package/src/k-provider/ovp/response-types/kaltura-metadata-list-response.ts +22 -0
  77. package/src/k-provider/ovp/response-types/kaltura-metadata.ts +50 -0
  78. package/src/k-provider/ovp/response-types/kaltura-playback-context.ts +95 -0
  79. package/src/k-provider/ovp/response-types/kaltura-playback-source.ts +89 -0
  80. package/src/k-provider/ovp/response-types/kaltura-playlist.ts +33 -0
  81. package/src/k-provider/ovp/response-types/kaltura-rule-action.ts +27 -0
  82. package/src/k-provider/ovp/response-types/kaltura-ui-conf-response.ts +89 -0
  83. package/src/k-provider/ovp/response-types/kaltura-user-entry-list-response.ts +30 -0
  84. package/src/k-provider/ovp/response-types/kaltura-user-entry.ts +57 -0
  85. package/src/k-provider/ovp/services/analytics/analytics-service.ts +58 -0
  86. package/src/k-provider/ovp/services/analytics/index.ts +11 -0
  87. package/src/k-provider/ovp/services/base-entry-service.ts +75 -0
  88. package/src/k-provider/ovp/services/meta-data-service.ts +29 -0
  89. package/src/k-provider/ovp/services/ovp-service.ts +32 -0
  90. package/src/k-provider/ovp/services/playlist-service.ts +95 -0
  91. package/src/k-provider/ovp/services/session-service.ts +27 -0
  92. package/src/k-provider/ovp/services/stats/index.ts +11 -0
  93. package/src/k-provider/ovp/services/stats/stats-service.ts +32 -0
  94. package/src/k-provider/ovp/services/ui-conf-service.ts +32 -0
  95. package/src/types/adapter-data-config.ts +1 -0
  96. package/src/types/caption-type.ts +1 -0
  97. package/src/types/drm-data.ts +5 -0
  98. package/src/types/entry-list.ts +6 -0
  99. package/src/types/env-config.ts +7 -0
  100. package/src/types/external-caption-object.ts +7 -0
  101. package/src/types/filter-options.ts +3 -0
  102. package/src/types/index.ts +34 -0
  103. package/src/types/loader.ts +7 -0
  104. package/src/types/media-config-metadata.ts +13 -0
  105. package/src/types/media-config-session.ts +6 -0
  106. package/src/types/media-config-sources.ts +20 -0
  107. package/src/types/media-config.ts +8 -0
  108. package/src/types/media-entry.ts +16 -0
  109. package/src/types/media-format.ts +5 -0
  110. package/src/types/media-info.ts +21 -0
  111. package/src/types/media-source.ts +12 -0
  112. package/src/types/media-sources.ts +11 -0
  113. package/src/types/network-retry-parameters.ts +5 -0
  114. package/src/types/playback-context.ts +10 -0
  115. package/src/types/playlist-info.ts +4 -0
  116. package/src/types/playlist-item.ts +5 -0
  117. package/src/types/playlist-metadata.ts +4 -0
  118. package/src/types/playlist.ts +10 -0
  119. package/src/types/poster.ts +5 -0
  120. package/src/types/provider-options.ts +17 -0
  121. package/src/types/request-loader.ts +6 -0
  122. package/src/util/clone.ts +23 -0
  123. package/src/util/error/category.ts +11 -0
  124. package/src/util/error/code.ts +77 -0
  125. package/src/util/error/error.ts +47 -0
  126. package/src/util/error/severity.ts +21 -0
  127. package/src/util/logger.ts +108 -0
  128. package/src/util/param.ts +45 -0
  129. package/src/util/request-builder.ts +187 -0
  130. package/src/util/xml-parser.ts +39 -0
  131. package/CHANGELOG.md +0 -959
  132. package/samples/ott/bookmark.html +0 -23
  133. package/samples/ott/provider.html +0 -28
  134. package/samples/ovp/provider.html +0 -30
  135. package/samples/ovp/stats.html +0 -17
@@ -1,2 +1,2 @@
1
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.stats=t():(e.playkit=e.playkit||{},e.playkit.services=e.playkit.services||{},e.playkit.services.stats=t())}(window,(function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=10)}([function(e,t,r){"use strict";r.d(t,"a",(function(){return i}));var n=r(2);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var i=function e(t,r,n,o){void 0===o&&(o={}),this.severity=t,this.category=r,this.code=n,this.data=o,e._logger.error("Category:"+r+" | Code:"+n+" |",o)};o(i,"Severity",{RECOVERABLE:1,CRITICAL:2}),o(i,"Category",{NETWORK:1,SERVICE:2,PROVIDER:3}),o(i,"Code",{UNSUPPORTED_SCHEME:1e3,BAD_HTTP_STATUS:1001,HTTP_ERROR:1002,TIMEOUT:1003,MALFORMED_DATA_URI:1004,BAD_SERVER_RESPONSE:1005,MULTIREQUEST_API_ERROR:1006,API_RESPONSE_MISMATCH:1007,ERROR:2e3,BLOCK_ACTION:2001,MEDIA_STATUS_NOT_READY:2002,MISSING_MANDATORY_PARAMS:3e3,MISSING_PLAY_SOURCE:3001,METHOD_NOT_IMPLEMENTED:3002}),o(i,"_logger",Object(n.a)("Error"))},function(e,t,r){"use strict";r.d(t,"a",(function(){return i}));var n=r(0);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var i=function(){function e(e){void 0===e&&(e=new Map),o(this,"retryConfig",{async:!0,timeout:0,maxAttempts:4}),o(this,"_attemptCounter",1),this.headers=e}var t=e.prototype;return t.getUrl=function(e){return e+"/service/"+this.service+(this.action?"/action/"+this.action:"")},t.doHttpRequest=function(){var e=this,t=new Promise((function(t,r){e._requestPromise={resolve:t,reject:r}}));return this.url||this._requestPromise.reject(new n.a(n.a.Severity.CRITICAL,n.a.Category.NETWORK,n.a.Code.MALFORMED_DATA_URI,{url:this.url})),this._createXHR(),t},t._createXHR=function(){var e=this,t=new XMLHttpRequest;t.onreadystatechange=function(){if(4===t.readyState&&200===t.status)try{var r=JSON.parse(t.responseText);return e.responseHeaders=e._getResponseHeaders(t),e._requestPromise.resolve(r)}catch(r){e._requestPromise.reject(e._createError(t,n.a.Code.BAD_SERVER_RESPONSE,{text:t.responseText}))}},t.open(this.method,this.url,this.retryConfig.async),this.retryConfig.async&&this.retryConfig.timeout&&(t.timeout=this.retryConfig.timeout);var r=performance.now();t.ontimeout=function(){e._handleError(t,n.a.Code.TIMEOUT,{timeout:(performance.now()-r)/1e3,statusText:t.statusText})},t.onerror=t.onabort=function(){e._handleError(t,n.a.Code.HTTP_ERROR,{text:t.responseText,statusText:t.statusText})},this.headers.forEach((function(e,r){t.setRequestHeader(r,e)})),t.send(this.params)},t._getResponseHeaders=function(e){return e.getAllResponseHeaders().split("\n").filter((function(e){return 0===e.toLowerCase().indexOf("x-")}))},t._handleError=function(e,t,r){var n=this._createError(e,t,r);if(e.onreadystatechange=function(){},e.onerror=function(){},e.ontimeout=function(){},e.onabort=function(){},!(this.retryConfig.maxAttempts&&this._attemptCounter<this.retryConfig.maxAttempts))return this._requestPromise.reject(n);this._attemptCounter++,this._createXHR()},t._createError=function(e,t,r){return Object.assign(r,{url:this.url,headers:this._getResponseHeaders(e),attempt:this._attemptCounter}),new n.a(n.a.Severity.CRITICAL,n.a.Category.NETWORK,t,r)},e}()},function(e,t,r){"use strict";var n={get:function(){return{VERSION:"",DEBUG:{value:"",name:""},ERROR:{value:"",name:""},INFO:{value:"",name:""},OFF:{value:"",name:""},TIME:{value:"",name:""},TRACE:{value:"",name:""},WARN:{value:"",name:""},createDefaultHandler:function(){},debug:function(){},enabledFor:function(){},error:function(){},get:function(){},getLevel:function(){},info:function(){},log:function(){},setHandler:function(){},setLevel:function(){},time:function(){},timeEnd:function(){},trace:function(){},useDefaults:function(){},warn:function(){}}}};function o(e){return n.get(e)}t.a=o},function(e,t,r){"use strict";r.d(t,"a",(function(){return i}));var n=r(4),o={serviceUrl:"https://cdnapisec.kaltura.com/api_v3",cdnUrl:"https://cdnapisec.kaltura.com",serviceParams:{apiVersion:"3.3.0",format:1},useApiCaptions:!0,loadThumbnailWithKs:!1,replaceHostOnlyManifestUrls:!1},i=function(){function e(){}return e.set=function(e){e&&Object.assign(o,e)},e.get=function(){return Object(n.a)(o)},e}()},function(e,t,r){"use strict";r.d(t,"a",(function(){return n}));var n=function e(t){var r;return Array.isArray(t)?(r=t.length>0?t.slice(0):[]).forEach((function(t,n){("object"==typeof t&&t!=={}||Array.isArray(t)&&t.length>0)&&(r[n]=e(t))})):"object"==typeof t?(r=Object.assign({},t),Object.keys(r).forEach((function(t){("object"==typeof r[t]&&r[t]!=={}||Array.isArray(r[t])&&r[t].length>0)&&(r[t]=e(r[t]))}))):r=t,r}},function(e,t,r){"use strict";r.d(t,"a",(function(){return f}));var n=r(1),o=r(2);var i=function(e){var t,r,n;n=!1,(r="hasError")in(t=this)?Object.defineProperty(t,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[r]=n,"KalturaAPIException"===e.objectType?(this.hasError=!0,this.error=new a(e.code,e.message)):e.error&&"KalturaAPIException"===e.error.objectType?(this.hasError=!0,this.error=new a(e.error.code,e.error.message)):this.data=e},a=function(e,t){this.code=e,this.message=t},s=r(0);function u(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function c(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var f=function(e){var t,r;function n(){for(var t,r=arguments.length,n=new Array(r),o=0;o<r;o++)n[o]=arguments[o];return c(u(t=e.call.apply(e,[this].concat(n))||this),"requests",[]),t}r=e,(t=n).prototype=Object.create(r.prototype),t.prototype.constructor=t,t.__proto__=r;var o=n.prototype;return o.add=function(e){var t;this.requests.push(e);var r={},n={service:e.service,action:e.action};return Object.assign(r,((t={})[this.requests.length]=Object.assign(n,e.params),t)),Object.assign(r,this.params),this.params=r,this},o.execute=function(e){var t=this;return new Promise((function(r,o){try{t.params=JSON.stringify(t.params)}catch(e){n._logger.error(""+e.message),o(new s.a(s.a.Severity.CRITICAL,s.a.Category.PROVIDER,s.a.Code.FAILED_PARSING_REQUEST,{error:e,params:t.params}))}t.doHttpRequest().then((function(n){var i=new l(n,e);i.success?r({headers:t.responseHeaders,response:i}):o(new s.a(s.a.Severity.CRITICAL,s.a.Category.NETWORK,s.a.Code.MULTIREQUEST_API_ERROR,{url:t.url,headers:t.responseHeaders,results:i.results}))}),(function(e){o(e)}))}))},n}(n.a);c(f,"_logger",Object(o.a)("MultiRequestBuilder"));var l=function e(t,r){void 0===r&&(r=!0),c(this,"results",[]);var n=t.result?t.result:t,o=(Array.isArray(n)?n:[n]).map((function(e){return new i(e)})),a=o.filter((function(e){return e.hasError}));a.forEach((function(t){e._logger.error("Service returned an error with error code: "+t.error.code+" and message: "+t.error.message+".")})),this.results=o,r&&a.length||a.length===this.results.length?this.success=!1:(this.results=this.results.filter((function(e){return!e.hasError})),this.success=!0)};c(l,"_logger",Object(o.a)("MultiRequestResult"))},function(e,t,r){"use strict";r.d(t,"a",(function(){return n}));var n=function(e){var t=[],r=/\[\]$/,n=function(e){return"[object Array]"===Object.prototype.toString.call(e)},o=function(e,r){r="function"==typeof r?r():null==r?"":r,t[t.length]=encodeURIComponent(e)+"="+encodeURIComponent(r)};return function e(i,a){var s,u,c;if(i)if(n(a))for(s=0,u=a.length;s<u;s++)r.test(i)?o(i,a[s]):e(i+":"+("object"==typeof a[s]?s:""),a[s]);else if(a&&"[object Object]"===String(a))for(c in a)e(i+":"+c,a[c]);else o(i,a);else if(n(a))for(s=0,u=a.length;s<u;s++)o(a[s].name,a[s].value);else for(c in a)e(c,a[c]);return t}("",e).join("&").replace(/%20/g,"+")}},function(e,t,r){"use strict";r.d(t,"a",(function(){return i}));var n=r(5),o=r(3),i=function(){function e(){}return e.getMultiRequest=function(e,t,r){var i=o.a.get(),a=i.serviceParams;Object.assign(a,{ks:t,clientTag:"html5:v"+e}),r&&Object.assign(a,{partnerId:r});var s=new Map;s.set("Content-Type","application/json");var u=new n.a(s);return u.method="POST",u.service="multirequest",u.url=u.getUrl(i.serviceUrl),u.params=a,u},e}()},,,function(e,t,r){"use strict";r.r(t),r.d(t,"OVPStatsService",(function(){return s})),r.d(t,"OVPConfiguration",(function(){return o.a})),r.d(t,"RequestBuilder",(function(){return n.a})),r.d(t,"NAME",(function(){return u})),r.d(t,"VERSION",(function(){return c}));var n=r(1),o=r(3),i=r(7),a=r(6);var s=function(e){var t,r;function i(){return e.apply(this,arguments)||this}return r=e,(t=i).prototype=Object.create(r.prototype),t.prototype.constructor=t,t.__proto__=r,i.collect=function(e,t,r,i){var s=o.a.get(),u={};Object.assign(u,s.serviceParams,{ks:t,clientTag:"html5:v"+r},i);var c=new n.a;return c.service="stats",c.action="collect",c.method="GET",c.tag="stats-collect",c.params=u,c.url=e+"?service="+c.service+"&action="+c.action+"&"+Object(a.a)(c.params),c},i}(i.a),u="@playkit-js/playkit-js-providers-stats-service",c="2.40.1"}])}));
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var s in r)("object"==typeof exports?exports:e)[s]=r[s]}}(globalThis,(()=>(()=>{"use strict";var e={d:(t,r)=>{for(var s in r)e.o(r,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:r[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{NAME:()=>f,OVPConfiguration:()=>h,OVPStatsService:()=>E,RequestBuilder:()=>c,VERSION:()=>y});const r=()=>({VERSION:"",DEBUG:{value:"",name:""},ERROR:{value:"",name:""},INFO:{value:"",name:""},OFF:{value:"",name:""},TIME:{value:"",name:""},TRACE:{value:"",name:""},WARN:{value:"",name:""},createDefaultHandler:()=>{},debug:()=>{},enabledFor:()=>{},error:()=>{},get:()=>{},getLevel:()=>{},info:()=>{},log:()=>{},setHandler:()=>{},setLevel:()=>{},time:()=>{},timeEnd:()=>{},trace:()=>{},useDefaults:()=>{},warn:()=>{}});const s=function(e){return r(e)},o={RECOVERABLE:1,CRITICAL:2},a={UNSUPPORTED_SCHEME:1e3,BAD_HTTP_STATUS:1001,HTTP_ERROR:1002,TIMEOUT:1003,MALFORMED_DATA_URI:1004,BAD_SERVER_RESPONSE:1005,MULTIREQUEST_API_ERROR:1006,API_RESPONSE_MISMATCH:1007,ERROR:2e3,BLOCK_ACTION:2001,MEDIA_STATUS_NOT_READY:2002,MISSING_MANDATORY_PARAMS:3e3,MISSING_PLAY_SOURCE:3001,METHOD_NOT_IMPLEMENTED:3002},n={NETWORK:1,SERVICE:2,PROVIDER:3};class i{static Severity=o;static Category=n;static Code=a;static _logger=s("Error");constructor(e,t,r,s={}){this.severity=e,this.category=t,this.code=r,this.data=s,i._logger.error(`Category:${t} | Code:${r} |`,s)}}class c{retryConfig={async:!0,timeout:0,maxAttempts:4};_attemptCounter=1;constructor(e=new Map){this.headers=e}getUrl(e){return e+"/service/"+this.service+(this.action?"/action/"+this.action:"")}doHttpRequest(){const e=new Promise(((e,t)=>{this._requestPromise={resolve:e,reject:t}}));return this.url||this._requestPromise.reject(new i(i.Severity.CRITICAL,i.Category.NETWORK,i.Code.MALFORMED_DATA_URI,{url:this.url})),this._createXHR(),e}_createXHR(){const e=new XMLHttpRequest;e.onreadystatechange=()=>{if(4===e.readyState&&200===e.status)try{const t=JSON.parse(e.responseText);return this.responseHeaders=this._getResponseHeaders(e),this._requestPromise.resolve(t)}catch(t){this._requestPromise.reject(this._createError(e,i.Code.BAD_SERVER_RESPONSE,{text:e.responseText}))}},e.open(this.method,this.url,this.retryConfig.async),this.retryConfig.async&&this.retryConfig.timeout&&(e.timeout=this.retryConfig.timeout);const t=performance.now();e.ontimeout=()=>{this._handleError(e,i.Code.TIMEOUT,{timeout:(performance.now()-t)/1e3,statusText:e.statusText})},e.onerror=e.onabort=()=>{this._handleError(e,i.Code.HTTP_ERROR,{text:e.responseText,statusText:e.statusText})},this.headers.forEach(((t,r)=>{e.setRequestHeader(r,t)})),e.send(this.params)}_getResponseHeaders(e){return e.getAllResponseHeaders().split("\n").filter((e=>0===e.toLowerCase().indexOf("x-")))}_handleError(e,t,r){const s=this._createError(e,t,r);if(e.onreadystatechange=function(){},e.onerror=function(){},e.ontimeout=function(){},e.onabort=function(){},!(this.retryConfig.maxAttempts&&this._attemptCounter<this.retryConfig.maxAttempts))return this._requestPromise.reject(s);this._attemptCounter++,this._createXHR()}_createError(e,t,r){return Object.assign(r,{url:this.url,headers:this._getResponseHeaders(e),attempt:this._attemptCounter}),new i(i.Severity.CRITICAL,i.Category.NETWORK,t,r)}}const l=e=>{let t;return Array.isArray(e)?(t=e.length>0?e.slice(0):[],t.forEach(((e,r)=>{("object"==typeof e||Array.isArray(e)&&e.length>0)&&(t[r]=l(e))}))):"object"==typeof e?(t=Object.assign({},e),Object.keys(t).forEach((e=>{("object"==typeof t[e]||Array.isArray(t[e])&&t[e].length>0)&&(t[e]=l(t[e]))}))):t=e,t},u={serviceUrl:"https://cdnapisec.kaltura.com/api_v3",cdnUrl:"https://cdnapisec.kaltura.com",serviceParams:{apiVersion:"3.3.0",format:1},useApiCaptions:!0,loadThumbnailWithKs:!1,replaceHostOnlyManifestUrls:!1};class h{static set(e){e&&Object.assign(u,e)}static get(){return l(u)}}class p{hasError=!1;constructor(e){"KalturaAPIException"===e.objectType?(this.hasError=!0,this.error=new g(e.code,e.message)):e.error&&"KalturaAPIException"===e.error.objectType?(this.hasError=!0,this.error=new g(e.error.code,e.error.message)):this.data=e}}class g{constructor(e,t){this.code=e,this.message=t}}class d extends c{static _logger=s("MultiRequestBuilder");requests=[];add(e){this.requests.push(e);const t={},r={service:e.service,action:e.action};return Object.assign(t,{[this.requests.length]:Object.assign(r,e.params)}),Object.assign(t,this.params),this.params=t,this}execute(e){return new Promise(((t,r)=>{try{this.params=JSON.stringify(this.params)}catch(e){d._logger.error(`${e.message}`),r(new i(i.Severity.CRITICAL,i.Category.PROVIDER,i.Code.FAILED_PARSING_REQUEST,{error:e,params:this.params}))}this.doHttpRequest().then((s=>{const o=new m(s,e);o.success?t({headers:this.responseHeaders,response:o}):r(new i(i.Severity.CRITICAL,i.Category.NETWORK,i.Code.MULTIREQUEST_API_ERROR,{url:this.url,headers:this.responseHeaders,results:o.results}))}),(e=>{r(e)}))}))}}class m{static _logger=s("MultiRequestResult");results=[];constructor(e,t=!0){const r=e.result?e.result:e,s=(Array.isArray(r)?r:[r]).map((e=>new p(e))),o=s.filter((e=>e.hasError));o.forEach((e=>{m._logger.error(`Service returned an error with error code: ${e.error.code} and message: ${e.error.message}.`)})),this.results=s,t&&o.length||o.length===this.results.length?this.success=!1:(this.results=this.results.filter((e=>!e.hasError)),this.success=!0)}}class R{static getMultiRequest(e,t,r){const s=h.get(),o=s.serviceParams;Object.assign(o,{ks:t,clientTag:"html5:v"+e}),r&&Object.assign(o,{partnerId:r});const a=new Map;a.set("Content-Type","application/json");const n=new d(a);return n.method="POST",n.service="multirequest",n.url=n.getUrl(s.serviceUrl),n.params=o,n}}class E extends R{static collect(e,t,r,s){const o=h.get(),a={};Object.assign(a,o.serviceParams,{ks:t,clientTag:"html5:v"+r},s);const n=new c;return n.service="stats",n.action="collect",n.method="GET",n.tag="stats-collect",n.params=a,n.url=e+"?service="+n.service+"&action="+n.action+"&"+(e=>{const t=[],r=/\[\]$/,s=function(e){return"[object Array]"===Object.prototype.toString.call(e)},o=function(e,r){r="function"==typeof r?r():null==r?"":r,t[t.length]=encodeURIComponent(e)+"="+encodeURIComponent(r)},a=function(e,n){let i,c,l;if(e)if(s(n))for(i=0,c=n.length;i<c;i++)r.test(e)?o(e,n[i]):a(e+":"+("object"==typeof n[i]?i:""),n[i]);else if(n&&"[object Object]"===String(n))for(l in n)a(e+":"+l,n[l]);else o(e,n);else if(s(n))for(i=0,c=n.length;i<c;i++)o(n[i].name,n[i].value);else for(l in n)a(l,n[l]);return t};return a("",e).join("&").replace(/%20/g,"+")})(n.params),n}}const f="@playkit-js/playkit-js-providers-stats-service",y="2.41.0-canary.0-2452bbc";return t})()));
2
2
  //# sourceMappingURL=playkit-stats-service.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["./providers/webpack/universalModuleDefinition","./providers/webpack/bootstrap","./providers/./util/error/error.js","./providers/./util/error/severity.js","./providers/./util/error/category.js","./providers/./util/error/code.js","./providers/./util/request-builder.js","./providers/./util/logger.js","./providers/./k-provider/ovp/config.js","./providers/./util/clone.js","./providers/./k-provider/common/base-service-result.js","./providers/./k-provider/common/multi-request-builder.js","./providers/./util/param.js","./providers/./k-provider/ovp/services/ovp-service.js","./providers/./k-provider/ovp/services/stats/stats-service.js","./providers/./k-provider/ovp/services/stats/index.js"],"names":["root","factory","exports","module","define","amd","window","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","Error","severity","category","code","data","this","_logger","error","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","ERROR","BLOCK_ACTION","MEDIA_STATUS_NOT_READY","MISSING_MANDATORY_PARAMS","MISSING_PLAY_SOURCE","METHOD_NOT_IMPLEMENTED","getLogger","RequestBuilder","headers","Map","async","timeout","maxAttempts","getUrl","serviceUrl","service","action","doHttpRequest","promise","Promise","resolve","reject","_requestPromise","url","Severity","Category","Code","_createXHR","request","XMLHttpRequest","onreadystatechange","readyState","status","response","JSON","parse","responseText","responseHeaders","_getResponseHeaders","_createError","text","open","method","retryConfig","requestTime","performance","now","ontimeout","_handleError","statusText","onerror","onabort","forEach","setRequestHeader","send","params","getAllResponseHeaders","split","filter","header","toLowerCase","indexOf","_attemptCounter","assign","attempt","JsLogger","VERSION","DEBUG","INFO","OFF","TIME","TRACE","WARN","createDefaultHandler","debug","enabledFor","getLevel","info","log","setHandler","setLevel","time","timeEnd","trace","useDefaults","warn","defaultConfig","cdnUrl","serviceParams","apiVersion","format","useApiCaptions","loadThumbnailWithKs","replaceHostOnlyManifestUrls","OVPConfiguration","set","clientConfig","clone","node","Array","isArray","length","slice","e","keys","ServiceResult","objectType","hasError","ServiceError","message","MultiRequestBuilder","add","requests","push","requestParams","serviceDef","execute","requestsMustSucceed","stringify","err","FAILED_PARSING_REQUEST","then","multiRequestResult","MultiRequestResult","success","results","result","map","errorResults","serviceResult","param","a","rbracket","obj","toString","k","v","encodeURIComponent","buildParams","prefix","len","test","String","join","replace","OVPService","getMultiRequest","playerVersion","ks","partnerId","config","ovpParams","clientTag","multiReq","OVPStatsService","collect","event","tag","NAME","__NAME__","__VERSION__"],"mappings":"CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAe,MAAID,KAEnBD,EAAc,QAAIA,EAAc,SAAK,GAAIA,EAAc,QAAY,SAAIA,EAAc,QAAY,UAAK,GAAIA,EAAc,QAAY,SAAS,MAAIC,KARnJ,CASGK,QAAQ,WACX,O,YCTE,IAAIC,EAAmB,GAGvB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUP,QAGnC,IAAIC,EAASI,EAAiBE,GAAY,CACzCC,EAAGD,EACHE,GAAG,EACHT,QAAS,IAUV,OANAU,EAAQH,GAAUI,KAAKV,EAAOD,QAASC,EAAQA,EAAOD,QAASM,GAG/DL,EAAOQ,GAAI,EAGJR,EAAOD,QA0Df,OArDAM,EAAoBM,EAAIF,EAGxBJ,EAAoBO,EAAIR,EAGxBC,EAAoBQ,EAAI,SAASd,EAASe,EAAMC,GAC3CV,EAAoBW,EAAEjB,EAASe,IAClCG,OAAOC,eAAenB,EAASe,EAAM,CAAEK,YAAY,EAAMC,IAAKL,KAKhEV,EAAoBgB,EAAI,SAAStB,GACX,oBAAXuB,QAA0BA,OAAOC,aAC1CN,OAAOC,eAAenB,EAASuB,OAAOC,YAAa,CAAEC,MAAO,WAE7DP,OAAOC,eAAenB,EAAS,aAAc,CAAEyB,OAAO,KAQvDnB,EAAoBoB,EAAI,SAASD,EAAOE,GAEvC,GADU,EAAPA,IAAUF,EAAQnB,EAAoBmB,IAC/B,EAAPE,EAAU,OAAOF,EACpB,GAAW,EAAPE,GAA8B,iBAAVF,GAAsBA,GAASA,EAAMG,WAAY,OAAOH,EAChF,IAAII,EAAKX,OAAOY,OAAO,MAGvB,GAFAxB,EAAoBgB,EAAEO,GACtBX,OAAOC,eAAeU,EAAI,UAAW,CAAET,YAAY,EAAMK,MAAOA,IACtD,EAAPE,GAA4B,iBAATF,EAAmB,IAAI,IAAIM,KAAON,EAAOnB,EAAoBQ,EAAEe,EAAIE,EAAK,SAASA,GAAO,OAAON,EAAMM,IAAQC,KAAK,KAAMD,IAC9I,OAAOF,GAIRvB,EAAoB2B,EAAI,SAAShC,GAChC,IAAIe,EAASf,GAAUA,EAAO2B,WAC7B,WAAwB,OAAO3B,EAAgB,SAC/C,WAA8B,OAAOA,GAEtC,OADAK,EAAoBQ,EAAEE,EAAQ,IAAKA,GAC5BA,GAIRV,EAAoBW,EAAI,SAASiB,EAAQC,GAAY,OAAOjB,OAAOkB,UAAUC,eAAe1B,KAAKuB,EAAQC,IAGzG7B,EAAoBgC,EAAI,GAIjBhC,EAAoBA,EAAoBiC,EAAI,I,oMCzErD,IAKqBC,EA0BnB,WAAYC,EAAkBC,EAAkBC,EAAcC,QAAgB,IAAhBA,MAAY,IACxEC,KAAKJ,SAAWA,EAChBI,KAAKH,SAAWA,EAChBG,KAAKF,KAAOA,EACZE,KAAKD,KAAOA,EACZJ,EAAMM,QAAQC,MAAd,YAAgCL,EAAhC,WAAmDC,EAAnD,KAA6DC,I,EA/B5CJ,E,WCVU,CAQ7BQ,YAAa,EAMbC,SAAU,I,EDJST,E,WEXU,CAE7BU,QAAS,EACTC,QAAS,EACTC,SAAU,I,EFOSZ,E,OGVE,CAIrBa,mBAAoB,IAKpBC,gBAAiB,KAKjBC,WAAY,KAKZC,QAAS,KAKTC,mBAAoB,KAKpBC,oBAAqB,KAKrBC,uBAAwB,KAKxBC,sBAAuB,KAKvBC,MAAO,IAKPC,aAAc,KAKdC,uBAAwB,KAMxBC,yBAA0B,IAK1BC,oBAAqB,KAKrBC,uBAAwB,O,EH5DL1B,E,UAiBG2B,YAtBG,W,kMIN3B,IAEqBC,E,WAwEnB,WAAYC,QAA0C,IAA1CA,MAA+B,IAAIC,KAAO,qBA1BR,CAC5CC,OAAO,EACPC,QAAS,EACTC,YAAa,IAuBuC,yBAd5B,GAexB5B,KAAKwB,QAAUA,E,2BASjBK,OAAA,SAAOC,GACL,OAAOA,EAAa,YAAc9B,KAAK+B,SAAW/B,KAAKgC,OAAS,WAAahC,KAAKgC,OAAS,K,EAQ7FC,cAAA,WAA8B,WACtBC,EAAU,IAAIC,SAAQ,SAACC,EAASC,GACpC,EAAKC,gBAAkB,CACrBF,UACAC,aAWJ,OARKrC,KAAKuC,KACRvC,KAAKsC,gBAAgBD,OACnB,IAAI1C,IAAMA,IAAM6C,SAASpC,SAAUT,IAAM8C,SAASpC,QAASV,IAAM+C,KAAK9B,mBAAoB,CACxF2B,IAAKvC,KAAKuC,OAIhBvC,KAAK2C,aACET,G,EAGTS,WAAA,WAAmB,WACbC,EAAU,IAAIC,eAClBD,EAAQE,mBAAqB,WAC3B,GAA2B,IAAvBF,EAAQG,YACa,MAAnBH,EAAQI,OACV,IACE,IAAMC,EAAWC,KAAKC,MAAMP,EAAQQ,cAGpC,OAFA,EAAKC,gBAAkB,EAAKC,oBAAoBV,GAEzC,EAAKN,gBAAgBF,QAAQa,GACpC,MAAO/C,GACP,EAAKoC,gBAAgBD,OACnB,EAAKkB,aAAaX,EAASjD,IAAM+C,KAAK7B,oBAAqB,CACzD2C,KAAMZ,EAAQQ,kBAO1BR,EAAQa,KAAKzD,KAAK0D,OAAQ1D,KAAKuC,IAAKvC,KAAK2D,YAAYjC,OACjD1B,KAAK2D,YAAYjC,OAAS1B,KAAK2D,YAAYhC,UAC7CiB,EAAQjB,QAAU3B,KAAK2D,YAAYhC,SAErC,IAAMiC,EAAcC,YAAYC,MAChClB,EAAQmB,UAAY,WAClB,EAAKC,aAAapB,EAASjD,IAAM+C,KAAK/B,QAAS,CAC7CgB,SAAUkC,YAAYC,MAAQF,GAAe,IAC7CK,WAAYrB,EAAQqB,cAGxBrB,EAAQsB,QAAUtB,EAAQuB,QAAU,WAClC,EAAKH,aAAapB,EAASjD,IAAM+C,KAAKhC,WAAY,CAChD8C,KAAMZ,EAAQQ,aACda,WAAYrB,EAAQqB,cAGxBjE,KAAKwB,QAAQ4C,SAAQ,SAACxF,EAAOM,GAC3B0D,EAAQyB,iBAAiBnF,EAAKN,MAEhCgE,EAAQ0B,KAAKtE,KAAKuE,S,EAGpBjB,oBAAA,SAAoBV,GAClB,OAAOA,EACJ4B,wBACAC,MAAM,MACNC,QAAO,SAAAC,GAAM,OAA4D,IAAxDA,EAAOC,cAAcC,QA9JP,U,EAiKpCb,aAAA,SAAapB,EAAyB9C,EAAcC,GAClD,IAAMG,EAAQF,KAAKuD,aAAaX,EAAS9C,EAAMC,GAK/C,GAJA6C,EAAQE,mBAAqB,aAC7BF,EAAQsB,QAAU,aAClBtB,EAAQmB,UAAY,aACpBnB,EAAQuB,QAAU,eACdnE,KAAK2D,YAAY/B,aAAe5B,KAAK8E,gBAAkB9E,KAAK2D,YAAY/B,aAI1E,OAAO5B,KAAKsC,gBAAgBD,OAAOnC,GAHnCF,KAAK8E,kBACL9E,KAAK2C,c,EAMTY,aAAA,SAAaX,EAAyB9C,EAAcC,GAMlD,OALA1B,OAAO0G,OAAOhF,EAAM,CAClBwC,IAAKvC,KAAKuC,IACVf,QAASxB,KAAKsD,oBAAoBV,GAClCoC,QAAShF,KAAK8E,kBAET,IAAInF,IAAMA,IAAM6C,SAASpC,SAAUT,IAAM8C,SAASpC,QAASP,EAAMC,I,mCCtJ5E,IAAIkF,EAAW,CACbzG,IAAK,iBAAO,CACV0G,QAAS,GACTC,MAAO,CAACvG,MAAO,GAAIV,KAAM,IACzB8C,MAAO,CAACpC,MAAO,GAAIV,KAAM,IACzBkH,KAAM,CAACxG,MAAO,GAAIV,KAAM,IACxBmH,IAAK,CAACzG,MAAO,GAAIV,KAAM,IACvBoH,KAAM,CAAC1G,MAAO,GAAIV,KAAM,IACxBqH,MAAO,CAAC3G,MAAO,GAAIV,KAAM,IACzBsH,KAAM,CAAC5G,MAAO,GAAIV,KAAM,IACxBuH,qBAAsB,aACtBC,MAAO,aACPC,WAAY,aACZzF,MAAO,aACP1B,IAAK,aACLoH,SAAU,aACVC,KAAM,aACNC,IAAK,aACLC,WAAY,aACZC,SAAU,aACVC,KAAM,aACNC,QAAS,aACTC,MAAO,aACPC,YAAa,aACbC,KAAM,gBAwBV,SAAS/E,EAAUpD,GAEjB,OAAO+G,EAASzG,IAAIN,GAsBPoD,O,6BCzGf,6CAEMgF,EAAwB,CAC5BxE,WAAY,uCACZyE,OAAQ,gCACRC,cAAe,CACbC,WAAY,QACZC,OAAQ,GAEVC,gBAAgB,EAChBC,qBAAqB,EACrBC,6BAA6B,GAGVC,E,kCACZC,IAAP,SAAWC,GACLA,GACF3I,OAAO0G,OAAOuB,EAAeU,I,EAI1BxI,IAAP,WACE,OAAOyI,YAAMX,I,mCCvBjB,sCAAMW,EAAQ,SAARA,EAAQlH,GACZ,IAAImH,EAkBJ,OAjBIC,MAAMC,QAAQrH,IAChBmH,EAAOnH,EAAKsH,OAAS,EAAItH,EAAKuH,MAAM,GAAK,IACpClD,SAAQ,SAACmD,EAAG5J,IACG,iBAAN4J,GAAkBA,IAAM,IAAQJ,MAAMC,QAAQG,IAAMA,EAAEF,OAAS,KACzEH,EAAKvJ,GAAKsJ,EAAMM,OAGK,iBAATxH,GAChBmH,EAAO7I,OAAO0G,OAAO,GAAIhF,GACzB1B,OAAOmJ,KAAKN,GAAM9C,SAAQ,SAAAlF,IACE,iBAAdgI,EAAKhI,IAAqBgI,EAAKhI,KAAS,IAAQiI,MAAMC,QAAQF,EAAKhI,KAASgI,EAAKhI,GAAKmI,OAAS,KACzGH,EAAKhI,GAAO+H,EAAMC,EAAKhI,SAI3BgI,EAAOnH,EAEFmH,I,qFClBYO,EAqBnB,SAAYxE,G,aAhBQ,G,EAgBU,c,EAAA,M,sFACA,wBAAxBA,EAASyE,YACX1H,KAAK2H,UAAW,EAChB3H,KAAKE,MAAQ,IAAI0H,EAAa3E,EAASnD,KAAMmD,EAAS4E,UAC7C5E,EAAS/C,OAAuC,wBAA9B+C,EAAS/C,MAAMwH,YAC1C1H,KAAK2H,UAAW,EAChB3H,KAAKE,MAAQ,IAAI0H,EAAa3E,EAAS/C,MAAMJ,KAAMmD,EAAS/C,MAAM2H,UAElE7H,KAAKD,KAAOkD,GAKZ2E,EAiBJ,SAAY9H,EAAc+H,GACxB7H,KAAKF,KAAOA,EACZE,KAAK6H,QAAUA,G,8PChDEC,E,2KAMe,I,oHAOlCC,IAAA,SAAInF,GAA8C,MAChD5C,KAAKgI,SAASC,KAAKrF,GACnB,IAAMsF,EAAgB,GAChBC,EAAqB,CAACpG,QAASa,EAAQb,QAASC,OAAQY,EAAQZ,QAItE,OAHA3D,OAAO0G,OAAOmD,IAAd,MAA+BlI,KAAKgI,SAASX,QAAShJ,OAAO0G,OAAOoD,EAAYvF,EAAQ2B,QAAxF,IACAlG,OAAO0G,OAAOmD,EAAelI,KAAKuE,QAClCvE,KAAKuE,OAAS2D,EACPlI,M,EASToI,QAAA,SAAQC,GAAgD,WACtD,OAAO,IAAIlG,SAAQ,SAACC,EAASC,GAC3B,IACE,EAAKkC,OAASrB,KAAKoF,UAAU,EAAK/D,QAClC,MAAOgE,GACPT,EAAoB7H,QAAQC,MAA5B,GAAqCqI,EAAIV,SACzCxF,EACE,IAAI1C,IAAMA,IAAM6C,SAASpC,SAAUT,IAAM8C,SAASlC,SAAUZ,IAAM+C,KAAK8F,uBAAwB,CAC7FtI,MAAOqI,EACPhE,OAAQ,EAAKA,UAInB,EAAKtC,gBAAgBwG,MACnB,SAAA1I,GACE,IAAM2I,EAAqB,IAAIC,EAAmB5I,EAAMsI,GACpDK,EAAmBE,QACrBxG,EAAQ,CACNZ,QAAS,EAAK6B,gBACdJ,SAAUyF,IAGZrG,EACE,IAAI1C,IAAMA,IAAM6C,SAASpC,SAAUT,IAAM8C,SAASpC,QAASV,IAAM+C,KAAK5B,uBAAwB,CAC5FyB,IAAK,EAAKA,IACVf,QAAS,EAAK6B,gBACdwF,QAASH,EAAmBG,cAKpC,SAAAN,GACElG,EAAOkG,U,GA7DgChH,K,EAA5BuG,E,UACFxG,YAAU,wBAmEtB,IAAMqH,EAiBX,WAAY1F,EAAkBoF,QAAsC,IAAtCA,OAAgC,GAAM,iBANpC,IAO9B,IAAMS,EAAS7F,EAAS6F,OAAS7F,EAAS6F,OAAS7F,EAE7C4F,GADc1B,MAAMC,QAAQ0B,GAAUA,EAAS,CAACA,IAC1BC,KAAI,SAAAD,GAAM,OAAI,IAAIrB,EAAcqB,MACtDE,EAAeH,EAAQnE,QAAO,SAAAuE,GAAa,OAAIA,EAActB,YAEnEqB,EAAa5E,SAAQ,SAAA6E,GACnBN,EAAmB1I,QAAQC,MAA3B,8CACgD+I,EAAc/I,MAAMJ,KADpE,iBACyFmJ,EAAc/I,MAAM2H,QAD7G,QAKF7H,KAAK6I,QAAUA,EACVR,GAAuBW,EAAa3B,QAAW2B,EAAa3B,SAAWrH,KAAK6I,QAAQxB,OACvFrH,KAAK4I,SAAU,GAEf5I,KAAK6I,QAAU7I,KAAK6I,QAAQnE,QAAO,SAAAuE,GAAa,OAAKA,EAActB,YACnE3H,KAAK4I,SAAU,I,EAlCRD,E,UACMrH,YAAU,wB,6BC3E7B,sCAAM4H,EAAQ,SAAAC,GACZ,IAAIzJ,EAAI,GACN0J,EAAW,QACXhC,EAAU,SAAUiC,GAClB,MAA+C,mBAAxChL,OAAOkB,UAAU+J,SAASxL,KAAKuL,IAExCtB,EAAM,SAAUwB,EAAGC,GACjBA,EAAiB,mBAANA,EAAmBA,IAAMA,QAAa,GAA4BA,EAC7E9J,EAAEA,EAAE2H,QAAUoC,mBAAmBF,GAAK,IAAME,mBAAmBD,IAiCnE,OA/BgB,SAAdE,EAAwBC,EAAQN,GAC9B,IAAI1L,EAAGiM,EAAK1K,EAEZ,GAAIyK,EACF,GAAIvC,EAAQiC,GACV,IAAK1L,EAAI,EAAGiM,EAAMP,EAAIhC,OAAQ1J,EAAIiM,EAAKjM,IACjCyL,EAASS,KAAKF,GAChB5B,EAAI4B,EAAQN,EAAI1L,IAEhB+L,EAAYC,EAAS,KAAyB,iBAAXN,EAAI1L,GAAkBA,EAAI,IAAK0L,EAAI1L,SAGrE,GAAI0L,GAAuB,oBAAhBS,OAAOT,GACvB,IAAKnK,KAAOmK,EACVK,EAAYC,EAAS,IAAMzK,EAAKmK,EAAInK,SAGtC6I,EAAI4B,EAAQN,QAET,GAAIjC,EAAQiC,GACjB,IAAK1L,EAAI,EAAGiM,EAAMP,EAAIhC,OAAQ1J,EAAIiM,EAAKjM,IACrCoK,EAAIsB,EAAI1L,GAAGO,KAAMmL,EAAI1L,GAAGiB,YAG1B,IAAKM,KAAOmK,EACVK,EAAYxK,EAAKmK,EAAInK,IAGzB,OAAOQ,EAGJgK,CAAY,GAAIP,GAAGY,KAAK,KAAKC,QAAQ,OAAQ,O,6BCxCtD,oDAKqBC,E,kCAUZC,gBAAP,SAAuBC,EAAuBC,EAAYC,GACxD,IAAMC,EAASxD,IAAiBtI,MAC1B+L,EAAYD,EAAO9D,cACzBnI,OAAO0G,OAAOwF,EAAW,CAACH,GAAIA,EAAII,UAAW,UAAYL,IACrDE,GACFhM,OAAO0G,OAAOwF,EAAW,CAACF,UAAWA,IAEvC,IAAM7I,EAA+B,IAAIC,IACzCD,EAAQuF,IAAI,eAAgB,oBAC5B,IAAM0D,EAAW,IAAI3C,IAAoBtG,GAKzC,OAJAiJ,EAAS/G,OAAS,OAClB+G,EAAS1I,QAvBgB,eAwBzB0I,EAASlI,IAAMkI,EAAS5I,OAAOyI,EAAOxI,YACtC2I,EAASlG,OAASgG,EACXE,G,6SCxBX,IAEqBC,E,sKAWZC,QAAP,SAAe7I,EAAoBsI,EAAYD,EAAuBS,GACpE,IAAML,EAAYzD,IAAiBtI,MAC7BgI,EAAgB,GACtBnI,OAAO0G,OAAOyB,EAAe+D,EAAU/D,cAAe,CAAC4D,GAAIA,EAAII,UAAW,UAAYL,GAAgBS,GACtG,IAAMhI,EAAU,IAAIrB,IAOpB,OANAqB,EAAQb,QAlBiB,QAmBzBa,EAAQZ,OAAS,UACjBY,EAAQc,OAAS,MACjBd,EAAQiI,IAAM,gBACdjI,EAAQ2B,OAASiC,EACjB5D,EAAQL,IAAMT,EAAa,YAAcc,EAAQb,QAAU,WAAaa,EAAQZ,OAAS,IAAMkH,YAAMtG,EAAQ2B,QACtG3B,G,GAtBkCqH,KCAvCa,EAAOC,iDACP7F,EAAU8F","file":"playkit-stats-service.js","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 if(typeof exports === 'object')\n\t\texports[\"stats\"] = factory();\n\telse\n\t\troot[\"playkit\"] = root[\"playkit\"] || {}, root[\"playkit\"][\"services\"] = root[\"playkit\"][\"services\"] || {}, root[\"playkit\"][\"services\"][\"stats\"] = factory();\n})(window, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 10);\n","//@flow\nimport 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 severity: number;\n category: number;\n code: number;\n data: any;\n /**\n * @enum {number}\n */\n static Severity: SeverityType = Severity;\n /**\n * @enum {number}\n */\n static Category: CategoryType = Category;\n /**\n * @enum {number}\n */\n static Code: CodeType = Code;\n 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","//@flow\n\ntype 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","//@flow\ntype 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","//@flow\n\ntype 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 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","//@flow\nimport Error from './error/error';\n\nconst KALTURA_HEADER_PREFIX: string = 'x-';\n\nexport default class RequestBuilder {\n /**\n * @member - Service name\n * @type {string}\n */\n service: string;\n /**\n * @member - Service action\n * @type {string}\n */\n action: string;\n /**\n * @member - Service params\n * @type {any}\n */\n params: any;\n /**\n * @memberof - Service headers\n * @type {Map<string, string>}\n */\n headers: Map<string, string>;\n /**\n * @memberof - Service URL\n * @type {string}\n */\n url: string;\n /**\n * @memberof - Service method (POST,GET,DELETE etc..)\n * @type {string}\n */\n method: string;\n /**\n * @memberof - Service tag\n * @type {string}\n */\n tag: string;\n /**\n * @memberof - the response headers of the arra\n * @type {Array<string>}\n */\n responseHeaders: Array<string>;\n /**\n * @description network retry configuration\n * @memberof RequestBuilder\n * @type {ProviderNetworkRetryParameters}\n */\n 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 _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 _requestPromise: Object;\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 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 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 _createXHR(): void {\n let request = new XMLHttpRequest();\n request.onreadystatechange = () => {\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 = () => {\n this._handleError(request, Error.Code.TIMEOUT, {\n timeout: (performance.now() - requestTime) / 1000,\n statusText: request.statusText\n });\n };\n request.onerror = request.onabort = () => {\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 _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 _handleError(request: XMLHttpRequest, code: number, data: Object): Promise<*> | void {\n const error = this._createError(request, code, data);\n request.onreadystatechange = function () {};\n request.onerror = function () {};\n request.ontimeout = function () {};\n request.onabort = function () {};\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 _createError(request: XMLHttpRequest, code: number, data: Object): 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","//@flow\nexport 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: Function,\n debug: Function,\n enabledFor: Function,\n error: Function,\n get: Function,\n getLevel: Function,\n info: Function,\n log: Function,\n setHandler: Function,\n setLevel: Function,\n time: Function,\n timeEnd: Function,\n trace: Function,\n useDefaults: Function,\n warn: Function\n};\n\nexport type LoggerType = {\n getLogger: loggerFunctionType,\n LogLevel: LogLevelType\n};\n\nlet JsLogger = {\n get: () => ({\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: () => {},\n debug: () => {},\n enabledFor: () => {},\n error: () => {},\n get: () => {},\n getLevel: () => {},\n info: () => {},\n log: () => {},\n setHandler: () => {},\n setLevel: () => {},\n time: () => {},\n timeEnd: () => {},\n trace: () => {},\n useDefaults: () => {},\n warn: () => {}\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): Object {\n //$FlowFixMe\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};\n","//@flow\nimport {clone} from '../../util/clone';\n\nconst defaultConfig: Object = {\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 static set(clientConfig?: ProviderEnvConfigObject) {\n if (clientConfig) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n static get(): Object {\n return clone(defaultConfig);\n }\n}\n\nexport {OVPConfiguration};\n","const clone = data => {\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' && e !== {}) || (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' && node[key] !== {}) || (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","//@flow\nexport default class ServiceResult {\n /**\n * @member - Is service returned an error\n * @type {boolean}\n */\n hasError: boolean = false;\n /**\n * @member - The service error\n * @type {ServiceError}\n */\n error: ServiceError;\n /**\n * @member - The service result data\n * @type {Object}\n */\n data: Object;\n\n /**\n * @constructor\n * @param {Object} response - Service response\n */\n constructor(response: Object) {\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 code: string;\n /**\n * @member - The error message\n * @type {string}\n */\n 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","//@flow\nimport 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 static _logger = getLogger('MultiRequestBuilder');\n /**\n * @memberof - MultiRequestBuilder\n * @type {Array<RequestBuilder>}\n */\n 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 add(request: RequestBuilder): MultiRequestBuilder {\n this.requests.push(request);\n const requestParams = {};\n const serviceDef: Object = {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 execute(requestsMustSucceed?: boolean): Promise<Object> {\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 static _logger = getLogger('MultiRequestResult');\n /**\n * @memberof MultiRequestResult\n * @type {boolean}\n */\n success: boolean;\n /**\n * @memberof MultiRequestResult\n * @type {Object}\n */\n 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: Object, 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","const param = a => {\n let s = [],\n rbracket = /\\[\\]$/,\n isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n },\n add = function (k, v) {\n v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v;\n s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v);\n },\n buildParams = function (prefix, obj) {\n let i, len, key;\n\n if (prefix) {\n if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n if (rbracket.test(prefix)) {\n add(prefix, obj[i]);\n } else {\n buildParams(prefix + ':' + (typeof obj[i] === 'object' ? i : ''), obj[i]);\n }\n }\n } else if (obj && String(obj) === '[object Object]') {\n for (key in obj) {\n buildParams(prefix + ':' + key, obj[key]);\n }\n } else {\n add(prefix, obj);\n }\n } else if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n add(obj[i].name, obj[i].value);\n }\n } else {\n for (key in obj) {\n buildParams(key, obj[key]);\n }\n }\n return s;\n };\n\n return buildParams('', a).join('&').replace(/%20/g, '+');\n};\n\nexport {param};\n","//@flow\nimport 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 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","//@flow\nimport OVPService from '../ovp-service';\nimport RequestBuilder from '../../../../util/request-builder';\nimport OVPConfiguration from '../../config';\nimport {param} from '../../../../util/param';\n\nconst SERVICE_NAME: string = 'stats';\n\nexport default class OVPStatsService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for stats.collect\n * @function collect\n * @param {string} serviceUrl - The service base url\n * @param {string} ks - The ks\n * @param {string} playerVersion - The player version\n * @param {Object} event - The event data\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n static collect(serviceUrl: string, ks: string, playerVersion: string, event: Object): RequestBuilder {\n const ovpParams = OVPConfiguration.get();\n const serviceParams = {};\n Object.assign(serviceParams, ovpParams.serviceParams, {ks: ks, clientTag: 'html5:v' + playerVersion}, event);\n const request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = 'collect';\n request.method = 'GET';\n request.tag = 'stats-collect';\n request.params = serviceParams;\n request.url = serviceUrl + '?service=' + request.service + '&action=' + request.action + '&' + param(request.params);\n return request;\n }\n}\n","// @flow\nimport RequestBuilder from '../../../../util/request-builder';\nimport OVPConfiguration from '../../config';\nimport OVPStatsService from './stats-service';\n\ndeclare var __VERSION__: string;\ndeclare var __NAME__: string;\n\nconst NAME = __NAME__ + '-stats-service';\nconst VERSION = __VERSION__;\n\nexport {OVPStatsService, OVPConfiguration, RequestBuilder, NAME, VERSION};\n"],"sourceRoot":""}
1
+ {"version":3,"file":"playkit-stats-service.js","mappings":"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","sources":["webpack://@playkit-js/playkit-js-providers/webpack/universalModuleDefinition","webpack://@playkit-js/playkit-js-providers/webpack/bootstrap","webpack://@playkit-js/playkit-js-providers/webpack/runtime/define property getters","webpack://@playkit-js/playkit-js-providers/webpack/runtime/hasOwnProperty shorthand","webpack://@playkit-js/playkit-js-providers/webpack/runtime/make namespace object","webpack://@playkit-js/playkit-js-providers/./src/util/logger.ts","webpack://@playkit-js/playkit-js-providers/./src/util/error/severity.ts","webpack://@playkit-js/playkit-js-providers/./src/util/error/code.ts","webpack://@playkit-js/playkit-js-providers/./src/util/error/category.ts","webpack://@playkit-js/playkit-js-providers/./src/util/error/error.ts","webpack://@playkit-js/playkit-js-providers/./src/util/request-builder.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/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/services/stats/stats-service.ts","webpack://@playkit-js/playkit-js-providers/./src/util/param.ts","webpack://@playkit-js/playkit-js-providers/./src/k-provider/ovp/services/stats/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})(globalThis, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (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 = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export 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","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 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 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","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","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","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","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) {\n Object.assign(defaultConfig, clientConfig);\n }\n }\n\n public static get(): any {\n return clone(defaultConfig);\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","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","import OVPService from '../ovp-service';\nimport RequestBuilder from '../../../../util/request-builder';\nimport OVPConfiguration from '../../config';\nimport {param} from '../../../../util/param';\n\nconst SERVICE_NAME: string = 'stats';\n\nexport default class OVPStatsService extends OVPService {\n /**\n * Creates an instance of RequestBuilder for stats.collect\n * @function collect\n * @param {string} serviceUrl - The service base url\n * @param {string} ks - The ks\n * @param {string} playerVersion - The player version\n * @param {Object} event - The event data\n * @returns {RequestBuilder} - The request builder\n * @static\n */\n public static collect(serviceUrl: string, ks: string, playerVersion: string, event: any): RequestBuilder {\n const ovpParams = OVPConfiguration.get();\n const serviceParams = {};\n Object.assign(serviceParams, ovpParams.serviceParams, {ks: ks, clientTag: 'html5:v' + playerVersion}, event);\n const request = new RequestBuilder();\n request.service = SERVICE_NAME;\n request.action = 'collect';\n request.method = 'GET';\n request.tag = 'stats-collect';\n request.params = serviceParams;\n request.url = serviceUrl + '?service=' + request.service + '&action=' + request.action + '&' + param(request.params);\n return request;\n }\n}\n","const param = (a): any => {\n const s: string[] = [],\n rbracket = /\\[\\]$/,\n isArray = function (obj): boolean {\n return Object.prototype.toString.call(obj) === '[object Array]';\n },\n add = function (k, v): any {\n v = typeof v === 'function' ? v() : v === null ? '' : v === undefined ? '' : v;\n s[s.length] = encodeURIComponent(k) + '=' + encodeURIComponent(v);\n },\n buildParams = function (prefix, obj): any {\n let i, len, key;\n\n if (prefix) {\n if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n if (rbracket.test(prefix)) {\n add(prefix, obj[i]);\n } else {\n buildParams(prefix + ':' + (typeof obj[i] === 'object' ? i : ''), obj[i]);\n }\n }\n } else if (obj && String(obj) === '[object Object]') {\n for (key in obj) {\n buildParams(prefix + ':' + key, obj[key]);\n }\n } else {\n add(prefix, obj);\n }\n } else if (isArray(obj)) {\n for (i = 0, len = obj.length; i < len; i++) {\n add(obj[i].name, obj[i].value);\n }\n } else {\n for (key in obj) {\n buildParams(key, obj[key]);\n }\n }\n return s;\n };\n\n return buildParams('', a).join('&').replace(/%20/g, '+');\n};\n\nexport {param};\n","import RequestBuilder from '../../../../util/request-builder';\nimport OVPConfiguration from '../../config';\nimport OVPStatsService from './stats-service';\n\ndeclare let __VERSION__: string;\ndeclare let __NAME__: string;\n\nconst NAME = __NAME__ + '-stats-service';\nconst VERSION = __VERSION__;\n\nexport {OVPStatsService, OVPConfiguration, RequestBuilder, NAME, VERSION};\n"],"names":["root","factory","exports","module","define","amd","a","i","globalThis","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","JsLogger","VERSION","DEBUG","name","ERROR","INFO","OFF","TIME","TRACE","WARN","createDefaultHandler","debug","enabledFor","error","getLevel","info","log","setHandler","setLevel","time","timeEnd","trace","useDefaults","warn","Severity","RECOVERABLE","CRITICAL","Code","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","MISSING_MANDATORY_PARAMS","MISSING_PLAY_SOURCE","METHOD_NOT_IMPLEMENTED","Category","NETWORK","SERVICE","PROVIDER","Error","getLogger","constructor","severity","category","code","data","this","_logger","RequestBuilder","retryConfig","async","timeout","maxAttempts","_attemptCounter","headers","Map","getUrl","serviceUrl","service","action","doHttpRequest","promise","Promise","resolve","reject","_requestPromise","url","_createXHR","request","XMLHttpRequest","onreadystatechange","readyState","status","response","JSON","parse","responseText","responseHeaders","_getResponseHeaders","_createError","text","open","method","requestTime","performance","now","ontimeout","_handleError","statusText","onerror","onabort","forEach","setRequestHeader","send","params","getAllResponseHeaders","split","filter","header","toLowerCase","indexOf","assign","attempt","clone","node","Array","isArray","length","slice","e","keys","defaultConfig","cdnUrl","serviceParams","apiVersion","format","useApiCaptions","loadThumbnailWithKs","replaceHostOnlyManifestUrls","OVPConfiguration","set","clientConfig","ServiceResult","hasError","objectType","ServiceError","message","MultiRequestBuilder","requests","add","push","requestParams","serviceDef","execute","requestsMustSucceed","stringify","err","FAILED_PARSING_REQUEST","then","multiRequestResult","MultiRequestResult","success","results","result","map","errorResults","serviceResult","OVPService","getMultiRequest","playerVersion","ks","partnerId","config","ovpParams","clientTag","multiReq","OVPStatsService","collect","event","tag","s","rbracket","toString","k","v","encodeURIComponent","buildParams","prefix","len","test","String","join","replace","param","NAME","__NAME__","__VERSION__"],"sourceRoot":""}
@@ -0,0 +1,11 @@
1
+ // This file is read by tools that parse documentation comments conforming to the TSDoc standard.
2
+ // It should be published with your NPM package. It should not be tracked by Git.
3
+ {
4
+ "tsdocVersion": "0.12",
5
+ "toolPackages": [
6
+ {
7
+ "packageName": "@microsoft/api-extractor",
8
+ "packageVersion": "7.38.5"
9
+ }
10
+ ]
11
+ }
@@ -1,5 +1,5 @@
1
1
  // @flow
2
- import ImageSource from "../../src/entities/image-source";
2
+ import ImageSource from '../../src/entities/image-source';
3
3
 
4
4
  declare type ProviderMediaConfigSourcesObject = {
5
5
  dash: Array<ProviderMediaSourceObject>,
@@ -1,5 +1,5 @@
1
1
  // @flow
2
- import ImageSource from "../../src/entities/image-source";
2
+ import ImageSource from '../../src/entities/image-source';
3
3
 
4
4
  declare type ProviderMediaSourcesObject = {
5
5
  progressive: Array<ProviderMediaSourceObject>,
package/package.json CHANGED
@@ -1,59 +1,61 @@
1
1
  {
2
2
  "name": "@playkit-js/playkit-js-providers",
3
- "version": "2.40.1",
3
+ "version": "2.41.0-canary.0-2452bbc",
4
4
  "description": "",
5
+ "types": "./dist/index.d.ts",
6
+ "files": [
7
+ "dist/**/*",
8
+ "src/**/*",
9
+ "flow-typed/**/*",
10
+ "playkit-analytics-service/*",
11
+ "playkit-bookmark-service/*",
12
+ "playkit-ott-provider/*",
13
+ "playkit-ovp-provider/*",
14
+ "playkit-stats-service/*"
15
+ ],
16
+ "exports": {
17
+ "./playkit-ovp-provider": "./dist/playkit-ovp-provider.js",
18
+ "./playkit-ott-provider": "./dist/playkit-ott-provider.js",
19
+ "./playkit-analytics-service": "./dist/playkit-analytics-service.js",
20
+ "./playkit-stats-service": "./dist/playkit-stats-service.js",
21
+ "./playkit-bookmark-service": "./dist/playkit-bookmark-service.js"
22
+ },
5
23
  "scripts": {
6
- "clean": "rm -rf ./dist",
7
- "prebuild": "npm run clean",
8
- "build": "webpack --mode production",
9
- "dev": "webpack-dev-server --mode development",
10
- "watch": "webpack --progress --colors --watch --mode development",
24
+ "serve": "webpack serve --open --mode=development",
25
+ "build:dev": "webpack --mode=development",
26
+ "build:prod": "webpack --mode=production --node-env=production",
27
+ "build": "yarn run build:prod && yarn run build:types",
28
+ "build:types": "tsc --build tsconfig-lib.json && mkdir -p lib && api-extractor run --local",
29
+ "type-check": "tsc --noEmit",
30
+ "type-check:watch": "npm run type-check -- --watch",
31
+ "watch": "webpack --mode=development --watch",
11
32
  "test": "NODE_ENV=test karma start --color --mode development",
12
33
  "test:watch": "NODE_ENV=test karma start --browsers=Chrome --single-run=false --auto-watch",
13
34
  "release": "standard-version",
14
35
  "pushTaggedRelease": "git push --follow-tags --no-verify origin master",
15
- "eslint": "eslint . --color",
16
- "flow": "flow check",
17
- "commit:dist": "git add --force --all dist && (git commit -m 'chore: update dist' || exit 0)",
18
- "precommit": "lint-staged",
36
+ "lint": "eslint src/ --ext .js --ext .ts",
37
+ "lint:fix": "yarn run lint -- --fix",
19
38
  "prettier:fix": "prettier --write ."
20
39
  },
21
- "lint-staged": {
22
- "*.{js,jsx}": [
23
- "eslint --fix",
24
- "git add"
25
- ],
26
- "*.{json,md,scss}": [
27
- "prettier --write",
28
- "git add"
29
- ]
30
- },
31
40
  "devDependencies": {
41
+ "@microsoft/api-extractor": "^7.38.0",
32
42
  "@babel/cli": "^7.10.1",
33
- "@babel/core": "^7.10.2",
34
- "@babel/plugin-proposal-class-properties": "^7.10.1",
35
- "@babel/plugin-transform-flow-strip-types": "^7.10.1",
36
- "@babel/preset-env": "^7.10.2",
37
- "@babel/preset-flow": "^7.10.1",
38
- "@babel/register": "^7.10.1",
43
+ "@babel/core": "^7.21.8",
44
+ "@babel/preset-typescript": "^7.22.15",
45
+ "typescript": "^5.2.2",
46
+ "@babel/plugin-transform-runtime": "^7.22.15",
47
+ "@babel/preset-env": "^7.21.5",
39
48
  "babel-eslint": "^10.1.0",
40
- "babel-loader": "^8.1.0",
41
- "babel-plugin-istanbul": "^6.0.0",
49
+ "babel-loader": "^9.1.2",
42
50
  "chai": "^4.2.0",
43
- "clone": "^2.1.2",
44
- "conventional-github-releaser": "3.1.3",
45
- "cross-env": "^7.0.2",
46
- "eslint": "^7.4.0",
51
+ "eslint": "8.22.0",
52
+ "@typescript-eslint/eslint-plugin": "^6.7.2",
53
+ "@typescript-eslint/parser": "^6.7.2",
47
54
  "eslint-config-prettier": "^6.11.0",
48
- "eslint-loader": "^4.0.2",
49
- "eslint-plugin-flowtype": "^5.2.0",
50
55
  "eslint-plugin-import": "^2.22.0",
51
56
  "eslint-plugin-mocha-no-only": "^1.1.0",
52
57
  "eslint-plugin-prettier": "^3.1.4",
53
- "flow-bin": "^0.129.0",
54
- "husky": "^4.2.5",
55
- "istanbul": "^0.4.5",
56
- "karma": "^5.1.0",
58
+ "karma": "^6.4.2",
57
59
  "karma-chai": "^0.1.0",
58
60
  "karma-chrome-launcher": "^3.1.0",
59
61
  "karma-cli": "^2.0.0",
@@ -64,8 +66,7 @@
64
66
  "karma-mocha-reporter": "^2.2.5",
65
67
  "karma-safari-launcher": "^1.0.0",
66
68
  "karma-sourcemap-loader": "^0.3.7",
67
- "karma-webpack": "^4.0.2",
68
- "lint-staged": "^10.2.11",
69
+ "karma-webpack": "^5.0.0",
69
70
  "mocha": "^8.0.1",
70
71
  "mocha-cli": "^1.0.1",
71
72
  "pre-push": "^0.1.1",
@@ -73,12 +74,14 @@
73
74
  "sinon": "^9.0.2",
74
75
  "sinon-chai": "^3.5.0",
75
76
  "standard-version": "^6.0.1",
76
- "uglifyjs-webpack-plugin": "^2.2.0",
77
- "webpack": "^4.43.0",
78
- "webpack-cli": "^3.3.12",
79
- "webpack-dev-server": "^3.11.0",
80
- "regenerator-runtime": "^0.13.11"
77
+ "webpack": "^5.83.1",
78
+ "webpack-cli": "^5.1.1",
79
+ "webpack-dev-server": "^4.15.0",
80
+ "@playkit-js/browserslist-config": "^1.0.5"
81
81
  },
82
+ "browserslist": [
83
+ "extends @playkit-js/browserslist-config"
84
+ ],
82
85
  "keywords": [],
83
86
  "license": "AGPL-3.0",
84
87
  "dependencies": {},
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "@playkit-js/playkit-js-providers/playkit-analytics-service",
3
+ "main": "../dist/playkit-analytics-service.js",
4
+ "sideEffects": false
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "@playkit-js/playkit-js-providers/playkit-bookmark-service",
3
+ "main": "../dist/playkit-bookmark-service.js",
4
+ "sideEffects": false
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "@playkit-js/playkit-js-providers/playkit-ott-provider",
3
+ "main": "../dist/playkit-ott-provider.js",
4
+ "sideEffects": false
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "@playkit-js/playkit-js-providers/playkit-ovp-provider",
3
+ "main": "../dist/playkit-ovp-provider.js",
4
+ "sideEffects": false
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "name": "@playkit-js/playkit-js-providers/playkit-stats-service",
3
+ "main": "../dist/playkit-stats-service.js",
4
+ "sideEffects": false
5
+ }
@@ -0,0 +1,21 @@
1
+ export default class Bumper {
2
+ /**
3
+ * @member - bumper url
4
+ * @type {string}
5
+ */
6
+ public url: string;
7
+ /**
8
+ * @member - bumper click through url
9
+ * @type {string}
10
+ */
11
+ public clickThroughUrl: string;
12
+
13
+ /**
14
+ * @constructor
15
+ * @param {Object} data - The bumper response
16
+ */
17
+ constructor(data: any) {
18
+ this.url = data.url;
19
+ this.clickThroughUrl = data.clickThroughUrl;
20
+ }
21
+ }
@@ -0,0 +1,47 @@
1
+ import {ProviderDrmDataObject} from '../types';
2
+
3
+ export default class Drm {
4
+ /**
5
+ * @member - license url
6
+ * @type {string}
7
+ */
8
+ public licenseUrl: string;
9
+ /**
10
+ * @member - drm scheme
11
+ * @type {string}
12
+ */
13
+ public scheme: string;
14
+
15
+ /**
16
+ * @member - drm certificate
17
+ * @type {string}
18
+ */
19
+ public certificate?: string;
20
+
21
+ /**
22
+ * @constructor
23
+ * @param {string} licenseUrl - the license url
24
+ * @param {string} scheme - the drm scheme
25
+ * @param {?string} certificate - the drm certificate
26
+ */
27
+ constructor(licenseUrl: string, scheme: string, certificate?: string) {
28
+ this.licenseUrl = licenseUrl;
29
+ this.scheme = scheme;
30
+ if (certificate) {
31
+ this.certificate = certificate;
32
+ }
33
+ }
34
+
35
+ /**
36
+ * Convert class to native js object.
37
+ * @returns {ProviderDrmDataObject} - The json class object.
38
+ */
39
+ public toJSON(): ProviderDrmDataObject {
40
+ const response: ProviderDrmDataObject = {
41
+ licenseUrl: this.licenseUrl,
42
+ scheme: this.scheme
43
+ };
44
+ if (this.certificate) response.certificate = this.certificate;
45
+ return response;
46
+ }
47
+ }
@@ -0,0 +1,13 @@
1
+ import MediaEntry from '../entities/media-entry';
2
+
3
+ export default class EntryList {
4
+ /**
5
+ * @member - entry list items
6
+ * @type {Array<MediaEntry>}
7
+ */
8
+ public items: Array<MediaEntry>;
9
+
10
+ constructor() {
11
+ this.items = [];
12
+ }
13
+ }
@@ -0,0 +1,36 @@
1
+ const BASE_THUMBNAIL_URL_TEMPLATE = '.+entry_id/[a-zA-Z0-9_]+/';
2
+
3
+ export default class ImageSource {
4
+ /**
5
+ * @member - media source id
6
+ * @type {string}
7
+ */
8
+ public id: string;
9
+ /**
10
+ * @member - media source url
11
+ * @type {string}
12
+ */
13
+ public url: string;
14
+ /**
15
+ * @member - media source mimetype
16
+ * @type {string}
17
+ */
18
+ public mimetype: string;
19
+
20
+ constructor(entry: any) {
21
+ this.id = entry.id;
22
+ this.url = ImageSource.extractBaseThumbnailUrl(entry.dataUrl);
23
+ this.mimetype = '';
24
+ }
25
+
26
+ /**
27
+ * Extract the base thumbnail url.
28
+ * @param {string} url - dataUrl.
29
+ * @returns {string} - The base thumbnail url.
30
+ */
31
+ public static extractBaseThumbnailUrl(url: string): string {
32
+ return url.match(BASE_THUMBNAIL_URL_TEMPLATE)![0].slice(0, -1);
33
+ }
34
+ }
35
+
36
+ export {ImageSource}