diff --git a/.gitignore b/.gitignore old mode 100755 new mode 100644 index b8d4d65..8f1bf62 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# MacOS +.DS_Store + # Logs logs *.log @@ -32,13 +35,11 @@ jspm_packages # Optional npm cache directory .npm +.npmrc # Optional REPL history .node_repl_history -#VSCode configuration -.vscode - .idea -/dist/ +dist/ diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000..51f896b --- /dev/null +++ b/.npmignore @@ -0,0 +1,50 @@ +# MacOS +.DS_Store + # Logs +logs +*.log +npm-debug.log* + # Runtime data +pids +*.pid +*.seed + # Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + # Coverage directory used by tools like istanbul +coverage + # nyc test coverage +.nyc_output + # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + # node-waf configuration +.lock-wscript + # Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + # Dependency directories +node_modules +jspm_packages + # Optional npm cache directory +.npm + # Optional REPL history +.node_repl_history + .idea + .git +.gitattributes +.gitignore +.github +flow-typed +.prettierignore +.prettierrc +.travis.yml + docs/ +scripts/ +src/ +test/ +.babelrc +.editorconfig +.eslintignore +.eslintrc.json +.flowconfig +.nmprc +webpack.config.js +karma.conf.js diff --git a/.travis.yml b/.travis.yml old mode 100755 new mode 100644 index 00dd5ac..c48d288 --- a/.travis.yml +++ b/.travis.yml @@ -1,24 +1,79 @@ +conditions: v1 sudo: required dist: trusty language: node_js node_js: - "node" +addons: + chrome: stable + cache: yarn: true directories: - node_modules before_install: - - export CHROME_BIN=/usr/bin/google-chrome - export DISPLAY=:99.0 - sh -e /etc/init.d/xvfb start - - sudo apt-get update - - sudo apt-get install -y libappindicator1 fonts-liberation - - wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - - sudo dpkg -i google-chrome*.deb + - chmod +x ./scripts/travis.sh + +script: ./scripts/travis.sh + +stages: + - Tests + - Release canary + - Release -script: -- npm run eslint -- npm run flow -- npm run test +jobs: + fast_finish: true + include: + # https://docs.travis-ci.com/user/build-stages/deploy-github-releases/ + - stage: Release + name: "Releasing a new version" + if: tag IS present + env: TRAVIS_MODE=release + deploy: + - provider: releases + api_key: + secure: $GH_TOKEN + file_glob: true + file: dist/* + prerelease: true + skip_cleanup: true + on: + branch: master + tags: true + - provider: npm + api_key: $NPM_TOKEN + email: $NPM_EMAIL + skip_cleanup: true + on: + tags: true + branch: master + # publish canary package if on master + - stage: Release canary + if: (branch = master) AND (type != pull_request) AND commit_message !~ /^chore\(release\)/ + env: TRAVIS_MODE=releaseCanary + deploy: + provider: npm + api_key: $NPM_TOKEN + email: $NPM_EMAIL + skip_cleanup: true + tag: canary + on: + tags: false + branch: master + # Required tests + - stage: Tests + if: (branch = master) OR (tag IS present) OR (type = pull_request) + name: "Running lint" + env: TRAVIS_MODE=lint + - stage: Tests + if: (branch = master) OR (tag IS present) OR (type = pull_request) + name: "Running Flow type check" + env: TRAVIS_MODE=flow + - stage: Tests + if: (branch = master) OR (tag IS present) OR (type = pull_request) + name: "Running unit tests" + env: TRAVIS_MODE=unitTests diff --git a/dist/playkit-kanalytics.js b/dist/playkit-kanalytics.js deleted file mode 100644 index 9ae9dc2..0000000 --- a/dist/playkit-kanalytics.js +++ /dev/null @@ -1,7 +0,0 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("playkit-js")):"function"==typeof define&&define.amd?define(["playkit-js"],t):"object"==typeof exports?exports.kanalytics=t(require("playkit-js")):(e.playkit=e.playkit||{},e.playkit.kanalytics=t(e.playkit.core))}(this,function(e){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=1)}([function(t,n){t.exports=e},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NAME=t.VERSION=void 0;var r=n(0),o=n(2),i=function(e){return e&&e.__esModule?e:{default:e}}(o);t.default=i.default,t.VERSION="0.9.1",t.NAME="playkit-js-kanalytics";(0,r.registerPlugin)("kanalytics",i.default)},function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}Object.defineProperty(t,"__esModule",{value:!0});var s=function(){function e(e,t){for(var n=0;n=.25&&(this._timePercentEvent.PLAY_REACHED_25=!0,this._sendAnalytics(f.default.PLAY_REACHED_25)),!this._timePercentEvent.PLAY_REACHED_50&&e>=.5&&(this._timePercentEvent.PLAY_REACHED_50=!0,this._sendAnalytics(f.default.PLAY_REACHED_50)),!this._timePercentEvent.PLAY_REACHED_75&&e>=.75&&(this._timePercentEvent.PLAY_REACHED_75=!0,this._sendAnalytics(f.default.PLAY_REACHED_75)),!this._timePercentEvent.PLAY_REACHED_100&&e>=1&&(this._timePercentEvent.PLAY_REACHED_100=!0,this._sendAnalytics(f.default.PLAY_REACHED_100))}}},{key:"_sendAnalytics",value:function(e){var t=this;if(this._validate()){var n=new p.default(e);n.currentPoint=this.player.currentTime,n.duration=this.player.duration,n.seek=this._hasSeeked,Object.assign(n,this._playerParams);var r={event:n,hasKanalony:this.config.hasKanalony};l.OVPStatsService.collect(this.config.serviceUrl,this._ks,this.config.playerVersion,r).doHttpRequest().then(function(){t.logger.debug("Analytics event sent ",n)},function(e){t.logger.error("Failed to send analytics event ",n,e)})}}},{key:"_validate",value:function(){return this.config.partnerId?!!this.config.entryId||(this._logMissingParam("entryId"),!1):(this._logMissingParam("partnerId"),!1)}},{key:"_logMissingParam",value:function(e){this.logger.warn("block report because of missing param "+e)}},{key:"_playerParams",get:function(){return this._ks=this.config.ks,{clientVer:this.config.playerVersion,entryId:this.config.entryId,sessionId:this.config.sessionId,uiConfId:this.config.uiConfId||0,partnerId:this.config.partnerId,widgetId:this.config.partnerId?"_"+this.config.partnerId:"",referrer:this.config.referrer}}}]),t}(u.BasePlugin);y.defaultConfig={serviceUrl:"//stats.kaltura.com/api_v3/index.php",hasKanalony:!1},t.default=y},function(e,t,n){!function(t,n){e.exports=n()}(0,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p="",t(t.s=16)}([function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var o="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:new Map;r(this,e),this.headers=t}return i(e,[{key:"getUrl",value:function(e){return e+"/service/"+this.service+(this.action?"/action/"+this.action:"")}},{key:"doHttpRequest",value:function(){var e=this;if(!this.url)throw new Error("serviceUrl is mandatory for request builder");var t=new XMLHttpRequest;return new Promise(function(n,r){t.onreadystatechange=function(){if(4===t.readyState)if(200===t.status){var e=void 0;try{e=JSON.parse(t.responseText)}catch(e){return r(e.message+", "+t.responseText)}e&&"object"===(void 0===e?"undefined":o(e))&&e.code&&e.message?r(e):n(e)}else r(t.responseText)},t.open(e.method,e.url),e.headers.forEach(function(e,n){t.setRequestHeader(n,e)}),t.send(e.params)})}}]),e}();t.default=a},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.OVPConfiguration=void 0;var o=function(){function e(e,t){for(var n=0;n.")})})}}]),t}(c.default);h._logger=(0,d.default)("MultiRequestBuilder"),t.default=h;var v=t.MultiRequestResult=function e(t){var n=this;i(this,e),this.results=[],this.success=!0,(t.result?t.result:t).forEach(function(t){var r=new y.default(t);if(n.results.push(r),r.hasError)return e._logger.error("Service returned an error with error code: "+r.error.code+" and message: "+r.error.message+"."),void(n.success=!1)})};v._logger=(0,d.default)("MultiRequestResult")},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},o=function e(t){var n=void 0;return Array.isArray(t)?(n=t.length>0?t.slice(0):[],n.forEach(function(t,o){("object"===(void 0===t?"undefined":r(t))&&t!=={}||Array.isArray(t)&&t.length>0)&&(n[o]=e(t))})):"object"===(void 0===t?"undefined":r(t))?(n=Object.assign({},t),Object.keys(n).forEach(function(t){("object"===r(n[t])&&n[t]!=={}||Array.isArray(n[t])&&n[t].length>0)&&(n[t]=e(n[t]))})):n=t,n};t.clone=o},function(e,t,n){"use strict";function r(e){return e?s.get(e):s}function o(e){return r(e).getLevel()}function i(e,t){r(t).setLevel(e)}Object.defineProperty(t,"__esModule",{value:!0}),t.setLogLevel=t.getLogLevel=t.LogLevel=void 0;var a=n(6),s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(a),u={DEBUG:s.DEBUG,INFO:s.INFO,TIME:s.TIME,WARN:s.WARN,ERROR:s.ERROR,OFF:s.OFF};s.useDefaults({defaultLevel:s.ERROR}),t.default=r,t.LogLevel=u,t.getLogLevel=o,t.setLogLevel=i},function(e,t,n){var r,o;/*! - * js-logger - http://github.com/jonnyreeves/js-logger - * Jonny Reeves, http://jonnyreeves.co.uk/ - * js-logger may be freely distributed under the MIT license. - */ -!function(i){"use strict";var a={};a.VERSION="1.4.1";var s,u={},l=function(e,t){return function(){return t.apply(e,arguments)}},c=function(){var e,t,n=arguments,r=n[0];for(t=1;t=t.value},debug:function(){this.invoke(a.DEBUG,arguments)},info:function(){this.invoke(a.INFO,arguments)},warn:function(){this.invoke(a.WARN,arguments)},error:function(){this.invoke(a.ERROR,arguments)},time:function(e){"string"==typeof e&&e.length>0&&this.invoke(a.TIME,[e,"start"])},timeEnd:function(e){"string"==typeof e&&e.length>0&&this.invoke(a.TIME,[e,"end"])},invoke:function(e,t){s&&this.enabledFor(e)&&s(t,c({level:e},this.context))}};var p=new d({filterLevel:a.OFF});!function(){var e=a;e.enabledFor=l(p,p.enabledFor),e.debug=l(p,p.debug),e.time=l(p,p.time),e.timeEnd=l(p,p.timeEnd),e.info=l(p,p.info),e.warn=l(p,p.warn),e.error=l(p,p.error),e.log=e.info}(),a.setHandler=function(e){s=e},a.setLevel=function(e){p.setLevel(e);for(var t in u)u.hasOwnProperty(t)&&u[t].setLevel(e)},a.getLevel=function(){return p.getLevel()},a.get=function(e){return u[e]||(u[e]=new d(c({name:e},p.context)))},a.createDefaultHandler=function(e){e=e||{},e.formatter=e.formatter||function(e,t){t.name&&e.unshift("["+t.name+"]")};var t={},n=function(e,t){Function.prototype.apply.call(e,console,t)};return"undefined"==typeof console?function(){}:function(r,o){r=Array.prototype.slice.call(r);var i,s=console.log;o.level===a.TIME?(i=(o.name?"["+o.name+"] ":"")+r[0],"start"===r[1]?console.time?console.time(i):t[i]=(new Date).getTime():console.timeEnd?console.timeEnd(i):n(s,[i+": "+((new Date).getTime()-t[i])+"ms"])):(o.level===a.WARN&&console.warn?s=console.warn:o.level===a.ERROR&&console.error?s=console.error:o.level===a.INFO&&console.info?s=console.info:o.level===a.DEBUG&&console.debug&&(s=console.debug),e.formatter(r,o),n(s,r))}},a.useDefaults=function(e){a.setLevel(e&&e.defaultLevel||a.DEBUG),a.setHandler(a.createDefaultHandler(e))},r=a,void 0!==(o="function"==typeof r?r.call(t,n,t,e):r)&&(e.exports=o)}()},,function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0});var i=function(){function e(e,t){for(var n=0;n= 0.25) {\n this._timePercentEvent.PLAY_REACHED_25 = true;\n this._sendAnalytics(_eventTypes2.default.PLAY_REACHED_25);\n }\n if (!this._timePercentEvent.PLAY_REACHED_50 && percent >= 0.5) {\n this._timePercentEvent.PLAY_REACHED_50 = true;\n this._sendAnalytics(_eventTypes2.default.PLAY_REACHED_50);\n }\n if (!this._timePercentEvent.PLAY_REACHED_75 && percent >= 0.75) {\n this._timePercentEvent.PLAY_REACHED_75 = true;\n this._sendAnalytics(_eventTypes2.default.PLAY_REACHED_75);\n }\n if (!this._timePercentEvent.PLAY_REACHED_100 && percent >= 1) {\n this._timePercentEvent.PLAY_REACHED_100 = true;\n this._sendAnalytics(_eventTypes2.default.PLAY_REACHED_100);\n }\n }\n }\n\n /**\n * Get the player params which relevant to analytics request\n * @private\n * @return {Object} - The player params\n */\n\n }, {\n key: '_sendAnalytics',\n\n\n /**\n * Register the player event listeners\n * @param {number} eventType - The event type\n * @private\n * @return {void}\n */\n value: function _sendAnalytics(eventType) {\n var _this3 = this;\n\n if (!this._validate()) {\n return;\n }\n var statsEvent = new _event2.default(eventType);\n statsEvent.currentPoint = this.player.currentTime;\n statsEvent.duration = this.player.duration;\n statsEvent.seek = this._hasSeeked;\n Object.assign(statsEvent, this._playerParams);\n var eventData = {\n event: statsEvent,\n hasKanalony: this.config.hasKanalony\n };\n var request = _playkitStatsService.OVPStatsService.collect(this.config.serviceUrl, this._ks, this.config.playerVersion, eventData);\n request.doHttpRequest().then(function () {\n _this3.logger.debug('Analytics event sent ', statsEvent);\n }, function (err) {\n _this3.logger.error('Failed to send analytics event ', statsEvent, err);\n });\n }\n }, {\n key: '_validate',\n value: function _validate() {\n if (!this.config.partnerId) {\n this._logMissingParam('partnerId');\n return false;\n }\n if (!this.config.entryId) {\n this._logMissingParam('entryId');\n return false;\n }\n return true;\n }\n }, {\n key: '_logMissingParam',\n value: function _logMissingParam(missingParam) {\n this.logger.warn('block report because of missing param ' + missingParam);\n }\n }, {\n key: '_playerParams',\n get: function get() {\n this._ks = this.config.ks;\n return {\n clientVer: this.config.playerVersion,\n entryId: this.config.entryId,\n sessionId: this.config.sessionId,\n uiConfId: this.config.uiConfId || 0,\n partnerId: this.config.partnerId,\n widgetId: this.config.partnerId ? '_' + this.config.partnerId : '',\n referrer: this.config.referrer\n };\n }\n }]);\n\n return KAnalytics;\n}(_playkitJs.BasePlugin);\n\nKAnalytics.defaultConfig = {\n serviceUrl: '//stats.kaltura.com/api_v3/index.php',\n hasKanalony: false\n};\nexports.default = KAnalytics;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n!function(e,t){ true?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())}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=16)}([function(e,t,n){\"use strict\";function r(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0});var o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:new Map;r(this,e),this.headers=t}return i(e,[{key:\"getUrl\",value:function(e){return e+\"/service/\"+this.service+(this.action?\"/action/\"+this.action:\"\")}},{key:\"doHttpRequest\",value:function(){var e=this;if(!this.url)throw new Error(\"serviceUrl is mandatory for request builder\");var t=new XMLHttpRequest;return new Promise(function(n,r){t.onreadystatechange=function(){if(4===t.readyState)if(200===t.status){var e=void 0;try{e=JSON.parse(t.responseText)}catch(e){return r(e.message+\", \"+t.responseText)}e&&\"object\"===(void 0===e?\"undefined\":o(e))&&e.code&&e.message?r(e):n(e)}else r(t.responseText)},t.open(e.method,e.url),e.headers.forEach(function(e,n){t.setRequestHeader(n,e)}),t.send(e.params)})}}]),e}();t.default=u},function(e,t,n){\"use strict\";function r(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0}),t.OVPConfiguration=void 0;var o=function(){function e(e,t){for(var n=0;n.\")})})}}]),t}(l.default);y._logger=(0,p.default)(\"MultiRequestBuilder\"),t.default=y;var b=t.MultiRequestResult=function e(t){var n=this;i(this,e),this.results=[],this.success=!0,(t.result?t.result:t).forEach(function(t){var r=new d.default(t);if(n.results.push(r),r.hasError)return e._logger.error(\"Service returned an error with error code: \"+r.error.code+\" and message: \"+r.error.message+\".\"),void(n.success=!1)})};b._logger=(0,p.default)(\"MultiRequestResult\")},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},o=function e(t){var n=void 0;return Array.isArray(t)?(n=t.length>0?t.slice(0):[],n.forEach(function(t,o){(\"object\"===(void 0===t?\"undefined\":r(t))&&t!=={}||Array.isArray(t)&&t.length>0)&&(n[o]=e(t))})):\"object\"===(void 0===t?\"undefined\":r(t))?(n=Object.assign({},t),Object.keys(n).forEach(function(t){(\"object\"===r(n[t])&&n[t]!=={}||Array.isArray(n[t])&&n[t].length>0)&&(n[t]=e(n[t]))})):n=t,n};t.clone=o},function(e,t,n){\"use strict\";function r(e){return e?a.get(e):a}function o(e){return r(e).getLevel()}function i(e,t){r(t).setLevel(e)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.setLogLevel=t.getLogLevel=t.LogLevel=void 0;var u=n(6),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(u),c={DEBUG:a.DEBUG,INFO:a.INFO,TIME:a.TIME,WARN:a.WARN,ERROR:a.ERROR,OFF:a.OFF};a.useDefaults({defaultLevel:a.ERROR}),t.default=r,t.LogLevel=c,t.getLogLevel=o,t.setLogLevel=i},function(e,t,n){var r,o;/*!\n * js-logger - http://github.com/jonnyreeves/js-logger\n * Jonny Reeves, http://jonnyreeves.co.uk/\n * js-logger may be freely distributed under the MIT license.\n */\n!function(i){\"use strict\";var u={};u.VERSION=\"1.4.1\";var a,c={},s=function(e,t){return function(){return t.apply(e,arguments)}},l=function(){var e,t,n=arguments,r=n[0];for(t=1;t=t.value},debug:function(){this.invoke(u.DEBUG,arguments)},info:function(){this.invoke(u.INFO,arguments)},warn:function(){this.invoke(u.WARN,arguments)},error:function(){this.invoke(u.ERROR,arguments)},time:function(e){\"string\"==typeof e&&e.length>0&&this.invoke(u.TIME,[e,\"start\"])},timeEnd:function(e){\"string\"==typeof e&&e.length>0&&this.invoke(u.TIME,[e,\"end\"])},invoke:function(e,t){a&&this.enabledFor(e)&&a(t,l({level:e},this.context))}};var v=new p({filterLevel:u.OFF});!function(){var e=u;e.enabledFor=s(v,v.enabledFor),e.debug=s(v,v.debug),e.time=s(v,v.time),e.timeEnd=s(v,v.timeEnd),e.info=s(v,v.info),e.warn=s(v,v.warn),e.error=s(v,v.error),e.log=e.info}(),u.setHandler=function(e){a=e},u.setLevel=function(e){v.setLevel(e);for(var t in c)c.hasOwnProperty(t)&&c[t].setLevel(e)},u.getLevel=function(){return v.getLevel()},u.get=function(e){return c[e]||(c[e]=new p(l({name:e},v.context)))},u.createDefaultHandler=function(e){e=e||{},e.formatter=e.formatter||function(e,t){t.name&&e.unshift(\"[\"+t.name+\"]\")};var t={},n=function(e,t){Function.prototype.apply.call(e,console,t)};return\"undefined\"==typeof console?function(){}:function(r,o){r=Array.prototype.slice.call(r);var i,a=console.log;o.level===u.TIME?(i=(o.name?\"[\"+o.name+\"] \":\"\")+r[0],\"start\"===r[1]?console.time?console.time(i):t[i]=(new Date).getTime():console.timeEnd?console.timeEnd(i):n(a,[i+\": \"+((new Date).getTime()-t[i])+\"ms\"])):(o.level===u.WARN&&console.warn?a=console.warn:o.level===u.ERROR&&console.error?a=console.error:o.level===u.INFO&&console.info?a=console.info:o.level===u.DEBUG&&console.debug&&(a=console.debug),e.formatter(r,o),n(a,r))}},u.useDefaults=function(e){u.setLevel(e&&e.defaultLevel||u.DEBUG),u.setHandler(u.createDefaultHandler(e))},r=u,void 0!==(o=\"function\"==typeof r?r.call(t,n,t,e):r)&&(e.exports=o)}()},,function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(){function e(e,t){for(var n=0;n {\n this._sendAnalytics(EventTypes.MEDIA_LOADED);\n });\n }\n\n /**\n * The play event listener\n * @private\n * @return {void}\n */\n _onPlay(): void {\n if (this._ended) {\n this._ended = false;\n this._sendAnalytics(EventTypes.REPLAY);\n }\n }\n\n /**\n * The ended event listener\n * @private\n * @return {void}\n */\n _onEnded(): void {\n this._ended = true;\n }\n\n /**\n * The player state changed event listener\n * @param {any} event - the event\n * @private\n * @return {void}\n */\n _onPlayerStateChanged(event: any): void {\n if (event.payload.newState.type === this.player.State.BUFFERING) {\n this._sendAnalytics(EventTypes.BUFFER_START);\n }\n if (event.payload.oldState.type === this.player.State.BUFFERING) {\n this._sendAnalytics(EventTypes.BUFFER_END);\n }\n }\n\n /**\n * Send seek analytic\n * @private\n * @return {void}\n */\n _sendSeekAnalytic(): void {\n const now = new Date().getTime();\n if (this._lastSeekEvent + SEEK_OFFSET < now && (this.player.config.type !== LIVE || this.player.config.dvr)) {\n // avoid sending lots of seeking while scrubbing\n this._sendAnalytics(EventTypes.SEEK);\n this._hasSeeked = true;\n }\n this._lastSeekEvent = now;\n }\n\n /**\n * Send time percent analytic\n * @private\n * @return {void}\n */\n _sendTimePercentAnalytic(): void {\n if (this.player.config.type !== LIVE) {\n const percent = this.player.currentTime / this.player.duration;\n if (!this._timePercentEvent.PLAY_REACHED_25 && percent >= 0.25) {\n this._timePercentEvent.PLAY_REACHED_25 = true;\n this._sendAnalytics(EventTypes.PLAY_REACHED_25);\n }\n if (!this._timePercentEvent.PLAY_REACHED_50 && percent >= 0.5) {\n this._timePercentEvent.PLAY_REACHED_50 = true;\n this._sendAnalytics(EventTypes.PLAY_REACHED_50);\n }\n if (!this._timePercentEvent.PLAY_REACHED_75 && percent >= 0.75) {\n this._timePercentEvent.PLAY_REACHED_75 = true;\n this._sendAnalytics(EventTypes.PLAY_REACHED_75);\n }\n if (!this._timePercentEvent.PLAY_REACHED_100 && percent >= 1) {\n this._timePercentEvent.PLAY_REACHED_100 = true;\n this._sendAnalytics(EventTypes.PLAY_REACHED_100);\n }\n }\n }\n\n /**\n * Get the player params which relevant to analytics request\n * @private\n * @return {Object} - The player params\n */\n get _playerParams(): Object {\n this._ks = this.config.ks;\n return {\n clientVer: this.config.playerVersion,\n entryId: this.config.entryId,\n sessionId: this.config.sessionId,\n uiConfId: this.config.uiConfId || 0,\n partnerId: this.config.partnerId,\n widgetId: this.config.partnerId ? '_' + this.config.partnerId : '',\n referrer: this.config.referrer\n };\n }\n\n /**\n * Register the player event listeners\n * @param {number} eventType - The event type\n * @private\n * @return {void}\n */\n _sendAnalytics(eventType: number): void {\n if (!this._validate()) {\n return;\n }\n const statsEvent = new Event(eventType);\n statsEvent.currentPoint = this.player.currentTime;\n statsEvent.duration = this.player.duration;\n statsEvent.seek = this._hasSeeked;\n Object.assign(statsEvent, this._playerParams);\n const eventData = {\n event: statsEvent,\n hasKanalony: this.config.hasKanalony\n };\n const request: RequestBuilder = OVPStatsService.collect(this.config.serviceUrl, this._ks, this.config.playerVersion, eventData);\n request.doHttpRequest().then(\n () => {\n this.logger.debug(`Analytics event sent `, statsEvent);\n },\n err => {\n this.logger.error(`Failed to send analytics event `, statsEvent, err);\n }\n );\n }\n\n _validate(): boolean {\n if (!this.config.partnerId) {\n this._logMissingParam('partnerId');\n return false;\n }\n if (!this.config.entryId) {\n this._logMissingParam('entryId');\n return false;\n }\n return true;\n }\n\n _logMissingParam(missingParam: string): void {\n this.logger.warn(`block report because of missing param ${missingParam}`);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./kanalytics.js","!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())}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}var n={};return t.m=e,t.c=n,t.i=function(e){return e},t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{configurable:!1,enumerable:!0,get:r})},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,\"a\",n),n},t.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},t.p=\"\",t(t.s=16)}([function(e,t,n){\"use strict\";function r(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0});var o=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},i=function(){function e(e,t){for(var n=0;n0&&void 0!==arguments[0]?arguments[0]:new Map;r(this,e),this.headers=t}return i(e,[{key:\"getUrl\",value:function(e){return e+\"/service/\"+this.service+(this.action?\"/action/\"+this.action:\"\")}},{key:\"doHttpRequest\",value:function(){var e=this;if(!this.url)throw new Error(\"serviceUrl is mandatory for request builder\");var t=new XMLHttpRequest;return new Promise(function(n,r){t.onreadystatechange=function(){if(4===t.readyState)if(200===t.status){var e=void 0;try{e=JSON.parse(t.responseText)}catch(e){return r(e.message+\", \"+t.responseText)}e&&\"object\"===(void 0===e?\"undefined\":o(e))&&e.code&&e.message?r(e):n(e)}else r(t.responseText)},t.open(e.method,e.url),e.headers.forEach(function(e,n){t.setRequestHeader(n,e)}),t.send(e.params)})}}]),e}();t.default=u},function(e,t,n){\"use strict\";function r(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0}),t.OVPConfiguration=void 0;var o=function(){function e(e,t){for(var n=0;n.\")})})}}]),t}(l.default);y._logger=(0,p.default)(\"MultiRequestBuilder\"),t.default=y;var b=t.MultiRequestResult=function e(t){var n=this;i(this,e),this.results=[],this.success=!0,(t.result?t.result:t).forEach(function(t){var r=new d.default(t);if(n.results.push(r),r.hasError)return e._logger.error(\"Service returned an error with error code: \"+r.error.code+\" and message: \"+r.error.message+\".\"),void(n.success=!1)})};b._logger=(0,p.default)(\"MultiRequestResult\")},function(e,t,n){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var r=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},o=function e(t){var n=void 0;return Array.isArray(t)?(n=t.length>0?t.slice(0):[],n.forEach(function(t,o){(\"object\"===(void 0===t?\"undefined\":r(t))&&t!=={}||Array.isArray(t)&&t.length>0)&&(n[o]=e(t))})):\"object\"===(void 0===t?\"undefined\":r(t))?(n=Object.assign({},t),Object.keys(n).forEach(function(t){(\"object\"===r(n[t])&&n[t]!=={}||Array.isArray(n[t])&&n[t].length>0)&&(n[t]=e(n[t]))})):n=t,n};t.clone=o},function(e,t,n){\"use strict\";function r(e){return e?a.get(e):a}function o(e){return r(e).getLevel()}function i(e,t){r(t).setLevel(e)}Object.defineProperty(t,\"__esModule\",{value:!0}),t.setLogLevel=t.getLogLevel=t.LogLevel=void 0;var u=n(6),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(u),c={DEBUG:a.DEBUG,INFO:a.INFO,TIME:a.TIME,WARN:a.WARN,ERROR:a.ERROR,OFF:a.OFF};a.useDefaults({defaultLevel:a.ERROR}),t.default=r,t.LogLevel=c,t.getLogLevel=o,t.setLogLevel=i},function(e,t,n){var r,o;/*!\n * js-logger - http://github.com/jonnyreeves/js-logger\n * Jonny Reeves, http://jonnyreeves.co.uk/\n * js-logger may be freely distributed under the MIT license.\n */\n!function(i){\"use strict\";var u={};u.VERSION=\"1.4.1\";var a,c={},s=function(e,t){return function(){return t.apply(e,arguments)}},l=function(){var e,t,n=arguments,r=n[0];for(t=1;t=t.value},debug:function(){this.invoke(u.DEBUG,arguments)},info:function(){this.invoke(u.INFO,arguments)},warn:function(){this.invoke(u.WARN,arguments)},error:function(){this.invoke(u.ERROR,arguments)},time:function(e){\"string\"==typeof e&&e.length>0&&this.invoke(u.TIME,[e,\"start\"])},timeEnd:function(e){\"string\"==typeof e&&e.length>0&&this.invoke(u.TIME,[e,\"end\"])},invoke:function(e,t){a&&this.enabledFor(e)&&a(t,l({level:e},this.context))}};var v=new p({filterLevel:u.OFF});!function(){var e=u;e.enabledFor=s(v,v.enabledFor),e.debug=s(v,v.debug),e.time=s(v,v.time),e.timeEnd=s(v,v.timeEnd),e.info=s(v,v.info),e.warn=s(v,v.warn),e.error=s(v,v.error),e.log=e.info}(),u.setHandler=function(e){a=e},u.setLevel=function(e){v.setLevel(e);for(var t in c)c.hasOwnProperty(t)&&c[t].setLevel(e)},u.getLevel=function(){return v.getLevel()},u.get=function(e){return c[e]||(c[e]=new p(l({name:e},v.context)))},u.createDefaultHandler=function(e){e=e||{},e.formatter=e.formatter||function(e,t){t.name&&e.unshift(\"[\"+t.name+\"]\")};var t={},n=function(e,t){Function.prototype.apply.call(e,console,t)};return\"undefined\"==typeof console?function(){}:function(r,o){r=Array.prototype.slice.call(r);var i,a=console.log;o.level===u.TIME?(i=(o.name?\"[\"+o.name+\"] \":\"\")+r[0],\"start\"===r[1]?console.time?console.time(i):t[i]=(new Date).getTime():console.timeEnd?console.timeEnd(i):n(a,[i+\": \"+((new Date).getTime()-t[i])+\"ms\"])):(o.level===u.WARN&&console.warn?a=console.warn:o.level===u.ERROR&&console.error?a=console.error:o.level===u.INFO&&console.info?a=console.info:o.level===u.DEBUG&&console.debug&&(a=console.debug),e.formatter(r,o),n(a,r))}},u.useDefaults=function(e){u.setLevel(e&&e.defaultLevel||u.DEBUG),u.setHandler(u.createDefaultHandler(e))},r=u,void 0!==(o=\"function\"==typeof r?r.call(t,n,t,e):r)&&(e.exports=o)}()},,function(e,t,n){\"use strict\";function r(e){return e&&e.__esModule?e:{default:e}}function o(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(){function e(e,t){for(var n=0;n&2 + exit 1 +fi