@flowplayer/player 3.32.2-rc → 3.33.0

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 (52) 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 +8 -2
  6. package/package.json +1 -1
  7. package/plugins/ads.d.ts +8 -2
  8. package/plugins/ads.js +1 -1
  9. package/plugins/airplay.d.ts +8 -2
  10. package/plugins/analytics.d.ts +8 -2
  11. package/plugins/analytics.js +1 -1
  12. package/plugins/asel.d.ts +8 -2
  13. package/plugins/audio.d.ts +8 -2
  14. package/plugins/chapters.d.ts +8 -2
  15. package/plugins/chromecast.d.ts +8 -2
  16. package/plugins/comscore.d.ts +8 -2
  17. package/plugins/consent.d.ts +8 -2
  18. package/plugins/context-menu.d.ts +8 -2
  19. package/plugins/cuepoints.d.ts +8 -2
  20. package/plugins/dash.d.ts +8 -2
  21. package/plugins/dash.js +1 -1
  22. package/plugins/drm.d.ts +8 -2
  23. package/plugins/endscreen.d.ts +8 -2
  24. package/plugins/fas.d.ts +8 -2
  25. package/plugins/float-on-scroll.d.ts +8 -2
  26. package/plugins/ga4.d.ts +8 -2
  27. package/plugins/gemius.d.ts +8 -2
  28. package/plugins/google-analytics.d.ts +8 -2
  29. package/plugins/hls.d.ts +8 -2
  30. package/plugins/id3.d.ts +8 -2
  31. package/plugins/iframe.d.ts +8 -2
  32. package/plugins/keyboard.d.ts +8 -2
  33. package/plugins/media-session.d.ts +8 -2
  34. package/plugins/message.d.ts +8 -2
  35. package/plugins/ovp.d.ts +8 -2
  36. package/plugins/playlist.d.ts +8 -2
  37. package/plugins/preview.d.ts +8 -2
  38. package/plugins/qsel.d.ts +23 -2
  39. package/plugins/qsel.js +1 -1
  40. package/plugins/qul.d.ts +8 -2
  41. package/plugins/rts.d.ts +8 -2
  42. package/plugins/rts.js +1 -1
  43. package/plugins/share.d.ts +8 -2
  44. package/plugins/speed.d.ts +8 -2
  45. package/plugins/ssai.d.ts +8 -2
  46. package/plugins/ssai.js +1 -1
  47. package/plugins/subtitles.d.ts +8 -2
  48. package/plugins/thumbnails.d.ts +8 -2
  49. package/plugins/tizen.d.ts +8 -2
  50. package/plugins/vtsel.d.ts +8 -2
  51. package/plugins/webos.d.ts +8 -2
  52. package/util/loader.d.ts +8 -2
@@ -967,6 +967,8 @@ declare class I18n implements Plugin_2 {
967
967
  };
968
968
  };
969
969
  init(config: Config, _root: never, video: Player): void;
970
+ /* Excluded from this release type: _nonLanguageFields */
971
+ /* Excluded from this release type: languagesLoaded */
970
972
  }
971
973
 
972
974
  declare const IN_VIEWPORT = "is-in-viewport";
@@ -1648,8 +1650,12 @@ QUALITY_CHANGE = "qualitychange";
1648
1650
  * @public
1649
1651
  */
1650
1652
  declare type QualityChangeEventDetail = {
1651
- before?: Level | Representation;
1652
- after?: Level | Representation;
1653
+ before?: (Level & {
1654
+ level?: number;
1655
+ }) | Representation;
1656
+ after: (Level & {
1657
+ level?: number;
1658
+ }) | Representation;
1653
1659
  plugin: string;
1654
1660
  automatic: boolean;
1655
1661
  /* Excluded from this release type: downscale */
@@ -961,6 +961,8 @@ declare class I18n implements Plugin_2 {
961
961
  };
962
962
  };
963
963
  init(config: Config, _root: never, video: Player): void;
