@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.
Files changed (50) hide show
  1. package/core.js +1 -1
  2. package/default.js +1 -1
  3. package/embed.js +2 -2
  4. package/flowplayer.css +1 -1
  5. package/index.d.ts +5 -0
  6. package/package.json +1 -1
  7. package/plugins/ads.d.ts +5 -0
  8. package/plugins/ads.js +1 -1
  9. package/plugins/airplay.d.ts +5 -0
  10. package/plugins/analytics.d.ts +5 -0
  11. package/plugins/analytics.js +1 -1
  12. package/plugins/asel.d.ts +5 -0
  13. package/plugins/audio.d.ts +5 -0
  14. package/plugins/chapters.d.ts +5 -0
  15. package/plugins/chromecast.d.ts +5 -0
  16. package/plugins/comscore.d.ts +5 -0
  17. package/plugins/consent.d.ts +5 -0
  18. package/plugins/context-menu.d.ts +5 -0
  19. package/plugins/cuepoints.d.ts +5 -0
  20. package/plugins/dash.d.ts +5 -0
  21. package/plugins/drm.d.ts +5 -0
  22. package/plugins/endscreen.d.ts +5 -0
  23. package/plugins/fas.d.ts +5 -0
  24. package/plugins/float-on-scroll.d.ts +5 -0
  25. package/plugins/ga4.d.ts +5 -0
  26. package/plugins/gemius.d.ts +5 -0
  27. package/plugins/google-analytics.d.ts +5 -0
  28. package/plugins/hls.d.ts +5 -0
  29. package/plugins/id3.d.ts +5 -0
  30. package/plugins/iframe.d.ts +5 -0
  31. package/plugins/keyboard.d.ts +5 -0
  32. package/plugins/media-session.d.ts +5 -0
  33. package/plugins/message.d.ts +5 -0
  34. package/plugins/ovp.d.ts +5 -0
  35. package/plugins/playlist.d.ts +5 -0
  36. package/plugins/preview.d.ts +5 -0
  37. package/plugins/qsel.d.ts +5 -0
  38. package/plugins/qul.d.ts +5 -0
  39. package/plugins/rts.d.ts +6 -0
  40. package/plugins/rts.js +8 -8
  41. package/plugins/share.d.ts +5 -0
  42. package/plugins/speed.d.ts +5 -0
  43. package/plugins/ssai.d.ts +5 -0
  44. package/plugins/ssai.js +1 -1
  45. package/plugins/subtitles.d.ts +5 -0
  46. package/plugins/thumbnails.d.ts +5 -0
  47. package/plugins/tizen.d.ts +5 -0
  48. package/plugins/vtsel.d.ts +5 -0
  49. package/plugins/webos.d.ts +5 -0
  50. package/util/loader.d.ts +5 -0
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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;
@@ -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/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;
@@ -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/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