@mux/playback-core 0.26.0 → 0.27.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.
- package/dist/index.cjs.js +12 -3
- package/dist/index.cjs.js.map +4 -4
- package/dist/index.mjs +12 -3
- package/dist/index.mjs.map +4 -4
- package/dist/playback-core.js +34 -24
- package/dist/playback-core.js.map +4 -4
- package/dist/playback-core.mjs +34 -24
- package/dist/playback-core.mjs.map +4 -4
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/errors.d.ts +42 -5
- package/dist/types/index.d.ts +14 -26
- package/dist/types/request-errors.d.ts +13 -0
- package/dist/types/text-tracks.d.ts +1 -1
- package/dist/types/types.d.ts +11 -6
- package/dist/types/util.d.ts +11 -0
- package/dist/types-ts3.4/errors.d.ts +42 -5
- package/dist/types-ts3.4/index.d.ts +13 -25
- package/dist/types-ts3.4/request-errors.d.ts +13 -0
- package/dist/types-ts3.4/text-tracks.d.ts +1 -1
- package/dist/types-ts3.4/types.d.ts +12 -7
- package/dist/types-ts3.4/util.d.ts +11 -0
- package/package.json +8 -7
package/dist/index.mjs
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
-
import X from"mux-embed";import Re from"hls.js";var y=Re;var b=class b extends Error{constructor(n,a=b.MEDIA_ERR_CUSTOM,r,o){var s;super(n);this.name="MediaError",this.code=a,this.context=o,this.fatal=r!=null?r:a>=b.MEDIA_ERR_NETWORK&&a<=b.MEDIA_ERR_ENCRYPTED,this.message||(this.message=(s=b.defaultMessages[this.code])!=null?s:"")}};b.MEDIA_ERR_ABORTED=1,b.MEDIA_ERR_NETWORK=2,b.MEDIA_ERR_DECODE=3,b.MEDIA_ERR_SRC_NOT_SUPPORTED=4,b.MEDIA_ERR_ENCRYPTED=5,b.MEDIA_ERR_CUSTOM=100,b.defaultMessages={1:"You aborted the media playback",2:"A network error caused the media download to fail.",3:"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.",4:"An unsupported error occurred. The server or network failed, or your browser does not support this format.",5:"The media is encrypted and there are no keys to decrypt it."};var L=b;var Ne=e=>e==null,_=(e,t)=>Ne(t)?!1:e in t,w={ANY:"any",MUTED:"muted"},g={ON_DEMAND:"on-demand",LIVE:"live",UNKNOWN:"unknown"},O={MSE:"mse",NATIVE:"native"},C={HEADER:"header",QUERY:"query",NONE:"none"},mt=Object.values(C),v={M3U8:"application/vnd.apple.mpegurl",MP4:"video/mp4"},S={HLS:v.M3U8},gt=Object.keys(S),Mt=[...Object.values(v),"hls","HLS"],bt={upTo720p:"720p",upTo1080p:"1080p",upTo1440p:"1440p",upTo2160p:"2160p"},vt={noLessThan480p:"480p",noLessThan540p:"540p",noLessThan720p:"720p",noLessThan1080p:"1080p",noLessThan1440p:"1440p",noLessThan2160p:"2160p"},Lt={DESCENDING:"desc"};var T=(e,t,n,a,r=e)=>{r.addEventListener(t,n,a),e.addEventListener("teardown",()=>{r.removeEventListener(t,n)},{once:!0})};function Z(e,t,n){t&&n>t&&(n=t);for(let a=0;a<e.length;a++)if(e.start(a)<=n&&e.end(a)>=n)return!0;return!1}var ee=e=>{let t=e.indexOf("?");if(t<0)return[e];let n=e.slice(0,t),a=e.slice(t);return[n,a]},h=e=>{let t=e.type;if(t){let a=t.toUpperCase();return _(a,S)?S[a]:t}let{src:n}=e;return n?He(n):""},V=e=>e==="VOD"?g.ON_DEMAND:g.LIVE,U=e=>e==="EVENT"?Number.POSITIVE_INFINITY:e==="VOD"?Number.NaN:0,He=e=>{let t="";try{t=new URL(e).pathname}catch{console.error("invalid url")}let n=t.lastIndexOf(".");if(n<0)return"";let r=t.slice(n+1).toUpperCase();return _(r,v)?v[r]:""};var _e=Object.values(w),te=e=>typeof e=="boolean"||typeof e=="string"&&_e.includes(e),ne=(e,t,n)=>{let{autoplay:a}=e,r=!1,o=!1,s=te(a)?a:!!a,i=()=>{r||T(t,"playing",()=>{r=!0},{once:!0})};if(i(),T(t,"loadstart",()=>{r=!1,i(),F(t,s)},{once:!0}),T(t,"loadstart",()=>{n||(e.streamType&&e.streamType!==g.UNKNOWN?o=e.streamType===g.LIVE:o=!Number.isFinite(t.duration)),F(t,s)},{once:!0}),n&&n.once(y.Events.LEVEL_LOADED,(u,d)=>{var c;e.streamType&&e.streamType!==g.UNKNOWN?o=e.streamType===g.LIVE:o=(c=d.details.live)!=null?c:!1}),!s){let u=()=>{!o||Number.isFinite(e.startTime)||(n!=null&&n.liveSyncPosition?t.currentTime=n.liveSyncPosition:Number.isFinite(t.seekable.end(0))&&(t.currentTime=t.seekable.end(0)))};n&&T(t,"play",()=>{t.preload==="metadata"?n.once(y.Events.LEVEL_UPDATED,u):u()},{once:!0})}return u=>{r||(s=te(u)?u:!!u,F(t,s))}},F=(e,t)=>{if(!t)return;let n=e.muted,a=()=>e.muted=n;switch(t){case w.ANY:e.play().catch(()=>{e.muted=!0,e.play().catch(a)});break;case w.MUTED:e.muted=!0,e.play().catch(a);break;default:e.play().catch(()=>{});break}};var re=({preload:e,src:t},n,a)=>{let r=c=>{c!=null&&["","none","metadata","auto"].includes(c)?n.setAttribute("preload",c):n.removeAttribute("preload")};if(!a)return r(e),r;let o=!1,s=!1,i=a.config.maxBufferLength,l=a.config.maxBufferSize,u=c=>{r(c);let p=c!=null?c:n.preload;s||p==="none"||(p==="metadata"?(a.config.maxBufferLength=1,a.config.maxBufferSize=1):(a.config.maxBufferLength=i,a.config.maxBufferSize=l),d())},d=()=>{!o&&t&&(o=!0,a.loadSource(t))};return T(n,"play",()=>{s=!0,a.config.maxBufferLength=i,a.config.maxBufferSize=l,d()},{once:!0}),u(e),u};function ae(e,t){var l;if(!("videoTracks"in e))return;let n=new WeakMap;t.on(y.Events.MANIFEST_PARSED,function(u,d){i();let c=e.addVideoTrack("main");c.selected=!0;for(let[p,f]of d.levels.entries()){let m=c.addRendition(f.url[0],f.width,f.height,f.videoCodec,f.bitrate);n.set(f,`${p}`),m.id=`${p}`}}),t.on(y.Events.AUDIO_TRACKS_UPDATED,function(u,d){s();for(let c of d.audioTracks){let p=c.default?"main":"alternative",f=e.addAudioTrack(p,c.name,c.lang);f.id=`${c.id}`,c.default&&(f.enabled=!0)}}),e.audioTracks.addEventListener("change",()=>{var c;let u=+((c=[...e.audioTracks].find(p=>p.enabled))==null?void 0:c.id),d=t.audioTracks.map(p=>p.id);u!=t.audioTrack&&d.includes(u)&&(t.audioTrack=u)}),t.on(y.Events.LEVELS_UPDATED,function(u,d){var f;let c=e.videoTracks[(f=e.videoTracks.selectedIndex)!=null?f:0];if(!c)return;let p=d.levels.map(m=>n.get(m));for(let m of e.videoRenditions)m.id&&!p.includes(m.id)&&c.removeRendition(m)});let a=u=>{let d=u.target.selectedIndex;d!=t.nextLevel&&r(d)},r=u=>{let d=e.currentTime,c=!1,p=(f,m)=>{c||(c=!Number.isFinite(m.endOffset))};t.on(y.Events.BUFFER_FLUSHING,p),t.nextLevel=u,t.off(y.Events.BUFFER_FLUSHING,p),c||t.trigger(y.Events.BUFFER_FLUSHING,{startOffset:d+10,endOffset:1/0,type:"video"})};(l=e.videoRenditions)==null||l.addEventListener("change",a);let o=()=>{for(let u of e.videoTracks)e.removeVideoTrack(u)},s=()=>{for(let u of e.audioTracks)e.removeAudioTrack(u)},i=()=>{o(),s()};t.once(y.Events.DESTROYING,i)}var W=e=>"time"in e?e.time:e.startTime;function oe(e,t){t.on(y.Events.NON_NATIVE_TEXT_TRACKS_FOUND,(r,{tracks:o})=>{o.forEach(s=>{var u;let i=(u=s.subtitleTrack)!=null?u:s.closedCaptions,l=t.subtitleTracks.findIndex(({lang:d,name:c,type:p})=>d==(i==null?void 0:i.lang)&&c===s.label&&p.toLowerCase()===s.kind);K(e,s.kind,s.label,i==null?void 0:i.lang,`${s.kind}${l}`)})});let n=()=>{var s;if(!t.subtitleTracks.length)return;let r=Array.from(e.textTracks).find(i=>i.id&&i.mode==="showing"&&["subtitles","captions"].includes(i.kind)),o=`${(s=t.subtitleTracks[t.subtitleTrack])==null?void 0:s.type.toLowerCase()}${t.subtitleTrack}`;if(r&&(t.subtitleTrack<0||(r==null?void 0:r.id)!==o)){let i=t.subtitleTracks.findIndex(({lang:l,name:u,type:d})=>l==r.language&&u===r.label&&d.toLowerCase()===r.kind);t.subtitleTrack=i}r&&(r==null?void 0:r.id)===o&&r.cues&&Array.from(r.cues).forEach(i=>{r.addCue(i)})};e.textTracks.addEventListener("change",n),t.on(y.Events.CUES_PARSED,(r,{track:o,cues:s})=>{let i=e.textTracks.getTrackById(o);if(!i)return;let l=i.mode==="disabled";l&&(i.mode="hidden"),s.forEach(u=>{var d;(d=i.cues)!=null&&d.getCueById(u.id)||i.addCue(u)}),l&&(i.mode="disabled")}),t.once(y.Events.DESTROYING,()=>{e.textTracks.removeEventListener("change",n),e.querySelectorAll("track[data-removeondestroy]").forEach(o=>{o.remove()})});let a=()=>{Array.from(e.textTracks).forEach(r=>{var o,s;if(!["subtitles","caption"].includes(r.kind)&&r.label==="thumbnails"){if(!((o=r.cues)!=null&&o.length)){let i=e.querySelector('track[label="thumbnails"]'),l=(s=i==null?void 0:i.getAttribute("src"))!=null?s:"";i==null||i.removeAttribute("src"),setTimeout(()=>{i==null||i.setAttribute("src",l)},0)}r.mode!=="hidden"&&(r.mode="hidden")}})};t.once(y.Events.MANIFEST_LOADED,a),t.once(y.Events.MEDIA_ATTACHED,a)}function K(e,t,n,a,r){let o=document.createElement("track");return o.kind=t,o.label=n,a&&(o.srclang=a),r&&(o.id=r),o.track.mode=["subtitles","captions"].includes(t)?"disabled":"hidden",o.setAttribute("data-removeondestroy",""),e.append(o),o.track}function Oe(e,t){let n=Array.prototype.find.call(e.querySelectorAll("track"),a=>a.track===t);n==null||n.remove()}function E(e,t,n){var a;return(a=Array.from(e.querySelectorAll("track")).find(r=>r.track.label===t&&r.track.kind===n))==null?void 0:a.track}async function se(e,t,n,a){let r=E(e,n,a);return r||(r=K(e,a,n),r.mode="hidden",await new Promise(o=>setTimeout(()=>o(void 0),0))),r.mode!=="hidden"&&(r.mode="hidden"),[...t].sort((o,s)=>W(s)-W(o)).forEach(o=>{var l,u;let s=o.value,i=W(o);if("endTime"in o&&o.endTime!=null)r==null||r.addCue(new VTTCue(i,o.endTime,a==="chapters"?s:JSON.stringify(s!=null?s:null)));else{let d=Array.prototype.findIndex.call(r==null?void 0:r.cues,m=>m.startTime>=i),c=(l=r==null?void 0:r.cues)==null?void 0:l[d],p=c?c.startTime:Number.isFinite(e.duration)?e.duration:Number.MAX_SAFE_INTEGER,f=(u=r==null?void 0:r.cues)==null?void 0:u[d-1];f&&(f.endTime=i),r==null||r.addCue(new VTTCue(i,p,a==="chapters"?s:JSON.stringify(s!=null?s:null)))}}),e.textTracks.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})),r}var B="cuepoints",ie=Object.freeze({label:B});async function ce(e,t,n=ie){return se(e,t,n.label,"metadata")}var I=e=>({time:e.startTime,value:JSON.parse(e.text)});function Ve(e,t={label:B}){let n=E(e,t.label,"metadata");return n!=null&&n.cues?Array.from(n.cues,a=>I(a)):[]}function ue(e,t={label:B}){var o,s;let n=E(e,t.label,"metadata");if(!((o=n==null?void 0:n.activeCues)!=null&&o.length))return;if(n.activeCues.length===1)return I(n.activeCues[0]);let{currentTime:a}=e,r=Array.prototype.find.call((s=n.activeCues)!=null?s:[],({startTime:i,endTime:l})=>i<=a&&l>a);return I(r||n.activeCues[0])}async function de(e,t=ie){return new Promise(n=>{T(e,"loadstart",async()=>{let a=await ce(e,[],t);T(e,"cuechange",()=>{let r=ue(e);if(r){let o=new CustomEvent("cuepointchange",{composed:!0,bubbles:!0,detail:r});e.dispatchEvent(o)}},{},a),n(a)})})}var $="chapters",le=Object.freeze({label:$}),R=e=>({startTime:e.startTime,endTime:e.endTime,value:e.text});async function pe(e,t,n=le){return se(e,t,n.label,"chapters")}function Ue(e,t={label:$}){var a;let n=E(e,t.label,"chapters");return(a=n==null?void 0:n.cues)!=null&&a.length?Array.from(n.cues,r=>R(r)):[]}function fe(e,t={label:$}){var o,s;let n=E(e,t.label,"chapters");if(!((o=n==null?void 0:n.activeCues)!=null&&o.length))return;if(n.activeCues.length===1)return R(n.activeCues[0]);let{currentTime:a}=e,r=Array.prototype.find.call((s=n.activeCues)!=null?s:[],({startTime:i,endTime:l})=>i<=a&&l>a);return R(r||n.activeCues[0])}async function ye(e,t=le){return new Promise(n=>{T(e,"loadstart",async()=>{let a=await pe(e,[],t);T(e,"cuechange",()=>{let r=fe(e);if(r){let o=new CustomEvent("chapterchange",{composed:!0,bubbles:!0,detail:r});e.dispatchEvent(o)}},{},a),n(a)})})}function Fe(e,t){if(t){let n=t.playingDate;if(n!=null)return new Date(n.getTime()-e.currentTime*1e3)}return typeof e.getStartDate=="function"?e.getStartDate():new Date(NaN)}function We(e,t){if(t&&t.playingDate)return t.playingDate;if(typeof e.getStartDate=="function"){let n=e.getStartDate();return new Date(n.getTime()+e.currentTime*1e3)}return new Date(NaN)}var N={FAIRPLAY:"fairplay",PLAYREADY:"playready",WIDEVINE:"widevine"},Ke=e=>{if(e.includes("fps"))return N.FAIRPLAY;if(e.includes("playready"))return N.PLAYREADY;if(e.includes("widevine"))return N.WIDEVINE},Be=async e=>fetch(e).then(t=>t.text()).then(t=>{let n=t.split(`
|
|
2
|
-
`).find((
|
|
3
|
-
`))}),$e=e=>{var s,i,l;let n=(i=((s=e.find(u=>u.startsWith("#EXT-X-PLAYLIST-TYPE")))!=null?s:"").split(":")[1])==null?void 0:i.trim(),a=V(n),r=U(n),o;if(a===g.LIVE){let u=e.find(c=>c.startsWith("#EXT-X-PART-INF"));if(!!u)o=+u.split(":")[1].split("=")[1]*2;else{let c=e.find(m=>m.startsWith("#EXT-X-TARGETDURATION")),p=(l=c==null?void 0:c.split(":"))==null?void 0:l[1];o=+(p!=null?p:6)*3}}return{streamType:a,targetLiveWindow:r,liveEdgeStartOffset:o}},Ye=async(e,t)=>{if(t===v.MP4)return{streamType:g.ON_DEMAND,targetLiveWindow:Number.NaN,liveEdgeStartOffset:void 0};if(t===v.M3U8){let n=await Be(e);return $e(n)}return console.error(`Media type ${t} is an unrecognized or unsupported type for src ${e}.`),{streamType:void 0,targetLiveWindow:void 0,liveEdgeStartOffset:void 0}},Y=async(e,t,n=h({src:e}))=>{var s,i,l;let{streamType:a,targetLiveWindow:r,liveEdgeStartOffset:o}=await Ye(e,n);((s=M.get(t))!=null?s:{}).liveEdgeStartOffset=o,((i=M.get(t))!=null?i:{}).targetLiveWindow=r,t.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((l=M.get(t))!=null?l:{}).streamType=a,t.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},qe=e=>{var s;let t=e.type,n=V(t),a=U(t),r,o=!!((s=e.partList)!=null&&s.length);return n===g.LIVE&&(r=o?e.partTarget*2:e.targetduration*3),{streamType:n,targetLiveWindow:a,liveEdgeStartOffset:r,lowLatency:o}},ze=(e,t,n)=>{var i,l,u,d,c,p,f,m;let{streamType:a,targetLiveWindow:r,liveEdgeStartOffset:o,lowLatency:s}=qe(e);if(a===g.LIVE){s?(n.config.backBufferLength=(i=n.userConfig.backBufferLength)!=null?i:4,n.config.maxFragLookUpTolerance=(l=n.userConfig.maxFragLookUpTolerance)!=null?l:.001,n.config.abrBandWidthUpFactor=(u=n.userConfig.abrBandWidthUpFactor)!=null?u:n.config.abrBandWidthFactor):n.config.backBufferLength=(d=n.userConfig.backBufferLength)!=null?d:8;let P=Object.freeze({get length(){return t.seekable.length},start(x){return t.seekable.start(x)},end(x){var A;return x>this.length||x<0||Number.isFinite(t.duration)?t.seekable.end(x):(A=n.liveSyncPosition)!=null?A:t.seekable.end(x)}});((c=M.get(t))!=null?c:{}).seekable=P}((p=M.get(t))!=null?p:{}).liveEdgeStartOffset=o,((f=M.get(t))!=null?f:{}).targetLiveWindow=r,t.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((m=M.get(t))!=null?m:{}).streamType=a,t.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},me,ge,Xe=(ge=(me=globalThis==null?void 0:globalThis.navigator)==null?void 0:me.userAgent)!=null?ge:"",Me,be,ve,Ge=(ve=(be=(Me=globalThis==null?void 0:globalThis.navigator)==null?void 0:Me.userAgentData)==null?void 0:be.platform)!=null?ve:"",je=Xe.toLowerCase().includes("android")||["x11","android"].some(e=>Ge.toLowerCase().includes(e)),M=new WeakMap,k="mux.com",Le,xe,ke=(xe=(Le=y).isSupported)==null?void 0:xe.call(Le),Je=je,en=()=>X.utils.now(),Qe=X.utils.generateUUID,tn=({playbackId:e,customDomain:t=k,maxResolution:n,minResolution:a,renditionOrder:r,programStartTime:o,programEndTime:s,tokens:{playback:i}={},extraSourceParams:l={}}={})=>{if(!e)return;let[u,d=""]=ee(e),c=new URL(`https://stream.${t}/${u}.m3u8${d}`);return i||c.searchParams.has("token")?(c.searchParams.forEach((p,f)=>{f!="token"&&c.searchParams.delete(f)}),i&&c.searchParams.set("token",i)):(n&&c.searchParams.set("max_resolution",n),a&&(c.searchParams.set("min_resolution",a),n&&+n.slice(0,-1)<+a.slice(0,-1)&&console.error("minResolution must be <= maxResolution","minResolution",a,"maxResolution",n)),r&&c.searchParams.set("rendition_order",r),o&&c.searchParams.set("program_start_time",`${o}`),s&&c.searchParams.set("program_end_time",`${s}`),Object.entries(l).forEach(([p,f])=>{f!=null&&c.searchParams.set(p,f)})),c.toString()},Ze=e=>{if(!e)return;let[t]=e.split("?");return t||void 0},Pe=e=>{if(!e||!e.startsWith("https://stream."))return;let[t]=new URL(e).pathname.slice(1).split(".m3u8");return t||void 0},et=e=>{var t,n,a;return(t=e==null?void 0:e.metadata)!=null&&t.video_id?e.metadata.video_id:De(e)&&(a=(n=Ze(e.playbackId))!=null?n:Pe(e.src))!=null?a:e.src},nn=e=>{var t;return(t=M.get(e))==null?void 0:t.error},Te=e=>{var t,n;return(n=(t=M.get(e))==null?void 0:t.streamType)!=null?n:g.UNKNOWN},rn=e=>{var t,n;return(n=(t=M.get(e))==null?void 0:t.targetLiveWindow)!=null?n:Number.NaN},q=e=>{var t,n;return(n=(t=M.get(e))==null?void 0:t.seekable)!=null?n:e.seekable},an=e=>{var a;let t=(a=M.get(e))==null?void 0:a.liveEdgeStartOffset;if(typeof t!="number")return Number.NaN;let n=q(e);return n.length?n.end(n.length-1)-t:Number.NaN},G=.034,tt=(e,t,n=G)=>Math.abs(e-t)<=n,Ee=(e,t,n=G)=>e>t||tt(e,t,n),nt=(e,t=G)=>e.paused&&Ee(e.currentTime,e.duration,t),Ce=(e,t)=>{var u,d,c;if(!t||!e.buffered.length)return;if(e.readyState>2)return!1;let n=t.currentLevel>=0?(d=(u=t.levels)==null?void 0:u[t.currentLevel])==null?void 0:d.details:(c=t.levels.find(p=>!!p.details))==null?void 0:c.details;if(!n||n.live)return;let{fragments:a}=n;if(!(a!=null&&a.length))return;if(e.currentTime<e.duration-(n.targetduration+.5))return!1;let r=a[a.length-1];if(e.currentTime<=r.start)return!1;let o=r.start+r.duration/2,s=e.buffered.start(e.buffered.length-1),i=e.buffered.end(e.buffered.length-1);return o>s&&o<i},rt=(e,t)=>e.ended||e.loop?e.ended:t&&Ce(e,t)?!0:nt(e),on=(e,t,n)=>{at(t,n);let{metadata:a={}}=e,{view_session_id:r=Qe()}=a,o=et(e);a.view_session_id=r,a.video_id=o,e.metadata=a;let s=d=>{var c;(c=t.mux)==null||c.emit("hb",{view_drm_type:d})};e.drmTypeCb=s,M.set(t,{});let i=ot(e,t),l=re(e,t,i);lt(e,t,i),pt(e,t,i),de(t),ye(t);let u=ne(e,t,i);return{engine:i,setAutoplay:u,setPreload:l}},at=(e,t)=>{let n=t==null?void 0:t.engine;n&&(n.detachMedia(),n.destroy()),e!=null&&e.mux&&!e.mux.deleted&&(e.mux.destroy(),delete e.mux),e&&(e.removeAttribute("src"),e.load(),e.removeEventListener("error",Se),e.removeEventListener("error",z),e.removeEventListener("durationchange",we),M.delete(e),e.dispatchEvent(new Event("teardown")))};function he(e,t){var u;let n=h(e);if(!(n===v.M3U8))return!0;let r=!n||((u=t.canPlayType(n))!=null?u:!0),{preferPlayback:o}=e,s=o===O.MSE,i=o===O.NATIVE;return r&&(i||!(ke&&(s||Je)))}var ot=(e,t)=>{let{debug:n,streamType:a,startTime:r=-1,metadata:o,preferCmcd:s,_hlsConfig:i={}}=e,u=h(e)===v.M3U8,d=he(e,t);if(u&&!d&&ke){let c={backBufferLength:30,renderTextTracksNatively:!1,liveDurationInfinity:!0,capLevelToPlayerSize:!0,capLevelOnFPSDrop:!0},p=st(a),f=it(e),m=s!==C.NONE?{useHeaders:s===C.HEADER,sessionId:o==null?void 0:o.view_session_id,contentId:o==null?void 0:o.video_id}:void 0;return new y({debug:n,startPosition:r,cmcd:m,xhrSetup:(x,A)=>{var j,J;if(s&&s!==C.QUERY)return;let D=new URL(A);if(!D.searchParams.has("CMCD"))return;let Ie=((J=(j=D.searchParams.get("CMCD"))==null?void 0:j.split(","))!=null?J:[]).filter(Q=>Q.startsWith("sid")||Q.startsWith("cid")).join(",");D.searchParams.set("CMCD",Ie),x.open("GET",D)},...c,...p,...f,...i})}},st=e=>e===g.LIVE?{backBufferLength:8}:{},it=e=>{let{drmToken:t,src:n,playbackId:a=Pe(n),drmTypeCb:r}=e;return!t||!a?{}:{emeEnabled:!0,drmSystems:{"com.apple.fps":{licenseUrl:H(e,"fairplay"),serverCertificateUrl:Ae(e,"fairplay")},"com.widevine.alpha":{licenseUrl:H(e,"widevine")},"com.microsoft.playready":{licenseUrl:H(e,"playready")}},requestMediaKeySystemAccessFunc:(o,s)=>(o==="com.widevine.alpha"&&(s=[...s.map(i=>{var u;let l=(u=i.videoCapabilities)==null?void 0:u.map(d=>({...d,robustness:"HW_SECURE_ALL"}));return{...i,videoCapabilities:l}}),...s]),navigator.requestMediaKeySystemAccess(o,s).then(i=>{let l=Ke(o);return r==null||r(l),i}))}},ct=async e=>await(await fetch(e)).arrayBuffer(),ut=async(e,t)=>{let a=await(await fetch(t,{method:"POST",headers:{"Content-type":"application/octet-stream"},body:e})).arrayBuffer();return new Uint8Array(a)},dt=(e,t)=>{T(t,"encrypted",async a=>{try{let r=a.initDataType;if(r!=="skd"){console.error(`Received unexpected initialization data type "${r}"`);return}if(!t.mediaKeys){let d=await(await navigator.requestMediaKeySystemAccess("com.apple.fps",[{initDataTypes:[r],videoCapabilities:[{contentType:"application/vnd.apple.mpegurl",robustness:""}],distinctiveIdentifier:"not-allowed",persistentState:"not-allowed",sessionTypes:["temporary"]}]).then(p=>{var f;return(f=e.drmTypeCb)==null||f.call(e,N.FAIRPLAY),p})).createMediaKeys(),c=await ct(Ae(e,"fairplay"));await d.setServerCertificate(c),await t.setMediaKeys(d)}let o=a.initData;if(o==null){console.error(`Could not start encrypted playback due to missing initData in ${a.type} event`);return}let s=t.mediaKeys.createSession();s.generateRequest(r,o);let i=await new Promise(u=>{s.addEventListener("message",d=>{u(d.message)},{once:!0})}),l=await ut(i,H(e,"fairplay"));return await s.update(l),s}catch(r){console.error(`Could not start encrypted playback due to exception "${r}"`)}})},H=({playbackId:e,drmToken:t,customDomain:n=k},a)=>`https://license.${n.toLocaleLowerCase().endsWith(k)?n:k}/license/${a}/${e}?token=${t}`,Ae=({playbackId:e,drmToken:t,customDomain:n=k},a)=>`https://license.${n.toLocaleLowerCase().endsWith(k)?n:k}/appcert/${a}/${e}?token=${t}`,De=({playbackId:e,src:t,customDomain:n})=>{if(e)return!0;if(typeof t!="string")return!1;let a=window==null?void 0:window.location.href,r=new URL(t,a).hostname.toLocaleLowerCase();return r.includes(k)||!!n&&r.includes(n.toLocaleLowerCase())},lt=(e,t,n)=>{var s;let{envKey:a,disableTracking:r}=e,o=De(e);if(!r&&(a||o)){let{playerInitTime:i,playerSoftwareName:l,playerSoftwareVersion:u,beaconCollectionDomain:d,debug:c,disableCookies:p}=e,f={...e.metadata,video_title:((s=e==null?void 0:e.metadata)==null?void 0:s.video_title)||void 0},m=P=>typeof P.player_error_code=="string"?!1:typeof e.errorTranslator=="function"?e.errorTranslator(P):P;X.monitor(t,{debug:c,beaconCollectionDomain:d,hlsjs:n,Hls:n?y:void 0,automaticErrorTracking:!1,errorTranslator:m,disableCookies:p,data:{...a?{env_key:a}:{},player_software_name:l,player_software:l,player_software_version:u,player_init_time:i,...f}})}},pt=(e,t,n)=>{var u;let a=he(e,t),{src:r}=e,o=()=>{t.ended||!rt(t,n)||(Ce(t,n)?t.currentTime=t.buffered.end(t.buffered.length-1):t.dispatchEvent(new Event("ended")))},s,i,l=()=>{var p,f;let d=(p=q(t))==null?void 0:p.start(0),c=(f=q(t))==null?void 0:f.end(0);(i!==c||s!==d)&&t.dispatchEvent(new CustomEvent("seekablechange",{composed:!0})),s=d,i=c};if(T(t,"durationchange",l),t&&a){let d=h(e);if(typeof r=="string"){let c=()=>{if(Te(t)!==g.LIVE||Number.isFinite(t.duration))return;let p=setInterval(l,1e3);t.addEventListener("teardown",()=>{clearInterval(p)},{once:!0}),T(t,"durationchange",()=>{Number.isFinite(t.duration)&&clearInterval(p)})};if(t.preload==="none"){let p=()=>{Y(r,t,d).then(c),t.removeEventListener("loadedmetadata",f)},f=()=>{Y(r,t,d).then(c),t.removeEventListener("play",p)};T(t,"play",p,{once:!0}),T(t,"loadedmetadata",f,{once:!0})}else Y(r,t,d).then(c);e.drmToken&&dt(e,t),t.setAttribute("src",r),e.startTime&&(((u=M.get(t))!=null?u:{}).startTime=e.startTime,t.addEventListener("durationchange",we,{once:!0}))}else t.removeAttribute("src");t.addEventListener("error",Se),t.addEventListener("error",z),t.addEventListener("emptied",()=>{t.querySelectorAll("track[data-removeondestroy]").forEach(p=>{p.remove()})},{once:!0}),T(t,"pause",o),T(t,"seeked",o),T(t,"play",()=>{t.ended||Ee(t.currentTime,t.duration)&&(t.currentTime=t.seekable.length?t.seekable.start(0):0)})}else n&&r?(n.once(y.Events.LEVEL_LOADED,(d,c)=>{ze(c.details,t,n),l(),Te(t)===g.LIVE&&!Number.isFinite(t.duration)&&(n.on(y.Events.LEVEL_UPDATED,l),T(t,"durationchange",()=>{Number.isFinite(t.duration)&&n.off(y.Events.LEVELS_UPDATED,l)}))}),n.on(y.Events.ERROR,(d,c)=>{let p={[y.ErrorTypes.NETWORK_ERROR]:L.MEDIA_ERR_NETWORK,[y.ErrorTypes.MEDIA_ERROR]:L.MEDIA_ERR_DECODE},f=new L("",p[c.type]);f.fatal=c.fatal,f.data=c,t.dispatchEvent(new CustomEvent("error",{detail:f}))}),t.addEventListener("error",z),T(t,"waiting",o),ae(e,n),oe(t,n),n.attachMedia(t)):console.error("It looks like the video you're trying to play will not work on this system! If possible, try upgrading to the newest versions of your browser or software.")};function we(e){var a;let t=e.target,n=(a=M.get(t))==null?void 0:a.startTime;if(n&&Z(t.seekable,t.duration,n)){let r=t.preload==="auto";r&&(t.preload="none"),t.currentTime=n,r&&(t.preload="auto")}}async function Se(e){if(!e.isTrusted)return;e.stopImmediatePropagation();let t=e.target;if(!(t!=null&&t.error))return;let{message:n,code:a}=t.error,r=new L(n,a);if(t.src&&(a!==L.MEDIA_ERR_DECODE||a!==void 0))try{let{status:o}=await fetch(t.src);r.data={response:{code:o}}}catch{}t.dispatchEvent(new CustomEvent("error",{detail:r}))}function z(e){var a,r;if(!(e instanceof CustomEvent)||!(e.detail instanceof L))return;let t=e.target,n=e.detail;!n||!n.fatal||(((a=M.get(t))!=null?a:{}).error=n,(r=t.mux)==null||r.emit("error",{player_error_code:n.code,player_error_message:n.message,player_error_context:n.context}))}export{w as AutoplayTypes,mt as CmcdTypeValues,C as CmcdTypes,v as ExtensionMimeTypeMap,y as Hls,bt as MaxResolution,L as MediaError,S as MimeTypeShorthandMap,vt as MinResolution,O as PlaybackTypes,Lt as RenditionOrder,g as StreamTypes,pe as addChapters,ce as addCuePoints,K as addTextTrack,Mt as allMediaTypes,en as generatePlayerInitTime,Qe as generateUUID,fe as getActiveChapter,ue as getActiveCuePoint,ct as getAppCertificate,Ue as getChapters,Ve as getCuePoints,We as getCurrentPdt,it as getDRMConfig,rt as getEnded,nn as getError,ut as getLicenseKey,an as getLiveEdgeStart,Be as getMediaPlaylistLinesFromMultivariantPlaylistSrc,q as getSeekable,Fe as getStartDate,qe as getStreamInfoFromHlsjsLevelDetails,$e as getStreamInfoFromPlaylistLines,Ye as getStreamInfoFromSrcAndType,Te as getStreamType,st as getStreamTypeConfig,rn as getTargetLiveWindow,E as getTextTrack,on as initialize,_ as isKeyOf,De as isMuxVideoSrc,nt as isPseudoEnded,Ce as isStuckOnLastFragment,pt as loadMedia,X as mux,M as muxMediaState,Oe as removeTextTrack,ye as setupChapters,de as setupCuePoints,ot as setupHls,lt as setupMux,dt as setupNativeFairplayDRM,gt as shorthandKeys,at as teardown,Ae as toAppCertURL,Ke as toDRMTypeFromKeySystem,H as toLicenseKeyURL,tn as toMuxVideoURL,Pe as toPlaybackIdFromSrc,ze as updateStreamInfoFromHlsjsLevelDetails,Y as updateStreamInfoFromSrc};
|
|
1
|
+
import se from"mux-embed";import qe from"hls.js";var R=qe;var C={VIDEO:"video",THUMBNAIL:"thumbnail",STORYBOARD:"storyboard",DRM:"drm"},M={NOT_AN_ERROR:0,NETWORK_OFFLINE:2000002,NETWORK_UNKNOWN_ERROR:2e6,NETWORK_NO_STATUS:2000001,NETWORK_INVALID_URL:24e5,NETWORK_NOT_FOUND:2404e3,NETWORK_NOT_READY:2412e3,NETWORK_GENERIC_SERVER_FAIL:25e5,NETWORK_TOKEN_MISSING:2403201,NETWORK_TOKEN_MALFORMED:2412202,NETWORK_TOKEN_EXPIRED:2403210,NETWORK_TOKEN_AUD_MISSING:2403221,NETWORK_TOKEN_AUD_MISMATCH:2403222,NETWORK_TOKEN_SUB_MISMATCH:2403232,ENCRYPTED_ERROR:5e6,ENCRYPTED_UNSUPPORTED_KEY_SYSTEM:5000001,ENCRYPTED_GENERATE_REQUEST_FAILED:5000002,ENCRYPTED_UPDATE_LICENSE_FAILED:5000003,ENCRYPTED_UPDATE_SERVER_CERT_FAILED:5000004,ENCRYPTED_CDM_ERROR:5000005,ENCRYPTED_OUTPUT_RESTRICTED:5000006,ENCRYPTED_MISSING_TOKEN:5000002},H=e=>e===C.VIDEO?"playback":e,k=class k extends Error{constructor(t,r=k.MEDIA_ERR_CUSTOM,n,o){var a;super(t),this.name="MediaError",this.code=r,this.context=o,this.fatal=n!=null?n:r>=k.MEDIA_ERR_NETWORK&&r<=k.MEDIA_ERR_ENCRYPTED,this.message||(this.message=(a=k.defaultMessages[this.code])!=null?a:"")}};k.MEDIA_ERR_ABORTED=1,k.MEDIA_ERR_NETWORK=2,k.MEDIA_ERR_DECODE=3,k.MEDIA_ERR_SRC_NOT_SUPPORTED=4,k.MEDIA_ERR_ENCRYPTED=5,k.MEDIA_ERR_CUSTOM=100,k.defaultMessages={1:"You aborted the media playback",2:"A network error caused the media download to fail.",3:"A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.",4:"An unsupported error occurred. The server or network failed, or your browser does not support this format.",5:"The media is encrypted and there are no keys to decrypt it."};var T=k;var je=e=>e==null,S=(e,t)=>je(t)?!1:e in t,V={ANY:"any",MUTED:"muted"},D={ON_DEMAND:"on-demand",LIVE:"live",UNKNOWN:"unknown"},q={MSE:"mse",NATIVE:"native"},w={HEADER:"header",QUERY:"query",NONE:"none"},Ut=Object.values(w),N={M3U8:"application/vnd.apple.mpegurl",MP4:"video/mp4"},F={HLS:N.M3U8},Ht=Object.keys(F),Vt=[...Object.values(N),"hls","HLS"],Ft={upTo720p:"720p",upTo1080p:"1080p",upTo1440p:"1440p",upTo2160p:"2160p"},Kt={noLessThan480p:"480p",noLessThan540p:"540p",noLessThan720p:"720p",noLessThan1080p:"1080p",noLessThan1440p:"1440p",noLessThan2160p:"2160p"},Yt={DESCENDING:"desc"};var ze="en",K={code:ze};var x=(e,t,r,n,o=e)=>{o.addEventListener(t,r,n),e.addEventListener("teardown",()=>{o.removeEventListener(t,r)},{once:!0})};function de(e,t,r){t&&r>t&&(r=t);for(let n=0;n<e.length;n++)if(e.start(n)<=r&&e.end(n)>=r)return!0;return!1}var Y=e=>{let t=e.indexOf("?");if(t<0)return[e];let r=e.slice(0,t),n=e.slice(t);return[r,n]},O=e=>{let t=e.type;if(t){let n=t.toUpperCase();return S(n,F)?F[n]:t}let{src:r}=e;return r?Xe(r):""},z=e=>e==="VOD"?D.ON_DEMAND:D.LIVE,X=e=>e==="EVENT"?Number.POSITIVE_INFINITY:e==="VOD"?Number.NaN:0,Xe=e=>{let t="";try{t=new URL(e).pathname}catch{console.error("invalid url")}let r=t.lastIndexOf(".");if(r<0)return"";let o=t.slice(r+1).toUpperCase();return S(o,N)?N[o]:""},Q=e=>{let t=(e!=null?e:"").split(".")[1];if(t)try{let r=t.replace(/-/g,"+").replace(/_/g,"/"),n=decodeURIComponent(atob(r).split("").map(function(o){return"%"+("00"+o.charCodeAt(0).toString(16)).slice(-2)}).join(""));return JSON.parse(n)}catch{return}},le=({exp:e},t=Date.now())=>!e||e*1e3<t,pe=({sub:e},t)=>e!==t,fe=({aud:e},t)=>!e,Te=({aud:e},t)=>e!==t,ye="en";function E(e,t=!0){var o,a;let r=t&&(a=(o=K)==null?void 0:o[e])!=null?a:e,n=t?K.code:ye;return new j(r,n)}var j=class{constructor(t,r=(n=>(n=K)!=null?n:ye)()){this.message=t,this.locale=r}format(t){return this.message.replace(/\{(\w+)\}/g,(r,n)=>{var o;return(o=t[n])!=null?o:""})}toString(){return this.message}};var Qe=Object.values(V),me=e=>typeof e=="boolean"||typeof e=="string"&&Qe.includes(e),Ee=(e,t,r)=>{let{autoplay:n}=e,o=!1,a=!1,s=me(n)?n:!!n,u=()=>{o||x(t,"playing",()=>{o=!0},{once:!0})};if(u(),x(t,"loadstart",()=>{o=!1,u(),Z(t,s)},{once:!0}),x(t,"loadstart",()=>{r||(e.streamType&&e.streamType!==D.UNKNOWN?a=e.streamType===D.LIVE:a=!Number.isFinite(t.duration)),Z(t,s)},{once:!0}),r&&r.once(R.Events.LEVEL_LOADED,(c,i)=>{var d;e.streamType&&e.streamType!==D.UNKNOWN?a=e.streamType===D.LIVE:a=(d=i.details.live)!=null?d:!1}),!s){let c=()=>{!a||Number.isFinite(e.startTime)||(r!=null&&r.liveSyncPosition?t.currentTime=r.liveSyncPosition:Number.isFinite(t.seekable.end(0))&&(t.currentTime=t.seekable.end(0)))};r&&x(t,"play",()=>{t.preload==="metadata"?r.once(R.Events.LEVEL_UPDATED,c):c()},{once:!0})}return c=>{o||(s=me(c)?c:!!c,Z(t,s))}},Z=(e,t)=>{if(!t)return;let r=e.muted,n=()=>e.muted=r;switch(t){case V.ANY:e.play().catch(()=>{e.muted=!0,e.play().catch(n)});break;case V.MUTED:e.muted=!0,e.play().catch(n);break;default:e.play().catch(()=>{});break}};var ge=({preload:e,src:t},r,n)=>{let o=d=>{d!=null&&["","none","metadata","auto"].includes(d)?r.setAttribute("preload",d):r.removeAttribute("preload")};if(!n)return o(e),o;let a=!1,s=!1,u=n.config.maxBufferLength,l=n.config.maxBufferSize,c=d=>{o(d);let p=d!=null?d:r.preload;s||p==="none"||(p==="metadata"?(n.config.maxBufferLength=1,n.config.maxBufferSize=1):(n.config.maxBufferLength=u,n.config.maxBufferSize=l),i())},i=()=>{!a&&t&&(a=!0,n.loadSource(t))};return x(r,"play",()=>{s=!0,n.config.maxBufferLength=u,n.config.maxBufferSize=l,i()},{once:!0}),c(e),c};function Me(e,t){var l;if(!("videoTracks"in e))return;let r=new WeakMap;t.on(R.Events.MANIFEST_PARSED,function(c,i){u();let d=e.addVideoTrack("main");d.selected=!0;for(let[p,f]of i.levels.entries()){let y=d.addRendition(f.url[0],f.width,f.height,f.videoCodec,f.bitrate);r.set(f,`${p}`),y.id=`${p}`}}),t.on(R.Events.AUDIO_TRACKS_UPDATED,function(c,i){s();for(let d of i.audioTracks){let p=d.default?"main":"alternative",f=e.addAudioTrack(p,d.name,d.lang);f.id=`${d.id}`,d.default&&(f.enabled=!0)}}),e.audioTracks.addEventListener("change",()=>{var d;let c=+((d=[...e.audioTracks].find(p=>p.enabled))==null?void 0:d.id),i=t.audioTracks.map(p=>p.id);c!=t.audioTrack&&i.includes(c)&&(t.audioTrack=c)}),t.on(R.Events.LEVELS_UPDATED,function(c,i){var f;let d=e.videoTracks[(f=e.videoTracks.selectedIndex)!=null?f:0];if(!d)return;let p=i.levels.map(y=>r.get(y));for(let y of e.videoRenditions)y.id&&!p.includes(y.id)&&d.removeRendition(y)});let n=c=>{let i=c.target.selectedIndex;i!=t.nextLevel&&o(i)},o=c=>{let i=e.currentTime,d=!1,p=(f,y)=>{d||(d=!Number.isFinite(y.endOffset))};t.on(R.Events.BUFFER_FLUSHING,p),t.nextLevel=c,t.off(R.Events.BUFFER_FLUSHING,p),d||t.trigger(R.Events.BUFFER_FLUSHING,{startOffset:i+10,endOffset:1/0,type:"video"})};(l=e.videoRenditions)==null||l.addEventListener("change",n);let a=()=>{for(let c of e.videoTracks)e.removeVideoTrack(c)},s=()=>{for(let c of e.audioTracks)e.removeAudioTrack(c)},u=()=>{a(),s()};t.once(R.Events.DESTROYING,u)}var ee=e=>"time"in e?e.time:e.startTime;function Re(e,t){t.on(R.Events.NON_NATIVE_TEXT_TRACKS_FOUND,(o,{tracks:a})=>{a.forEach(s=>{var i,d;let u=(i=s.subtitleTrack)!=null?i:s.closedCaptions,l=t.subtitleTracks.findIndex(({lang:p,name:f,type:y})=>p==(u==null?void 0:u.lang)&&f===s.label&&y.toLowerCase()===s.kind),c=((d=s._id)!=null?d:s.default)?"default":`${s.kind}${l}`;te(e,s.kind,s.label,u==null?void 0:u.lang,c,s.default)})});let r=()=>{if(!t.subtitleTracks.length)return;let o=Array.from(e.textTracks).find(u=>u.id&&u.mode==="showing"&&["subtitles","captions"].includes(u.kind));if(!o)return;let a=t.subtitleTracks[t.subtitleTrack],s=a?a.default?"default":`${t.subtitleTracks[t.subtitleTrack].type.toLowerCase()}${t.subtitleTrack}`:void 0;if(t.subtitleTrack<0||(o==null?void 0:o.id)!==s){let u=t.subtitleTracks.findIndex(({lang:l,name:c,type:i,default:d})=>o.id==="default"&&d||l==o.language&&c===o.label&&i.toLowerCase()===o.kind);t.subtitleTrack=u}(o==null?void 0:o.id)===s&&o.cues&&Array.from(o.cues).forEach(u=>{o.addCue(u)})};e.textTracks.addEventListener("change",r),t.on(R.Events.CUES_PARSED,(o,{track:a,cues:s})=>{let u=e.textTracks.getTrackById(a);if(!u)return;let l=u.mode==="disabled";l&&(u.mode="hidden"),s.forEach(c=>{var i;(i=u.cues)!=null&&i.getCueById(c.id)||u.addCue(c)}),l&&(u.mode="disabled")}),t.once(R.Events.DESTROYING,()=>{e.textTracks.removeEventListener("change",r),e.querySelectorAll("track[data-removeondestroy]").forEach(a=>{a.remove()})});let n=()=>{Array.from(e.textTracks).forEach(o=>{var a,s;if(!["subtitles","caption"].includes(o.kind)&&(o.label==="thumbnails"||o.kind==="chapters")){if(!((a=o.cues)!=null&&a.length)){let u="track";o.kind&&(u+=`[kind="${o.kind}"]`),o.label&&(u+=`[label="${o.label}"]`);let l=e.querySelector(u),c=(s=l==null?void 0:l.getAttribute("src"))!=null?s:"";l==null||l.removeAttribute("src"),setTimeout(()=>{l==null||l.setAttribute("src",c)},0)}o.mode!=="hidden"&&(o.mode="hidden")}})};t.once(R.Events.MANIFEST_LOADED,n),t.once(R.Events.MEDIA_ATTACHED,n)}function te(e,t,r,n,o,a){let s=document.createElement("track");return s.kind=t,s.label=r,n&&(s.srclang=n),o&&(s.id=o),a&&(s.default=!0),s.track.mode=["subtitles","captions"].includes(t)?"disabled":"hidden",s.setAttribute("data-removeondestroy",""),e.append(s),s.track}function Ze(e,t){let r=Array.prototype.find.call(e.querySelectorAll("track"),n=>n.track===t);r==null||r.remove()}function A(e,t,r){var n;return(n=Array.from(e.querySelectorAll("track")).find(o=>o.track.label===t&&o.track.kind===r))==null?void 0:n.track}async function Ce(e,t,r,n){let o=A(e,r,n);return o||(o=te(e,n,r),o.mode="hidden",await new Promise(a=>setTimeout(()=>a(void 0),0))),o.mode!=="hidden"&&(o.mode="hidden"),[...t].sort((a,s)=>ee(s)-ee(a)).forEach(a=>{var l,c;let s=a.value,u=ee(a);if("endTime"in a&&a.endTime!=null)o==null||o.addCue(new VTTCue(u,a.endTime,n==="chapters"?s:JSON.stringify(s!=null?s:null)));else{let i=Array.prototype.findIndex.call(o==null?void 0:o.cues,y=>y.startTime>=u),d=(l=o==null?void 0:o.cues)==null?void 0:l[i],p=d?d.startTime:Number.isFinite(e.duration)?e.duration:Number.MAX_SAFE_INTEGER,f=(c=o==null?void 0:o.cues)==null?void 0:c[i-1];f&&(f.endTime=u),o==null||o.addCue(new VTTCue(u,p,n==="chapters"?s:JSON.stringify(s!=null?s:null)))}}),e.textTracks.dispatchEvent(new Event("change",{bubbles:!0,composed:!0})),o}var re="cuepoints",be=Object.freeze({label:re});async function xe(e,t,r=be){return Ce(e,t,r.label,"metadata")}var W=e=>({time:e.startTime,value:JSON.parse(e.text)});function et(e,t={label:re}){let r=A(e,t.label,"metadata");return r!=null&&r.cues?Array.from(r.cues,n=>W(n)):[]}function ve(e,t={label:re}){var a,s;let r=A(e,t.label,"metadata");if(!((a=r==null?void 0:r.activeCues)!=null&&a.length))return;if(r.activeCues.length===1)return W(r.activeCues[0]);let{currentTime:n}=e,o=Array.prototype.find.call((s=r.activeCues)!=null?s:[],({startTime:u,endTime:l})=>u<=n&&l>n);return W(o||r.activeCues[0])}async function Pe(e,t=be){return new Promise(r=>{x(e,"loadstart",async()=>{let n=await xe(e,[],t);x(e,"cuechange",()=>{let o=ve(e);if(o){let a=new CustomEvent("cuepointchange",{composed:!0,bubbles:!0,detail:o});e.dispatchEvent(a)}},{},n),r(n)})})}var ne="chapters",De=Object.freeze({label:ne}),$=e=>({startTime:e.startTime,endTime:e.endTime,value:e.text});async function _e(e,t,r=De){return Ce(e,t,r.label,"chapters")}function tt(e,t={label:ne}){var n;let r=A(e,t.label,"chapters");return(n=r==null?void 0:r.cues)!=null&&n.length?Array.from(r.cues,o=>$(o)):[]}function ke(e,t={label:ne}){var a,s;let r=A(e,t.label,"chapters");if(!((a=r==null?void 0:r.activeCues)!=null&&a.length))return;if(r.activeCues.length===1)return $(r.activeCues[0]);let{currentTime:n}=e,o=Array.prototype.find.call((s=r.activeCues)!=null?s:[],({startTime:u,endTime:l})=>u<=n&&l>n);return $(o||r.activeCues[0])}async function he(e,t=De){return new Promise(r=>{x(e,"loadstart",async()=>{let n=await _e(e,[],t);x(e,"cuechange",()=>{let o=ke(e);if(o){let a=new CustomEvent("chapterchange",{composed:!0,bubbles:!0,detail:o});e.dispatchEvent(a)}},{},n),r(n)})})}function rt(e,t){if(t){let r=t.playingDate;if(r!=null)return new Date(r.getTime()-e.currentTime*1e3)}return typeof e.getStartDate=="function"?e.getStartDate():new Date(NaN)}function nt(e,t){if(t&&t.playingDate)return t.playingDate;if(typeof e.getStartDate=="function"){let r=e.getStartDate();return new Date(r.getTime()+e.currentTime*1e3)}return new Date(NaN)}import{ErrorDetails as L,ErrorTypes as Ne}from"hls.js";var oe={VIDEO:"v",THUMBNAIL:"t",STORYBOARD:"s",DRM:"d"},ot=e=>{if(e===C.VIDEO)return oe.VIDEO;if(e===C.DRM)return oe.DRM},at=(e,t)=>{var o,a;let r=H(e),n=`${r}Token`;return(o=t.tokens)!=null&&o[r]?(a=t.tokens)==null?void 0:a[r]:S(n,t)?t[n]:void 0},U=(e,t,r,n=!1,o=!(a=>(a=globalThis.navigator)==null?void 0:a.onLine)())=>{var v,P;if(o){let g=E("Your device appears to be offline",n),b=void 0,m=T.MEDIA_ERR_NETWORK,h=new T(g,m,!0,b);return h.errorCategory=t,h.muxCode=M.NETWORK_OFFLINE,h.data=e,h}let s="status"in e?e.status:e.code,u=Date.now(),l=T.MEDIA_ERR_NETWORK;if(s===200)return;let c=H(t),i=at(t,r),d=ot(t),[p]=Y((v=r.playbackId)!=null?v:"");if(!s||!p)return;let f=Q(i);if(i&&!f){let g=E("The {tokenNamePrefix}-token provided is invalid or malformed.",n).format({tokenNamePrefix:c}),b=E("Compact JWT string: {token}",n).format({token:i}),m=new T(g,l,!0,b);return m.errorCategory=t,m.muxCode=M.NETWORK_TOKEN_MALFORMED,m.data=e,m}if(s>=500){let g=new T("",l,!0);return g.errorCategory=t,g.muxCode=M.NETWORK_UNKNOWN_ERROR,g}if(s===403)if(f){if(le(f,u)){let g={timeStyle:"medium",dateStyle:"medium"},b=E("The video\u2019s secured {tokenNamePrefix}-token has expired.",n).format({tokenNamePrefix:c}),m=E("Expired at: {expiredDate}. Current time: {currentDate}.",n).format({expiredDate:new Intl.DateTimeFormat("en",g).format((P=f.exp)!=null?P:0*1e3),currentDate:new Intl.DateTimeFormat("en",g).format(u)}),h=new T(b,l,!0,m);return h.errorCategory=t,h.muxCode=M.NETWORK_TOKEN_EXPIRED,h.data=e,h}if(pe(f,p)){let g=E("The video\u2019s playback ID does not match the one encoded in the {tokenNamePrefix}-token.",n).format({tokenNamePrefix:c}),b=E("Specified playback ID: {playbackId} and the playback ID encoded in the {tokenNamePrefix}-token: {tokenPlaybackId}",n).format({tokenNamePrefix:c,playbackId:p,tokenPlaybackId:f.sub}),m=new T(g,l,!0,b);return m.errorCategory=t,m.muxCode=M.NETWORK_TOKEN_SUB_MISMATCH,m.data=e,m}if(fe(f,d)){let g=E("The {tokenNamePrefix}-token is formatted with incorrect information.",n).format({tokenNamePrefix:c}),b=E("The {tokenNamePrefix}-token has no aud value. aud value should be {expectedAud}.",n).format({tokenNamePrefix:c,expectedAud:d}),m=new T(g,l,!0,b);return m.errorCategory=t,m.muxCode=M.NETWORK_TOKEN_AUD_MISSING,m.data=e,m}if(Te(f,d)){let g=E("The {tokenNamePrefix}-token is formatted with incorrect information.",n).format({tokenNamePrefix:c}),b=E("The {tokenNamePrefix}-token has an incorrect aud value: {aud}. aud value should be {expectedAud}.",n).format({tokenNamePrefix:c,expectedAud:d,aud:f.aud}),m=new T(g,l,!0,b);return m.errorCategory=t,m.muxCode=M.NETWORK_TOKEN_AUD_MISMATCH,m.data=e,m}}else{let g=E("Authorization error trying to access this {category} URL. If this is a signed URL, you might need to provide a {tokenNamePrefix}-token.",n).format({tokenNamePrefix:c,category:t}),b=E("Specified playback ID: {playbackId}",n).format({playbackId:p}),m=new T(g,l,!0,b);return m.errorCategory=t,m.muxCode=M.NETWORK_TOKEN_MISSING,m.data=e,m}if(s===412){let g=E("This playback-id may belong to a live stream that is not currently active or an asset that is not ready.",n),b=E("Specified playback ID: {playbackId}",n).format({playbackId:p}),m=new T(g,l,!0,b);return m.errorCategory=t,m.muxCode=M.NETWORK_NOT_READY,m.data=e,m}if(s===404){let g=E("This URL or playback-id does not exist. You may have used an Asset ID or an ID from a different resource.",n),b=E("Specified playback ID: {playbackId}",n).format({playbackId:p}),m=new T(g,l,!0,b);return m.errorCategory=t,m.muxCode=M.NETWORK_NOT_FOUND,m.data=e,m}if(s===400){let g=E("The URL or playback-id was invalid. You may have used an invalid value as a playback-id."),b=E("Specified playback ID: {playbackId}",n).format({playbackId:p}),m=new T(g,l,!0,b);return m.errorCategory=t,m.muxCode=M.NETWORK_INVALID_URL,m.data=e,m}let y=new T("",l,!0);return y.errorCategory=t,y.muxCode=M.NETWORK_UNKNOWN_ERROR,y.data=e,y};var B={FAIRPLAY:"fairplay",PLAYREADY:"playready",WIDEVINE:"widevine"},st=e=>{if(e.includes("fps"))return B.FAIRPLAY;if(e.includes("playready"))return B.PLAYREADY;if(e.includes("widevine"))return B.WIDEVINE},it=async e=>fetch(e).then(t=>t.status!==200?Promise.reject(t):t.text()).then(t=>{let r=t.split(`
|
|
2
|
+
`).find((n,o,a)=>o&&a[o-1].startsWith("#EXT-X-STREAM-INF"));return fetch(r).then(n=>n.status!==200?Promise.reject(n):n.text()).then(n=>n.split(`
|
|
3
|
+
`))}),ct=e=>{var s,u,l;let r=(u=((s=e.find(c=>c.startsWith("#EXT-X-PLAYLIST-TYPE")))!=null?s:"").split(":")[1])==null?void 0:u.trim(),n=z(r),o=X(r),a;if(n===D.LIVE){let c=e.find(d=>d.startsWith("#EXT-X-PART-INF"));if(!!c)a=+c.split(":")[1].split("=")[1]*2;else{let d=e.find(y=>y.startsWith("#EXT-X-TARGETDURATION")),p=(l=d==null?void 0:d.split(":"))==null?void 0:l[1];a=+(p!=null?p:6)*3}}return{streamType:n,targetLiveWindow:o,liveEdgeStartOffset:a}},ut=async(e,t)=>{if(t===N.MP4)return{streamType:D.ON_DEMAND,targetLiveWindow:Number.NaN,liveEdgeStartOffset:void 0};if(t===N.M3U8){let r=await it(e);return ct(r)}return console.error(`Media type ${t} is an unrecognized or unsupported type for src ${e}.`),{streamType:void 0,targetLiveWindow:void 0,liveEdgeStartOffset:void 0}},dt=async(e,t,r=O({src:e}))=>{var s,u,l;let{streamType:n,targetLiveWindow:o,liveEdgeStartOffset:a}=await ut(e,r);((s=_.get(t))!=null?s:{}).liveEdgeStartOffset=a,((u=_.get(t))!=null?u:{}).targetLiveWindow=o,t.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((l=_.get(t))!=null?l:{}).streamType=n,t.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},lt=e=>{var s;let t=e.type,r=z(t),n=X(t),o,a=!!((s=e.partList)!=null&&s.length);return r===D.LIVE&&(o=a?e.partTarget*2:e.targetduration*3),{streamType:r,targetLiveWindow:n,liveEdgeStartOffset:o,lowLatency:a}},pt=(e,t,r)=>{var u,l,c,i,d,p,f,y;let{streamType:n,targetLiveWindow:o,liveEdgeStartOffset:a,lowLatency:s}=lt(e);if(n===D.LIVE){s?(r.config.backBufferLength=(u=r.userConfig.backBufferLength)!=null?u:4,r.config.maxFragLookUpTolerance=(l=r.userConfig.maxFragLookUpTolerance)!=null?l:.001,r.config.abrBandWidthUpFactor=(c=r.userConfig.abrBandWidthUpFactor)!=null?c:r.config.abrBandWidthFactor):r.config.backBufferLength=(i=r.userConfig.backBufferLength)!=null?i:8;let v=Object.freeze({get length(){return t.seekable.length},start(P){return t.seekable.start(P)},end(P){var g;return P>this.length||P<0||Number.isFinite(t.duration)?t.seekable.end(P):(g=r.liveSyncPosition)!=null?g:t.seekable.end(P)}});((d=_.get(t))!=null?d:{}).seekable=v}((p=_.get(t))!=null?p:{}).liveEdgeStartOffset=a,((f=_.get(t))!=null?f:{}).targetLiveWindow=o,t.dispatchEvent(new CustomEvent("targetlivewindowchange",{composed:!0,bubbles:!0})),((y=_.get(t))!=null?y:{}).streamType=n,t.dispatchEvent(new CustomEvent("streamtypechange",{composed:!0,bubbles:!0}))},Ie,Ae,ft=(Ae=(Ie=globalThis==null?void 0:globalThis.navigator)==null?void 0:Ie.userAgent)!=null?Ae:"",Se,we,Oe,Tt=(Oe=(we=(Se=globalThis==null?void 0:globalThis.navigator)==null?void 0:Se.userAgentData)==null?void 0:we.platform)!=null?Oe:"",yt=ft.toLowerCase().includes("android")||["x11","android"].some(e=>Tt.toLowerCase().includes(e)),_=new WeakMap,I="mux.com",Ue,He,Ve=(He=(Ue=R).isSupported)==null?void 0:He.call(Ue),mt=yt,Nr=()=>se.utils.now(),Et=se.utils.generateUUID,Lr=({playbackId:e,customDomain:t=I,maxResolution:r,minResolution:n,renditionOrder:o,programStartTime:a,programEndTime:s,assetStartTime:u,assetEndTime:l,playbackToken:c,tokens:{playback:i=c}={},extraSourceParams:d={}}={})=>{if(!e)return;let[p,f=""]=Y(e),y=new URL(`https://stream.${t}/${p}.m3u8${f}`);return i||y.searchParams.has("token")?(y.searchParams.forEach((v,P)=>{P!="token"&&y.searchParams.delete(P)}),i&&y.searchParams.set("token",i)):(r&&y.searchParams.set("max_resolution",r),n&&(y.searchParams.set("min_resolution",n),r&&+r.slice(0,-1)<+n.slice(0,-1)&&console.error("minResolution must be <= maxResolution","minResolution",n,"maxResolution",r)),o&&y.searchParams.set("rendition_order",o),a&&y.searchParams.set("program_start_time",`${a}`),s&&y.searchParams.set("program_end_time",`${s}`),u&&y.searchParams.set("asset_start_time",`${u}`),l&&y.searchParams.set("asset_end_time",`${l}`),Object.entries(d).forEach(([v,P])=>{P!=null&&y.searchParams.set(v,P)})),y.toString()},G=e=>{if(!e)return;let[t]=e.split("?");return t||void 0},gt=e=>{if(!e||!e.startsWith("https://stream."))return;let[t]=new URL(e).pathname.slice(1).split(".m3u8");return t||void 0},Mt=e=>{var t,r,n;return(t=e==null?void 0:e.metadata)!=null&&t.video_id?e.metadata.video_id:Be(e)&&(n=(r=G(e.playbackId))!=null?r:gt(e.src))!=null?n:e.src},Rt=e=>{var t;return(t=_.get(e))==null?void 0:t.error},Le=e=>{var t,r;return(r=(t=_.get(e))==null?void 0:t.streamType)!=null?r:D.UNKNOWN},Ir=e=>{var t,r;return(r=(t=_.get(e))==null?void 0:t.targetLiveWindow)!=null?r:Number.NaN},Fe=e=>{var t,r;return(r=(t=_.get(e))==null?void 0:t.seekable)!=null?r:e.seekable},Ar=e=>{var n;let t=(n=_.get(e))==null?void 0:n.liveEdgeStartOffset;if(typeof t!="number")return Number.NaN;let r=Fe(e);return r.length?r.end(r.length-1)-t:Number.NaN},ie=.034,Ct=(e,t,r=ie)=>Math.abs(e-t)<=r,Ke=(e,t,r=ie)=>e>t||Ct(e,t,r),bt=(e,t=ie)=>e.paused&&Ke(e.currentTime,e.duration,t),Ye=(e,t)=>{var c,i,d;if(!t||!e.buffered.length)return;if(e.readyState>2)return!1;let r=t.currentLevel>=0?(i=(c=t.levels)==null?void 0:c[t.currentLevel])==null?void 0:i.details:(d=t.levels.find(p=>!!p.details))==null?void 0:d.details;if(!r||r.live)return;let{fragments:n}=r;if(!(n!=null&&n.length))return;if(e.currentTime<e.duration-(r.targetduration+.5))return!1;let o=n[n.length-1];if(e.currentTime<=o.start)return!1;let a=o.start+o.duration/2,s=e.buffered.start(e.buffered.length-1),u=e.buffered.end(e.buffered.length-1);return a>s&&a<u},xt=(e,t)=>e.ended||e.loop?e.ended:t&&Ye(e,t)?!0:bt(e),Sr=(e,t,r)=>{vt(t,r);let{metadata:n={}}=e,{view_session_id:o=Et()}=n,a=Mt(e);n.view_session_id=o,n.video_id=a,e.metadata=n;let s=i=>{var d;(d=t.mux)==null||d.emit("hb",{view_drm_type:i})};e.drmTypeCb=s,_.set(t,{});let u=Pt(e,t),l=ge(e,t,u);Lt(e,t,u),It(e,t,u),Pe(t),he(t);let c=Ee(e,t,u);return{engine:u,setAutoplay:c,setPreload:l}},vt=(e,t)=>{let r=t==null?void 0:t.engine;r&&(r.detachMedia(),r.destroy()),e!=null&&e.mux&&!e.mux.deleted&&(e.mux.destroy(),delete e.mux),e&&(e.removeAttribute("src"),e.load(),e.removeEventListener("error",Ge),e.removeEventListener("error",ae),e.removeEventListener("durationchange",Je),_.delete(e),e.dispatchEvent(new Event("teardown")))};function We(e,t){var c;let r=O(e);if(!(r===N.M3U8))return!0;let o=!r||((c=t.canPlayType(r))!=null?c:!0),{preferPlayback:a}=e,s=a===q.MSE,u=a===q.NATIVE;return o&&(u||!(Ve&&(s||mt)))}var Pt=(e,t)=>{let{debug:r,streamType:n,startTime:o=-1,metadata:a,preferCmcd:s,_hlsConfig:u={}}=e,c=O(e)===N.M3U8,i=We(e,t);if(c&&!i&&Ve){let d={backBufferLength:30,renderTextTracksNatively:!1,liveDurationInfinity:!0,capLevelToPlayerSize:!0,capLevelOnFPSDrop:!0},p=Dt(n),f=_t(e),y=s!==w.NONE?{useHeaders:s===w.HEADER,sessionId:a==null?void 0:a.view_session_id,contentId:a==null?void 0:a.video_id}:void 0;return new R({debug:r,startPosition:o,cmcd:y,xhrSetup:(P,g)=>{var h,ce;if(s&&s!==w.QUERY)return;let b=new URL(g);if(!b.searchParams.has("CMCD"))return;let m=((ce=(h=b.searchParams.get("CMCD"))==null?void 0:h.split(","))!=null?ce:[]).filter(ue=>ue.startsWith("sid")||ue.startsWith("cid")).join(",");b.searchParams.set("CMCD",m),P.open("GET",b)},...d,...p,...f,...u})}},Dt=e=>e===D.LIVE?{backBufferLength:8}:{},_t=e=>{let{tokens:{drm:t}={},playbackId:r,drmTypeCb:n}=e,o=G(r);return!t||!o?{}:{emeEnabled:!0,drmSystems:{"com.apple.fps":{licenseUrl:J(e,"fairplay"),serverCertificateUrl:$e(e,"fairplay")},"com.widevine.alpha":{licenseUrl:J(e,"widevine")},"com.microsoft.playready":{licenseUrl:J(e,"playready")}},requestMediaKeySystemAccessFunc:(a,s)=>(a==="com.widevine.alpha"&&(s=[...s.map(u=>{var c;let l=(c=u.videoCapabilities)==null?void 0:c.map(i=>({...i,robustness:"HW_SECURE_ALL"}));return{...u,videoCapabilities:l}}),...s]),navigator.requestMediaKeySystemAccess(a,s).then(u=>{let l=st(a);return n==null||n(l),u}))}},kt=async e=>{let t=await fetch(e);return t.status!==200?Promise.reject(t):await t.arrayBuffer()},ht=async(e,t)=>{let r=await fetch(t,{method:"POST",headers:{"Content-type":"application/octet-stream"},body:e});if(r.status!==200)return Promise.reject(r);let n=await r.arrayBuffer();return new Uint8Array(n)},Nt=(e,t)=>{x(t,"encrypted",async n=>{try{let o=n.initDataType;if(o!=="skd"){console.error(`Received unexpected initialization data type "${o}"`);return}if(!t.mediaKeys){let c=await navigator.requestMediaKeySystemAccess("com.apple.fps",[{initDataTypes:[o],videoCapabilities:[{contentType:"application/vnd.apple.mpegurl",robustness:""}],distinctiveIdentifier:"not-allowed",persistentState:"not-allowed",sessionTypes:["temporary"]}]).then(d=>{var p;return(p=e.drmTypeCb)==null||p.call(e,B.FAIRPLAY),d}).catch(()=>{let d=E("Cannot play DRM-protected content with current security configuration on this browser. Try playing in another browser."),p=new T(d,T.MEDIA_ERR_ENCRYPTED,!0);p.errorCategory=C.DRM,p.muxCode=M.ENCRYPTED_UNSUPPORTED_KEY_SYSTEM,t.dispatchEvent(new CustomEvent("error",{detail:p}))});if(!c)return;let i=await c.createMediaKeys();try{let d=await kt($e(e,"fairplay")).catch(p=>{if(p instanceof Response){let f=U(p,C.DRM,e);return console.error("mediaError",f==null?void 0:f.message,f==null?void 0:f.context),f?Promise.reject(f):Promise.reject(new Error("Unexpected error in app cert request"))}return Promise.reject(p)});await i.setServerCertificate(d).catch(()=>{let p=E("Your server certificate failed when attempting to set it. This may be an issue with a no longer valid certificate."),f=new T(p,T.MEDIA_ERR_ENCRYPTED,!0);return f.errorCategory=C.DRM,f.muxCode=M.ENCRYPTED_UPDATE_SERVER_CERT_FAILED,Promise.reject(f)})}catch(d){t.dispatchEvent(new CustomEvent("error",{detail:d}));return}await t.setMediaKeys(i)}let a=n.initData;if(a==null){console.error(`Could not start encrypted playback due to missing initData in ${n.type} event`);return}let s=t.mediaKeys.createSession();s.addEventListener("keystatuseschange",()=>{s.keyStatuses.forEach(c=>{let i;if(c==="internal-error"){let d=E("The DRM Content Decryption Module system had an internal failure. Try reloading the page, upading your browser, or playing in another browser.");i=new T(d,T.MEDIA_ERR_ENCRYPTED,!0),i.errorCategory=C.DRM,i.muxCode=M.ENCRYPTED_CDM_ERROR}else if(c==="output-restricted"||c==="output-downscaled"){let d=E("DRM playback is being attempted in an environment that is not sufficiently secure. User may see black screen.");i=new T(d,T.MEDIA_ERR_ENCRYPTED,!1),i.errorCategory=C.DRM,i.muxCode=M.ENCRYPTED_OUTPUT_RESTRICTED}i&&t.dispatchEvent(new CustomEvent("error",{detail:i}))})});let u=await Promise.all([s.generateRequest(o,a).catch(()=>{let c=E("Failed to generate a DRM license request. This may be an issue with the player or your protected content."),i=new T(c,T.MEDIA_ERR_ENCRYPTED,!0);i.errorCategory=C.DRM,i.muxCode=M.ENCRYPTED_GENERATE_REQUEST_FAILED,t.dispatchEvent(new CustomEvent("error",{detail:i}))}),new Promise(c=>{s.addEventListener("message",i=>{c(i.message)},{once:!0})})]).then(([,c])=>c);s.generateRequest(o,a);let l=await ht(u,J(e,"fairplay")).catch(c=>{if(c instanceof Response){let i=U(c,C.DRM,e);return console.error("mediaError",i==null?void 0:i.message,i==null?void 0:i.context),i?Promise.reject(i):Promise.reject(new Error("Unexpected error in license key request"))}return Promise.reject(c)});await s.update(l).catch(()=>{let c=E("Failed to update DRM license. This may be an issue with the player or your protected content."),i=new T(c,T.MEDIA_ERR_ENCRYPTED,!0);return i.errorCategory=C.DRM,i.muxCode=M.ENCRYPTED_UPDATE_LICENSE_FAILED,Promise.reject(i)})}catch(o){t.dispatchEvent(new CustomEvent("error",{detail:o}));return}})},J=({playbackId:e,tokens:{drm:t}={},customDomain:r=I},n)=>{let o=G(e);return`https://license.${r.toLocaleLowerCase().endsWith(I)?r:I}/license/${n}/${o}?token=${t}`},$e=({playbackId:e,tokens:{drm:t}={},customDomain:r=I},n)=>{let o=G(e);return`https://license.${r.toLocaleLowerCase().endsWith(I)?r:I}/appcert/${n}/${o}?token=${t}`},Be=({playbackId:e,src:t,customDomain:r})=>{if(e)return!0;if(typeof t!="string")return!1;let n=window==null?void 0:window.location.href,o=new URL(t,n).hostname.toLocaleLowerCase();return o.includes(I)||!!r&&o.includes(r.toLocaleLowerCase())},Lt=(e,t,r)=>{var s;let{envKey:n,disableTracking:o}=e,a=Be(e);if(!o&&(n||a)){let{playerInitTime:u,playerSoftwareName:l,playerSoftwareVersion:c,beaconCollectionDomain:i,debug:d,disableCookies:p}=e,f={...e.metadata,video_title:((s=e==null?void 0:e.metadata)==null?void 0:s.video_title)||void 0},y=v=>typeof v.player_error_code=="string"?!1:typeof e.errorTranslator=="function"?e.errorTranslator(v):v;se.monitor(t,{debug:d,beaconCollectionDomain:i,hlsjs:r,Hls:r?R:void 0,automaticErrorTracking:!1,errorTranslator:y,disableCookies:p,data:{...n?{env_key:n}:{},player_software_name:l,player_software:l,player_software_version:c,player_init_time:u,...f}})}},It=(e,t,r)=>{var c,i;let n=We(e,t),{src:o}=e,a=()=>{t.ended||!xt(t,r)||(Ye(t,r)?t.currentTime=t.buffered.end(t.buffered.length-1):t.dispatchEvent(new Event("ended")))},s,u,l=()=>{let d=Fe(t),p,f;d.length>0&&(p=d.start(0),f=d.end(0)),(u!==f||s!==p)&&t.dispatchEvent(new CustomEvent("seekablechange",{composed:!0})),s=p,u=f};if(x(t,"durationchange",l),t&&n){let d=O(e);if(typeof o=="string"){let p=()=>{if(Le(t)!==D.LIVE||Number.isFinite(t.duration))return;let y=setInterval(l,1e3);t.addEventListener("teardown",()=>{clearInterval(y)},{once:!0}),x(t,"durationchange",()=>{Number.isFinite(t.duration)&&clearInterval(y)})},f=async()=>dt(o,t,d).then(p).catch(y=>{if(y instanceof Response){let v=U(y,C.VIDEO,e);if(v){t.dispatchEvent(new CustomEvent("error",{detail:v}));return}}else y instanceof Error});if(t.preload==="none"){let y=()=>{f(),t.removeEventListener("loadedmetadata",v)},v=()=>{f(),t.removeEventListener("play",y)};x(t,"play",y,{once:!0}),x(t,"loadedmetadata",v,{once:!0})}else f();(c=e.tokens)!=null&&c.drm?Nt(e,t):x(t,"encrypted",()=>{let y=E("Attempting to play DRM-protected content without providing a DRM token."),v=new T(y,T.MEDIA_ERR_ENCRYPTED,!0);v.errorCategory=C.DRM,v.muxCode=M.ENCRYPTED_MISSING_TOKEN,t.dispatchEvent(new CustomEvent("error",{detail:v}))},{once:!0}),t.setAttribute("src",o),e.startTime&&(((i=_.get(t))!=null?i:{}).startTime=e.startTime,t.addEventListener("durationchange",Je,{once:!0}))}else t.removeAttribute("src");t.addEventListener("error",Ge),t.addEventListener("error",ae),t.addEventListener("emptied",()=>{t.querySelectorAll("track[data-removeondestroy]").forEach(f=>{f.remove()})},{once:!0}),x(t,"pause",a),x(t,"seeked",a),x(t,"play",()=>{t.ended||Ke(t.currentTime,t.duration)&&(t.currentTime=t.seekable.length?t.seekable.start(0):0)})}else r&&o?(r.once(R.Events.LEVEL_LOADED,(d,p)=>{pt(p.details,t,r),l(),Le(t)===D.LIVE&&!Number.isFinite(t.duration)&&(r.on(R.Events.LEVEL_UPDATED,l),x(t,"durationchange",()=>{Number.isFinite(t.duration)&&r.off(R.Events.LEVELS_UPDATED,l)}))}),r.on(R.Events.ERROR,(d,p)=>{t.dispatchEvent(new CustomEvent("error",{detail:At(p,e)}))}),t.addEventListener("error",ae),x(t,"waiting",a),Me(e,r),Re(t,r),r.attachMedia(t)):console.error("It looks like the video you're trying to play will not work on this system! If possible, try upgrading to the newest versions of your browser or software.")};function Je(e){var n;let t=e.target,r=(n=_.get(t))==null?void 0:n.startTime;if(r&&de(t.seekable,t.duration,r)){let o=t.preload==="auto";o&&(t.preload="none"),t.currentTime=r,o&&(t.preload="auto")}}async function Ge(e){if(!e.isTrusted)return;e.stopImmediatePropagation();let t=e.target;if(!(t!=null&&t.error))return;let{message:r,code:n}=t.error,o=new T(r,n);if(t.src&&n===T.MEDIA_ERR_SRC_NOT_SUPPORTED&&t.readyState===HTMLMediaElement.HAVE_NOTHING){setTimeout(()=>{var s;let a=(s=Rt(t))!=null?s:t.error;(a==null?void 0:a.code)===T.MEDIA_ERR_SRC_NOT_SUPPORTED&&t.dispatchEvent(new CustomEvent("error",{detail:o}))},500);return}if(t.src&&(n!==T.MEDIA_ERR_DECODE||n!==void 0))try{let{status:a}=await fetch(t.src);o.data={response:{code:a}}}catch{}t.dispatchEvent(new CustomEvent("error",{detail:o}))}function ae(e){var n,o;if(!(e instanceof CustomEvent)||!(e.detail instanceof T))return;let t=e.target,r=e.detail;!r||!r.fatal||(((n=_.get(t))!=null?n:{}).error=r,(o=t.mux)==null||o.emit("error",{player_error_code:r.code,player_error_message:r.message,player_error_context:r.context}))}var At=(e,t)=>{var u,l,c;console.error("getErrorFromHlsErrorData()",e);let r={[R.ErrorTypes.NETWORK_ERROR]:T.MEDIA_ERR_NETWORK,[R.ErrorTypes.MEDIA_ERROR]:T.MEDIA_ERR_DECODE,[R.ErrorTypes.KEY_SYSTEM_ERROR]:T.MEDIA_ERR_ENCRYPTED},n=i=>[L.KEY_SYSTEM_LICENSE_REQUEST_FAILED,L.KEY_SYSTEM_SERVER_CERTIFICATE_REQUEST_FAILED].includes(i.details)?T.MEDIA_ERR_NETWORK:r[i.type],o=i=>{if(i.type===Ne.KEY_SYSTEM_ERROR)return C.DRM;if(i.type===Ne.NETWORK_ERROR)return C.VIDEO},a,s=n(e);if(s===T.MEDIA_ERR_NETWORK&&e.response){let i=(u=o(e))!=null?u:C.VIDEO;a=(l=U(e.response,i,t))!=null?l:new T("",s)}else if(s===T.MEDIA_ERR_ENCRYPTED)if(e.details===L.KEY_SYSTEM_NO_CONFIGURED_LICENSE){let i=E("Attempting to play DRM-protected content without providing a DRM token.");a=new T(i,T.MEDIA_ERR_ENCRYPTED,e.fatal),a.errorCategory=C.DRM,a.muxCode=M.ENCRYPTED_MISSING_TOKEN}else if(e.details===L.KEY_SYSTEM_NO_ACCESS){let i=E("Cannot play DRM-protected content with current security configuration on this browser. Try playing in another browser.");a=new T(i,T.MEDIA_ERR_ENCRYPTED,e.fatal),a.errorCategory=C.DRM,a.muxCode=M.ENCRYPTED_UNSUPPORTED_KEY_SYSTEM}else if(e.details===L.KEY_SYSTEM_NO_SESSION){let i=E("Failed to generate a DRM license request. This may be an issue with the player or your protected content.");a=new T(i,T.MEDIA_ERR_ENCRYPTED,!0),a.errorCategory=C.DRM,a.muxCode=M.ENCRYPTED_GENERATE_REQUEST_FAILED}else if(e.details===L.KEY_SYSTEM_SESSION_UPDATE_FAILED){let i=E("Failed to update DRM license. This may be an issue with the player or your protected content.");a=new T(i,T.MEDIA_ERR_ENCRYPTED,e.fatal),a.errorCategory=C.DRM,a.muxCode=M.ENCRYPTED_UPDATE_LICENSE_FAILED}else if(e.details===L.KEY_SYSTEM_SERVER_CERTIFICATE_UPDATE_FAILED){let i=E("Your server certificate failed when attempting to set it. This may be an issue with a no longer valid certificate.");a=new T(i,T.MEDIA_ERR_ENCRYPTED,e.fatal),a.errorCategory=C.DRM,a.muxCode=M.ENCRYPTED_UPDATE_SERVER_CERT_FAILED}else if(e.details===L.KEY_SYSTEM_STATUS_INTERNAL_ERROR){let i=E("The DRM Content Decryption Module system had an internal failure. Try reloading the page, upading your browser, or playing in another browser.");a=new T(i,T.MEDIA_ERR_ENCRYPTED,e.fatal),a.errorCategory=C.DRM,a.muxCode=M.ENCRYPTED_CDM_ERROR}else if(e.details===L.KEY_SYSTEM_STATUS_OUTPUT_RESTRICTED){let i=E("DRM playback is being attempted in an environment that is not sufficiently secure. User may see black screen.");a=new T(i,T.MEDIA_ERR_ENCRYPTED,!1),a.errorCategory=C.DRM,a.muxCode=M.ENCRYPTED_OUTPUT_RESTRICTED}else a=new T(e.error.message,T.MEDIA_ERR_ENCRYPTED,e.fatal),a.errorCategory=C.DRM,a.muxCode=M.ENCRYPTED_ERROR;else a=new T("",s,e.fatal);return a.context||(a.context=`${e.url?`url: ${e.url}
|
|
4
|
+
`:""}${e.response&&(e.response.code||e.response.text)?`response: ${e.response.code}, ${e.response.text}
|
|
5
|
+
`:""}${e.reason?`failure reason: ${e.reason}
|
|
6
|
+
`:""}${e.level?`level: ${e.level}
|
|
7
|
+
`:""}${e.parent?`parent stream controller: ${e.parent}
|
|
8
|
+
`:""}${e.buffer?`buffer length: ${e.buffer}
|
|
9
|
+
`:""}${e.error?`error: ${e.error}
|
|
10
|
+
`:""}${e.event?`event: ${e.event}
|
|
11
|
+
`:""}${e.err?`error message: ${(c=e.err)==null?void 0:c.message}
|
|
12
|
+
`:""}`),a.data=e,a};export{V as AutoplayTypes,Ut as CmcdTypeValues,w as CmcdTypes,N as ExtensionMimeTypeMap,R as Hls,Ft as MaxResolution,T as MediaError,F as MimeTypeShorthandMap,Kt as MinResolution,C as MuxErrorCategory,M as MuxErrorCode,oe as MuxJWTAud,q as PlaybackTypes,Yt as RenditionOrder,D as StreamTypes,_e as addChapters,xe as addCuePoints,te as addTextTrack,Vt as allMediaTypes,H as errorCategoryToTokenNameOrPrefix,Nr as generatePlayerInitTime,Et as generateUUID,ke as getActiveChapter,ve as getActiveCuePoint,kt as getAppCertificate,tt as getChapters,et as getCuePoints,nt as getCurrentPdt,_t as getDRMConfig,xt as getEnded,Rt as getError,ht as getLicenseKey,Ar as getLiveEdgeStart,it as getMediaPlaylistLinesFromMultivariantPlaylistSrc,Fe as getSeekable,rt as getStartDate,lt as getStreamInfoFromHlsjsLevelDetails,ct as getStreamInfoFromPlaylistLines,ut as getStreamInfoFromSrcAndType,Le as getStreamType,Dt as getStreamTypeConfig,Ir as getTargetLiveWindow,A as getTextTrack,E as i18n,Sr as initialize,S as isKeyOf,Be as isMuxVideoSrc,bt as isPseudoEnded,Ye as isStuckOnLastFragment,It as loadMedia,se as mux,_ as muxMediaState,Q as parseJwt,Ze as removeTextTrack,he as setupChapters,Pe as setupCuePoints,Pt as setupHls,Lt as setupMux,Nt as setupNativeFairplayDRM,Ht as shorthandKeys,vt as teardown,$e as toAppCertURL,st as toDRMTypeFromKeySystem,J as toLicenseKeyURL,Lr as toMuxVideoURL,gt as toPlaybackIdFromSrc,Y as toPlaybackIdParts,pt as updateStreamInfoFromHlsjsLevelDetails,dt as updateStreamInfoFromSrc};
|
|
4
13
|
//# sourceMappingURL=index.mjs.map
|