964
+ /* Excluded from this release type: _nonLanguageFields */
965
+ /* Excluded from this release type: languagesLoaded */
964
966
  }
965
967
 
966
968
  declare const IN_VIEWPORT = "is-in-viewport";
@@ -1642,8 +1644,12 @@ QUALITY_CHANGE = "qualitychange";
1642
1644
  * @public
1643
1645
  */
1644
1646
  declare type QualityChangeEventDetail = {
1645
- before?: Level | Representation;
1646
- after?: Level | Representation;
1647
+ before?: (Level & {
1648
+ level?: number;
1649
+ }) | Representation;
1650
+ after: (Level & {
1651
+ level?: number;
1652
+ }) | Representation;
1647
1653
  plugin: string;
1648
1654
  automatic: boolean;
1649
1655
  /* Excluded from this release type: downscale */
@@ -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;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={})=>{var i;if(null===(i=this.emitter)||void 0===i?void 0:i.hasState("consent-no-tracking"))return;const a=e(o.metadata,{event_type:t},r.data||r),s=function(e,t){return e.replace(n,e=>{const r=e.slice(1,e.length);return r in t?t[r].toString():e})}(o.url,a),u=Tracker.pluck_valid_keys(o,a),d=Tracker.ensure_required_keys(o,u);if(d.length)return o.log.error(`Tracker.validate_metadata() failed for\n Event[${t}]\n missing keys: ${d}\n payload:\n ${JSON.stringify(u,null,2)}`);this.rq&&RequestQueue.rpush(this.rq,[s,this.verb,u])})})}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}}var o;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 d="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 c=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(d(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 d(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(c(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"];const R=100,q=1e3;function A(e,t){return e.duration/1===e.duration&&Object.assign(t,function(e){const t=e/R;return{segment_duration:t,breakpoints:Array(...Array(R)).map(function(e,r){return Math.floor(r*t*q)/q})}}(e.duration))}function S(e,t,r){if(!t.segment_duration&&!A(e,t))return;const n=function(e,t,r){const n=t.last_idx,i=r?99:O(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 O(e,t){return Math.min(Math.floor(e.currentTime/t.segment_duration),99)}function b(){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 N;const Q="vod",x="live",L=[k,y,g];function I(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 S(e,t,"boolean"==typeof r&&r)}}function M(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 P=((N=class Analytics{init(e,t,r){if(!h.from_token(e.token||"").is_granted(h.permissions.ANALYTICS))return;if(r.analytics)return;const n=r.analytics={ticker:void 0,last_media_id:"",ended:!1},i={locked:void 0,ttl:6e3,task:()=>{I(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.32.2-rc"},a=Tracker.of(r,{verb:Tracker.verb.POST,url:"https://ptm.flowplayer.com/:video_type/:sitegroup_id/:event_type",events:L,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&&i.stream_target_id&&(i.media_id=i.stream_target_id),!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)?x:Q;a.put({video_type:u,source:e.source||b()||""}),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=M(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||M(r)||n.ended||(!e.live&&r.currentTime+.25>=r.duration&&I(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){A(e,t),t.last_idx=O(e,t)}(r,n.ticker)}),r.on("ended",function(){a&&function(e,t){t.ended||(t.ended=!0,I(e,t.ticker))}(r,n)})}}).pluginName="analytics",N),C=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:{},P);return C});
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;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={})=>{var i;if(null===(i=this.emitter)||void 0===i?void 0:i.hasState("consent-no-tracking"))return;const a=e(o.metadata,{event_type:t},r.data||r),s=function(e,t){return e.replace(n,e=>{const r=e.slice(1,e.length);return r in t?t[r].toString():e})}(o.url,a),u=Tracker.pluck_valid_keys(o,a),d=Tracker.ensure_required_keys(o,u);if(d.length)return o.log.error(`Tracker.validate_metadata() failed for\n Event[${t}]\n missing keys: ${d}\n payload:\n ${JSON.stringify(u,null,2)}`);this.rq&&RequestQueue.rpush(this.rq,[s,this.verb,u])})})}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}}var o;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 d="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 c=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(d(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 d(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(c(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"];const R=100,q=1e3;function A(e,t){return e.duration/1===e.duration&&Object.assign(t,function(e){const t=e/R;return{segment_duration:t,breakpoints:Array(...Array(R)).map(function(e,r){return Math.floor(r*t*q)/q})}}(e.duration))}function S(e,t,r){if(!t.segment_duration&&!A(e,t))return;const n=function(e,t,r){const n=t.last_idx,i=r?99:O(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 O(e,t){return Math.min(Math.floor(e.currentTime/t.segment_duration),99)}function b(){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 N;const Q="vod",x="live",L=[k,y,g];function I(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 S(e,t,"boolean"==typeof r&&r)}}function M(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 P=((N=class Analytics{init(e,t,r){if(!h.from_token(e.token||"").is_granted(h.permissions.ANALYTICS))return;if(r.analytics)return;const n=r.analytics={ticker:void 0,last_media_id:"",ended:!1,played:!1},i={locked:void 0,ttl:6e3,task:()=>{I(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.33.0"},a=Tracker.of(r,{verb:Tracker.verb.POST,url:"https://ptm.flowplayer.com/:video_type/:sitegroup_id/:event_type",events:L,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&&i.stream_target_id&&(i.media_id=i.stream_target_id),!i.media_id)return n.last_media_id="";if(n.last_media_id===i.media_id)return;n.played=!1,n.last_media_id=i.media_id;const o=m(e,"analytics",{});a.put(i),a.put(o);const s=m(e,"metadata.live_start_time",e.live)?x:Q;a.put({video_type:s,source:e.source||b()||""}),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||n.played||!n.last_media_id)return;a.put({muted:r.muted});const e=M(r);if(e)return s=Promise.resolve(e).then(function(){n.played=!0,r.emit(g),s=0}).catch(function(){s=0});n.played=!0,r.emit(g)}),r.on("timeupdate",function(){var t;a&&(s||M(r)||n.ended||!n.last_media_id||(!e.live&&r.currentTime+.25>=r.duration&&I(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.last_media_id&&n.ticker&&"vod"==n.ticker.kind&&function(e,t){A(e,t),t.last_idx=O(e,t)}(r,n.ticker)}),r.on("ended",function(){a&&n.last_media_id&&function(e,t){t.ended||(t.ended=!0,I(e,t.ticker))}(r,n)})}}).pluginName="analytics",N),C=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:{},P);return C});
package/plugins/asel.d.ts CHANGED
@@ -1078,6 +1078,8 @@ declare class I18n implements Plugin_2 {
1078
1078
  };
1079
1079
  };
1080
1080
  init(config: Config, _root: never, video: Player): void;
1081
+ /* Excluded from this release type: _nonLanguageFields */
1082
+ /* Excluded from this release type: languagesLoaded */
1081
1083
  }
1082
1084
 
1083
1085
  declare const IN_VIEWPORT = "is-in-viewport";
@@ -1759,8 +1761,12 @@ QUALITY_CHANGE = "qualitychange";
1759
1761
  * @public
1760
1762
  */
1761
1763
  declare type QualityChangeEventDetail = {
1762
- before?: Level | Representation;
1763
- after?: Level | Representation;
1764
+ before?: (Level & {
1765
+ level?: number;
1766
+ }) | Representation;
1767
+ after: (Level & {
1768
+ level?: number;
1769
+ }) | Representation;
1764
1770
  plugin: string;
1765
1771
  automatic: boolean;
1766
1772
  /* Excluded from this release type: downscale */
@@ -961,6 +961,8 @@ declare class I18n implements Plugin_2 {
961
961
  };
962
962
  };
963
963
  init(config: Config, _root: never, video: Player): void;
964
+ /* Excluded from this release type: _nonLanguageFields */
965
+ /* Excluded from this release type: languagesLoaded */
964
966
  }
965
967
 
966
968
  declare const IN_VIEWPORT = "is-in-viewport";
@@ -1642,8 +1644,12 @@ QUALITY_CHANGE = "qualitychange";
1642
1644
  * @public
1643
1645
  */
1644
1646
  declare type QualityChangeEventDetail = {
1645
- before?: Level | Representation;
1646
- after?: Level | Representation;
1647
+ before?: (Level & {
1648
+ level?: number;
1649
+ }) | Representation;
1650
+ after: (Level & {
1651
+ level?: number;
1652
+ }) | Representation;
1647
1653
  plugin: string;
1648
1654
  automatic: boolean;
1649
1655
  /* Excluded from this release type: downscale */
@@ -970,6 +970,8 @@ declare class I18n implements Plugin_2 {
970
970
  };
971
971
  };
972
972
  init(config: Config, _root: never, video: Player): void;
973
+ /* Excluded from this release type: _nonLanguageFields */
974
+ /* Excluded from this release type: languagesLoaded */
973
975
  }
974
976
 
975
977
  declare const IN_VIEWPORT = "is-in-viewport";
@@ -1651,8 +1653,12 @@ QUALITY_CHANGE = "qualitychange";
1651
1653
  * @public
1652
1654
  */
1653
1655
  declare type QualityChangeEventDetail = {
1654
- before?: Level | Representation;
1655
- after?: Level | Representation;
1656
+ before?: (Level & {
1657
+ level?: number;
1658
+ }) | Representation;
1659
+ after: (Level & {
1660
+ level?: number;
1661
+ }) | Representation;
1656
1662
  plugin: string;
1657
1663
  automatic: boolean;
1658
1664
  /* Excluded from this release type: downscale */
@@ -1024,6 +1024,8 @@ declare class I18n implements Plugin_2 {
1024
1024
  };
1025
1025
  };
1026
1026
  init(config: Config, _root: never, video: Player): void;
1027
+ /* Excluded from this release type: _nonLanguageFields */
1028
+ /* Excluded from this release type: languagesLoaded */
1027
1029
  }
1028
1030
 
1029
1031
  declare const IN_VIEWPORT = "is-in-viewport";
@@ -1707,8 +1709,12 @@ QUALITY_CHANGE = "qualitychange";
1707
1709
  * @public
1708
1710
  */
1709
1711
  declare type QualityChangeEventDetail = {
1710
- before?: Level | Representation;
1711
- after?: Level | Representation;
1712
+ before?: (Level & {
1713
+ level?: number;
1714
+ }) | Representation;
1715
+ after: (Level & {
1716
+ level?: number;
1717
+ }) | Representation;
1712
1718
  plugin: string;
1713
1719
  automatic: boolean;
1714
1720
  /* Excluded from this release type: downscale */
@@ -961,6 +961,8 @@ declare class I18n implements Plugin_2 {
961
961
  };
962
962
  };
963
963
  init(config: Config, _root: never, video: Player): void;
964
+ /* Excluded from this release type: _nonLanguageFields */
965
+ /* Excluded from this release type: languagesLoaded */
964
966
  }
965
967
 
966
968
  declare const IN_VIEWPORT = "is-in-viewport";
@@ -1642,8 +1644,12 @@ QUALITY_CHANGE = "qualitychange";
1642
1644
  * @public
1643
1645
  */
1644
1646
  declare type QualityChangeEventDetail = {
1645
- before?: Level | Representation;
1646
- after?: Level | Representation;
1647
+ before?: (Level & {
1648
+ level?: number;
1649
+ }) | Representation;
1650
+ after: (Level & {
1651
+ level?: number;
1652
+ }) | Representation;
1647
1653
  plugin: string;
1648
1654
  automatic: boolean;
1649
1655
  /* Excluded from this release type: downscale */
@@ -987,6 +987,8 @@ declare class I18n implements Plugin_2 {
987
987
  };
988
988
  };
989
989
  init(config: Config, _root: never, video: Player): void;
990
+ /* Excluded from this release type: _nonLanguageFields */
991
+ /* Excluded from this release type: languagesLoaded */
990
992
  }
991
993
 
992
994
  declare const IN_VIEWPORT = "is-in-viewport";
@@ -1668,8 +1670,12 @@ QUALITY_CHANGE = "qualitychange";
1668
1670
  * @public
1669
1671
  */
1670
1672
  declare type QualityChangeEventDetail = {
1671
- before?: Level | Representation;
1672
- after?: Level | Representation;
1673
+ before?: (Level & {
1674
+ level?: number;
1675
+ }) | Representation;
1676
+ after: (Level & {
1677
+ level?: number;
1678
+ }) | Representation;
1673
1679
  plugin: string;
1674
1680
  automatic: boolean;
1675
1681
  /* Excluded from this release type: downscale */
@@ -968,6 +968,8 @@ declare class I18n implements Plugin_2 {
968
968
  };
969
969
  };
970
970
  init(config: Config, _root: never, video: Player): void;
971
+ /* Excluded from this release type: _nonLanguageFields */
972
+ /* Excluded from this release type: languagesLoaded */
971
973
  }
972
974
 
973
975
  declare const IN_VIEWPORT = "is-in-viewport";
@@ -1656,8 +1658,12 @@ QUALITY_CHANGE = "qualitychange";
1656
1658
  * @public
1657
1659
  */
1658
1660
  declare type QualityChangeEventDetail = {
1659
- before?: Level | Representation;
1660
- after?: Level | Representation;
1661
+ before?: (Level & {
1662
+ level?: number;
1663
+ }) | Representation;
1664
+ after: (Level & {
1665
+ level?: number;
1666
+ }) | Representation;
1661
1667
  plugin: string;
1662
1668
  automatic: boolean;
1663
1669
  /* Excluded from this release type: downscale */
@@ -1085,6 +1085,8 @@ declare class I18n implements Plugin_2 {
1085
1085
  };
1086
1086
  };
1087
1087
  init(config: Config, _root: never, video: Player): void;
1088
+ /* Excluded from this release type: _nonLanguageFields */
1089
+ /* Excluded from this release type: languagesLoaded */
1088
1090
  }
1089
1091
 
1090
1092
  declare const IN_VIEWPORT = "is-in-viewport";
@@ -1766,8 +1768,12 @@ QUALITY_CHANGE = "qualitychange";
1766
1768
  * @public
1767
1769
  */
1768
1770
  declare type QualityChangeEventDetail = {
1769
- before?: Level | Representation;
1770
- after?: Level | Representation;
1771
+ before?: (Level & {
1772
+ level?: number;
1773
+ }) | Representation;
1774
+ after: (Level & {
1775
+ level?: number;
1776
+ }) | Representation;
1771
1777
  plugin: string;
1772
1778
  automatic: boolean;
1773
1779
  /* Excluded from this release type: downscale */
package/plugins/dash.d.ts CHANGED
@@ -1032,6 +1032,8 @@ declare class I18n implements Plugin_2 {
1032
1032
  };
1033
1033
  };
1034
1034
  init(config: Config, _root: never, video: Player): void;
1035
+ /* Excluded from this release type: _nonLanguageFields */
1036
+ /* Excluded from this release type: languagesLoaded */
1035
1037
  }
1036
1038
 
1037
1039
  declare const IN_VIEWPORT = "is-in-viewport";
@@ -1715,8 +1717,12 @@ QUALITY_CHANGE = "qualitychange";
1715
1717
  * @public
1716
1718
  */
1717
1719
  declare type QualityChangeEventDetail = {
1718
- before?: Level | Representation;
1719
- after?: Level | Representation;
1720
+ before?: (Level & {
1721
+ level?: number;
1722
+ }) | Representation;
1723
+ after: (Level & {
1724
+ level?: number;
1725
+ }) | Representation;
1720
1726
  plugin: string;
1721
1727
  automatic: boolean;
1722
1728
  /* Excluded from this release type: downscale */