@flowplayer/player 3.26.0 → 3.27.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core.js +1 -1
- package/default.js +1 -1
- package/embed.js +2 -2
- package/flowplayer.css +1 -1
- package/index.d.ts +5 -0
- package/package.json +1 -1
- package/plugins/ads.d.ts +5 -0
- package/plugins/ads.js +1 -1
- package/plugins/airplay.d.ts +5 -0
- package/plugins/analytics.d.ts +5 -0
- package/plugins/analytics.js +1 -1
- package/plugins/asel.d.ts +5 -0
- package/plugins/audio.d.ts +5 -0
- package/plugins/chapters.d.ts +5 -0
- package/plugins/chromecast.d.ts +5 -0
- package/plugins/comscore.d.ts +5 -0
- package/plugins/consent.d.ts +5 -0
- package/plugins/context-menu.d.ts +5 -0
- package/plugins/cuepoints.d.ts +5 -0
- package/plugins/dash.d.ts +5 -0
- package/plugins/drm.d.ts +5 -0
- package/plugins/endscreen.d.ts +5 -0
- package/plugins/fas.d.ts +5 -0
- package/plugins/float-on-scroll.d.ts +5 -0
- package/plugins/ga4.d.ts +5 -0
- package/plugins/gemius.d.ts +5 -0
- package/plugins/google-analytics.d.ts +5 -0
- package/plugins/hls.d.ts +5 -0
- package/plugins/id3.d.ts +5 -0
- package/plugins/iframe.d.ts +5 -0
- package/plugins/keyboard.d.ts +5 -0
- package/plugins/media-session.d.ts +5 -0
- package/plugins/message.d.ts +5 -0
- package/plugins/ovp.d.ts +5 -0
- package/plugins/playlist.d.ts +5 -0
- package/plugins/preview.d.ts +5 -0
- package/plugins/qsel.d.ts +5 -0
- package/plugins/qul.d.ts +5 -0
- package/plugins/rts.d.ts +6 -0
- package/plugins/rts.js +8 -8
- package/plugins/share.d.ts +5 -0
- package/plugins/speed.d.ts +5 -0
- package/plugins/ssai.d.ts +5 -0
- package/plugins/ssai.js +1 -1
- package/plugins/subtitles.d.ts +5 -0
- package/plugins/thumbnails.d.ts +5 -0
- package/plugins/tizen.d.ts +5 -0
- package/plugins/vtsel.d.ts +5 -0
- package/plugins/webos.d.ts +5 -0
- package/util/loader.d.ts +5 -0
package/plugins/analytics.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):((e="undefined"!=typeof globalThis?globalThis:e||self).flowplayer=e.flowplayer||{},e.flowplayer.analytics=t())}(this,(function(){"use strict";const e=(...e)=>e.reduce((e,t)=>Object.assign(Object.assign({},e),t),{}),t=(e,t)=>{const r=e.lastIndexOf(t);return~r&&e.splice(r,1),e};class RequestQueue{static of(){return new RequestQueue}static is_empty(e){return 0==e.pending.length}static is_high_water(e){return e.open.length==RequestQueue.MAX_OPEN_REQUESTS}static maybe_spawn_req(e){if(RequestQueue.is_empty(e))return e;if(RequestQueue.is_high_water(e))return e;try{const t=RequestQueue.lpop(e);t&&RequestQueue.request(e,t)}catch(e){}}static increment_failures(e){return e.stats.failures++,e.stats.failures>RequestQueue.MAX_FAILURE_COUNT&&(e.stats.ttl=Date.now()+RequestQueue.REQUEST_TTL_MS),e}static handle_error(e,t){RequestQueue.rm(e,t),RequestQueue.increment_failures(e)}static request(e,[t,r,n]){if(Date.now()<e.stats.ttl)return;const i=new XMLHttpRequest;e.open.push(i),i.timeout=RequestQueue.REQUEST_TIMEOUT_MS,i.ontimeout=function(){RequestQueue.handle_error(e,i)},i.onerror=function(t){RequestQueue.handle_error(e,i)},i.onreadystatechange=function(){i.readyState==XMLHttpRequest.DONE&&RequestQueue.rm(e,i),Math.floor(i.status/100)},i.onload=function(){RequestQueue.rm(e,i),e.stats.failures&&e.stats.failures--},i.open(r,t),i.setRequestHeader("Content-Type","text/plain;charset=UTF-8");try{i.send(JSON.stringify(n))}catch(e){}}static rpush(e,...t){return t.forEach(t=>{e.pending.length>=RequestQueue.MAX_PENDING||(e.pending.push(t),RequestQueue.maybe_spawn_req(e))}),e}static lpop(e){return e.pending.shift()}static rm(e,r){return t(e.open,r),e}constructor(){this.pending=[],this.open=[],this.stats={failures:0,ttl:0}}}RequestQueue.MAX_OPEN_REQUESTS=3,RequestQueue.MAX_PENDING=5,RequestQueue.REQUEST_TIMEOUT_MS=4e3,RequestQueue.REQUEST_TTL_MS=5e3,RequestQueue.MAX_FAILURE_COUNT=3;var r=RequestQueue.of();const n=/:([a-zA-Z_]+)/g;class Log{static prepare(e,t){const r=document.createEvent("Event");return r.initEvent(e,!1,!0),r.ns=e,r.data=t,r}static of(e){return new Log(e)}constructor(e){this.emitter=e}info(e){this.emitter.dispatchEvent(Log.prepare(Log.NAMESPACE.INFO,e))}error(e){this.emitter.dispatchEvent(Log.prepare(Log.NAMESPACE.ERROR,e))}warn(e){this.emitter.dispatchEvent(Log.prepare(Log.NAMESPACE.WARN,e))}}var i,o;Log.NAMESPACE={INFO:"tracker:info",ERROR:"tracker:err",WARN:"tracker:warn"},function(e){e.POST="POST",e.PUT="PUT",e.GET="GET"}(i||(i={}));class Tracker{static of(e,t){return new Tracker(e,t)}static ensure_required_keys(e,t){return e.required_keys.filter(e=>!(e in t))}static pluck_valid_keys(t,r){return((t,...r)=>Object.keys(t).filter(e=>~r.indexOf(e)).reduce((r,n)=>e(r,{[n]:t[n]}),{}))(r,...t.valid_keys)}static merge_metadata(t,r={}){return t.metadata=Tracker.pluck_valid_keys(t,e(t.metadata,r)),t}static assert_emitter_api(e){if("function"!=typeof(e||{}).addEventListener)throw new Error("Tracker() received an emitter that does not implement the addEventListener method");if("function"!=typeof(e||{}).removeEventListener)throw new Error("Tracker() received an emitter that does not implement the removeEventListener method")}static create_listener(e,t,r){var n;e.listeners.push([t,r]),null===(n=e.emitter)||void 0===n||n.addEventListener(t,r)}constructor(t,i={}){const o=this;if(this.emitter=t,this.url=i.url,this.log=Log.of(this.emitter),this.verb=i.verb,this.metadata=e({},i.metadata||{}),this.rq=i.rq||r,this.events=i.events||[],this.required_keys=i.required_keys||[],this.optional_keys=i.optional_keys||[],this.listeners=[],this.valid_keys=this.required_keys.slice(0).concat(this.optional_keys),Tracker.assert_emitter_api(this.emitter),void 0===Tracker.verb[this.verb])throw new Error(`invalid HTTP verb[${this.verb}] passed`);if("string"!=typeof this.url)throw new Error(`invalid API url[${this.url}] passed`);Tracker.TRACKERS.push(this),o.events.forEach(t=>{Tracker.create_listener(this,t,(r={})=>{const i=e(o.metadata,{event_type:t},r.data||r),a=function(e,t){return e.replace(n,r=>{const n=r.slice(1,r.length);return n in t?t[n].toString():(console.warn(`\n preparing url[${e}] failed\n\n parameter[${n}] not detected in params:\n\n ${JSON.stringify(t,null,2)}\n `),r)})}(o.url,i),s=Tracker.pluck_valid_keys(o,i),u=Tracker.ensure_required_keys(o,s);if(u.length)return o.log.error(`Tracker.validate_metadata() failed for\n Event[${t}]\n missing keys: ${u}\n payload:\n ${JSON.stringify(s,null,2)}`);this.rq&&RequestQueue.rpush(this.rq,[a,this.verb,s])})})}destroy(){this.listeners.forEach(([e,t])=>{var r;return null===(r=this.emitter)||void 0===r?void 0:r.removeEventListener(e,t)}),delete this.rq,delete this.emitter,t(Tracker.TRACKERS,this)}put(e={}){return Tracker.merge_metadata(this,e),this}}Tracker.TRACKERS=[],Tracker.QUEUE=r,Tracker.verb=i,function(e){e[e.ADS=2]="ADS",e[e.ANALYTICS=4]="ANALYTICS",e[e.NO_METERING=8]="NO_METERING",e[e.DEVELOPER_PLAN=16]="DEVELOPER_PLAN",e[e.WOWZA_VIDEO=32]="WOWZA_VIDEO"}(o||(o={}));const a=["localhost","127.0.0.1","0.0.0.0","s.codepen.io","cdpn.io","try.flowplayer.com"];function s(e,t){return!!~a.indexOf(e)||e.indexOf(t)===e.length-t.length}s.check_whitelist=function(e){return!!~a.indexOf(e)};function u(e){this.message=e}u.prototype=new Error,u.prototype.name="InvalidCharacterError";var c="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new u("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,i=0,o=0,a="";n=t.charAt(o++);~n&&(r=i%4?64*r+n:n,i++%4)?a+=String.fromCharCode(255&r>>(-2*i&6)):0)n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(n);return a};var d=function(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw"Illegal base64url string!"}try{return function(e){return decodeURIComponent(c(e).replace(/(.)/g,(function(e,t){var r=t.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(t)}catch(e){return c(t)}};function l(e){this.message=e}l.prototype=new Error,l.prototype.name="InvalidTokenError";var f=function(e,t){if("string"!=typeof e)throw new l("Invalid token specified");var r=!0===(t=t||{}).header?0:1;try{return JSON.parse(d(e.split(".")[r]))}catch(e){throw new l("Invalid token specified: "+e.message)}};f.InvalidTokenError=l;const p="production";function _(e,t){const r={valid_jwt:!1,raw:"",data:{acl:0},exp:0};let n={c:"{}",exp:0};t=t||{};try{n=f(e),r.valid_jwt=!0}catch(e){}return r.raw=e,r.data=JSON.parse(n.c),r.exp=n.exp,t.require_valid_token&&_.validate(r),r}function h(e){return{grant:e,is_granted:t=>(e&t)===t}}function m(e,t,r){const n=function(e){return Array.isArray(e)?e.slice(0):e.split(".")}(t);for(;n.length;){if(null==e)return r;const t=n.shift();if("string"!=typeof t)return r;e=e[t]}return null==e?r:e}_.validate=function(e){if("string"==typeof e&&(e=_(e)),!e||!e.raw){if(s.check_whitelist(window.location.hostname)||"dev"===p.toString())return!0;throw new Error("No token provided in configuration")}if(!e.valid_jwt)throw new Error("Invalid token provided");const t=window.location.hostname,r=s.bind(null,t);if("dev"!==p.toString()&&e.data.domain&&e.data.domain.length&&!e.data.domain.some(r))throw new Error("Domain not allowed");if("dev"!==p.toString()&&1e3*e.exp-Date.now()<0)throw new Error("Expired token");return!0},_.id=function(e){if(e)return"string"==typeof e&&(e=_(e)),e.data.id},h.of=h,h.from_token=function(e){const t=_(e,{require_valid_token:!0});return h.of(t.data.acl)},h.permissions=o;var v="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};var y="ping",k="display",g="view";const w=["sitegroup_id","session_id","media_id","site_id","player_id","video_type"],E=["created","position"],T=["player_version","created","source","category","category_id","autoplay","muted","customer_user_id"];function R(e,t){return e.duration/1===e.duration&&Object.assign(t,function(e){const t=e/100;return{segment_duration:t,breakpoints:Array(...Array(100)).map((function(e,r){return Math.floor(r*t*1e3)/1e3}))}}(e.duration))}function q(e,t,r){if(!t.segment_duration&&!R(e,t))return;const n=function(e,t,r){const n=t.last_idx,i=r?99:A(e,t);return t.last_idx=i,i<=n?[]:t.breakpoints.slice(n,99==i?100:i).map((function(e){return t.breakpoints.indexOf(e)}))}(e,t,r);0!=n.length&&e.emit(y,{position:n})}function A(e,t){return Math.min(Math.floor(e.currentTime/t.segment_duration),99)}function S(){try{const e=window.location!==window.parent.location?document.referrer:document.location.href;return"string"==typeof e&&e.slice(0,200)}catch(e){return!1}}var O;const b="vod",N="live",Q=[k,y,g];function x(e,t,r){switch(null==t?void 0:t.kind){case"live":return function(e,t){const r=Date.now();r-t.last_tracked_ts<6e4||(t.last_tracked_ts=r,++t.ticks,e.emit(y,{position:60*t.ticks}))}(e,t);case"vod":return q(e,t,"boolean"==typeof r&&r)}}function L(e){const t=e.ads;return void 0!==t&&(void 0!==t.schedule&&("function"==typeof t.hasPreroll&&(t.currentRequests?t.currentRequests:!!t.adPlaying||!(!t.hasPreroll()||0!=t.nextIndex))))}const I=((O=class Analytics{init(e,t,r){if(!h.from_token(e.token||"").is_granted(h.permissions.ANALYTICS))return;if(r.hasState("consent-no-tracking"))return;if(r.analytics)return;const n=r.analytics={ticker:void 0,last_media_id:"",ended:!1},i={locked:void 0,ttl:6e3,task:()=>{x(r,n.ticker)}};const o={session_id:r.deviceId(),autoplay:r.autoplay,muted:r.muted,player_id:e.player_id,customer_user_id:e.customer_user_id,player_version:"3.26.0"},a=Tracker.of(r,{verb:Tracker.verb.POST,url:"https://ptm.flowplayer.com/:video_type/:sitegroup_id/:event_type",events:Q,required_keys:w,optional_keys:T.concat(E).slice(0),metadata:o});r.on("reap",(function(){a&&a.destroy()})),r.on("config",(function(t){if(!a)return;const i=m(t,"data.metadata",{});if(!i.media_id)return;const o=m(a,"metadata.media_id");if(o&&i.media_id==o)return;const s=m(e,"analytics",{});a.put(i),a.put(s);const u=m(e,"metadata.live_start_time",e.live)?N:b;a.put({video_type:u,source:e.source||S()||""}),n.ticker=e.live?{ticks:0,last_tracked_ts:Date.now(),kind:"live"}:{last_idx:0,segment_duration:0,breakpoints:[],kind:"vod"},n.ended=!1,r.emit(k)}));let s=0;r.on("playing",(function(){if(!a)return;if(s||function(e,t){return e.metadata.media_id&&e.metadata.media_id==t.last_media_id}(a,n))return;a.put({muted:r.muted});const e=L(r);if(e)return s=Promise.resolve(e).then((function(){n.last_media_id=a.metadata.media_id,r.emit(g),s=0})).catch((function(){s=0}));n.last_media_id=a.metadata.media_id,r.emit(g)})),r.on("timeupdate",(function(){var t;a&&(s||L(r)||n.ended||(!e.live&&r.currentTime+.25>=r.duration&&x(r,n.ticker,!0),(t=i).locked||(t.locked=setTimeout((function(){return t.task(),function(e){return e.locked=void 0,e}(t)}),t.ttl))))})),r.on("seeked",(function(){a&&n.ticker&&"vod"==n.ticker.kind&&function(e,t){R(e,t),t.last_idx=A(e,t)}(r,n.ticker)})),r.on("ended",(function(){a&&function(e,t){t.ended||(t.ended=!0,x(e,t.ticker))}(r,n)}))}}).pluginName="analytics",O);return function(e,t){if("object"==typeof exports&&"undefined"!=typeof module)return t;if(null===document.currentScript)return t;"flowplayer"in e||(e.flowplayer={extensions:[]});const r=e.flowplayer;return"function"==typeof r?(r(t),t):(Array.isArray(r.extensions)||(r.extensions=[]),~r.extensions.indexOf(t)||r.extensions.push(t),t)}("undefined"!=typeof window?window:void 0!==v?v:{},I)}));
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):((e="undefined"!=typeof globalThis?globalThis:e||self).flowplayer=e.flowplayer||{},e.flowplayer.analytics=t())}(this,(function(){"use strict";const e=(...e)=>e.reduce((e,t)=>Object.assign(Object.assign({},e),t),{}),t=(e,t)=>{const r=e.lastIndexOf(t);return~r&&e.splice(r,1),e};class RequestQueue{static of(){return new RequestQueue}static is_empty(e){return 0==e.pending.length}static is_high_water(e){return e.open.length==RequestQueue.MAX_OPEN_REQUESTS}static maybe_spawn_req(e){if(RequestQueue.is_empty(e))return e;if(RequestQueue.is_high_water(e))return e;try{const t=RequestQueue.lpop(e);t&&RequestQueue.request(e,t)}catch(e){}}static increment_failures(e){return e.stats.failures++,e.stats.failures>RequestQueue.MAX_FAILURE_COUNT&&(e.stats.ttl=Date.now()+RequestQueue.REQUEST_TTL_MS),e}static handle_error(e,t){RequestQueue.rm(e,t),RequestQueue.increment_failures(e)}static request(e,[t,r,n]){if(Date.now()<e.stats.ttl)return;const i=new XMLHttpRequest;e.open.push(i),i.timeout=RequestQueue.REQUEST_TIMEOUT_MS,i.ontimeout=function(){RequestQueue.handle_error(e,i)},i.onerror=function(t){RequestQueue.handle_error(e,i)},i.onreadystatechange=function(){i.readyState==XMLHttpRequest.DONE&&RequestQueue.rm(e,i),Math.floor(i.status/100)},i.onload=function(){RequestQueue.rm(e,i),e.stats.failures&&e.stats.failures--},i.open(r,t),i.setRequestHeader("Content-Type","text/plain;charset=UTF-8");try{i.send(JSON.stringify(n))}catch(e){}}static rpush(e,...t){return t.forEach(t=>{e.pending.length>=RequestQueue.MAX_PENDING||(e.pending.push(t),RequestQueue.maybe_spawn_req(e))}),e}static lpop(e){return e.pending.shift()}static rm(e,r){return t(e.open,r),e}constructor(){this.pending=[],this.open=[],this.stats={failures:0,ttl:0}}}RequestQueue.MAX_OPEN_REQUESTS=3,RequestQueue.MAX_PENDING=5,RequestQueue.REQUEST_TIMEOUT_MS=4e3,RequestQueue.REQUEST_TTL_MS=5e3,RequestQueue.MAX_FAILURE_COUNT=3;var r=RequestQueue.of();const n=/:([a-zA-Z_]+)/g;class Log{static prepare(e,t){const r=document.createEvent("Event");return r.initEvent(e,!1,!0),r.ns=e,r.data=t,r}static of(e){return new Log(e)}constructor(e){this.emitter=e}info(e){this.emitter.dispatchEvent(Log.prepare(Log.NAMESPACE.INFO,e))}error(e){this.emitter.dispatchEvent(Log.prepare(Log.NAMESPACE.ERROR,e))}warn(e){this.emitter.dispatchEvent(Log.prepare(Log.NAMESPACE.WARN,e))}}var i,o;Log.NAMESPACE={INFO:"tracker:info",ERROR:"tracker:err",WARN:"tracker:warn"},function(e){e.POST="POST",e.PUT="PUT",e.GET="GET"}(i||(i={}));class Tracker{static of(e,t){return new Tracker(e,t)}static ensure_required_keys(e,t){return e.required_keys.filter(e=>!(e in t))}static pluck_valid_keys(t,r){return((t,...r)=>Object.keys(t).filter(e=>~r.indexOf(e)).reduce((r,n)=>e(r,{[n]:t[n]}),{}))(r,...t.valid_keys)}static merge_metadata(t,r={}){return t.metadata=Tracker.pluck_valid_keys(t,e(t.metadata,r)),t}static assert_emitter_api(e){if("function"!=typeof(e||{}).addEventListener)throw new Error("Tracker() received an emitter that does not implement the addEventListener method");if("function"!=typeof(e||{}).removeEventListener)throw new Error("Tracker() received an emitter that does not implement the removeEventListener method")}static create_listener(e,t,r){var n;e.listeners.push([t,r]),null===(n=e.emitter)||void 0===n||n.addEventListener(t,r)}constructor(t,i={}){const o=this;if(this.emitter=t,this.url=i.url,this.log=Log.of(this.emitter),this.verb=i.verb,this.metadata=e({},i.metadata||{}),this.rq=i.rq||r,this.events=i.events||[],this.required_keys=i.required_keys||[],this.optional_keys=i.optional_keys||[],this.listeners=[],this.valid_keys=this.required_keys.slice(0).concat(this.optional_keys),Tracker.assert_emitter_api(this.emitter),void 0===Tracker.verb[this.verb])throw new Error(`invalid HTTP verb[${this.verb}] passed`);if("string"!=typeof this.url)throw new Error(`invalid API url[${this.url}] passed`);Tracker.TRACKERS.push(this),o.events.forEach(t=>{Tracker.create_listener(this,t,(r={})=>{const i=e(o.metadata,{event_type:t},r.data||r),a=function(e,t){return e.replace(n,r=>{const n=r.slice(1,r.length);return n in t?t[n].toString():(console.warn(`\n preparing url[${e}] failed\n\n parameter[${n}] not detected in params:\n\n ${JSON.stringify(t,null,2)}\n `),r)})}(o.url,i),s=Tracker.pluck_valid_keys(o,i),u=Tracker.ensure_required_keys(o,s);if(u.length)return o.log.error(`Tracker.validate_metadata() failed for\n Event[${t}]\n missing keys: ${u}\n payload:\n ${JSON.stringify(s,null,2)}`);this.rq&&RequestQueue.rpush(this.rq,[a,this.verb,s])})})}destroy(){this.listeners.forEach(([e,t])=>{var r;return null===(r=this.emitter)||void 0===r?void 0:r.removeEventListener(e,t)}),delete this.rq,delete this.emitter,t(Tracker.TRACKERS,this)}put(e={}){return Tracker.merge_metadata(this,e),this}}Tracker.TRACKERS=[],Tracker.QUEUE=r,Tracker.verb=i,function(e){e[e.ADS=2]="ADS",e[e.ANALYTICS=4]="ANALYTICS",e[e.NO_METERING=8]="NO_METERING",e[e.DEVELOPER_PLAN=16]="DEVELOPER_PLAN",e[e.WOWZA_VIDEO=32]="WOWZA_VIDEO"}(o||(o={}));const a=["localhost","127.0.0.1","0.0.0.0","s.codepen.io","cdpn.io","try.flowplayer.com"];function s(e,t){return!!~a.indexOf(e)||e.indexOf(t)===e.length-t.length}s.check_whitelist=function(e){return!!~a.indexOf(e)};function u(e){this.message=e}u.prototype=new Error,u.prototype.name="InvalidCharacterError";var c="undefined"!=typeof window&&window.atob&&window.atob.bind(window)||function(e){var t=String(e).replace(/=+$/,"");if(t.length%4==1)throw new u("'atob' failed: The string to be decoded is not correctly encoded.");for(var r,n,i=0,o=0,a="";n=t.charAt(o++);~n&&(r=i%4?64*r+n:n,i++%4)?a+=String.fromCharCode(255&r>>(-2*i&6)):0)n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(n);return a};var d=function(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw"Illegal base64url string!"}try{return function(e){return decodeURIComponent(c(e).replace(/(.)/g,(function(e,t){var r=t.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r})))}(t)}catch(e){return c(t)}};function l(e){this.message=e}l.prototype=new Error,l.prototype.name="InvalidTokenError";var f=function(e,t){if("string"!=typeof e)throw new l("Invalid token specified");var r=!0===(t=t||{}).header?0:1;try{return JSON.parse(d(e.split(".")[r]))}catch(e){throw new l("Invalid token specified: "+e.message)}};f.InvalidTokenError=l;const p="production";function _(e,t){const r={valid_jwt:!1,raw:"",data:{acl:0},exp:0};let n={c:"{}",exp:0};t=t||{};try{n=f(e),r.valid_jwt=!0}catch(e){}return r.raw=e,r.data=JSON.parse(n.c),r.exp=n.exp,t.require_valid_token&&_.validate(r),r}function h(e){return{grant:e,is_granted:t=>(e&t)===t}}function m(e,t,r){const n=function(e){return Array.isArray(e)?e.slice(0):e.split(".")}(t);for(;n.length;){if(null==e)return r;const t=n.shift();if("string"!=typeof t)return r;e=e[t]}return null==e?r:e}_.validate=function(e){if("string"==typeof e&&(e=_(e)),!e||!e.raw){if(s.check_whitelist(window.location.hostname)||"dev"===p.toString())return!0;throw new Error("No token provided in configuration")}if(!e.valid_jwt)throw new Error("Invalid token provided");const t=window.location.hostname,r=s.bind(null,t);if("dev"!==p.toString()&&e.data.domain&&e.data.domain.length&&!e.data.domain.some(r))throw new Error("Domain not allowed");if("dev"!==p.toString()&&1e3*e.exp-Date.now()<0)throw new Error("Expired token");return!0},_.id=function(e){if(e)return"string"==typeof e&&(e=_(e)),e.data.id},h.of=h,h.from_token=function(e){const t=_(e,{require_valid_token:!0});return h.of(t.data.acl)},h.permissions=o;var v="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{};var y="ping",k="display",g="view";const w=["sitegroup_id","session_id","media_id","site_id","player_id","video_type"],E=["created","position"],T=["player_version","created","source","category","category_id","autoplay","muted","customer_user_id"];function R(e,t){return e.duration/1===e.duration&&Object.assign(t,function(e){const t=e/100;return{segment_duration:t,breakpoints:Array(...Array(100)).map((function(e,r){return Math.floor(r*t*1e3)/1e3}))}}(e.duration))}function q(e,t,r){if(!t.segment_duration&&!R(e,t))return;const n=function(e,t,r){const n=t.last_idx,i=r?99:A(e,t);return t.last_idx=i,i<=n?[]:t.breakpoints.slice(n,99==i?100:i).map((function(e){return t.breakpoints.indexOf(e)}))}(e,t,r);0!=n.length&&e.emit(y,{position:n})}function A(e,t){return Math.min(Math.floor(e.currentTime/t.segment_duration),99)}function S(){try{const e=window.location!==window.parent.location?document.referrer:document.location.href;return"string"==typeof e&&e.slice(0,200)}catch(e){return!1}}var O;const b="vod",N="live",Q=[k,y,g];function x(e,t,r){switch(null==t?void 0:t.kind){case"live":return function(e,t){const r=Date.now();r-t.last_tracked_ts<6e4||(t.last_tracked_ts=r,++t.ticks,e.emit(y,{position:60*t.ticks}))}(e,t);case"vod":return q(e,t,"boolean"==typeof r&&r)}}function L(e){const t=e.ads;return void 0!==t&&(void 0!==t.schedule&&("function"==typeof t.hasPreroll&&(t.currentRequests?t.currentRequests:!!t.adPlaying||!(!t.hasPreroll()||0!=t.nextIndex))))}const I=((O=class Analytics{init(e,t,r){if(!h.from_token(e.token||"").is_granted(h.permissions.ANALYTICS))return;if(r.hasState("consent-no-tracking"))return;if(r.analytics)return;const n=r.analytics={ticker:void 0,last_media_id:"",ended:!1},i={locked:void 0,ttl:6e3,task:()=>{x(r,n.ticker)}};const o={session_id:r.deviceId(),autoplay:r.autoplay,muted:r.muted,player_id:e.player_id,customer_user_id:e.customer_user_id,player_version:"3.27.0-rc.1"},a=Tracker.of(r,{verb:Tracker.verb.POST,url:"https://ptm.flowplayer.com/:video_type/:sitegroup_id/:event_type",events:Q,required_keys:w,optional_keys:T.concat(E).slice(0),metadata:o});r.on("reap",(function(){a&&a.destroy()})),r.on("config",(function(t){if(!a)return;const i=m(t,"data.metadata",{});if(!i.media_id)return;const o=m(a,"metadata.media_id");if(o&&i.media_id==o)return;const s=m(e,"analytics",{});a.put(i),a.put(s);const u=m(e,"metadata.live_start_time",e.live)?N:b;a.put({video_type:u,source:e.source||S()||""}),n.ticker=e.live?{ticks:0,last_tracked_ts:Date.now(),kind:"live"}:{last_idx:0,segment_duration:0,breakpoints:[],kind:"vod"},n.ended=!1,r.emit(k)}));let s=0;r.on("playing",(function(){if(!a)return;if(s||function(e,t){return e.metadata.media_id&&e.metadata.media_id==t.last_media_id}(a,n))return;a.put({muted:r.muted});const e=L(r);if(e)return s=Promise.resolve(e).then((function(){n.last_media_id=a.metadata.media_id,r.emit(g),s=0})).catch((function(){s=0}));n.last_media_id=a.metadata.media_id,r.emit(g)})),r.on("timeupdate",(function(){var t;a&&(s||L(r)||n.ended||(!e.live&&r.currentTime+.25>=r.duration&&x(r,n.ticker,!0),(t=i).locked||(t.locked=setTimeout((function(){return t.task(),function(e){return e.locked=void 0,e}(t)}),t.ttl))))})),r.on("seeked",(function(){a&&n.ticker&&"vod"==n.ticker.kind&&function(e,t){R(e,t),t.last_idx=A(e,t)}(r,n.ticker)})),r.on("ended",(function(){a&&function(e,t){t.ended||(t.ended=!0,x(e,t.ticker))}(r,n)}))}}).pluginName="analytics",O);return function(e,t){if("object"==typeof exports&&"undefined"!=typeof module)return t;if(null===document.currentScript)return t;"flowplayer"in e||(e.flowplayer={extensions:[]});const r=e.flowplayer;return"function"==typeof r?(r(t),t):(Array.isArray(r.extensions)||(r.extensions=[]),~r.extensions.indexOf(t)||r.extensions.push(t),t)}("undefined"!=typeof window?window:void 0!==v?v:{},I)}));
|
package/plugins/asel.d.ts
CHANGED
|
@@ -232,6 +232,11 @@ declare interface Config {
|
|
|
232
232
|
autopause?: boolean;
|
|
233
233
|
rewind?: boolean;
|
|
234
234
|
loop?: boolean;
|
|
235
|
+
/**
|
|
236
|
+
* an access token for the media
|
|
237
|
+
* @public
|
|
238
|
+
*/
|
|
239
|
+
playback_token?: string;
|
|
235
240
|
/* Excluded from this release type: seamless */
|
|
236
241
|
retry?: boolean;
|
|
237
242
|
autoplay?: Autoplay;
|
package/plugins/audio.d.ts
CHANGED
|
@@ -123,6 +123,11 @@ declare interface Config {
|
|
|
123
123
|
autopause?: boolean;
|
|
124
124
|
rewind?: boolean;
|
|
125
125
|
loop?: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* an access token for the media
|
|
128
|
+
* @public
|
|
129
|
+
*/
|
|
130
|
+
playback_token?: string;
|
|
126
131
|
/* Excluded from this release type: seamless */
|
|
127
132
|
retry?: boolean;
|
|
128
133
|
autoplay?: Autoplay;
|
package/plugins/chapters.d.ts
CHANGED
|
@@ -125,6 +125,11 @@ declare interface Config {
|
|
|
125
125
|
autopause?: boolean;
|
|
126
126
|
rewind?: boolean;
|
|
127
127
|
loop?: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* an access token for the media
|
|
130
|
+
* @public
|
|
131
|
+
*/
|
|
132
|
+
playback_token?: string;
|
|
128
133
|
/* Excluded from this release type: seamless */
|
|
129
134
|
retry?: boolean;
|
|
130
135
|
autoplay?: Autoplay;
|
package/plugins/chromecast.d.ts
CHANGED
|
@@ -186,6 +186,11 @@ declare interface Config {
|
|
|
186
186
|
autopause?: boolean;
|
|
187
187
|
rewind?: boolean;
|
|
188
188
|
loop?: boolean;
|
|
189
|
+
/**
|
|
190
|
+
* an access token for the media
|
|
191
|
+
* @public
|
|
192
|
+
*/
|
|
193
|
+
playback_token?: string;
|
|
189
194
|
/* Excluded from this release type: seamless */
|
|
190
195
|
retry?: boolean;
|
|
191
196
|
autoplay?: Autoplay;
|
package/plugins/comscore.d.ts
CHANGED
|
@@ -123,6 +123,11 @@ declare interface Config {
|
|
|
123
123
|
autopause?: boolean;
|
|
124
124
|
rewind?: boolean;
|
|
125
125
|
loop?: boolean;
|
|
126
|
+
/**
|
|
127
|
+
* an access token for the media
|
|
128
|
+
* @public
|
|
129
|
+
*/
|
|
130
|
+
playback_token?: string;
|
|
126
131
|
/* Excluded from this release type: seamless */
|
|
127
132
|
retry?: boolean;
|
|
128
133
|
autoplay?: Autoplay;
|
package/plugins/consent.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/cuepoints.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/dash.d.ts
CHANGED
|
@@ -133,6 +133,11 @@ declare interface Config {
|
|
|
133
133
|
autopause?: boolean;
|
|
134
134
|
rewind?: boolean;
|
|
135
135
|
loop?: boolean;
|
|
136
|
+
/**
|
|
137
|
+
* an access token for the media
|
|
138
|
+
* @public
|
|
139
|
+
*/
|
|
140
|
+
playback_token?: string;
|
|
136
141
|
/* Excluded from this release type: seamless */
|
|
137
142
|
retry?: boolean;
|
|
138
143
|
autoplay?: Autoplay;
|
package/plugins/drm.d.ts
CHANGED
|
@@ -125,6 +125,11 @@ declare interface Config {
|
|
|
125
125
|
autopause?: boolean;
|
|
126
126
|
rewind?: boolean;
|
|
127
127
|
loop?: boolean;
|
|
128
|
+
/**
|
|
129
|
+
* an access token for the media
|
|
130
|
+
* @public
|
|
131
|
+
*/
|
|
132
|
+
playback_token?: string;
|
|
128
133
|
/* Excluded from this release type: seamless */
|
|
129
134
|
retry?: boolean;
|
|
130
135
|
autoplay?: Autoplay;
|
package/plugins/endscreen.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/fas.d.ts
CHANGED
|
@@ -118,6 +118,11 @@ declare interface Config {
|
|
|
118
118
|
autopause?: boolean;
|
|
119
119
|
rewind?: boolean;
|
|
120
120
|
loop?: boolean;
|
|
121
|
+
/**
|
|
122
|
+
* an access token for the media
|
|
123
|
+
* @public
|
|
124
|
+
*/
|
|
125
|
+
playback_token?: string;
|
|
121
126
|
/* Excluded from this release type: seamless */
|
|
122
127
|
retry?: boolean;
|
|
123
128
|
autoplay?: Autoplay;
|
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/ga4.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/gemius.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/hls.d.ts
CHANGED
|
@@ -121,6 +121,11 @@ declare interface Config {
|
|
|
121
121
|
autopause?: boolean;
|
|
122
122
|
rewind?: boolean;
|
|
123
123
|
loop?: boolean;
|
|
124
|
+
/**
|
|
125
|
+
* an access token for the media
|
|
126
|
+
* @public
|
|
127
|
+
*/
|
|
128
|
+
playback_token?: string;
|
|
124
129
|
/* Excluded from this release type: seamless */
|
|
125
130
|
retry?: boolean;
|
|
126
131
|
autoplay?: Autoplay;
|
package/plugins/id3.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/iframe.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/keyboard.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/message.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/ovp.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/playlist.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/preview.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/qsel.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/qul.d.ts
CHANGED
|
@@ -117,6 +117,11 @@ declare interface Config {
|
|
|
117
117
|
autopause?: boolean;
|
|
118
118
|
rewind?: boolean;
|
|
119
119
|
loop?: boolean;
|
|
120
|
+
/**
|
|
121
|
+
* an access token for the media
|
|
122
|
+
* @public
|
|
123
|
+
*/
|
|
124
|
+
playback_token?: string;
|
|
120
125
|
/* Excluded from this release type: seamless */
|
|
121
126
|
retry?: boolean;
|
|
122
127
|
autoplay?: Autoplay;
|
package/plugins/rts.d.ts
CHANGED
|
@@ -128,6 +128,11 @@ declare interface Config {
|
|
|
128
128
|
autopause?: boolean;
|
|
129
129
|
rewind?: boolean;
|
|
130
130
|
loop?: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* an access token for the media
|
|
133
|
+
* @public
|
|
134
|
+
*/
|
|
135
|
+
playback_token?: string;
|
|
131
136
|
/* Excluded from this release type: seamless */
|
|
132
137
|
retry?: boolean;
|
|
133
138
|
autoplay?: Autoplay;
|
|
@@ -785,6 +790,7 @@ export declare type MillicastSrc = {
|
|
|
785
790
|
* Subscriber token. If you set a Playback Token by enabling stream security in the RTS Wowza Video configuration, you would add it as the subscriberToken.
|
|
786
791
|
*/
|
|
787
792
|
subscriberToken?: string;
|
|
793
|
+
/* Excluded from this release type: __TEST_STREAM_ACCOUNT_ID__ */
|
|
788
794
|
type: "wowza/rts";
|
|
789
795
|
};
|
|
790
796
|
|