@amazon/vinyl 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -664,7 +664,7 @@ var LazyImpl=/*#__PURE__*/function(){/**
664
664
  */function LazyImpl(factory){_classCallCheck(this,LazyImpl);__publicField(this,"factory",factory);__publicField(this,"_constructing",false);__publicField(this,"_constructed",false);__publicField(this,"disposed",false);__publicField(this,"_value")}return _createClass(LazyImpl,[{key:"constructed",get:function get(){return this._constructed}},{key:"value",get:function get(){if(this.disposed)throw new DisposedError;if(this._constructing)throw new IllegalStateError("Lazy instance is constructing");if(this._constructed)return this._value;this._constructing=true;this._value=this.factory();this._constructing=false;this._constructed=true;return this._value},set:function set(value){if(this.disposed)throw new DisposedError;this.clear();this._constructed=true;this._value=value}},{key:"clear",value:function clear(){this.disposed=false;if(this._constructed){if(isDisposable(this._value)){this._value.dispose()}this._constructed=false;this._value=void 0}}},{key:"dispose",value:function dispose(){if(this.disposed)throw new DisposedError;this.clear();this.disposed=true}}])}();function lazy(factory){return new LazyImpl(factory)}// ../vinyl-util/src/util/async/never.ts
665
665
  var Never=/*#__PURE__*/function(){function Never(){_classCallCheck(this,Never)}return _createClass(Never,[{key:"catch",value:function _catch(_onrejected){return this}},{key:"then",value:function then(_onfulfilled,_onrejected){return this}},{key:"finally",value:function _finally(_onfinally){return this}},{key:Symbol.toStringTag,get:function get(){return"Never"}}])}();var never=new Never;// ../vinyl-util/src/util/async/poll.ts
666
666
  var DEFAULT_POLL_INTERVAL=0.05;function poll(_x10){return _poll.apply(this,arguments)}// ../vinyl-util/src/util/buffer/buffer.ts
667
- function _poll(){_poll=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee951(predicate){var options,timeout2,abort,_options$pollInterval,pollInterval,deadline,result,_args952=arguments;return _regenerator().w(function(_context952){while(1)switch(_context952.n){case 0:options=_args952.length>1&&_args952[1]!==undefined?_args952[1]:{};timeout2=options.timeout,abort=options.abort,_options$pollInterval=options.pollInterval,pollInterval=_options$pollInterval===void 0?DEFAULT_POLL_INTERVAL:_options$pollInterval;deadline=timeout2==null?Infinity:Date.now()+timeout2*1e3;result=predicate();case 1:if(!(!result&&Date.now()<deadline)){_context952.n=3;break}_context952.n=2;return _sleep(pollInterval,abort);case 2:result=predicate();_context952.n=1;break;case 3:return _context952.a(2,result)}},_callee951)}));return _poll.apply(this,arguments)}function bufferToByteStr(buffer){return String.fromCharCode.apply(null,new Uint8Array(buffer))}function byteStrToByteArray(byteStr){var n=byteStr.length;var bytes=new Uint8Array(n);for(var i=0;i<n;i++){bytes[i]=byteStr.charCodeAt(i)}return bytes}function bufferToBase64(buffer){return globalThis.btoa(bufferToByteStr(buffer))}function base64ToByteArray(base64){return byteStrToByteArray(globalThis.atob(base64))}function bufferToUtf16(buffer){return String.fromCharCode.apply(null,new Uint16Array(buffer))}function utf16ToUint16Array(str){var n=str.length;var uint16Array=new Uint16Array(n);for(var i=0;i<n;i++){uint16Array[i]=str.charCodeAt(i)}return uint16Array}function bufferToByteArray(buffer){return buffer instanceof Uint8Array?buffer:new Uint8Array(buffer)}function buffersEqual(bufferA,bufferB){if(bufferA===bufferB)return true;if(!bufferA&&!bufferB)return true;if(!bufferA||!bufferB)return false;var arrA=bufferToByteArray(bufferA);var arrB=bufferToByteArray(bufferB);if(arrA.byteLength!==arrB.byteLength)return false;for(var i=0;i<arrA.byteLength;i++){if(arrA[i]!==arrB[i])return false}return true}// ../vinyl-util/src/util/buffer/BufferError.ts
667
+ function _poll(){_poll=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee955(predicate){var options,timeout2,abort,_options$pollInterval,pollInterval,deadline,result,_args956=arguments;return _regenerator().w(function(_context956){while(1)switch(_context956.n){case 0:options=_args956.length>1&&_args956[1]!==undefined?_args956[1]:{};timeout2=options.timeout,abort=options.abort,_options$pollInterval=options.pollInterval,pollInterval=_options$pollInterval===void 0?DEFAULT_POLL_INTERVAL:_options$pollInterval;deadline=timeout2==null?Infinity:Date.now()+timeout2*1e3;result=predicate();case 1:if(!(!result&&Date.now()<deadline)){_context956.n=3;break}_context956.n=2;return _sleep(pollInterval,abort);case 2:result=predicate();_context956.n=1;break;case 3:return _context956.a(2,result)}},_callee955)}));return _poll.apply(this,arguments)}function bufferToByteStr(buffer){return String.fromCharCode.apply(null,new Uint8Array(buffer))}function byteStrToByteArray(byteStr){var n=byteStr.length;var bytes=new Uint8Array(n);for(var i=0;i<n;i++){bytes[i]=byteStr.charCodeAt(i)}return bytes}function bufferToBase64(buffer){return globalThis.btoa(bufferToByteStr(buffer))}function base64ToByteArray(base64){return byteStrToByteArray(globalThis.atob(base64))}function bufferToUtf16(buffer){return String.fromCharCode.apply(null,new Uint16Array(buffer))}function utf16ToUint16Array(str){var n=str.length;var uint16Array=new Uint16Array(n);for(var i=0;i<n;i++){uint16Array[i]=str.charCodeAt(i)}return uint16Array}function bufferToByteArray(buffer){return buffer instanceof Uint8Array?buffer:new Uint8Array(buffer)}function buffersEqual(bufferA,bufferB){if(bufferA===bufferB)return true;if(!bufferA&&!bufferB)return true;if(!bufferA||!bufferB)return false;var arrA=bufferToByteArray(bufferA);var arrB=bufferToByteArray(bufferB);if(arrA.byteLength!==arrB.byteLength)return false;for(var i=0;i<arrA.byteLength;i++){if(arrA[i]!==arrB[i])return false}return true}// ../vinyl-util/src/util/buffer/BufferError.ts
668
668
  var BufferError=/*#__PURE__*/function(_ReportableError0){function _BufferError(message){var _this31;var origin=arguments.length>1&&arguments[1]!==undefined?arguments[1]:ErrorOrigin.MEDIA;var level=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"fatal";_classCallCheck(this,_BufferError);_this31=_callSuper(this,_BufferError,[message,origin,level]);Object.setPrototypeOf(_this31,_BufferError.prototype);return _this31}_inherits(_BufferError,_ReportableError0);return _createClass(_BufferError,[{key:Symbol.toStringTag,get:function get(){return"BufferError"}}])}(ReportableError);// ../vinyl-util/src/util/buffer/BufferReader.ts
669
669
  var BufferReader=/*#__PURE__*/function(){function BufferReader(buffer){_classCallCheck(this,BufferReader);__publicField(this,"position",0);__publicField(this,"dataView");this.dataView=new DataView(buffer)}/**
670
670
  * Asserts that at least `size` bytes are remaining.
@@ -870,8 +870,8 @@ __publicField(_this35,"spentBreakIds",/* @__PURE__ */new Set);__publicField(_thi
870
870
  * Disposes this controller, removes all listeners.
871
871
  */},{key:"dispose",value:function dispose(){_superPropGet(AdControllerImpl,"dispose",this,3)([]);this.disposer.dispose();this.adBreakState=null}}])}(EventHostImpl);function createAdProgressEvent(adState){return{adBreak:adState.parentBreak.adBreak,ad:adState.ad,// Snapped to nearest 0.1 to avoid ~1.0
872
872
  playbackRateAvg:roundToNearest(adState.playbackRateAvg,0.1),index:adState.index,totalAds:adState.totalAds}}function createAdBreakState(adBreak){var _currentIndex=-1;var _adState=null;var logTarget2={logPrefix:createLogPrefix("AdBreakState")};var adBreakState={adBreak:adBreak,playoutElapsed:0,completedReason:null,get adState(){return _adState},nextAd:function nextAd(){return _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee16(){var ads;return _regenerator().w(function(_context16){while(1)switch(_context16.n){case 0:_context16.n=1;return getAds();case 1:ads=_context16.v;if(!(_currentIndex>=ads.length)){_context16.n=2;break}return _context16.a(2,null);case 2:_adState=getElementOrDefault(ads,++_currentIndex,null);return _context16.a(2,_adState)}},_callee16)}))()},clear:function clear(){_adState=null;_currentIndex=Number.MAX_VALUE}};var getAds=memoize(function(){logVerbose(logTarget2,"requesting ads for break ".concat(adBreak.placement," ").concat(adBreak.id));return resolveValueProvider(adBreak.ads).then(function(ads){logVerbose(logTarget2,"ads resolved",ads);return ads.map(function(adInfo,index){return createAdState({adBreakState:adBreakState,ad:adInfo,totalAds:ads.length,index:index})})})});return adBreakState}function createAdState(_ref18){var adBreakState=_ref18.adBreakState,ad=_ref18.ad,totalAds=_ref18.totalAds,index=_ref18.index;return{parentBreak:adBreakState,ad:ad,index:index,totalAds:totalAds,started:false,timeStart:0,playbackRateAvg:0,dataPoints:0,quartile:{first:false,midpoint:false,third:false},completedReason:null}}function adBreakKey(adBreak){return"".concat(adBreak.placement,"_").concat(adBreak.id)}// src/track/inferLoadOptionsFromUri.ts
873
- function inferTrackTypeFromUrl(_x17){return _inferTrackTypeFromUrl.apply(this,arguments)}function _inferTrackTypeFromUrl(){_inferTrackTypeFromUrl=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee952(url){var _a3,_t170;return _regenerator().w(function(_context953){while(1)switch(_context953.n){case 0:if(!((_a3=inferTrackTypeFromUrlPath(url))!=null)){_context953.n=1;break}_t170=_a3;_context953.n=3;break;case 1:_context953.n=2;return probeType(url);case 2:_t170=_context953.v;case 3:return _context953.a(2,_t170)}},_callee952)}));return _inferTrackTypeFromUrl.apply(this,arguments)}function inferTrackTypeFromUrlPath(url){if(url.endsWith(".m3u8")||url.includes(".m3u8?"))return"hls";if(url.endsWith(".mpd")||url.includes(".mpd?"))return"dash";if(/\.(mp3|mp4|m4a|m4v|aac|ogg|opus|wav|webm)(\?|$)/i.test(url))return"src";return null}function createTrackLoadOptionsFromUrl(_x18){return _createTrackLoadOptionsFromUrl.apply(this,arguments)}function _createTrackLoadOptionsFromUrl(){_createTrackLoadOptionsFromUrl=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee953(url){var type;return _regenerator().w(function(_context954){while(1)switch(_context954.n){case 0:if(url){_context954.n=1;break}return _context954.a(2,null);case 1:_context954.n=2;return inferTrackTypeFromUrl(url);case 2:type=_context954.v;if(type){_context954.n=3;break}return _context954.a(2,null);case 3:return _context954.a(2,{uri:url,type:type})}},_callee953)}));return _createTrackLoadOptionsFromUrl.apply(this,arguments)}var probeType=memoize(/*#__PURE__*/function(){var _ref19=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee17(url){var _a3,res,mime,_t5;return _regenerator().w(function(_context17){while(1)switch(_context17.p=_context17.n){case 0:_context17.p=0;_context17.n=1;return requestWithRetry(url,{method:"HEAD"});case 1:res=_context17.v;if(res.ok){_context17.n=2;break}return _context17.a(2,null);case 2:mime=((_a3=res.headers.get("content-type"))!=null?_a3:"").toLowerCase();if(!mime.includes("dash+xml")){_context17.n=3;break}return _context17.a(2,"dash");case 3:if(!mime.includes("mpegurl")){_context17.n=4;break}return _context17.a(2,"hls");case 4:if(!(mime.startsWith("video/")||mime.startsWith("audio/"))){_context17.n=5;break}return _context17.a(2,"src");case 5:return _context17.a(2,null);case 6:_context17.p=6;_t5=_context17.v;return _context17.a(2,null)}},_callee17,null,[[0,6]])}));return function(_x19){return _ref19.apply(this,arguments)}}(),function(url){return url},/* capacity */30);// src/ad/defaultAdLoadOptionsResolver.ts
874
- function defaultAdLoadOptionsResolver(_x20){return _defaultAdLoadOptionsResolver.apply(this,arguments)}function _defaultAdLoadOptionsResolver(){_defaultAdLoadOptionsResolver=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee954(adInfo){var loadOptions;return _regenerator().w(function(_context955){while(1)switch(_context955.n){case 0:if(adInfo.uri){_context955.n=1;break}throw new UnresolvableAdError("Ad with no URI cannot be played");case 1:_context955.n=2;return createTrackLoadOptionsFromUrl(adInfo.uri);case 2:loadOptions=_context955.v;if(loadOptions){_context955.n=3;break}throw new UnresolvableAdError("could not infer ad track type from uri ".concat(adInfo.uri));case 3:return _context955.a(2,loadOptions)}},_callee954)}));return _defaultAdLoadOptionsResolver.apply(this,arguments)}var UnresolvableAdError=/*#__PURE__*/function(_ReportableError11){function _UnresolvableAdError(message){var _this42;_classCallCheck(this,_UnresolvableAdError);_this42=_callSuper(this,_UnresolvableAdError,[message,ErrorOrigin.MEDIA]);Object.setPrototypeOf(_this42,_UnresolvableAdError.prototype);return _this42}_inherits(_UnresolvableAdError,_ReportableError11);return _createClass(_UnresolvableAdError,[{key:Symbol.toStringTag,get:function get(){return"UnresolvableAdError"}}])}(ReportableError);// ../vinyl-hls-parser/src/parse/parseAttributes.ts
873
+ function inferTrackTypeFromUrl(_x17){return _inferTrackTypeFromUrl.apply(this,arguments)}function _inferTrackTypeFromUrl(){_inferTrackTypeFromUrl=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee956(url){var _a3,_t170;return _regenerator().w(function(_context957){while(1)switch(_context957.n){case 0:if(!((_a3=inferTrackTypeFromUrlPath(url))!=null)){_context957.n=1;break}_t170=_a3;_context957.n=3;break;case 1:_context957.n=2;return probeType(url);case 2:_t170=_context957.v;case 3:return _context957.a(2,_t170)}},_callee956)}));return _inferTrackTypeFromUrl.apply(this,arguments)}function inferTrackTypeFromUrlPath(url){if(url.endsWith(".m3u8")||url.includes(".m3u8?"))return"hls";if(url.endsWith(".mpd")||url.includes(".mpd?"))return"dash";if(/\.(mp3|mp4|m4a|m4v|aac|ogg|opus|wav|webm)(\?|$)/i.test(url))return"src";return null}function createTrackLoadOptionsFromUrl(_x18){return _createTrackLoadOptionsFromUrl.apply(this,arguments)}function _createTrackLoadOptionsFromUrl(){_createTrackLoadOptionsFromUrl=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee957(url){var type;return _regenerator().w(function(_context958){while(1)switch(_context958.n){case 0:if(url){_context958.n=1;break}return _context958.a(2,null);case 1:_context958.n=2;return inferTrackTypeFromUrl(url);case 2:type=_context958.v;if(type){_context958.n=3;break}return _context958.a(2,null);case 3:return _context958.a(2,{uri:url,type:type})}},_callee957)}));return _createTrackLoadOptionsFromUrl.apply(this,arguments)}var probeType=memoize(/*#__PURE__*/function(){var _ref19=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee17(url){var _a3,res,mime,_t5;return _regenerator().w(function(_context17){while(1)switch(_context17.p=_context17.n){case 0:_context17.p=0;_context17.n=1;return requestWithRetry(url,{method:"HEAD"});case 1:res=_context17.v;if(res.ok){_context17.n=2;break}return _context17.a(2,null);case 2:mime=((_a3=res.headers.get("content-type"))!=null?_a3:"").toLowerCase();if(!mime.includes("dash+xml")){_context17.n=3;break}return _context17.a(2,"dash");case 3:if(!mime.includes("mpegurl")){_context17.n=4;break}return _context17.a(2,"hls");case 4:if(!(mime.startsWith("video/")||mime.startsWith("audio/"))){_context17.n=5;break}return _context17.a(2,"src");case 5:return _context17.a(2,null);case 6:_context17.p=6;_t5=_context17.v;return _context17.a(2,null)}},_callee17,null,[[0,6]])}));return function(_x19){return _ref19.apply(this,arguments)}}(),function(url){return url},/* capacity */30);// src/ad/defaultAdLoadOptionsResolver.ts
874
+ function defaultAdLoadOptionsResolver(_x20){return _defaultAdLoadOptionsResolver.apply(this,arguments)}function _defaultAdLoadOptionsResolver(){_defaultAdLoadOptionsResolver=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee958(adInfo){var loadOptions;return _regenerator().w(function(_context959){while(1)switch(_context959.n){case 0:if(adInfo.uri){_context959.n=1;break}throw new UnresolvableAdError("Ad with no URI cannot be played");case 1:_context959.n=2;return createTrackLoadOptionsFromUrl(adInfo.uri);case 2:loadOptions=_context959.v;if(loadOptions){_context959.n=3;break}throw new UnresolvableAdError("could not infer ad track type from uri ".concat(adInfo.uri));case 3:return _context959.a(2,loadOptions)}},_callee958)}));return _defaultAdLoadOptionsResolver.apply(this,arguments)}var UnresolvableAdError=/*#__PURE__*/function(_ReportableError11){function _UnresolvableAdError(message){var _this42;_classCallCheck(this,_UnresolvableAdError);_this42=_callSuper(this,_UnresolvableAdError,[message,ErrorOrigin.MEDIA]);Object.setPrototypeOf(_this42,_UnresolvableAdError.prototype);return _this42}_inherits(_UnresolvableAdError,_ReportableError11);return _createClass(_UnresolvableAdError,[{key:Symbol.toStringTag,get:function get(){return"UnresolvableAdError"}}])}(ReportableError);// ../vinyl-hls-parser/src/parse/parseAttributes.ts
875
875
  var EQUALS=_char("=");var COMMA=_char(",");var QUOTE=_char("\"");function parseAttributes(reader){var attrs={};while(reader.hasNext()&&reader.peek!==_char("\n")&&reader.peek!==_char("\r")){var key=reader.substringUntilChar(EQUALS);if(!key||!reader.hasNext())break;reader.next();var value=void 0;if(reader.peek===QUOTE){reader.next();value=reader.substringUntilChar(QUOTE);if(reader.hasNext())reader.next()}else{value=reader.substringUntil(function(cc){return cc===COMMA||cc===_char("\n")||cc===_char("\r")})}attrs[key]=value;if(reader.hasNext()&&reader.peek===COMMA){reader.next()}}return attrs}// ../vinyl-validation/src/validation/Validator.ts
876
876
  var validatorLocale={/**
877
877
  * The expectation template string with the following replacement tokens:
@@ -1172,7 +1172,7 @@ var EXTM3U2="#EXTM3U";var EXT_X_STREAM_INF="#EXT-X-STREAM-INF:";var EXT_X_MEDIA=
1172
1172
  var HLS_INTERSTITIAL_CLASS="com.apple.hls.interstitial";// src/ad/discoverHlsInterstitials.ts
1173
1173
  var ROLL_EPSILON=0.5;function discoverHlsInterstitials(playlist,baseUrl,contentDuration){var _a3;var anchor=findProgramDateTimeAnchor(playlist);var breaks=[];var _iterator45=_createForOfIteratorHelper(playlist.dateRanges),_step45;try{var _loop5=function _loop5(){var range=_step45.value;if(range.classId!==HLS_INTERSTITIAL_CLASS)return 0;// continue
1174
1174
  var startTime=resolveStartTime(range,anchor);if(startTime==null)return 0;// continue
1175
- var playoutLimit=resolvePlayoutLimit(range);var duration=resolveDuration(range);if(playoutLimit!=null&&duration!=null)duration=Math.min(playoutLimit,duration);var cues=parseCues(range);var placement=classifyPlacement(startTime,contentDuration,cues);var effectiveStartTime=placement==="preroll"?0:startTime;var restrictStr=(_a3=range.clientAttributes["X-RESTRICT"])!=null?_a3:"";var restrict=parseRestrict(restrictStr);var resolveContent=memoize(function(){return resolveHlsAssetContent({range:range,startTime:effectiveStartTime,duration:duration,baseUrl:baseUrl})});breaks.push({id:range.id,startTime:effectiveStartTime,duration:duration,placement:placement,once:cues.has("ONCE"),resumeOffset:parseResumeOffset(range),resolutionTimeOffset:parseResolutionTimeOffset(range),playoutLimit:playoutLimit,ads:function(){var _ads=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee18(){return _regenerator().w(function(_context18){while(1)switch(_context18.n){case 0:_context18.n=1;return resolveContent();case 1:return _context18.a(2,_context18.v.ads)}},_callee18)}));function ads(){return _ads.apply(this,arguments)}return ads}(),skipControl:function(){var _skipControl=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee19(){return _regenerator().w(function(_context19){while(1)switch(_context19.n){case 0:_context19.n=1;return resolveContent();case 1:return _context19.a(2,_context19.v.skipControl)}},_callee19)}));function skipControl(){return _skipControl.apply(this,arguments)}return skipControl}(),restrict:restrict})},_ret2;for(_iterator45.s();!(_step45=_iterator45.n()).done;){_ret2=_loop5();if(_ret2===0)continue}}catch(err){_iterator45.e(err)}finally{_iterator45.f()}breaks.sort(function(a,b){return a.startTime-b.startTime});return Promise.resolve(breaks)}function findProgramDateTimeAnchor(playlist){var mediaTime=0;var _iterator46=_createForOfIteratorHelper(playlist.segments),_step46;try{for(_iterator46.s();!(_step46=_iterator46.n()).done;){var seg=_step46.value;if(seg.programDateTime){var epochMs=Date.parse(seg.programDateTime);if(!Number.isNaN(epochMs)){return{epochMs:epochMs,mediaTime:mediaTime}}}mediaTime+=seg.duration}}catch(err){_iterator46.e(err)}finally{_iterator46.f()}return null}function resolveStartTime(range,anchor){if(!range.startDate){return null}var epochMs=Date.parse(range.startDate);if(Number.isNaN(epochMs))return null;if(!anchor){return 0}var startTime=anchor.mediaTime+(epochMs-anchor.epochMs)/1e3;return startTime<0&&startTime>-ROLL_EPSILON?0:startTime}function resolveDuration(range){if(range.duration!=null&&!Number.isNaN(range.duration)){return range.duration}if(range.endDate&&range.startDate){var start=Date.parse(range.startDate);var end=Date.parse(range.endDate);if(!Number.isNaN(start)&&!Number.isNaN(end)&&end>=start){return(end-start)/1e3}}if(range.plannedDuration!=null&&!Number.isNaN(range.plannedDuration)){return range.plannedDuration}return null}function resolvePlayoutLimit(range){var _a3;var playoutLimit=parseFloat((_a3=range.clientAttributes["X-PLAYOUT-LIMIT"])!=null?_a3:"");if(Number.isFinite(playoutLimit)&&playoutLimit>0){return playoutLimit}return null}function parseCues(range){var _a3;return new Set(((_a3=range.clientAttributes["CUE"])!=null?_a3:"").split(",").map(function(token){return token.trim().toUpperCase()}).filter(Boolean))}function parseResumeOffset(range){if(!("X-RESUME-OFFSET"in range.clientAttributes))return null;var value=parseFloat(range.clientAttributes["X-RESUME-OFFSET"]);return Number.isFinite(value)?value:null}function parseResolutionTimeOffset(range){if(!("X-RESOLUTION-TIME-OFFSET"in range.clientAttributes))return null;var value=parseFloat(range.clientAttributes["X-RESOLUTION-TIME-OFFSET"]);return Number.isFinite(value)&&value>=0?value:null}function classifyPlacement(startTime,contentDuration,cues){if(cues.has("PRE"))return"preroll";if(cues.has("POST"))return"postroll";if(startTime<=ROLL_EPSILON)return"preroll";if(contentDuration!=null&&Number.isFinite(contentDuration)&&startTime>=contentDuration-ROLL_EPSILON){return"postroll"}return"midroll"}function resolveHlsAssetContent(_ref20){var range=_ref20.range,startTime=_ref20.startTime,duration=_ref20.duration,baseUrl=_ref20.baseUrl;var assetUri=range.clientAttributes["X-ASSET-URI"];if(assetUri){return{ads:[{id:"".concat(range.id,"-0"),startTime:startTime,duration:duration,uri:resolveUrl(assetUri,baseUrl)}],skipControl:null}}var assetListUrl=range.clientAttributes["X-ASSET-LIST"];if(assetListUrl){return resolveHlsAssetList({assetListUrl:assetListUrl,rangeId:range.id,startTime:startTime,baseUrl:baseUrl})}return{ads:[],skipControl:null}}function resolveHlsAssetList(_x21){return _resolveHlsAssetList.apply(this,arguments)}function _resolveHlsAssetList(){_resolveHlsAssetList=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee955(_ref21){var assetListUrl,rangeId,startTime,baseUrl,_a3,url,response,json,assets,ads;return _regenerator().w(function(_context956){while(1)switch(_context956.n){case 0:assetListUrl=_ref21.assetListUrl,rangeId=_ref21.rangeId,startTime=_ref21.startTime,baseUrl=_ref21.baseUrl;url=resolveUrl(assetListUrl,baseUrl);_context956.n=1;return requestWithRetry(url);case 1:response=_context956.v;_context956.n=2;return response.json();case 2:json=_context956.v;assets=(_a3=json.ASSETS)!=null?_a3:[];ads=assets.map(function(asset,i){var _a4;return{id:"".concat(rangeId,"-").concat(i),startTime:startTime,duration:(_a4=asset.DURATION)!=null?_a4:null,uri:resolveUrl(asset.URI,baseUrl)}});return _context956.a(2,{ads:ads,skipControl:parseSkipControl(json["SKIP-CONTROL"])})}},_callee955)}));return _resolveHlsAssetList.apply(this,arguments)}function parseSkipControl(control){var _a3;if(!control)return null;var offset=Number(control.OFFSET);if(!Number.isFinite(offset)||offset<0)return null;return{offset:offset,duration:(_a3=control.DURATION)!=null?_a3:null}}function parseRestrict(str){var skip=str.includes("SKIP");var jump=str.includes("JUMP");return{skip:skip,jump:jump}}// src/util/media/mediaSource.ts
1175
+ var playoutLimit=resolvePlayoutLimit(range);var duration=resolveDuration(range);if(playoutLimit!=null&&duration!=null)duration=Math.min(playoutLimit,duration);var cues=parseCues(range);var placement=classifyPlacement(startTime,contentDuration,cues);var effectiveStartTime=placement==="preroll"?0:startTime;var restrictStr=(_a3=range.clientAttributes["X-RESTRICT"])!=null?_a3:"";var restrict=parseRestrict(restrictStr);var resolveContent=memoize(function(){return resolveHlsAssetContent({range:range,startTime:effectiveStartTime,duration:duration,baseUrl:baseUrl})});breaks.push({id:range.id,startTime:effectiveStartTime,duration:duration,placement:placement,once:cues.has("ONCE"),resumeOffset:parseResumeOffset(range),resolutionTimeOffset:parseResolutionTimeOffset(range),playoutLimit:playoutLimit,ads:function(){var _ads=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee18(){return _regenerator().w(function(_context18){while(1)switch(_context18.n){case 0:_context18.n=1;return resolveContent();case 1:return _context18.a(2,_context18.v.ads)}},_callee18)}));function ads(){return _ads.apply(this,arguments)}return ads}(),skipControl:function(){var _skipControl=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee19(){return _regenerator().w(function(_context19){while(1)switch(_context19.n){case 0:_context19.n=1;return resolveContent();case 1:return _context19.a(2,_context19.v.skipControl)}},_callee19)}));function skipControl(){return _skipControl.apply(this,arguments)}return skipControl}(),restrict:restrict})},_ret2;for(_iterator45.s();!(_step45=_iterator45.n()).done;){_ret2=_loop5();if(_ret2===0)continue}}catch(err){_iterator45.e(err)}finally{_iterator45.f()}breaks.sort(function(a,b){return a.startTime-b.startTime});return Promise.resolve(breaks)}function findProgramDateTimeAnchor(playlist){var mediaTime=0;var _iterator46=_createForOfIteratorHelper(playlist.segments),_step46;try{for(_iterator46.s();!(_step46=_iterator46.n()).done;){var seg=_step46.value;if(seg.programDateTime){var epochMs=Date.parse(seg.programDateTime);if(!Number.isNaN(epochMs)){return{epochMs:epochMs,mediaTime:mediaTime}}}mediaTime+=seg.duration}}catch(err){_iterator46.e(err)}finally{_iterator46.f()}return null}function resolveStartTime(range,anchor){if(!range.startDate){return null}var epochMs=Date.parse(range.startDate);if(Number.isNaN(epochMs))return null;if(!anchor){return 0}var startTime=anchor.mediaTime+(epochMs-anchor.epochMs)/1e3;return startTime<0&&startTime>-ROLL_EPSILON?0:startTime}function resolveDuration(range){if(range.duration!=null&&!Number.isNaN(range.duration)){return range.duration}if(range.endDate&&range.startDate){var start=Date.parse(range.startDate);var end=Date.parse(range.endDate);if(!Number.isNaN(start)&&!Number.isNaN(end)&&end>=start){return(end-start)/1e3}}if(range.plannedDuration!=null&&!Number.isNaN(range.plannedDuration)){return range.plannedDuration}return null}function resolvePlayoutLimit(range){var _a3;var playoutLimit=parseFloat((_a3=range.clientAttributes["X-PLAYOUT-LIMIT"])!=null?_a3:"");if(Number.isFinite(playoutLimit)&&playoutLimit>0){return playoutLimit}return null}function parseCues(range){var _a3;return new Set(((_a3=range.clientAttributes["CUE"])!=null?_a3:"").split(",").map(function(token){return token.trim().toUpperCase()}).filter(Boolean))}function parseResumeOffset(range){if(!("X-RESUME-OFFSET"in range.clientAttributes))return null;var value=parseFloat(range.clientAttributes["X-RESUME-OFFSET"]);return Number.isFinite(value)?value:null}function parseResolutionTimeOffset(range){if(!("X-RESOLUTION-TIME-OFFSET"in range.clientAttributes))return null;var value=parseFloat(range.clientAttributes["X-RESOLUTION-TIME-OFFSET"]);return Number.isFinite(value)&&value>=0?value:null}function classifyPlacement(startTime,contentDuration,cues){if(cues.has("PRE"))return"preroll";if(cues.has("POST"))return"postroll";if(startTime<=ROLL_EPSILON)return"preroll";if(contentDuration!=null&&Number.isFinite(contentDuration)&&startTime>=contentDuration-ROLL_EPSILON){return"postroll"}return"midroll"}function resolveHlsAssetContent(_ref20){var range=_ref20.range,startTime=_ref20.startTime,duration=_ref20.duration,baseUrl=_ref20.baseUrl;var assetUri=range.clientAttributes["X-ASSET-URI"];if(assetUri){return{ads:[{id:"".concat(range.id,"-0"),startTime:startTime,duration:duration,uri:resolveUrl(assetUri,baseUrl)}],skipControl:null}}var assetListUrl=range.clientAttributes["X-ASSET-LIST"];if(assetListUrl){return resolveHlsAssetList({assetListUrl:assetListUrl,rangeId:range.id,startTime:startTime,baseUrl:baseUrl})}return{ads:[],skipControl:null}}function resolveHlsAssetList(_x21){return _resolveHlsAssetList.apply(this,arguments)}function _resolveHlsAssetList(){_resolveHlsAssetList=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee959(_ref21){var assetListUrl,rangeId,startTime,baseUrl,_a3,url,response,json,assets,ads;return _regenerator().w(function(_context960){while(1)switch(_context960.n){case 0:assetListUrl=_ref21.assetListUrl,rangeId=_ref21.rangeId,startTime=_ref21.startTime,baseUrl=_ref21.baseUrl;url=resolveUrl(assetListUrl,baseUrl);_context960.n=1;return requestWithRetry(url);case 1:response=_context960.v;_context960.n=2;return response.json();case 2:json=_context960.v;assets=(_a3=json.ASSETS)!=null?_a3:[];ads=assets.map(function(asset,i){var _a4;return{id:"".concat(rangeId,"-").concat(i),startTime:startTime,duration:(_a4=asset.DURATION)!=null?_a4:null,uri:resolveUrl(asset.URI,baseUrl)}});return _context960.a(2,{ads:ads,skipControl:parseSkipControl(json["SKIP-CONTROL"])})}},_callee959)}));return _resolveHlsAssetList.apply(this,arguments)}function parseSkipControl(control){var _a3;if(!control)return null;var offset=Number(control.OFFSET);if(!Number.isFinite(offset)||offset<0)return null;return{offset:offset,duration:(_a3=control.DURATION)!=null?_a3:null}}function parseRestrict(str){var skip=str.includes("SKIP");var jump=str.includes("JUMP");return{skip:skip,jump:jump}}// src/util/media/mediaSource.ts
1176
1176
  function supportsMse(){return typeof ManagedMediaSource==="function"||typeof MediaSource==="function"}function getMediaSourceCtor(){if(typeof ManagedMediaSource==="function")return ManagedMediaSource;else return MediaSource}function isTypeSupported(type){assertMseSupported();return getMediaSourceCtor().isTypeSupported(type)}function createMediaSource(){assertMseSupported();return new(getMediaSourceCtor())}function assertMseSupported(){if(!supportsMse())throw new MediaUnsupportedError("Media Source Extensions not supported","mse-unsupported")}function onMediaSourceOpen(mediaSource,callback,options){var open=mediaSource.readyState==="open";if(open)callback();var handler=function handler(){return callback()};if(!(options==null?void 0:options.once)||!open){mediaSource.addEventListener("sourceopen",handler,options);return function(){return mediaSource.removeEventListener("sourceopen",handler)}}else{return function(){}}}function onMediaSourceEnded(mediaSource,callback,options){var ended=mediaSource.readyState==="ended";if(ended)callback();var handler=function handler(){return callback()};if(!(options==null?void 0:options.once)||!ended){mediaSource.addEventListener("sourceended",handler,options);return function(){return mediaSource.removeEventListener("sourceended",handler)}}else{return function(){}}}function nextMediaSourceEnded(mediaSource){var timeout2=arguments.length>1&&arguments[1]!==undefined?arguments[1]:5;var timeoutMessage=arguments.length>2?arguments[2]:undefined;return withTimeout(new Promise(function(resolve){onMediaSourceEnded(mediaSource,resolve,{once:true})}),timeout2,{message:timeoutMessage})}// src/util/media/getAudioContext.ts
1177
1177
  function createAudioContext(){var _a3;var ctor=(_a3=globalThis.AudioContext)!=null?_a3:globalThis.webkitAudioContext;return ctor?new ctor:null}var audioContextSingleton=lazy(createAudioContext);var audioContextRef=globalRef(function(){return audioContextSingleton.value});function getAudioContext(){return audioContextRef.value}// src/client/CapabilitiesImpl.ts
1178
1178
  var CapabilitiesImpl=/*#__PURE__*/function(){function CapabilitiesImpl(deps){_classCallCheck(this,CapabilitiesImpl);__publicField(this,"deps",deps)}return _createClass(CapabilitiesImpl,[{key:"mse",get:function get(){return supportsMse()}},{key:"dash",get:function get(){return this.canPlayType("application/dash+xml")!=="no"/* NO */}},{key:"hls",get:function get(){return this.canPlayType("application/vnd.apple.mpegurl")!=="no"/* NO */}},{key:"eme",get:function get(){return this.deps.drmController.isEmeSupported()}},{key:"sampleRate",get:function get(){var _a3,_b;return(_b=(_a3=getAudioContext())==null?void 0:_a3.sampleRate)!=null?_b:null}},{key:"canPlayType",value:function canPlayType(type){var media=this.deps.media;if(typeof media.canPlayType==="undefined")return"no"/* NO */;var str=media.canPlayType(type);switch(str){case"":return"no"/* NO */;case"maybe":return"maybe"/* MAYBE */;case"probably":return"probably"/* PROBABLY */}}},{key:"canPlayTypeMse",value:function canPlayTypeMse(type){return isTypeSupported(type)}},{key:"supportsKeySystem",value:function(){var _supportsKeySystem=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee20(keySystem){return _regenerator().w(function(_context20){while(1)switch(_context20.n){case 0:return _context20.a(2,this.deps.drmController.isSupported({initDataType:"cenc",encryptionScheme:"cenc",contentType:"audio",mimeType:"audio/mp4; codecs=\"mp4a.40.2\"",contentProtections:[{keySystem:keySystem}]}))}},_callee20,this)}));function supportsKeySystem(_x22){return _supportsKeySystem.apply(this,arguments)}return supportsKeySystem}()}])}();// src/drm/CencEncryptionScheme.ts
@@ -1284,7 +1284,7 @@ var locale19={maxPlayersWarning:"{count} Vinyl Players have been constructed wit
1284
1284
  * @throws An IllegalStateError if all players have not been removed.
1285
1285
  */},{key:"dispose",value:function dispose(){if(this._players.length)throw new IllegalStateError("All players must be removed before disposing VinylGlobal")}}])}();var playerRegistryRef=globalRef(function(){return new PlayerRegistryImpl});// src/global/configureVinylGlobal.ts
1286
1286
  var logLevelValidator=function(){return isOneOf(0/* VERBOSE */,1/* DEBUG */,2/* INFO */,3/* WARN */,4/* ERROR */,5/* NONE */)}();var vinylGlobalOptionsValidator=object({logging:object({console:object({logLevel:logLevelValidator}),history:object({logLevel:logLevelValidator,maxHistorySize:number()}),logLevel:logLevelValidator}),maxPlayersWarning:number()});var vinylGlobalOptionsPartialValidator=vinylGlobalOptionsValidator.partialDeep();function configureVinylGlobal(options){var _a3;vinylGlobalOptionsPartialValidator.assert(options);if(options.logging){var logging=options.logging;if(logging.logLevel!=null)setLogLevel(logging.logLevel);if(logging.history){var history=logging.history;if(historyLogHandler.value){if(history.maxHistorySize!=null)historyLogHandler.value.maxHistorySize=history.maxHistorySize;if(history.logLevel!=null)historyLogHandler.value.logLevel=history.logLevel}}if(((_a3=logging.console)==null?void 0:_a3.logLevel)!=null){if(consoleLogHandler.value){consoleLogHandler.value.logLevel=logging.console.logLevel}}}if(options.maxPlayersWarning!=null&&playerRegistryRef.value instanceof PlayerRegistryImpl){playerRegistryRef.value.maxPlayersWarning=options.maxPlayersWarning}}// src/global/environment.ts
1287
- var vinylVersion=parseVersion(/* istanbul ignore next */"3.0.0");// src/global/globalRef.ts
1287
+ var vinylVersion=parseVersion(/* istanbul ignore next */"3.0.1");// src/global/globalRef.ts
1288
1288
  var VinylGlobal=/*#__PURE__*/function(){function VinylGlobal(){_classCallCheck(this,VinylGlobal)}return _createClass(VinylGlobal,[{key:"players",get:function get(){return playerRegistryRef.value.players}/**
1289
1289
  * Returns the first player.
1290
1290
  */},{key:"player",get:function get(){return playerRegistryRef.value.players[0]}},{key:"logs",get:function get(){var _a3;return(_a3=historyLogHandler.value)==null?void 0:_a3.history}},{key:"version",get:function get(){return vinylVersion.str}},{key:"userAgentInfo",get:function get(){return getUserAgentInfo()}},{key:"network",get:function get(){return getNetworkMetrics()}/**
@@ -1503,10 +1503,10 @@ function throwLanguagesUnsupported(){throw new MediaUnsupportedError("No content
1503
1503
  ["alb","sq"],["arm","hy"],["baq","eu"],["bur","my"],["chi","zh"],["cze","cs"],["dut","nl"],["fre","fr"],["geo","ka"],["ger","de"],["gre","el"],["ice","is"],["mac","mk"],["mao","mi"],["may","ms"],["per","fa"],["rum","ro"],["slo","sk"],["tib","bo"],["wel","cy"]]);function normalizeLanguage(locale21){var parts=locale21.split("-");var language=(parts[0]||"").toLowerCase();language=iso3to2.get(language)||language;var region=parts[1]?parts[1].toUpperCase():"";return region?"".concat(language,"-").concat(region):language}function languageRelatedness(target,candidate){var t=normalizeLanguage(target);var c=normalizeLanguage(candidate);if(c===t)return 4;var tParts=t.split("-");var cParts=c.split("-");if(tParts[0]!==cParts[0])return 0;if(cParts.length===1&&tParts.length===2)return 3;if(cParts.length===2&&tParts.length===2)return 2;return 1}function findBestLanguageMatch(target,available){return max(available,compareBy(function(lang){return languageRelatedness(target,lang)}))}// src/streaming/mediaTimelineLanguageFilter.ts
1504
1504
  function resolvePreferredLanguages(preferred){if(typeof preferred==="string")return[preferred];if(preferred)return preferred;if(typeof navigator!=="undefined")return _toConsumableArray(navigator.languages);return[]}function createLanguageFilter(preferredLanguage,contentType2){var preferences=resolvePreferredLanguages(preferredLanguage);if(preferences.length===0)return null;var scoreLang=function scoreLang(lang){var best=0;for(var i=0;i<preferences.length;i++){var rel=languageRelatedness(preferences[i],lang);if(rel>0){best=Math.max(best,(preferences.length-i)*10+rel)}}return best};var bestScoreForPeriod=memoize(function(array2){var best=0;for(var _i16=0,_Array$from=Array.from(array2);_i16<_Array$from.length;_i16++){var quality=_Array$from[_i16];if(quality.contentType===contentType2&&quality.lang){best=Math.max(best,scoreLang(quality.lang))}}return best},function(array2){return array2},1);return function(quality,_index,array2){if(quality.contentType!==contentType2)return true;if(!quality.lang)return true;var best=bestScoreForPeriod(array2);if(best===0)return true;return scoreLang(quality.lang)===best}}// src/streaming/mediaTimelineFilter.ts
1505
1505
  function filterTimelineQualities(filter,throwError,timeline){if(!filter)return timeline;var mapMetadataArray=memoize(function(qualities){return map(qualities,function(q){return q.metadata})},function(qualities){return qualities},1);var periods=timeline.periods.map(function(period){var filtered=period.qualities.filter(function(q,index){return filter(q.metadata,index,mapMetadataArray(period.qualities))});return __spreadProps(__spreadValues({},period),{qualities:filtered})});if(periods.some(function(p){return p.qualities.length===0})){throwError()}return __spreadProps(__spreadValues({},timeline),{periods:periods})}function filterTimelineQualitiesAsync(_x46,_x47,_x48){return _filterTimelineQualitiesAsync.apply(this,arguments)}// src/streaming/mediaTimelineAccessibilityFilter.ts
1506
- function _filterTimelineQualitiesAsync(){_filterTimelineQualitiesAsync=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee956(filter,throwError,timeline){var mapMetadataArray,periods,_iterator120,_step120,period,filtered,metadataArray,i,_t171;return _regenerator().w(function(_context957){while(1)switch(_context957.p=_context957.n){case 0:mapMetadataArray=memoize(function(qualities){return map(qualities,function(q){return q.metadata})},function(qualities){return qualities},1);periods=[];_iterator120=_createForOfIteratorHelper(timeline.periods);_context957.p=1;_iterator120.s();case 2:if((_step120=_iterator120.n()).done){_context957.n=8;break}period=_step120.value;filtered=[];metadataArray=mapMetadataArray(period.qualities);i=0;case 3:if(!(i<period.qualities.length)){_context957.n=6;break}_context957.n=4;return filter(period.qualities[i].metadata,i,metadataArray);case 4:if(!_context957.v){_context957.n=5;break}filtered.push(period.qualities[i]);case 5:i++;_context957.n=3;break;case 6:periods.push(__spreadProps(__spreadValues({},period),{qualities:filtered}));case 7:_context957.n=2;break;case 8:_context957.n=10;break;case 9:_context957.p=9;_t171=_context957.v;_iterator120.e(_t171);case 10:_context957.p=10;_iterator120.f();return _context957.f(10);case 11:if(periods.some(function(p){return p.qualities.length===0})){throwError()}return _context957.a(2,__spreadProps(__spreadValues({},timeline),{periods:periods}))}},_callee956,null,[[1,9,10,11]])}));return _filterTimelineQualitiesAsync.apply(this,arguments)}function throwNoPlayableAudio(){throw new MediaUnsupportedError("No playable audio rendition","audio")}var AUDIO_DESCRIPTION_CHARACTERISTICS=["public.accessibility.describes-video","description"];function isAudioDescription(quality){return quality.characteristics.some(function(c){return AUDIO_DESCRIPTION_CHARACTERISTICS.includes(c)})}function createAudioDescriptionFilter(preferDescription){var periodFlags=memoize(function(array2){var hasDescription=false;var hasMain=false;for(var _i17=0,_Array$from2=Array.from(array2);_i17<_Array$from2.length;_i17++){var quality=_Array$from2[_i17];if(quality.contentType!=="audio")continue;if(isAudioDescription(quality))hasDescription=true;else hasMain=true}return{hasDescription:hasDescription,hasMain:hasMain}},function(array2){return array2},1);return function(quality,_index,array2){if(quality.contentType!=="audio")return true;var _periodFlags=periodFlags(array2),hasDescription=_periodFlags.hasDescription,hasMain=_periodFlags.hasMain;if(preferDescription){if(!hasDescription)return true;return isAudioDescription(quality)}if(!hasMain)return true;return!isAudioDescription(quality)}}// src/track/filters/resourceTypeFilter.ts
1506
+ function _filterTimelineQualitiesAsync(){_filterTimelineQualitiesAsync=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee960(filter,throwError,timeline){var mapMetadataArray,periods,_iterator120,_step120,period,filtered,metadataArray,i,_t171;return _regenerator().w(function(_context961){while(1)switch(_context961.p=_context961.n){case 0:mapMetadataArray=memoize(function(qualities){return map(qualities,function(q){return q.metadata})},function(qualities){return qualities},1);periods=[];_iterator120=_createForOfIteratorHelper(timeline.periods);_context961.p=1;_iterator120.s();case 2:if((_step120=_iterator120.n()).done){_context961.n=8;break}period=_step120.value;filtered=[];metadataArray=mapMetadataArray(period.qualities);i=0;case 3:if(!(i<period.qualities.length)){_context961.n=6;break}_context961.n=4;return filter(period.qualities[i].metadata,i,metadataArray);case 4:if(!_context961.v){_context961.n=5;break}filtered.push(period.qualities[i]);case 5:i++;_context961.n=3;break;case 6:periods.push(__spreadProps(__spreadValues({},period),{qualities:filtered}));case 7:_context961.n=2;break;case 8:_context961.n=10;break;case 9:_context961.p=9;_t171=_context961.v;_iterator120.e(_t171);case 10:_context961.p=10;_iterator120.f();return _context961.f(10);case 11:if(periods.some(function(p){return p.qualities.length===0})){throwError()}return _context961.a(2,__spreadProps(__spreadValues({},timeline),{periods:periods}))}},_callee960,null,[[1,9,10,11]])}));return _filterTimelineQualitiesAsync.apply(this,arguments)}function throwNoPlayableAudio(){throw new MediaUnsupportedError("No playable audio rendition","audio")}var AUDIO_DESCRIPTION_CHARACTERISTICS=["public.accessibility.describes-video","description"];function isAudioDescription(quality){return quality.characteristics.some(function(c){return AUDIO_DESCRIPTION_CHARACTERISTICS.includes(c)})}function createAudioDescriptionFilter(preferDescription){var periodFlags=memoize(function(array2){var hasDescription=false;var hasMain=false;for(var _i17=0,_Array$from2=Array.from(array2);_i17<_Array$from2.length;_i17++){var quality=_Array$from2[_i17];if(quality.contentType!=="audio")continue;if(isAudioDescription(quality))hasDescription=true;else hasMain=true}return{hasDescription:hasDescription,hasMain:hasMain}},function(array2){return array2},1);return function(quality,_index,array2){if(quality.contentType!=="audio")return true;var _periodFlags=periodFlags(array2),hasDescription=_periodFlags.hasDescription,hasMain=_periodFlags.hasMain;if(preferDescription){if(!hasDescription)return true;return isAudioDescription(quality)}if(!hasMain)return true;return!isAudioDescription(quality)}}// src/track/filters/resourceTypeFilter.ts
1507
1507
  function throwMimeTypesUnsupported(){throw new MediaUnsupportedError("No resource type supported (container/codec).","resource-type")}function canPlayMimeType(deps,metadata){if(!metadata.mimeType)return false;return deps.capabilities.canPlayTypeMse(metadata.mimeType)}// src/track/filters/keySystemFilter.ts
1508
1508
  function throwKeySystemsUnsupported(){throw new MediaUnsupportedError("No key system supported.","key-system")}function canPlayKeySystem(_x49,_x50){return _canPlayKeySystem.apply(this,arguments)}// src/track/filters/sampleRateFilter.ts
1509
- function _canPlayKeySystem(){_canPlayKeySystem=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee957(deps,metadata){return _regenerator().w(function(_context958){while(1)switch(_context958.n){case 0:if(metadata.contentProtections.length){_context958.n=1;break}return _context958.a(2,true);case 1:_context958.n=2;return deps.drmController.isSupported(metadata);case 2:return _context958.a(2,_context958.v.supported)}},_callee957)}));return _canPlayKeySystem.apply(this,arguments)}function throwSamplingRatesUnsupported(){throw new MediaUnsupportedError("No supported sample rate","sampling-rate")}function supportsAudioSamplingRate(deps,metadata,_index,array2){var isFirefox=hasBrowser("Firefox"/* FIREFOX */);var maxSampleRate=deps.capabilities.sampleRate;var samplingRate=last(metadata.audioSamplingRate);if(!samplingRate||!maxSampleRate)return true;if(isFirefox){return samplingRate<=48e3}if(samplingRate<=maxSampleRate)return true;var allAboveMax=every(array2,function(item){var itemSamplingRate=last(item.audioSamplingRate);return itemSamplingRate!=null&&itemSamplingRate>maxSampleRate});if(allAboveMax){var samplingRates=map(array2,function(item){return last(item.audioSamplingRate)}).filter(function(rate){return rate!=null});var lowestSamplingRate=min(samplingRates);return samplingRate===lowestSamplingRate}return false}// src/util/media/codecOverrides.ts
1509
+ function _canPlayKeySystem(){_canPlayKeySystem=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee961(deps,metadata){return _regenerator().w(function(_context962){while(1)switch(_context962.n){case 0:if(metadata.contentProtections.length){_context962.n=1;break}return _context962.a(2,true);case 1:_context962.n=2;return deps.drmController.isSupported(metadata);case 2:return _context962.a(2,_context962.v.supported)}},_callee961)}));return _canPlayKeySystem.apply(this,arguments)}function throwSamplingRatesUnsupported(){throw new MediaUnsupportedError("No supported sample rate","sampling-rate")}function supportsAudioSamplingRate(deps,metadata,_index,array2){var isFirefox=hasBrowser("Firefox"/* FIREFOX */);var maxSampleRate=deps.capabilities.sampleRate;var samplingRate=last(metadata.audioSamplingRate);if(!samplingRate||!maxSampleRate)return true;if(isFirefox){return samplingRate<=48e3}if(samplingRate<=maxSampleRate)return true;var allAboveMax=every(array2,function(item){var itemSamplingRate=last(item.audioSamplingRate);return itemSamplingRate!=null&&itemSamplingRate>maxSampleRate});if(allAboveMax){var samplingRates=map(array2,function(item){return last(item.audioSamplingRate)}).filter(function(rate){return rate!=null});var lowestSamplingRate=min(samplingRates);return samplingRate===lowestSamplingRate}return false}// src/util/media/codecOverrides.ts
1510
1510
  function resolveCodecOverride(mimeType,overrides){if(!overrides)return void 0;var entries=Object.entries(overrides);if(entries.length===0)return void 0;var codecs=extractCodecs(mimeType);if(codecs.length===0)return void 0;var sawAllow=false;var _iterator58=_createForOfIteratorHelper(codecs),_step58;try{for(_iterator58.s();!(_step58=_iterator58.n()).done;){var codec=_step58.value;var lower=codec.toLowerCase();var _iterator59=_createForOfIteratorHelper(entries),_step59;try{for(_iterator59.s();!(_step59=_iterator59.n()).done;){var _step59$value=_slicedToArray(_step59.value,2),key=_step59$value[0],decision=_step59$value[1];if(!lower.startsWith(key.toLowerCase()))continue;if(decision==="deny")return"deny";sawAllow=true}}catch(err){_iterator59.e(err)}finally{_iterator59.f()}}}catch(err){_iterator58.e(err)}finally{_iterator58.f()}return sawAllow?"allow":void 0}// src/streaming/createDefaultMediaTimelineTransformer.ts
1511
1511
  function createDefaultMediaTimelineTransformer(deps){function canPlayWithOverrides(quality,codecOverrides){if(quality.mimeType){var override=resolveCodecOverride(quality.mimeType,codecOverrides);if(override==="allow")return true;if(override==="deny")return false}return canPlayMimeType(deps,quality)}function transformTimeline(_x51){return _transformTimeline.apply(this,arguments)}function _transformTimeline(){_transformTimeline=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee48(timeline){var _a3,_b,codecOverrides,t,selection;return _regenerator().w(function(_context48){while(1)switch(_context48.n){case 0:codecOverrides=deps.options.value.codecOverrides;t=filterTimelineQualities(function(quality){return canPlayWithOverrides(quality,codecOverrides)},throwMimeTypesUnsupported,timeline);_context48.n=1;return filterTimelineQualitiesAsync(function(quality){return canPlayKeySystem(deps,quality)},throwKeySystemsUnsupported,t);case 1:t=_context48.v;t=filterTimelineQualities(function(quality,index,array2){return supportsAudioSamplingRate(deps,quality,index,array2)},throwSamplingRatesUnsupported,t);selection=deps.options.value.audio.selection;t=filterTimelineQualities(createAudioDescriptionFilter((_a3=selection==null?void 0:selection.descriptive)!=null?_a3:false),throwNoPlayableAudio,t);t=filterTimelineQualities(createLanguageFilter((_b=selection==null?void 0:selection.language)!=null?_b:null,"audio"),throwLanguagesUnsupported,t);return _context48.a(2,t)}},_callee48)}));return _transformTimeline.apply(this,arguments)}return combineData({timeline:deps.mediaTimeline,audio:deps.options.pick("audio"),codecOverrides:deps.options.pick("codecOverrides")}).map(/*#__PURE__*/function(){var _ref34=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee47(_ref33){var timeline,_t12;return _regenerator().w(function(_context47){while(1)switch(_context47.n){case 0:timeline=_ref33.timeline;_t12=transformTimeline;_context47.n=1;return timeline;case 1:return _context47.a(2,_t12(_context47.v))}},_callee47)}));return function(_x52){return _ref34.apply(this,arguments)}}())}// src/streaming/DescriptorRecord.ts
1512
1512
  function getDescriptorValue(record2,uri,id){var _a3,_b;var arr=record2[uri];if(!arr)return null;if(id!==void 0)arr=arr.filter(function(descriptor){return descriptor.id===id});return(_b=(_a3=first(arr))==null?void 0:_a3.value)!=null?_b:null}var descriptorValidator=object({id:string().maybe().optional(),value:string().maybe().optional()});var descriptorRecordValidator=record(string(),array(descriptorValidator).readonly().orUndefined());// src/streaming/ManifestControllerImpl.ts
@@ -1613,7 +1613,7 @@ __publicField(this,"styleElement");__publicField(this,"onCueChange",function(){r
1613
1613
  function createMediaTextTrackProvider(deps){var media=deps.media;var cache=/* @__PURE__ */new Map;var isAttached=function isAttached(track2){for(var i=0;i<media.textTracks.length;i++){if(media.textTracks[i]===track2)return true}return false};var create=function create(kind,label,language){var track2=media.addTextTrack(kind,label,language);return{track:track2,clear:function clear(){if(!track2.cues)return;var all=Array.from(track2.cues);for(var _i18=0,_all=all;_i18<_all.length;_i18++){var cue=_all[_i18];track2.removeCue(cue)}}}};return{getOrCreate:function getOrCreate(kind,label,language){var key="".concat(kind,"-").concat(label,"-").concat(language);var cached=cache.get(key);if(cached&&isAttached(cached.track))return cached;var ref=create(kind,label,language);cache.set(key,ref);return ref}}}// src/text/parseWebVtt.ts
1614
1614
  var WEBVTT_HEADER="WEBVTT";var TIMESTAMP_RE=/^(?:(\d+):)?([0-5]\d):([0-5]\d)\.(\d{3})/;function parseWebVtt(input){if(typeof input!=="string"){throw new ValidationError("WebVTT input must be a string",ErrorOrigin.MEDIA)}var text=input;if(text.charCodeAt(0)===65279)text=text.slice(1);var lines=text.split(/\r\n|\r|\n/);if(lines.length===0||!isWebVttHeader(lines[0])){throw new ValidationError("WebVTT must begin with a WEBVTT header",ErrorOrigin.MEDIA)}var cues=[];var styles=[];var i=1;while(i<lines.length&&lines[i]!=="")i++;while(i<lines.length){if(lines[i]===""){i++;continue}if(lines[i]==="NOTE"||lines[i].startsWith("NOTE ")||lines[i].startsWith("NOTE\t")||lines[i]==="REGION"){i++;while(i<lines.length&&lines[i]!=="")i++;continue}if(lines[i]==="STYLE"){i++;var start=i;while(i<lines.length&&lines[i]!=="")i++;var css=lines.slice(start,i).join("\n").trim();if(css)styles.push(css);continue}var id=null;if(!lines[i].includes("-->")){id=lines[i];i++;if(i>=lines.length)break}var timing=parseTiming(lines[i]);i++;if(!timing){while(i<lines.length&&lines[i]!=="")i++;continue}var payloadLines=[];while(i<lines.length&&lines[i]!==""){payloadLines.push(lines[i]);i++}var text2=payloadLines.join("\n");cues.push(timing.settings===void 0?{id:id,startTime:timing.startTime,endTime:timing.endTime,text:text2}:{id:id,startTime:timing.startTime,endTime:timing.endTime,text:text2,settings:timing.settings})}return{cues:cues,styles:styles}}function parseTiming(line){var arrow=line.indexOf("-->");if(arrow<0)return null;var before=line.slice(0,arrow).trim();var start=TIMESTAMP_RE.exec(before);if(!start||start[0].length!==before.length)return null;var rest=line.slice(arrow+3).trim();var end=TIMESTAMP_RE.exec(rest);if(!end)return null;return{startTime:toSeconds(start[1],start[2],start[3],start[4]),endTime:toSeconds(end[1],end[2],end[3],end[4]),settings:parseCueSettings(rest.slice(end[0].length))}}function toSeconds(hours,minutes,seconds,millis){return(hours?Number(hours)*3600:0)+Number(minutes)*60+Number(seconds)+Number(millis)/1e3}function isWebVttHeader(line){if(!line.startsWith(WEBVTT_HEADER))return false;if(line.length===WEBVTT_HEADER.length)return true;var next=line.charCodeAt(WEBVTT_HEADER.length);return next===32||next===9}var ALIGN=/* @__PURE__ */new Set(["start","center","end","left","right"]);var LINE_ALIGN=/* @__PURE__ */new Set(["start","center","end"]);var POSITION_ALIGN=/* @__PURE__ */new Set(["line-left","center","line-right","auto"]);var VERTICAL=/* @__PURE__ */new Set(["rl","lr"]);function parseCueSettings(text){if(!text)return void 0;var settings={};var _iterator64=_createForOfIteratorHelper(text.trim().split(/\s+/)),_step64;try{for(_iterator64.s();!(_step64=_iterator64.n()).done;){var token=_step64.value;var colon=token.indexOf(":");if(colon<=0)continue;var key=token.slice(0,colon);var value=token.slice(colon+1);switch(key){case"align":{var align=value==="middle"?"center":value;if(ALIGN.has(align))settings.align=align;break}case"vertical":if(VERTICAL.has(value))settings.vertical=value;break;case"size":{var size=parsePercent(value);if(size!=null)settings.size=size;break}case"line":parseLine(value,settings);break;case"position":parsePosition(value,settings);break}}}catch(err){_iterator64.e(err)}finally{_iterator64.f()}return Object.keys(settings).length>0?settings:void 0}function parseLine(value,settings){var _value$split=value.split(","),_value$split2=_slicedToArray(_value$split,2),pos=_value$split2[0],align=_value$split2[1];if(pos.endsWith("%")){var percent=parsePercent(pos);if(percent==null)return;settings.line=percent;settings.snapToLines=false}else{var n=Number(pos);if(!Number.isInteger(n))return;settings.line=n;settings.snapToLines=true}var lineAlign=align==="middle"?"center":align;if(lineAlign&&LINE_ALIGN.has(lineAlign))settings.lineAlign=lineAlign}function parsePosition(value,settings){var _value$split3=value.split(","),_value$split4=_slicedToArray(_value$split3,2),pos=_value$split4[0],align=_value$split4[1];var percent=parsePercent(pos);if(percent==null)return;settings.position=percent;var positionAlign=align==="middle"?"center":align;if(positionAlign&&POSITION_ALIGN.has(positionAlign))settings.positionAlign=positionAlign}function parsePercent(value){if(!value.endsWith("%"))return null;var n=Number(value.slice(0,-1));return Number.isFinite(n)?n:null}// src/text/pickPreferredTextTrack.ts
1615
1615
  function resolvePreferredTextLanguages(preferred){if(typeof preferred==="string")return[preferred];if(preferred)return preferred;if(typeof navigator!=="undefined")return _toConsumableArray(navigator.languages);return[]}function pickPreferredTextTrack(tracks,preferred){var prefs=resolvePreferredTextLanguages(preferred);if(tracks.length===0||prefs.length===0)return null;var best=null;var bestScore=0;var _iterator65=_createForOfIteratorHelper(tracks),_step65;try{for(_iterator65.s();!(_step65=_iterator65.n()).done;){var track2=_step65.value;var score=scoreTextTrack(track2,prefs);if(score>bestScore){bestScore=score;best=track2}}}catch(err){_iterator65.e(err)}finally{_iterator65.f()}return best}function scoreTextTrack(track2,prefs){if(track2.language==null)return 0;var best=0;for(var i=0;i<prefs.length;i++){var rel=languageRelatedness(prefs[i],track2.language);if(rel>0){best=Math.max(best,(prefs.length-i)*100+rel*10)}}if(best===0)return 0;if(!track2.forced)best+=2;if(track2["default"])best+=1;return best}// src/text/SidecarTextTrackLoader.ts
1616
- var DEFAULT_TEXT_LOOK_AHEAD=10;var DEFAULT_TEXT_LOOK_BEHIND=2;var IDLE_POLL_SECONDS=0.25;function loadWebVttCues(_x58,_x59){return _loadWebVttCues.apply(this,arguments)}function _loadWebVttCues(){_loadWebVttCues=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee958(uri,options){var _a3,_b,_c,abort,requestInit,variables,onCues,onStyles,getCurrentTime,lookAhead,lookBehind,init,response,contentType2,body,doc;return _regenerator().w(function(_context959){while(1)switch(_context959.n){case 0:abort=options.abort,requestInit=options.requestInit,variables=options.variables,onCues=options.onCues,onStyles=options.onStyles,getCurrentTime=options.getCurrentTime;lookAhead=(_a3=options.lookAhead)!=null?_a3:DEFAULT_TEXT_LOOK_AHEAD;lookBehind=(_b=options.lookBehind)!=null?_b:DEFAULT_TEXT_LOOK_BEHIND;init=requestInit!=null?requestInit:void 0;if(!looksLikeMediaPlaylist(uri)){_context959.n=1;break}return _context959.a(2,streamMediaPlaylist({uri:uri,init:init,abort:abort,variables:variables!=null?variables:void 0,onCues:onCues,onStyles:onStyles,getCurrentTime:getCurrentTime,lookAhead:lookAhead,lookBehind:lookBehind}));case 1:_context959.n=2;return requestWithRetry(uri,init,{abort:abort});case 2:response=_context959.v;contentType2=((_c=response.headers.get("content-type"))!=null?_c:"").toLowerCase();_context959.n=3;return response.text();case 3:body=_context959.v;if(!(contentType2.includes("mpegurl")||body.startsWith("#EXTM3U"))){_context959.n=4;break}return _context959.a(2,streamMediaPlaylistText({text:body,baseUrl:response.url||uri,init:init,abort:abort,variables:variables!=null?variables:void 0,onCues:onCues,onStyles:onStyles,getCurrentTime:getCurrentTime,lookAhead:lookAhead,lookBehind:lookBehind}));case 4:doc=parseWebVtt(body);if(doc.cues.length>0)onCues(doc.cues);if(onStyles&&doc.styles.length>0)onStyles(doc.styles);case 5:return _context959.a(2)}},_callee958)}));return _loadWebVttCues.apply(this,arguments)}function looksLikeMediaPlaylist(uri){var path=uri.split(/[?#]/)[0];return path.toLowerCase().endsWith(".m3u8")}function streamMediaPlaylist(_x60){return _streamMediaPlaylist.apply(this,arguments)}function _streamMediaPlaylist(){_streamMediaPlaylist=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee959(ctx){var response,text;return _regenerator().w(function(_context960){while(1)switch(_context960.n){case 0:_context960.n=1;return requestWithRetry(ctx.uri,ctx.init,{abort:ctx.abort});case 1:response=_context960.v;_context960.n=2;return response.text();case 2:text=_context960.v;return _context960.a(2,streamMediaPlaylistText(__spreadProps(__spreadValues({},ctx),{text:text,baseUrl:response.url||ctx.uri})))}},_callee959)}));return _streamMediaPlaylist.apply(this,arguments)}function streamMediaPlaylistText(_x61){return _streamMediaPlaylistText.apply(this,arguments)}function _streamMediaPlaylistText(){_streamMediaPlaylistText=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee960(ctx){var _a3,playlist,segments,ranges,cursor,_iterator121,_step121,seg,pending2,idx,segUri,res,body,doc;return _regenerator().w(function(_context961){while(1)switch(_context961.n){case 0:playlist=parseMediaPlaylist(ctx.text,ctx.variables);segments=playlist.segments;ranges=[];cursor=0;_iterator121=_createForOfIteratorHelper(segments);try{for(_iterator121.s();!(_step121=_iterator121.n()).done;){seg=_step121.value;ranges.push({start:cursor,end:cursor+seg.duration});cursor+=seg.duration}}catch(err){_iterator121.e(err)}finally{_iterator121.f()}pending2=new Set(segments.map(function(_,i){return i}));case 1:if(!(pending2.size>0&&!((_a3=ctx.abort)==null?void 0:_a3.aborted()))){_context961.n=6;break}idx=pickInWindow(pending2,ranges,ctx);if(!(idx<0)){_context961.n=3;break}_context961.n=2;return _sleep(IDLE_POLL_SECONDS,ctx.abort)["catch"](function(){});case 2:return _context961.a(3,1);case 3:pending2["delete"](idx);segUri=resolveUrl(segments[idx].uri,ctx.baseUrl);_context961.n=4;return requestWithRetry(segUri,ctx.init,{abort:ctx.abort});case 4:res=_context961.v;_context961.n=5;return res.text();case 5:body=_context961.v;doc=parseWebVtt(body);if(doc.cues.length>0)ctx.onCues(doc.cues);if(ctx.onStyles&&doc.styles.length>0)ctx.onStyles(doc.styles);_context961.n=1;break;case 6:return _context961.a(2)}},_callee960)}));return _streamMediaPlaylistText.apply(this,arguments)}function pickInWindow(pending2,ranges,ctx){var now2=ctx.getCurrentTime();var windowStart=now2-ctx.lookBehind;var windowEnd=now2+ctx.lookAhead;var best=-1;var bestDist=Number.POSITIVE_INFINITY;var _iterator66=_createForOfIteratorHelper(pending2),_step66;try{for(_iterator66.s();!(_step66=_iterator66.n()).done;){var idx=_step66.value;var r=ranges[idx];if(r.end<windowStart||r.start>windowEnd)continue;var mid=(r.start+r.end)/2;var dist=Math.abs(mid-now2);if(dist<bestDist){bestDist=dist;best=idx}}}catch(err){_iterator66.e(err)}finally{_iterator66.f()}return best}// src/text/VttCueStyle.ts
1616
+ var DEFAULT_TEXT_LOOK_AHEAD=10;var DEFAULT_TEXT_LOOK_BEHIND=2;var IDLE_POLL_SECONDS=0.25;function loadWebVttCues(_x58,_x59){return _loadWebVttCues.apply(this,arguments)}function _loadWebVttCues(){_loadWebVttCues=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee962(uri,options){var _a3,_b,_c,abort,requestInit,variables,onCues,onStyles,getCurrentTime,lookAhead,lookBehind,init,response,contentType2,body,doc;return _regenerator().w(function(_context963){while(1)switch(_context963.n){case 0:abort=options.abort,requestInit=options.requestInit,variables=options.variables,onCues=options.onCues,onStyles=options.onStyles,getCurrentTime=options.getCurrentTime;lookAhead=(_a3=options.lookAhead)!=null?_a3:DEFAULT_TEXT_LOOK_AHEAD;lookBehind=(_b=options.lookBehind)!=null?_b:DEFAULT_TEXT_LOOK_BEHIND;init=requestInit!=null?requestInit:void 0;if(!looksLikeMediaPlaylist(uri)){_context963.n=1;break}return _context963.a(2,streamMediaPlaylist({uri:uri,init:init,abort:abort,variables:variables!=null?variables:void 0,onCues:onCues,onStyles:onStyles,getCurrentTime:getCurrentTime,lookAhead:lookAhead,lookBehind:lookBehind}));case 1:_context963.n=2;return requestWithRetry(uri,init,{abort:abort});case 2:response=_context963.v;contentType2=((_c=response.headers.get("content-type"))!=null?_c:"").toLowerCase();_context963.n=3;return response.text();case 3:body=_context963.v;if(!(contentType2.includes("mpegurl")||body.startsWith("#EXTM3U"))){_context963.n=4;break}return _context963.a(2,streamMediaPlaylistText({text:body,baseUrl:response.url||uri,init:init,abort:abort,variables:variables!=null?variables:void 0,onCues:onCues,onStyles:onStyles,getCurrentTime:getCurrentTime,lookAhead:lookAhead,lookBehind:lookBehind}));case 4:doc=parseWebVtt(body);if(doc.cues.length>0)onCues(doc.cues);if(onStyles&&doc.styles.length>0)onStyles(doc.styles);case 5:return _context963.a(2)}},_callee962)}));return _loadWebVttCues.apply(this,arguments)}function looksLikeMediaPlaylist(uri){var path=uri.split(/[?#]/)[0];return path.toLowerCase().endsWith(".m3u8")}function streamMediaPlaylist(_x60){return _streamMediaPlaylist.apply(this,arguments)}function _streamMediaPlaylist(){_streamMediaPlaylist=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee963(ctx){var response,text;return _regenerator().w(function(_context964){while(1)switch(_context964.n){case 0:_context964.n=1;return requestWithRetry(ctx.uri,ctx.init,{abort:ctx.abort});case 1:response=_context964.v;_context964.n=2;return response.text();case 2:text=_context964.v;return _context964.a(2,streamMediaPlaylistText(__spreadProps(__spreadValues({},ctx),{text:text,baseUrl:response.url||ctx.uri})))}},_callee963)}));return _streamMediaPlaylist.apply(this,arguments)}function streamMediaPlaylistText(_x61){return _streamMediaPlaylistText.apply(this,arguments)}function _streamMediaPlaylistText(){_streamMediaPlaylistText=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee964(ctx){var _a3,playlist,segments,ranges,cursor,_iterator121,_step121,seg,pending2,idx,segUri,res,body,doc;return _regenerator().w(function(_context965){while(1)switch(_context965.n){case 0:playlist=parseMediaPlaylist(ctx.text,ctx.variables);segments=playlist.segments;ranges=[];cursor=0;_iterator121=_createForOfIteratorHelper(segments);try{for(_iterator121.s();!(_step121=_iterator121.n()).done;){seg=_step121.value;ranges.push({start:cursor,end:cursor+seg.duration});cursor+=seg.duration}}catch(err){_iterator121.e(err)}finally{_iterator121.f()}pending2=new Set(segments.map(function(_,i){return i}));case 1:if(!(pending2.size>0&&!((_a3=ctx.abort)==null?void 0:_a3.aborted()))){_context965.n=6;break}idx=pickInWindow(pending2,ranges,ctx);if(!(idx<0)){_context965.n=3;break}_context965.n=2;return _sleep(IDLE_POLL_SECONDS,ctx.abort)["catch"](function(){});case 2:return _context965.a(3,1);case 3:pending2["delete"](idx);segUri=resolveUrl(segments[idx].uri,ctx.baseUrl);_context965.n=4;return requestWithRetry(segUri,ctx.init,{abort:ctx.abort});case 4:res=_context965.v;_context965.n=5;return res.text();case 5:body=_context965.v;doc=parseWebVtt(body);if(doc.cues.length>0)ctx.onCues(doc.cues);if(ctx.onStyles&&doc.styles.length>0)ctx.onStyles(doc.styles);_context965.n=1;break;case 6:return _context965.a(2)}},_callee964)}));return _streamMediaPlaylistText.apply(this,arguments)}function pickInWindow(pending2,ranges,ctx){var now2=ctx.getCurrentTime();var windowStart=now2-ctx.lookBehind;var windowEnd=now2+ctx.lookAhead;var best=-1;var bestDist=Number.POSITIVE_INFINITY;var _iterator66=_createForOfIteratorHelper(pending2),_step66;try{for(_iterator66.s();!(_step66=_iterator66.n()).done;){var idx=_step66.value;var r=ranges[idx];if(r.end<windowStart||r.start>windowEnd)continue;var mid=(r.start+r.end)/2;var dist=Math.abs(mid-now2);if(dist<bestDist){bestDist=dist;best=idx}}}catch(err){_iterator66.e(err)}finally{_iterator66.f()}return best}// src/text/VttCueStyle.ts
1617
1617
  function isVttCue(cue){return typeof VTTCue!=="undefined"&&cue instanceof VTTCue}function applyVttCueStyle(cue,style){if(style.align!==void 0)cue.align=style.align;if(style.line!==void 0)cue.line=style.line;if(style.lineAlign!==void 0)cue.lineAlign=style.lineAlign;if(style.position!==void 0)cue.position=style.position;if(style.positionAlign!==void 0)cue.positionAlign=style.positionAlign;if(style.size!==void 0)cue.size=style.size;if(style.snapToLines!==void 0)cue.snapToLines=style.snapToLines;if(style.vertical!==void 0)cue.vertical=style.vertical}var vttCueStyleValidator=object({align:isOneOf("start","center","end","left","right").optional(),line:number().or(isOneOf("auto")).optional(),lineAlign:isOneOf("start","center","end").optional(),position:number().or(isOneOf("auto")).optional(),positionAlign:isOneOf("line-left","center","line-right","auto").optional(),size:number().optional(),snapToLines:_boolean().optional(),vertical:isOneOf("","rl","lr").optional()});// src/text/SidecarTextTrackController.ts
1618
1618
  function resolveSelectedTrack(tracks,options){var _a3,_b,_c,_d;var mode=(_a3=options.enabled)!=null?_a3:"forced";if(mode==="off")return null;var selection=(_b=options.selection)!=null?_b:{};if(selection.id!=null){return(_c=tracks.find(function(t){return t.id===selection.id}))!=null?_c:null}var pool=tracks;if(selection.kind!=null){pool=pool.filter(function(t){return t.kind===selection.kind})}var forced=(_d=selection.forced)!=null?_d:mode==="forced";pool=pool.filter(function(t){return t.forced===forced});return pickPreferredTextTrack(pool,selection.language)}var SidecarTextTrackController=/*#__PURE__*/function(_EventHostImpl14){function SidecarTextTrackController(deps){var _this103;_classCallCheck(this,SidecarTextTrackController);_this103=_callSuper(this,SidecarTextTrackController);__publicField(_this103,"deps",deps);// Whether the owning media track is current (rendering allowed). Toggled by
1619
1619
  // activate()/deactivate() across suspensions such as ad breaks.
@@ -1704,7 +1704,7 @@ var VIDEO_CODEC_PREFIXES=["avc1","avc3","hvc1","hev1","vp09","av01","dvh1","dvhe
1704
1704
  function getRepresentationMimeInfo(representation){var _a3,_b,_c,_d;var adaptationSet=representation.parent;var mimeType=(_a3=representation.mimeType)!=null?_a3:adaptationSet.mimeType;var codecs=(_b=representation.codecs)!=null?_b:adaptationSet.codecs;if(!mimeType){var contentType3=(_c=adaptationSet.contentType)!=null?_c:codecs?codecToContentType(codecs.split(",")[0]):null;switch(contentType3){case"audio":mimeType="audio/mp4";break;case"video":mimeType="video/mp4";break;default:return{mimeType:null,contentType:null}}var fullMimeType2=codecs?"".concat(mimeType,"; codecs=\"").concat(codecs,"\""):mimeType;return{mimeType:fullMimeType2,contentType:contentType3}}var fullMimeType=codecs?"".concat(mimeType,"; codecs=\"").concat(codecs,"\""):mimeType;var contentType2=(_d=adaptationSet.contentType)!=null?_d:null;if(!contentType2){if(mimeType.startsWith("audio/"))contentType2="audio";else if(mimeType.startsWith("video/"))contentType2="video";else if(mimeType.startsWith("text/")||mimeType==="application/json"||mimeType==="application/xml")contentType2="text"}return{mimeType:fullMimeType,contentType:contentType2}}// src/track/dash/util/mpd.ts
1705
1705
  function getSegmentList(representation){return mergeIfAnyDefined(representation.parent.parent.SegmentList,representation.parent.SegmentList,representation.SegmentList)}function getSegmentTemplate(representation){return mergeIfAnyDefined(representation.parent.parent.SegmentTemplate,representation.parent.SegmentTemplate,representation.SegmentTemplate)}function getSegmentBase(representation){return mergeIfAnyDefined(representation.parent.parent.SegmentBase,representation.parent.SegmentBase,representation.SegmentBase)}function getRepresentationAncestry(representation){var adaptationSet=representation.parent;var period=adaptationSet.parent;var mpd=period.parent;return[mpd,period,adaptationSet,representation]}function mergeIfAnyDefined(){for(var _len21=arguments.length,sources=new Array(_len21),_key22=0;_key22<_len21;_key22++){sources[_key22]=arguments[_key22]}if(!sources.some(function(source){return source}))return void 0;return merge.apply(void 0,sources)}function calculatePeriodTimeRange(period){return[calculatePeriodStart(period),calculatePeriodEnd(period)]}function calculatePeriodStart(period){var _a3;return(_a3=period.start)!=null?_a3:0}function calculatePeriodEnd(period){var _a3;if(period.start!=null&&period.duration!=null)return period.start+period.duration;var mpd=period.parent;var periodIndex=mpd.Period.indexOf(period);if(periodIndex<mpd.Period.length-1)return calculatePeriodStart(mpd.Period[periodIndex+1]);else return(_a3=mpd.mediaPresentationDuration)!=null?_a3:null}function sampleToMpdTime(sampleTime,periodStart,presentationTimeOffset,timescale){return periodStart+(sampleTime-presentationTimeOffset)/timescale}function getPeriodAtTime(manifest3,time){var index=sortedInsertionIndex(manifest3.MPD.Period,time,function(time2,period2){return time2-calculatePeriodStart(period2)})-1;if(index<0)return null;var period=manifest3.MPD.Period[index];var periodEnd=calculatePeriodEnd(period);return periodEnd!=null&&time>=periodEnd?null:period}function flattenRepresentations(period){var _a3;var out=[];(_a3=period.AdaptationSet)==null?void 0:_a3.forEach(function(adaptationSet){var _a4;(_a4=adaptationSet.Representation)==null?void 0:_a4.forEach(function(representation){out.push(representation)})});return out}function flattenMediaRepresentations(period){return flattenRepresentations(period).filter(function(representation){var _getRepresentationMim=getRepresentationMimeInfo(representation),contentType2=_getRepresentationMim.contentType;return contentType2==="audio"||contentType2==="video"})}function calculateDuration(manifest3){if(manifest3.MPD.type==="dynamic")return Infinity;var mpdDuration=manifest3.MPD.mediaPresentationDuration;if(mpdDuration!=null)return mpdDuration;var lastPeriod=last(manifest3.MPD.Period);if(!lastPeriod){throw new Error("Unable to determine manifest duration: no periods")}var end=calculatePeriodEnd(lastPeriod);if(end==null){throw new Error("Unable to determine manifest duration")}return end}// src/track/dash/util/uriResolution.ts
1706
1706
  var pickFirstBaseUrlSelector={selectBaseUrl:function selectBaseUrl(baseUrls){return baseUrls[0]}};function resolveDashUri(deps,options){var representation=options.representation,baseUrl=options.baseUrl,uri=options.uri;var baseUrlSelector=deps.baseUrlSelector;var scopeChain=getRepresentationAncestry(representation);var resolved=baseUrl;var serviceLocation=null;scopeChain.forEach(function(scope){if(scope.BaseURL&&scope.BaseURL.length){var selectedBaseUrl=baseUrlSelector.selectBaseUrl(scope.BaseURL);resolved=resolveUrl(selectedBaseUrl._content,resolved);if(selectedBaseUrl.serviceLocation)serviceLocation=selectedBaseUrl.serviceLocation}});if(uri!=null){resolved=resolveUrl(uri,resolved)}else if(resolved===baseUrl){throw new ValidationError("media missing URI or BaseURL",ErrorOrigin.MEDIA)}return{url:resolved,serviceLocation:serviceLocation}}function segmentTemplateUrl(uri,options){var _a3,_b;try{return substituteIdentifiers(uri,{Bandwidth:options.representation.bandwidth,Number:(_a3=options.segmentNumber)!=null?_a3:0,RepresentationID:options.representation.id,Time:(_b=options.sampleTime)!=null?_b:0})}catch(error){if(error instanceof IllegalArgumentError){throw new ValidationError(error.message,ErrorOrigin.MEDIA)}else{throw error}}}// src/track/dash/timeline/DashRepresentationSegmentProvider.ts
1707
- function createDashRepresentationSegmentProvider(deps,baseUrl,representation){var _a3;var quality=deps.mediaQualityMetadataResolver(representation);var options={baseUrl:baseUrl,periodTimeRange:calculatePeriodTimeRange(representation.parent.parent),representation:representation};var segmentTemplate=getSegmentTemplate(representation);var segmentList=getSegmentList(representation);var segmentBase=getSegmentBase(representation);var segmentsPromise=null;var initUri;var initRange;if(segmentTemplate==null?void 0:segmentTemplate.initialization){initUri=segmentTemplateUrl(segmentTemplate.initialization,{representation:representation})}var commonSegmentBase=(_a3=segmentTemplate!=null?segmentTemplate:segmentList)!=null?_a3:segmentBase;if(!commonSegmentBase){throw new ValidationError("Manifest must have one of SegmentList, SegmentTemplate, or SegmentBase",ErrorOrigin.MEDIA)}if(commonSegmentBase.Initialization){initUri=commonSegmentBase.Initialization.sourceURL;initRange=commonSegmentBase.Initialization.range}if(!initUri&&!initRange)throw new ValidationError("Missing initialization range",ErrorOrigin.MEDIA);var _resolveDashUri=resolveDashUri(deps,{baseUrl:baseUrl,representation:representation,uri:initUri}),initUrl=_resolveDashUri.url,initServiceLocation=_resolveDashUri.serviceLocation;var initData=createSegmentDataProvider(deps,{url:initUrl,mediaRange:initRange,serviceId:initServiceLocation,reportDownlinkMetrics:false});var getSegmentReferences;if(segmentList){getSegmentReferences=function getSegmentReferences(){return createSegmentsFromSegmentList(deps,__spreadProps(__spreadValues({},options),{segmentList:segmentList}))}}else if(segmentTemplate){getSegmentReferences=function getSegmentReferences(){return createSegmentsFromSegmentTemplate(deps,__spreadProps(__spreadValues({},options),{segmentTemplate:segmentTemplate}))}}else if(segmentBase){getSegmentReferences=function getSegmentReferences(){return createSegmentsFromSegmentBase(deps,__spreadProps(__spreadValues({},options),{segmentBase:segmentBase}))}}return{getSegment:function getSegment(time){var _arguments2=arguments;return _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee58(){var affordance,segments,segment;return _regenerator().w(function(_context58){while(1)switch(_context58.n){case 0:affordance=_arguments2.length>1&&_arguments2[1]!==undefined?_arguments2[1]:0;if(!segmentsPromise)segmentsPromise=getSegmentReferences();_context58.n=1;return Promise.resolve(segmentsPromise)["catch"](function(error){segmentsPromise=null;throw error});case 1:segments=_context58.v;segment=getSegmentAtTime(time,segments,affordance);if(segment){_context58.n=2;break}return _context58.a(2,null);case 2:return _context58.a(2,__spreadProps(__spreadValues({quality:quality},segment),{initData:initData}))}},_callee58)}))()}}}function createSegmentsFromSegmentList(deps,options){var _a3;var baseUrl=options.baseUrl,periodTimeRange=options.periodTimeRange,representation=options.representation,segmentList=options.segmentList;var segmentUrls=segmentList.SegmentURL;if(segmentUrls){var timescale=getTimescale(segmentList);var sampleTimes=calculateSegmentSampleTimes({multipleSegmentBase:segmentList,periodTimeRange:periodTimeRange,numSegments:segmentUrls.length});var presentationTimeOffset=(_a3=segmentList.presentationTimeOffset)!=null?_a3:0;return createTimeline({sampleTimes:sampleTimes,presentationTimeOffset:presentationTimeOffset,periodTimeRange:periodTimeRange,timescale:timescale},function(i){var segmentUrl=segmentUrls[i];var _resolveDashUri2=resolveDashUri(deps,{baseUrl:baseUrl,uri:segmentUrl.media,representation:representation}),url=_resolveDashUri2.url,serviceLocation=_resolveDashUri2.serviceLocation;return createSegmentDataProvider(deps,{url:url,mediaRange:segmentUrl.mediaRange,serviceId:serviceLocation,reportDownlinkMetrics:true})})}else{if(segmentList.href){throw new ValidationError("SegmentList.href currently unsupported",ErrorOrigin.MEDIA)}else{throw new ValidationError("could not determine segments from SegmentList",ErrorOrigin.MEDIA)}}}function createSegmentsFromSegmentTemplate(deps,options){var _a3,_b;var baseUrl=options.baseUrl,periodTimeRange=options.periodTimeRange,representation=options.representation,segmentTemplate=options.segmentTemplate;if(!segmentTemplate.media){throw new ValidationError("SegmentTemplate.media required",ErrorOrigin.MEDIA)}var media=segmentTemplate.media;var presentationTimeOffset=(_a3=segmentTemplate.presentationTimeOffset)!=null?_a3:0;var sampleTimes=calculateSegmentSampleTimes({multipleSegmentBase:segmentTemplate,periodTimeRange:periodTimeRange});var timescale=getTimescale(segmentTemplate);var segmentNumber=(_b=segmentTemplate.startNumber)!=null?_b:1;return createTimeline({timescale:timescale,presentationTimeOffset:presentationTimeOffset,periodTimeRange:periodTimeRange,sampleTimes:sampleTimes},function(_,sampleTime){var uri=segmentTemplateUrl(media,{representation:representation,sampleTime:sampleTime,segmentNumber:segmentNumber++});var _resolveDashUri3=resolveDashUri(deps,{baseUrl:baseUrl,uri:uri,representation:representation}),url=_resolveDashUri3.url,serviceLocation=_resolveDashUri3.serviceLocation;return createSegmentDataProvider(deps,{url:url,serviceId:serviceLocation,reportDownlinkMetrics:true})})}function createSegmentsFromSegmentBase(_x63,_x64){return _createSegmentsFromSegmentBase.apply(this,arguments)}function _createSegmentsFromSegmentBase(){_createSegmentsFromSegmentBase=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee961(deps,options){var _a3,baseUrl,periodTimeRange,representation,segmentBase,indexRange,_resolveDashUri4,indexUrl,indexServiceLocation,sidx,sampleTimes,rangeStart,_t172;return _regenerator().w(function(_context962){while(1)switch(_context962.n){case 0:baseUrl=options.baseUrl,periodTimeRange=options.periodTimeRange,representation=options.representation,segmentBase=options.segmentBase;if(!segmentBase.indexRange){_context962.n=2;break}indexRange=segmentBase.indexRange;_resolveDashUri4=resolveDashUri(deps,{baseUrl:baseUrl,representation:representation}),indexUrl=_resolveDashUri4.url,indexServiceLocation=_resolveDashUri4.serviceLocation;_t172=parseSidxBox;_context962.n=1;return createSegmentDataProvider(deps,{url:indexUrl,mediaRange:indexRange,serviceId:indexServiceLocation,reportDownlinkMetrics:false})();case 1:sidx=_t172(_context962.v);sampleTimes=getSidxSampleTimes(sidx);rangeStart=Number(sidx.firstOffset)+indexRange[1]+1;return _context962.a(2,createTimeline({sampleTimes:sampleTimes,periodTimeRange:periodTimeRange,presentationTimeOffset:(_a3=segmentBase.presentationTimeOffset)!=null?_a3:0,timescale:sidx.timescale},function(i){var segmentReference=sidx.references[i];var size=segmentReference.referencedSize;var provider=createSegmentDataProvider(deps,{url:indexUrl,mediaRange:[rangeStart,rangeStart+size-1],serviceId:indexServiceLocation,reportDownlinkMetrics:true});rangeStart+=size;return provider}));case 2:throw new ValidationError("Manifest missing segments");case 3:return _context962.a(2)}},_callee961)}));return _createSegmentsFromSegmentBase.apply(this,arguments)}function calculateSegmentSampleTimes(options){var multipleSegmentBase=options.multipleSegmentBase,periodTimeRange=options.periodTimeRange;var timescale=getTimescale(multipleSegmentBase);var startTimes;if(multipleSegmentBase.SegmentTimeline){startTimes=calculateSampleTimesFromSegmentTimeline(multipleSegmentBase.SegmentTimeline)}else{var sampleDuration=getSampleDuration(multipleSegmentBase);startTimes=calculateFixedSegmentSampleTimes({timescale:timescale,periodTimeRange:periodTimeRange,sampleDuration:sampleDuration,numSegments:options.numSegments})}return startTimes}function calculateSampleTimesFromSegmentTimeline(segmentTimeline){var _a3,_b,_c;var out=new Array(((_b=(_a3=segmentTimeline.S)==null?void 0:_a3.length)!=null?_b:0)+1);var startTime=0;var c=0;(_c=segmentTimeline.S)==null?void 0:_c.forEach(function(s){startTime=s.t!=null?s.t:startTime;for(var i=0;i<=s.r;i++){out[c++]=startTime;startTime+=s.d}});out[c++]=startTime;return out}function calculateFixedSegmentSampleTimes(options){var _a3;var sampleDuration=options.sampleDuration,timescale=options.timescale;var _options$periodTimeRa=_slicedToArray(options.periodTimeRange,2),periodStart=_options$periodTimeRa[0],periodEnd=_options$periodTimeRa[1];if(periodEnd==null)throw new ValidationError("MPD.mediaPresentationDuration or Period.duration required",ErrorOrigin.MEDIA);var numSegments=(_a3=options.numSegments)!=null?_a3:Math.ceil((periodEnd-periodStart)/(sampleDuration/timescale));var out=new Array(numSegments+1);var startTime=0;for(var i=0;i<numSegments;i++){out[i]=startTime;startTime+=sampleDuration}out[numSegments]=periodEnd*timescale;return out}function createTimeline(_ref37,dataProviderFactory){var sampleTimes=_ref37.sampleTimes,periodTimeRange=_ref37.periodTimeRange,presentationTimeOffset=_ref37.presentationTimeOffset,timescale=_ref37.timescale;var _periodTimeRange=_slicedToArray(periodTimeRange,2),periodStart=_periodTimeRange[0],periodEnd=_periodTimeRange[1];var mpdTimes=sampleTimes.map(function(sampleTime){return sampleToMpdTime(sampleTime,periodStart,presentationTimeOffset,timescale)});var n=mpdTimes.length-1;var out=new Array(n);for(var i=0;i<n;i++){var startTime=mpdTimes[i];var endTime=mpdTimes[i+1];out[i]={data:dataProviderFactory(i,sampleTimes[i]),timestampOffset:startTime,startTime:Math.max(periodStart,startTime),endTime:periodEnd==null?endTime:Math.min(periodEnd,endTime)}}return out}function getTimescale(multipleSegmentBase){if(!multipleSegmentBase.timescale)throw new ValidationError("invalid timescale",ErrorOrigin.MEDIA);return multipleSegmentBase.timescale}function getSampleDuration(multipleSegmentBase){if(!multipleSegmentBase.duration)throw new ValidationError("invalid duration",ErrorOrigin.MEDIA);return multipleSegmentBase.duration}// src/track/dash/buildDashMediaTimeline.ts
1707
+ function createDashRepresentationSegmentProvider(deps,baseUrl,representation){var _a3;var quality=deps.mediaQualityMetadataResolver(representation);var options={baseUrl:baseUrl,periodTimeRange:calculatePeriodTimeRange(representation.parent.parent),representation:representation};var segmentTemplate=getSegmentTemplate(representation);var segmentList=getSegmentList(representation);var segmentBase=getSegmentBase(representation);var segmentsPromise=null;var initUri;var initRange;if(segmentTemplate==null?void 0:segmentTemplate.initialization){initUri=segmentTemplateUrl(segmentTemplate.initialization,{representation:representation})}var commonSegmentBase=(_a3=segmentTemplate!=null?segmentTemplate:segmentList)!=null?_a3:segmentBase;if(!commonSegmentBase){throw new ValidationError("Manifest must have one of SegmentList, SegmentTemplate, or SegmentBase",ErrorOrigin.MEDIA)}if(commonSegmentBase.Initialization){initUri=commonSegmentBase.Initialization.sourceURL;initRange=commonSegmentBase.Initialization.range}if(!initUri&&!initRange)throw new ValidationError("Missing initialization range",ErrorOrigin.MEDIA);var _resolveDashUri=resolveDashUri(deps,{baseUrl:baseUrl,representation:representation,uri:initUri}),initUrl=_resolveDashUri.url,initServiceLocation=_resolveDashUri.serviceLocation;var initData=createSegmentDataProvider(deps,{url:initUrl,mediaRange:initRange,serviceId:initServiceLocation,reportDownlinkMetrics:false});var getSegmentReferences;if(segmentList){getSegmentReferences=function getSegmentReferences(){return createSegmentsFromSegmentList(deps,__spreadProps(__spreadValues({},options),{segmentList:segmentList}))}}else if(segmentTemplate){getSegmentReferences=function getSegmentReferences(){return createSegmentsFromSegmentTemplate(deps,__spreadProps(__spreadValues({},options),{segmentTemplate:segmentTemplate}))}}else if(segmentBase){getSegmentReferences=function getSegmentReferences(){return createSegmentsFromSegmentBase(deps,__spreadProps(__spreadValues({},options),{segmentBase:segmentBase}))}}return{getSegment:function getSegment(time){var _arguments2=arguments;return _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee58(){var affordance,segments,segment;return _regenerator().w(function(_context58){while(1)switch(_context58.n){case 0:affordance=_arguments2.length>1&&_arguments2[1]!==undefined?_arguments2[1]:0;if(!segmentsPromise)segmentsPromise=getSegmentReferences();_context58.n=1;return Promise.resolve(segmentsPromise)["catch"](function(error){segmentsPromise=null;throw error});case 1:segments=_context58.v;segment=getSegmentAtTime(time,segments,affordance);if(segment){_context58.n=2;break}return _context58.a(2,null);case 2:return _context58.a(2,__spreadProps(__spreadValues({quality:quality},segment),{initData:initData}))}},_callee58)}))()}}}function createSegmentsFromSegmentList(deps,options){var _a3;var baseUrl=options.baseUrl,periodTimeRange=options.periodTimeRange,representation=options.representation,segmentList=options.segmentList;var segmentUrls=segmentList.SegmentURL;if(segmentUrls){var timescale=getTimescale(segmentList);var sampleTimes=calculateSegmentSampleTimes({multipleSegmentBase:segmentList,periodTimeRange:periodTimeRange,numSegments:segmentUrls.length});var presentationTimeOffset=(_a3=segmentList.presentationTimeOffset)!=null?_a3:0;return createTimeline({sampleTimes:sampleTimes,presentationTimeOffset:presentationTimeOffset,periodTimeRange:periodTimeRange,timescale:timescale},function(i){var segmentUrl=segmentUrls[i];var _resolveDashUri2=resolveDashUri(deps,{baseUrl:baseUrl,uri:segmentUrl.media,representation:representation}),url=_resolveDashUri2.url,serviceLocation=_resolveDashUri2.serviceLocation;return createSegmentDataProvider(deps,{url:url,mediaRange:segmentUrl.mediaRange,serviceId:serviceLocation,reportDownlinkMetrics:true})})}else{if(segmentList.href){throw new ValidationError("SegmentList.href currently unsupported",ErrorOrigin.MEDIA)}else{throw new ValidationError("could not determine segments from SegmentList",ErrorOrigin.MEDIA)}}}function createSegmentsFromSegmentTemplate(deps,options){var _a3,_b;var baseUrl=options.baseUrl,periodTimeRange=options.periodTimeRange,representation=options.representation,segmentTemplate=options.segmentTemplate;if(!segmentTemplate.media){throw new ValidationError("SegmentTemplate.media required",ErrorOrigin.MEDIA)}var media=segmentTemplate.media;var presentationTimeOffset=(_a3=segmentTemplate.presentationTimeOffset)!=null?_a3:0;var sampleTimes=calculateSegmentSampleTimes({multipleSegmentBase:segmentTemplate,periodTimeRange:periodTimeRange});var timescale=getTimescale(segmentTemplate);var segmentNumber=(_b=segmentTemplate.startNumber)!=null?_b:1;return createTimeline({timescale:timescale,presentationTimeOffset:presentationTimeOffset,periodTimeRange:periodTimeRange,sampleTimes:sampleTimes},function(_,sampleTime){var uri=segmentTemplateUrl(media,{representation:representation,sampleTime:sampleTime,segmentNumber:segmentNumber++});var _resolveDashUri3=resolveDashUri(deps,{baseUrl:baseUrl,uri:uri,representation:representation}),url=_resolveDashUri3.url,serviceLocation=_resolveDashUri3.serviceLocation;return createSegmentDataProvider(deps,{url:url,serviceId:serviceLocation,reportDownlinkMetrics:true})})}function createSegmentsFromSegmentBase(_x63,_x64){return _createSegmentsFromSegmentBase.apply(this,arguments)}function _createSegmentsFromSegmentBase(){_createSegmentsFromSegmentBase=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee965(deps,options){var _a3,baseUrl,periodTimeRange,representation,segmentBase,indexRange,_resolveDashUri4,indexUrl,indexServiceLocation,sidx,sampleTimes,rangeStart,_t172;return _regenerator().w(function(_context966){while(1)switch(_context966.n){case 0:baseUrl=options.baseUrl,periodTimeRange=options.periodTimeRange,representation=options.representation,segmentBase=options.segmentBase;if(!segmentBase.indexRange){_context966.n=2;break}indexRange=segmentBase.indexRange;_resolveDashUri4=resolveDashUri(deps,{baseUrl:baseUrl,representation:representation}),indexUrl=_resolveDashUri4.url,indexServiceLocation=_resolveDashUri4.serviceLocation;_t172=parseSidxBox;_context966.n=1;return createSegmentDataProvider(deps,{url:indexUrl,mediaRange:indexRange,serviceId:indexServiceLocation,reportDownlinkMetrics:false})();case 1:sidx=_t172(_context966.v);sampleTimes=getSidxSampleTimes(sidx);rangeStart=Number(sidx.firstOffset)+indexRange[1]+1;return _context966.a(2,createTimeline({sampleTimes:sampleTimes,periodTimeRange:periodTimeRange,presentationTimeOffset:(_a3=segmentBase.presentationTimeOffset)!=null?_a3:0,timescale:sidx.timescale},function(i){var segmentReference=sidx.references[i];var size=segmentReference.referencedSize;var provider=createSegmentDataProvider(deps,{url:indexUrl,mediaRange:[rangeStart,rangeStart+size-1],serviceId:indexServiceLocation,reportDownlinkMetrics:true});rangeStart+=size;return provider}));case 2:throw new ValidationError("Manifest missing segments");case 3:return _context966.a(2)}},_callee965)}));return _createSegmentsFromSegmentBase.apply(this,arguments)}function calculateSegmentSampleTimes(options){var multipleSegmentBase=options.multipleSegmentBase,periodTimeRange=options.periodTimeRange;var timescale=getTimescale(multipleSegmentBase);var startTimes;if(multipleSegmentBase.SegmentTimeline){startTimes=calculateSampleTimesFromSegmentTimeline(multipleSegmentBase.SegmentTimeline)}else{var sampleDuration=getSampleDuration(multipleSegmentBase);startTimes=calculateFixedSegmentSampleTimes({timescale:timescale,periodTimeRange:periodTimeRange,sampleDuration:sampleDuration,numSegments:options.numSegments})}return startTimes}function calculateSampleTimesFromSegmentTimeline(segmentTimeline){var _a3,_b,_c;var out=new Array(((_b=(_a3=segmentTimeline.S)==null?void 0:_a3.length)!=null?_b:0)+1);var startTime=0;var c=0;(_c=segmentTimeline.S)==null?void 0:_c.forEach(function(s){startTime=s.t!=null?s.t:startTime;for(var i=0;i<=s.r;i++){out[c++]=startTime;startTime+=s.d}});out[c++]=startTime;return out}function calculateFixedSegmentSampleTimes(options){var _a3;var sampleDuration=options.sampleDuration,timescale=options.timescale;var _options$periodTimeRa=_slicedToArray(options.periodTimeRange,2),periodStart=_options$periodTimeRa[0],periodEnd=_options$periodTimeRa[1];if(periodEnd==null)throw new ValidationError("MPD.mediaPresentationDuration or Period.duration required",ErrorOrigin.MEDIA);var numSegments=(_a3=options.numSegments)!=null?_a3:Math.ceil((periodEnd-periodStart)/(sampleDuration/timescale));var out=new Array(numSegments+1);var startTime=0;for(var i=0;i<numSegments;i++){out[i]=startTime;startTime+=sampleDuration}out[numSegments]=periodEnd*timescale;return out}function createTimeline(_ref37,dataProviderFactory){var sampleTimes=_ref37.sampleTimes,periodTimeRange=_ref37.periodTimeRange,presentationTimeOffset=_ref37.presentationTimeOffset,timescale=_ref37.timescale;var _periodTimeRange=_slicedToArray(periodTimeRange,2),periodStart=_periodTimeRange[0],periodEnd=_periodTimeRange[1];var mpdTimes=sampleTimes.map(function(sampleTime){return sampleToMpdTime(sampleTime,periodStart,presentationTimeOffset,timescale)});var n=mpdTimes.length-1;var out=new Array(n);for(var i=0;i<n;i++){var startTime=mpdTimes[i];var endTime=mpdTimes[i+1];out[i]={data:dataProviderFactory(i,sampleTimes[i]),timestampOffset:startTime,startTime:Math.max(periodStart,startTime),endTime:periodEnd==null?endTime:Math.min(periodEnd,endTime)}}return out}function getTimescale(multipleSegmentBase){if(!multipleSegmentBase.timescale)throw new ValidationError("invalid timescale",ErrorOrigin.MEDIA);return multipleSegmentBase.timescale}function getSampleDuration(multipleSegmentBase){if(!multipleSegmentBase.duration)throw new ValidationError("invalid duration",ErrorOrigin.MEDIA);return multipleSegmentBase.duration}// src/track/dash/buildDashMediaTimeline.ts
1708
1708
  function buildDashMediaTimeline(deps,data2){var manifest3=data2.manifest,baseUrl=data2.baseUrl;var periods=manifest3.MPD.Period.map(function(period){var _a3;var startTime=calculatePeriodStart(period);var endTime=(_a3=calculatePeriodEnd(period))!=null?_a3:Infinity;var representations=flattenMediaRepresentations(period);var qualities=representations.map(function(representation){var metadata=deps.mediaQualityMetadataResolver(representation);var segmentProvider=createDashRepresentationSegmentProvider(deps,baseUrl,representation);return{metadata:metadata,getSegment:function getSegment(time,affordance){return segmentProvider.getSegment(time,affordance)}}});return{startTime:startTime,endTime:endTime,qualities:qualities}});var duration=calculateDuration(manifest3);return{periods:periods,minBufferTime:manifest3.MPD.minBufferTime,getAdBreaks:function getAdBreaks(){return Promise.resolve([])},// Dash ads are not yet supported
1709
1709
  getDuration:function getDuration(){return Promise.resolve(duration)}}}// src/track/dash/createDashContentStreamFactories.ts
1710
1710
  function createDashContentStreamFactories(options){return function(deps){return memoize(function(contentType2){return validateFactories(__spreadProps(__spreadValues({},externalDependencies(deps)),{sourceBufferControllerFactory:function sourceBufferControllerFactory(deps2){return function(){return new SourceBufferControllerImpl(deps2,contentType2)}},bufferingController:function bufferingController(deps2){return new BufferingControllerImpl(deps2,contentType2,options==null?void 0:options.buffering)},segmentController:function segmentController(deps2){return new SegmentControllerImpl(deps2,contentType2,options==null?void 0:options.segmentController)}}))},function(contentType2){return contentType2})}}// src/track/dash/createDashContentTypesValue.ts
@@ -1733,7 +1733,7 @@ function buildHlsMediaTimeline(deps,data2){var _a3,_b,_c,_d,_e,_f,_g,_h;var main
1733
1733
  var codec=(_c=codecs.find(function(c){return codecToContentType(c)===contentType2}))!=null?_c:null;qualities.push(createHlsQualityData(deps,data2,baseUrl,variant2.uri,__spreadProps(__spreadValues({},baseMetadata),{contentType:contentType2,mimeType:contentTypeToMimeType(contentType2,codec),codecs:codec})))};for(_iterator99.s();!(_step99=_iterator99.n()).done;){if(_loop14())continue}}catch(err){_iterator99.e(err)}finally{_iterator99.f()}};for(_iterator96.s();!(_step96=_iterator96.n()).done;){_loop13()}}catch(err){_iterator96.e(err)}finally{_iterator96.f()}var seenAudio=/* @__PURE__ */new Set;var _iterator97=_createForOfIteratorHelper(audioRenditions),_step97;try{var _loop15=function _loop15(){var rendition=_step97.value;var uri=rendition.uri;if(uri==null||seenAudio.has(uri))return 0;// continue
1734
1734
  seenAudio.add(uri);var variant2=(_d=mainPlaylist.variants.find(function(v){return v.uri===uri}))!=null?_d:mainPlaylist.variants.find(function(v){return v.audioGroup===rendition.groupId});if(!variant2)return 0;// continue
1735
1735
  var audioCodec=(_f=(_e=variant2.codecs)==null?void 0:_e.split(",").find(function(c){return codecToContentType(c)==="audio"}))!=null?_f:null;var baseMetadata=deps.mediaQualityMetadataResolver(variant2,renditions);var qualitySuffix=rendition.language?"".concat(rendition.language,"-").concat(rendition.name):rendition.name;qualities.push(createHlsQualityData(deps,data2,baseUrl,uri,__spreadProps(__spreadValues({},baseMetadata),{qualityId:"audio-".concat(rendition.groupId,"-").concat(qualitySuffix),decoderId:uri,contentType:"audio",codecs:audioCodec,mimeType:contentTypeToMimeType("audio",audioCodec),width:null,height:null,frameRate:null,lang:(_g=rendition.language)!=null?_g:null,characteristics:(_h=rendition.characteristics)!=null?_h:[]})))},_ret3;for(_iterator97.s();!(_step97=_iterator97.n()).done;){_ret3=_loop15();if(_ret3===0)continue}}catch(err){_iterator97.e(err)}finally{_iterator97.f()}var period={startTime:0,endTime:Infinity,qualities:qualities};var cachedDuration=null;return{periods:[period],minBufferTime:DEFAULT_MIN_BUFFER_TIME,getAdBreaks:function getAdBreaks(){return discoverAdsFromManifest(data2)},getDuration:function getDuration(){return _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee64(){var playlist,total,_iterator98,_step98,seg;return _regenerator().w(function(_context64){while(1)switch(_context64.n){case 0:if(!(cachedDuration!=null)){_context64.n=1;break}return _context64.a(2,cachedDuration);case 1:if(!(mainPlaylist.variants.length===0)){_context64.n=2;break}throw new Error("Unable to determine HLS duration: no variants");case 2:_context64.n=3;return data2.getMediaPlaylist(mainPlaylist.variants[0].uri);case 3:playlist=_context64.v;if(playlist.ended){_context64.n=4;break}return _context64.a(2,Infinity);case 4:if(!(playlist.segments.length===0)){_context64.n=5;break}throw new Error("Unable to determine HLS duration: no segments in media playlist");case 5:total=0;_iterator98=_createForOfIteratorHelper(playlist.segments);try{for(_iterator98.s();!(_step98=_iterator98.n()).done;){seg=_step98.value;total+=seg.duration}}catch(err){_iterator98.e(err)}finally{_iterator98.f()}cachedDuration=total;return _context64.a(2,cachedDuration)}},_callee64)}))()}}}function createHlsQualityData(deps,data2,baseUrl,playlistUri,metadata){var transmuxer=createTransmuxer();return{metadata:metadata,getSegment:function getSegment(time){var _arguments3=arguments;return _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee67(){var affordance,_a3,playlist,playlistBaseUrl,segments,segment,hlsMap,transmuxedQuality,rawDataProvider;return _regenerator().w(function(_context67){while(1)switch(_context67.n){case 0:affordance=_arguments3.length>1&&_arguments3[1]!==undefined?_arguments3[1]:0;_context67.n=1;return data2.getMediaPlaylist(playlistUri);case 1:playlist=_context67.v;playlistBaseUrl=resolveUrl(playlistUri,baseUrl);segments=buildSegmentTimeline(deps,playlistBaseUrl,playlist.segments);segment=getSegmentAtTime(time,segments,affordance);if(segment){_context67.n=2;break}return _context67.a(2,null);case 2:hlsMap=(_a3=playlist.segments[0])==null?void 0:_a3.map;if(!hlsMap){_context67.n=3;break}return _context67.a(2,__spreadProps(__spreadValues({quality:metadata},segment),{initData:createSegmentDataProvider(deps,{url:resolveUrl(hlsMap.uri,playlistBaseUrl),mediaRange:hlsMap.byteRange?hlsByteRangeToMediaRange(hlsMap.byteRange):void 0,reportDownlinkMetrics:false})}));case 3:transmuxedQuality=__spreadProps(__spreadValues({},metadata),{mimeType:contentTypeToMimeType(metadata.contentType,metadata.codecs)});rawDataProvider=segment.data;return _context67.a(2,__spreadProps(__spreadValues({quality:transmuxedQuality},segment),{data:function(){var _data=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee65(abort){var raw;return _regenerator().w(function(_context65){while(1)switch(_context65.n){case 0:_context65.n=1;return rawDataProvider(abort);case 1:raw=_context65.v;return _context65.a(2,transmuxer.transmux(raw).mediaSegment)}},_callee65)}));function data(_x70){return _data.apply(this,arguments)}return data}(),initData:function(){var _initData=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee66(abort){var raw;return _regenerator().w(function(_context66){while(1)switch(_context66.n){case 0:_context66.n=1;return rawDataProvider(abort);case 1:raw=_context66.v;return _context66.a(2,transmuxer.transmux(raw).initSegment)}},_callee66)}));function initData(_x71){return _initData.apply(this,arguments)}return initData}()}))}},_callee67)}))()}}}function discoverAdsFromManifest(_x72){return _discoverAdsFromManifest.apply(this,arguments)}// src/track/hls/createDefaultHlsManifestTransformer.ts
1736
- function _discoverAdsFromManifest(){_discoverAdsFromManifest=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee962(data2){var variant2,media,contentDuration,playlistBaseUrl;return _regenerator().w(function(_context963){while(1)switch(_context963.n){case 0:if(!(data2.mainPlaylist.variants.length===0)){_context963.n=1;break}return _context963.a(2,[]);case 1:variant2=data2.mainPlaylist.variants[0];_context963.n=2;return data2.getMediaPlaylist(variant2.uri);case 2:media=_context963.v;contentDuration=media.ended?media.segments.reduce(function(sum,s){return sum+s.duration},0):null;playlistBaseUrl=resolveUrl(variant2.uri,data2.baseUrl);return _context963.a(2,discoverHlsInterstitials(media,playlistBaseUrl,contentDuration))}},_callee962)}));return _discoverAdsFromManifest.apply(this,arguments)}function createDefaultHlsManifestTransformer(deps){return deps.manifestController.map(/*#__PURE__*/function(){var _ref43=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee68(v){var data2,sorted;return _regenerator().w(function(_context68){while(1)switch(_context68.n){case 0:_context68.n=1;return v;case 1:data2=_context68.v;sorted=_toConsumableArray(data2.mainPlaylist.variants).sort(function(a,b){return b.bandwidth-a.bandwidth});return _context68.a(2,__spreadProps(__spreadValues({},data2),{mainPlaylist:__spreadProps(__spreadValues({},data2.mainPlaylist),{variants:sorted})}))}},_callee68)}));return function(_x73){return _ref43.apply(this,arguments)}}())}// src/track/hls/createHlsContentStreamFactories.ts
1736
+ function _discoverAdsFromManifest(){_discoverAdsFromManifest=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee966(data2){var variant2,media,contentDuration,playlistBaseUrl;return _regenerator().w(function(_context967){while(1)switch(_context967.n){case 0:if(!(data2.mainPlaylist.variants.length===0)){_context967.n=1;break}return _context967.a(2,[]);case 1:variant2=data2.mainPlaylist.variants[0];_context967.n=2;return data2.getMediaPlaylist(variant2.uri);case 2:media=_context967.v;contentDuration=media.ended?media.segments.reduce(function(sum,s){return sum+s.duration},0):null;playlistBaseUrl=resolveUrl(variant2.uri,data2.baseUrl);return _context967.a(2,discoverHlsInterstitials(media,playlistBaseUrl,contentDuration))}},_callee966)}));return _discoverAdsFromManifest.apply(this,arguments)}function createDefaultHlsManifestTransformer(deps){return deps.manifestController.map(/*#__PURE__*/function(){var _ref43=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee68(v){var data2,sorted;return _regenerator().w(function(_context68){while(1)switch(_context68.n){case 0:_context68.n=1;return v;case 1:data2=_context68.v;sorted=_toConsumableArray(data2.mainPlaylist.variants).sort(function(a,b){return b.bandwidth-a.bandwidth});return _context68.a(2,__spreadProps(__spreadValues({},data2),{mainPlaylist:__spreadProps(__spreadValues({},data2.mainPlaylist),{variants:sorted})}))}},_callee68)}));return function(_x73){return _ref43.apply(this,arguments)}}())}// src/track/hls/createHlsContentStreamFactories.ts
1737
1737
  function createHlsContentStreamFactories(options){return function(deps){return memoize(function(contentType2){return validateFactories(__spreadProps(__spreadValues({},externalDependencies(deps)),{sourceBufferControllerFactory:function sourceBufferControllerFactory(deps2){return function(){return new SourceBufferControllerImpl(deps2,contentType2)}},bufferingController:function bufferingController(deps2){return new BufferingControllerImpl(deps2,contentType2,options==null?void 0:options.buffering)},segmentController:function segmentController(deps2){return new SegmentControllerImpl(deps2,contentType2,options==null?void 0:options.segmentController)}}))},function(contentType2){return contentType2})}}// src/track/hls/createHlsContentTypesValue.ts
1738
1738
  function createHlsContentTypesValue(deps){return deps.manifestTransformed.map(/*#__PURE__*/function(){var _ref44=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee69(manifestData2){var _t19;return _regenerator().w(function(_context69){while(1)switch(_context69.n){case 0:_t19=getContentTypes2;_context69.n=1;return manifestData2;case 1:return _context69.a(2,_t19(_context69.v.mainPlaylist))}},_callee69)}));return function(_x74){return _ref44.apply(this,arguments)}}())}function getContentTypes2(mainPlaylist){var contentTypes=/* @__PURE__ */new Set;var _iterator100=_createForOfIteratorHelper(mainPlaylist.variants),_step100;try{for(_iterator100.s();!(_step100=_iterator100.n()).done;){var variant2=_step100.value;if(variant2.codecs){var _iterator102=_createForOfIteratorHelper(codecsToContentTypes(variant2.codecs)),_step102;try{for(_iterator102.s();!(_step102=_iterator102.n()).done;){var type=_step102.value;if(type==="audio"||type==="video"){contentTypes.add(type)}}}catch(err){_iterator102.e(err)}finally{_iterator102.f()}}}}catch(err){_iterator100.e(err)}finally{_iterator100.f()}var _iterator101=_createForOfIteratorHelper(mainPlaylist.alternativeRenditions),_step101;try{for(_iterator101.s();!(_step101=_iterator101.n()).done;){var rendition=_step101.value;if(rendition.type==="AUDIO")contentTypes.add("audio");if(rendition.type==="VIDEO")contentTypes.add("video")}}catch(err){_iterator101.e(err)}finally{_iterator101.f()}return contentTypes}// src/track/hls/HlsMediaQualityMetadataResolver.ts
1739
1739
  function createDefaultHlsMediaQualityMetadataResolver(){return function(variant2,_renditions){var _a3,_b;var codecs=variant2.codecs||null;var contentType2=codecs?codecToContentType(codecs.split(",")[0]):null;return{qualityId:"".concat(variant2.bandwidth,"-").concat(codecs!=null?codecs:""),decoderId:variant2.uri,groupId:"0",switchingGroupIds:null,mimeType:contentType2?contentTypeToMimeType(contentType2,codecs):null,contentType:contentType2,codecs:codecs,bandwidth:null,bandwidthTotal:variant2.bandwidth,audioSamplingRate:null,width:(_a3=variant2.width)!=null?_a3:null,height:(_b=variant2.height)!=null?_b:null,frameRate:variant2.frameRate?[variant2.frameRate,1]:null,// A variant's own language is unknown/irrelevant: demuxed audio
@@ -1743,7 +1743,7 @@ function createDefaultHlsMediaQualityMetadataResolver(){return function(variant2
1743
1743
  lang:null,// Audio-rendition characteristics are applied per rendition in
1744
1744
  // buildHlsMediaTimeline; the variant itself carries none.
1745
1745
  characteristics:[],contentProtections:[],encryptionScheme:null,initDataType:null,supplementalProperties:{}}}}// src/track/hls/createUrlHlsManifestProvider.ts
1746
- function createUrlHlsManifestProvider(url,requestInit){return/*#__PURE__*/function(){var _ref45=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee70(abort){var mainResponse,mainText,baseUrl,mainPlaylist,getMediaPlaylist;return _regenerator().w(function(_context70){while(1)switch(_context70.n){case 0:_context70.n=1;return requestWithRetry(url,requestInit,{abort:abort});case 1:mainResponse=_context70.v;_context70.n=2;return mainResponse.text();case 2:mainText=_context70.v;baseUrl=mainResponse.url||url;mainPlaylist=parseMainPlaylist(mainText,parseQueryParams(baseUrl));getMediaPlaylist=memoize(function(uri){return fetchMediaPlaylist({uri:uri,baseUrl:baseUrl,defines:mainPlaylist.defines,requestInit:requestInit,abort:abort})},function(uri){return uri});return _context70.a(2,{mainPlaylist:mainPlaylist,baseUrl:baseUrl,getMediaPlaylist:getMediaPlaylist})}},_callee70)}));return function(_x75){return _ref45.apply(this,arguments)}}()}function fetchMediaPlaylist(_x76){return _fetchMediaPlaylist.apply(this,arguments)}function _fetchMediaPlaylist(){_fetchMediaPlaylist=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee963(options){var uri,baseUrl,defines,requestInit,abort,variantUrl,response,text,queryParams;return _regenerator().w(function(_context964){while(1)switch(_context964.n){case 0:uri=options.uri,baseUrl=options.baseUrl,defines=options.defines,requestInit=options.requestInit,abort=options.abort;variantUrl=resolveUrl(uri,baseUrl);_context964.n=1;return requestWithRetry(variantUrl,requestInit,{abort:abort});case 1:response=_context964.v;_context964.n=2;return response.text();case 2:text=_context964.v;queryParams=parseQueryParams(response.url||variantUrl);return _context964.a(2,parseMediaPlaylist(text,defines,queryParams))}},_callee963)}));return _fetchMediaPlaylist.apply(this,arguments)}function parseQueryParams(url){var queryStart=url.indexOf("?");if(queryStart===-1)return void 0;var params={};var search=new URLSearchParams(url.substring(queryStart+1));var _iterator103=_createForOfIteratorHelper(search),_step103;try{for(_iterator103.s();!(_step103=_iterator103.n()).done;){var _step103$value=_slicedToArray(_step103.value,2),key=_step103$value[0],value=_step103$value[1];params[key]=value}}catch(err){_iterator103.e(err)}finally{_iterator103.f()}return params}// src/track/hls/createHlsManifestProvider.ts
1746
+ function createUrlHlsManifestProvider(url,requestInit){return/*#__PURE__*/function(){var _ref45=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee70(abort){var mainResponse,mainText,baseUrl,mainPlaylist,getMediaPlaylist;return _regenerator().w(function(_context70){while(1)switch(_context70.n){case 0:_context70.n=1;return requestWithRetry(url,requestInit,{abort:abort});case 1:mainResponse=_context70.v;_context70.n=2;return mainResponse.text();case 2:mainText=_context70.v;baseUrl=mainResponse.url||url;mainPlaylist=parseMainPlaylist(mainText,parseQueryParams(baseUrl));getMediaPlaylist=memoize(function(uri){return fetchMediaPlaylist({uri:uri,baseUrl:baseUrl,defines:mainPlaylist.defines,requestInit:requestInit,abort:abort})},function(uri){return uri});return _context70.a(2,{mainPlaylist:mainPlaylist,baseUrl:baseUrl,getMediaPlaylist:getMediaPlaylist})}},_callee70)}));return function(_x75){return _ref45.apply(this,arguments)}}()}function fetchMediaPlaylist(_x76){return _fetchMediaPlaylist.apply(this,arguments)}function _fetchMediaPlaylist(){_fetchMediaPlaylist=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee967(options){var uri,baseUrl,defines,requestInit,abort,variantUrl,response,text,queryParams;return _regenerator().w(function(_context968){while(1)switch(_context968.n){case 0:uri=options.uri,baseUrl=options.baseUrl,defines=options.defines,requestInit=options.requestInit,abort=options.abort;variantUrl=resolveUrl(uri,baseUrl);_context968.n=1;return requestWithRetry(variantUrl,requestInit,{abort:abort});case 1:response=_context968.v;_context968.n=2;return response.text();case 2:text=_context968.v;queryParams=parseQueryParams(response.url||variantUrl);return _context968.a(2,parseMediaPlaylist(text,defines,queryParams))}},_callee967)}));return _fetchMediaPlaylist.apply(this,arguments)}function parseQueryParams(url){var queryStart=url.indexOf("?");if(queryStart===-1)return void 0;var params={};var search=new URLSearchParams(url.substring(queryStart+1));var _iterator103=_createForOfIteratorHelper(search),_step103;try{for(_iterator103.s();!(_step103=_iterator103.n()).done;){var _step103$value=_slicedToArray(_step103.value,2),key=_step103$value[0],value=_step103$value[1];params[key]=value}}catch(err){_iterator103.e(err)}finally{_iterator103.f()}return params}// src/track/hls/createHlsManifestProvider.ts
1747
1747
  function createHlsManifestProvider(loadOptions){return loadOptions.manifestProvider||createUrlHlsManifestProvider(loadOptions.uri,loadOptions.requestInit||void 0)}// src/track/hls/createHlsFactories.ts
1748
1748
  function createHlsFactories(options){return function(deps){return function(loadOptions){return validateFactories(__spreadProps(__spreadValues({},externalDependencies(deps)),{baseContentTypesValue:createHlsContentTypesValue,contentTypesValue:createAllowedContentTypesValue,manifestProvider:function manifestProvider(){return createHlsManifestProvider(loadOptions)},manifestController:function manifestController(deps2){return new ManifestControllerImpl(deps2)},manifestTransformed:createDefaultHlsManifestTransformer,mediaQualityMetadataResolver:function mediaQualityMetadataResolver(){return createDefaultHlsMediaQualityMetadataResolver()},mediaSourceFactory:function mediaSourceFactory(){return createMediaSource},mediaSourceController:function mediaSourceController(deps2){return new MediaSourceControllerImpl(deps2)},segmentRequestInit:function segmentRequestInit(){return loadOptions.segmentRequestInit},createContentStreamFactories:createHlsContentStreamFactories(options==null?void 0:options.streaming),contentStreamFactory:createContentStreamFactory,qualitySelector:function qualitySelector(deps2){return new QualitySelectorImpl({options:deps2.options.pick("abr")})},audio:function audio(deps2){return deps2.options.pick("audio")},allowedContentTypes:function allowedContentTypes(deps2){return deps2.options.pick("allowedContentTypes")},abr:function abr(deps2){return deps2.options.pick("abr")},mediaTimeline:function mediaTimeline(deps2){return deps2.manifestTransformed.map(/*#__PURE__*/function(){var _ref46=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee71(manifestPromise){var data2;return _regenerator().w(function(_context71){while(1)switch(_context71.n){case 0:_context71.n=1;return manifestPromise;case 1:data2=_context71.v;return _context71.a(2,buildHlsMediaTimeline(deps2,data2))}},_callee71)}));return function(_x77){return _ref46.apply(this,arguments)}}())},mediaTimelineTransformed:createDefaultMediaTimelineTransformer,textTrackController:function textTrackController(deps2){var _a3;return new SidecarTextTrackController({textTrackProvider:deps2.textTrackProvider,textTrackRenderer:deps2.textTrackRenderer,playbackController:deps2.playbackController,requestInit:(_a3=loadOptions.requestInit)!=null?_a3:void 0,options:deps2.options.pick("text"),textTracks:deps2.manifestTransformed.map(function(manifestPromise){return manifestPromise.then(function(data2){return discoverHlsTextTracks(data2.mainPlaylist,data2.baseUrl)})})})}}))}}}// src/track/TrackController.ts
1749
1749
  var ALL_TRACK_CONTROLLER_EVENTS=["trackActivated","trackDeactivated","queueChange","trackEnded","queueEnded"];var defaultTrackControllerImplOptions={trackPrefetchCount:2,preloadCapacity:2};var trackPriority={value:0};var TrackControllerImpl=/*#__PURE__*/function(_EventHostImpl18){function TrackControllerImpl(deps,initialOptions){var _this121;_classCallCheck(this,TrackControllerImpl);_this121=_callSuper(this,TrackControllerImpl);__publicField(_this121,"deps",deps);// When tracks are preloaded, the cache capacity may expand automatically to accommodate.
@@ -1758,7 +1758,7 @@ __publicField(_this121,"currentTrackSub",null);// Ad tracks keyed by parent cont
1758
1758
  // Pegged to the parent: disposed when the parent is evicted (see onEvict).
1759
1759
  __publicField(_this121,"adTracksByParent",/* @__PURE__ */new Map);__publicField(_this121,"disposer",createDisposer());__publicField(_this121,"_options",defaultTrackControllerImplOptions);/**
1760
1760
  * The current track has ended naturally. On the next tick advance the queue or emit queue ended.
1761
- */__publicField(_this121,"onEnded",function(){var adController=_this121.deps.adController;if(_this121.currentTrackIsAdTrack)return;var track2=_this121._current;if(!track2){logWarn(_this121,"an ended event was received with no current track");return}var interrupted=_this121.getQueueInterrupted();adController.enterPostroll().then(function(postroll){if(postroll){logDebug(_this121,"postroll entered")}else{logDebug(_this121,"trackEnded");_this121.dispatch("trackEnded",{track:track2});queueMicrotask(function(){if(interrupted())return;if(_this121.hasNext()){_this121.next()}else{logInfo(_this121,"queueEnded");_this121.dispatch("queueEnded",{})}})}})["catch"](function(error){logError(_this121,"enterPostroll failed",error)})});__publicField(_this121,"validateLoadOptions",function(loadOptions){return _this121.deps.trackFactory.validate(loadOptions)});var add=_this121.disposer.add;var playbackController=deps.playbackController;_this121.trackCache.onEvicting=function(track2){return _this121.getPrefetched().find(function(value){return value.uri===track2.uri})==null};_this121.trackCache.onEvict=function(track2){logDebug(_this121,"Disposing track: ".concat(track2.uri));_this121.disposeAdTracksFor(track2.uri);track2.dispose();return true};add(playbackController.on("ended",_this121.onEnded));_this121.initializeAdHandling();_this121.configure(initialOptions);return _this121}_inherits(TrackControllerImpl,_EventHostImpl18);return _createClass(TrackControllerImpl,[{key:Symbol.toStringTag,get:function get(){return"TrackControllerImpl"}},{key:"initializeAdHandling",value:function initializeAdHandling(){var _this122=this;var add=this.disposer.add;var _this$deps=this.deps,adController=_this$deps.adController,adTrackLoadOptionsProvider=_this$deps.adTrackLoadOptionsProvider,playbackController=_this$deps.playbackController;add(adController.on("adPreload",function(event){var adParent=_this122.adParent;if(adParent)_this122.preloadBreakAds(adParent,event.adBreak)}));add(adController.on("adEntered",function(event){var adParent=_this122.adParent;if(!adParent){logDebug(_this122,"ad entered, no parent track");return}var interrupted=function interrupted(){return _this122.adParent!==adParent||adController.currentAd!==event.ad};if(event.ad.uri){adTrackLoadOptionsProvider(event.ad).then(function(adTrack){if(!interrupted()){_this122.setCurrentTrack(_this122.getOrCreateAdTrack(adParent.uri,adTrack),{isAd:true,checkPreroll:false,config:{}});playbackController.play()["catch"](noop)}})["catch"](function(error){if(!interrupted())adController.failAd(error)})}}));add(adController.on("adBreakCompleted",function(event){var _a3;logDebug(_this122,"adBreakCompleted");var adParent=_this122.adParent;if(!adParent){logDebug(_this122,"ad break completed, no parent track");return}if(adController.currentAdBreak){logDebug(_this122,"more adbreaks");return}if(adParent.active){logDebug(_this122,"no ads began");return}var adParentLoad=_this122._current;var placement=event.adBreak.placement;var isPreroll=placement==="preroll";var isPostroll=placement==="postroll";if(isPostroll){logDebug(_this122,"trackEnded after postroll");_this122.dispatch("trackEnded",{track:adParentLoad})}if(isPostroll&&_this122.hasNext()){_this122.next()}else{var startTime=isPreroll?(_a3=adParentLoad.config)==null?void 0:_a3.startTime:event.resumePosition;_this122.setCurrentTrack(adParent,{config:__spreadProps(__spreadValues({},adParentLoad.config),{startTime:startTime}),isAd:false,checkPreroll:false});if(isPostroll){logInfo(_this122,"queueEnded after postroll ad(s)");_this122.dispatch("queueEnded",{})}else{playbackController.play()["catch"](noop)}}}))}/**
1761
+ */__publicField(_this121,"onEnded",function(){var adController=_this121.deps.adController;if(_this121.currentTrackIsAdTrack)return;var track2=_this121._current;if(!track2){logWarn(_this121,"an ended event was received with no current track");return}var interrupted=_this121.getQueueInterrupted();adController.enterPostroll().then(function(postroll){if(postroll){logDebug(_this121,"postroll entered")}else{logDebug(_this121,"trackEnded");_this121.dispatch("trackEnded",{track:track2});queueMicrotask(function(){if(interrupted())return;if(_this121.hasNext()){_this121.next()}else{logInfo(_this121,"queueEnded");_this121.dispatch("queueEnded",{})}})}})["catch"](function(error){logError(_this121,"enterPostroll failed",error)})});__publicField(_this121,"validateLoadOptions",function(loadOptions){return _this121.deps.trackFactory.validate(loadOptions)});var add=_this121.disposer.add;var playbackController=deps.playbackController;_this121.trackCache.onEvicting=function(track2){return _this121.getPrefetched().find(function(value){return value.uri===track2.uri})==null};_this121.trackCache.onEvict=function(track2){logDebug(_this121,"Disposing track: ".concat(track2.uri));_this121.disposeAdTracksFor(track2.uri);track2.dispose();return true};add(playbackController.on("ended",_this121.onEnded));_this121.initializeAdHandling();_this121.configure(initialOptions);return _this121}_inherits(TrackControllerImpl,_EventHostImpl18);return _createClass(TrackControllerImpl,[{key:Symbol.toStringTag,get:function get(){return"TrackControllerImpl"}},{key:"initializeAdHandling",value:function initializeAdHandling(){var _this122=this;var add=this.disposer.add;var _this$deps=this.deps,adController=_this$deps.adController,adTrackLoadOptionsProvider=_this$deps.adTrackLoadOptionsProvider,playbackController=_this$deps.playbackController;add(adController.on("adPreload",function(event){var adParent=_this122.adParent;if(adParent)_this122.preloadBreakAds(adParent,event.adBreak)}));add(adController.on("adEntered",function(event){var adParent=_this122.adParent;if(!adParent){logDebug(_this122,"ad entered, no parent track");return}var interrupted=function interrupted(){return _this122.adParent!==adParent||adController.currentAd!==event.ad};if(event.ad.uri){adTrackLoadOptionsProvider(event.ad).then(function(adTrack){if(!interrupted()){_this122.setCurrentTrack(_this122.getOrCreateAdTrack(adParent.uri,adTrack),{isAd:true,checkPreroll:false,config:{}});playbackController.play()["catch"](noop)}})["catch"](function(error){if(!interrupted())adController.failAd(error)})}}));add(adController.on("adBreakCompleted",function(event){var _a3;logDebug(_this122,"adBreakCompleted");var adParent=_this122.adParent;if(!adParent){logDebug(_this122,"ad break completed, no parent track");return}if(adController.currentAdBreak){logDebug(_this122,"more adbreaks");return}var adParentLoad=_this122._current;var placement=event.adBreak.placement;var isPreroll=placement==="preroll";var isPostroll=placement==="postroll";var noAdBegan=adParent.active;var resumeContent=function resumeContent(startTime){return _this122.setCurrentTrack(adParent,{config:__spreadProps(__spreadValues({},adParentLoad.config),{startTime:startTime}),isAd:false,checkPreroll:false})};if(isPostroll){logDebug(_this122,"trackEnded after postroll");_this122.dispatch("trackEnded",{track:adParentLoad});if(_this122.hasNext()){_this122.next();return}if(!noAdBegan)resumeContent(event.resumePosition);logInfo(_this122,"queueEnded after postroll");_this122.dispatch("queueEnded",{});return}if(noAdBegan){logDebug(_this122,"no ads began");return}resumeContent(isPreroll?(_a3=adParentLoad.config)==null?void 0:_a3.startTime:event.resumePosition);playbackController.play()["catch"](noop)}))}/**
1762
1762
  * Returns the currently set configuration.
1763
1763
  */},{key:"options",get:function get(){return this._options}/**
1764
1764
  * Configures this track queue from the provided partial options.
@@ -1961,8 +1961,8 @@ segmentedStreaming:{aac_60s_2ch_16bit_44100Hz_48kbps:{init:"https://assets.dev.v
1961
1961
  aac_60s_2ch_16bit_44100Hz_48kbps_widevine_cl10:{init:"https://assets.dev.vinyl.music.amazon.dev/dash/live_static_aac_opus_flac_segmentBase_widevine_60s_cl10/representations/aac_60s_2ch_16bit_44100Hz_48kbps.mp4",part:"",numSegments:0,duration:60}}};// test/vinylTestUtil/player/mediaRef.ts
1962
1962
  var mediaRef=lazy(function(){var media=document.createElement("video");media.muted=true;media.playsInline=true;media.disableRemotePlayback=true;return media});afterEach(function(){if(mediaRef.constructed){var media=mediaRef.value;media.removeAttribute("src");media.load()}});// test/vinylTestUtil/ui/requireUserInteraction.ts
1963
1963
  function requireUserInteraction(){return _requireUserInteraction.apply(this,arguments)}// test/vinylTestUtil/media/unlockMediaElement.ts
1964
- function _requireUserInteraction(){_requireUserInteraction=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee964(){var audioPrompt,body;return _regenerator().w(function(_context965){while(1)switch(_context965.n){case 0:audioPrompt=document.getElementById("unlockAudioPrompt");audioPrompt.style.removeProperty("display");body=document.body;body.focus();_context965.n=1;return new Promise(function(resolve){var _done=function done(){body.removeEventListener("click",_done);body.removeEventListener("keypress",_done);body.removeEventListener("touchend",_done);return resolve(void 0)};body.addEventListener("click",_done);body.addEventListener("keypress",_done);body.addEventListener("touchend",_done)});case 1:audioPrompt.style.display="none";case 2:return _context965.a(2)}},_callee964)}));return _requireUserInteraction.apply(this,arguments)}function unlockMediaElement(){return _unlockMediaElement.apply(this,arguments)}// test/vinylTestUtil/media/FrequencyAnalyzer.ts
1965
- function _unlockMediaElement(){_unlockMediaElement=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee965(){var media;return _regenerator().w(function(_context966){while(1)switch(_context966.n){case 0:media=mediaRef.value;media.src=vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps;_context966.n=1;return media.play()["catch"](noop);case 1:media.pause();media.removeAttribute("src");media.load();case 2:return _context966.a(2)}},_callee965)}));return _unlockMediaElement.apply(this,arguments)}var TIME_ESTIMATE_TOLERANCE=0.02;var defaultFrequencyAnalyzerOptions={startFrequency:100,endFrequency:6e3,fftSize:4096};var FrequencyAnalyzer=/*#__PURE__*/function(){function FrequencyAnalyzer(audioContext,source,options){_classCallCheck(this,FrequencyAnalyzer);__publicField(this,"audioContext",audioContext);__publicField(this,"source",source);__publicField(this,"data");__publicField(this,"analyser");__publicField(this,"options");__publicField(this,"logPrefix",createLogPrefix("FrequencyAnalyzer"));this.options=__spreadValues(__spreadValues({},defaultFrequencyAnalyzerOptions),options);this.analyser=this.audioContext.createAnalyser();this.analyser.fftSize=this.options.fftSize;this.analyser.connect(this.audioContext.destination);this.data=new Float32Array(this.analyser.frequencyBinCount);this.source.connect(this.analyser)}/**
1964
+ function _requireUserInteraction(){_requireUserInteraction=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee968(){var audioPrompt,body;return _regenerator().w(function(_context969){while(1)switch(_context969.n){case 0:audioPrompt=document.getElementById("unlockAudioPrompt");audioPrompt.style.removeProperty("display");body=document.body;body.focus();_context969.n=1;return new Promise(function(resolve){var _done=function done(){body.removeEventListener("click",_done);body.removeEventListener("keypress",_done);body.removeEventListener("touchend",_done);return resolve(void 0)};body.addEventListener("click",_done);body.addEventListener("keypress",_done);body.addEventListener("touchend",_done)});case 1:audioPrompt.style.display="none";case 2:return _context969.a(2)}},_callee968)}));return _requireUserInteraction.apply(this,arguments)}function unlockMediaElement(){return _unlockMediaElement.apply(this,arguments)}// test/vinylTestUtil/media/FrequencyAnalyzer.ts
1965
+ function _unlockMediaElement(){_unlockMediaElement=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee969(){var media;return _regenerator().w(function(_context970){while(1)switch(_context970.n){case 0:media=mediaRef.value;media.src=vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps;_context970.n=1;return media.play()["catch"](noop);case 1:media.pause();media.removeAttribute("src");media.load();case 2:return _context970.a(2)}},_callee969)}));return _unlockMediaElement.apply(this,arguments)}var TIME_ESTIMATE_TOLERANCE=0.02;var defaultFrequencyAnalyzerOptions={startFrequency:100,endFrequency:6e3,fftSize:4096};var FrequencyAnalyzer=/*#__PURE__*/function(){function FrequencyAnalyzer(audioContext,source,options){_classCallCheck(this,FrequencyAnalyzer);__publicField(this,"audioContext",audioContext);__publicField(this,"source",source);__publicField(this,"data");__publicField(this,"analyser");__publicField(this,"options");__publicField(this,"logPrefix",createLogPrefix("FrequencyAnalyzer"));this.options=__spreadValues(__spreadValues({},defaultFrequencyAnalyzerOptions),options);this.analyser=this.audioContext.createAnalyser();this.analyser.fftSize=this.options.fftSize;this.analyser.connect(this.audioContext.destination);this.data=new Float32Array(this.analyser.frequencyBinCount);this.source.connect(this.analyser)}/**
1966
1966
  * Estimates the frequency of the current frame window.
1967
1967
  *
1968
1968
  * The frequency estimate is the frequency of the highest decibel bin within the frame window. The number of
@@ -1978,7 +1978,7 @@ var mimeCodec="audio/mp4;codecs=\"mp4a.40.5\"";var ControlledMediaSource=/*#__PU
1978
1978
  * This promise resolves when all assets are ready.
1979
1979
  * Note: in Firefox, you must set this object url on the element immediately. Creating the
1980
1980
  * URL and setting it later can cause errors.
1981
- */)},{key:"getMediaSource",value:(function(){var _getMediaSource=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee78(){return _regenerator().w(function(_context78){while(1)switch(_context78.n){case 0:_context78.n=1;return this.getSegments();case 1:this.segments=_context78.v;return _context78.a(2,this.mediaSource)}},_callee78,this)}));function getMediaSource(){return _getMediaSource.apply(this,arguments)}return getMediaSource}())},{key:"appendNext",value:function(){var _appendNext2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee79(){var sourceBuffer,buff,updateEnd;return _regenerator().w(function(_context79){while(1)switch(_context79.n){case 0:if(this.segments){_context79.n=1;break}throw new IllegalStateError("cannot append before getMediaSource");case 1:_context79.n=2;return this.sourceBufferPromise;case 2:sourceBuffer=_context79.v;if(!(this._currentIndex>=this.length)){_context79.n=3;break}throw new Error("Only ".concat(this.length," segments"));case 3:buff=this.segments[this._currentIndex++];_context79.n=4;return onSourceBufferReady(sourceBuffer);case 4:updateEnd=onUpdateEnd(sourceBuffer);sourceBuffer.appendBuffer(buff);_context79.n=5;return updateEnd;case 5:if(this._currentIndex===this.length){this.mediaSource.endOfStream()}case 6:return _context79.a(2)}},_callee79,this)}));function appendNext(){return _appendNext2.apply(this,arguments)}return appendNext}()}])}();function onSourceBufferReady(_x81){return _onSourceBufferReady.apply(this,arguments)}function _onSourceBufferReady(){_onSourceBufferReady=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee966(sourceBuffer){return _regenerator().w(function(_context967){while(1)switch(_context967.n){case 0:if(sourceBuffer.updating){_context967.n=1;break}return _context967.a(2);case 1:_context967.n=2;return onUpdateEnd(sourceBuffer);case 2:return _context967.a(2,onSourceBufferReady(sourceBuffer))}},_callee966)}));return _onSourceBufferReady.apply(this,arguments)}function onUpdateEnd(sourceBuffer){return new Promise(function(resolve){sourceBuffer.addEventListener("updateend",function(){resolve(void 0)},{once:true})})}// ../vinyl-util/test/testUtil/global/overrideGlobalInit.ts
1981
+ */)},{key:"getMediaSource",value:(function(){var _getMediaSource=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee78(){return _regenerator().w(function(_context78){while(1)switch(_context78.n){case 0:_context78.n=1;return this.getSegments();case 1:this.segments=_context78.v;return _context78.a(2,this.mediaSource)}},_callee78,this)}));function getMediaSource(){return _getMediaSource.apply(this,arguments)}return getMediaSource}())},{key:"appendNext",value:function(){var _appendNext2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee79(){var sourceBuffer,buff,updateEnd;return _regenerator().w(function(_context79){while(1)switch(_context79.n){case 0:if(this.segments){_context79.n=1;break}throw new IllegalStateError("cannot append before getMediaSource");case 1:_context79.n=2;return this.sourceBufferPromise;case 2:sourceBuffer=_context79.v;if(!(this._currentIndex>=this.length)){_context79.n=3;break}throw new Error("Only ".concat(this.length," segments"));case 3:buff=this.segments[this._currentIndex++];_context79.n=4;return onSourceBufferReady(sourceBuffer);case 4:updateEnd=onUpdateEnd(sourceBuffer);sourceBuffer.appendBuffer(buff);_context79.n=5;return updateEnd;case 5:if(this._currentIndex===this.length){this.mediaSource.endOfStream()}case 6:return _context79.a(2)}},_callee79,this)}));function appendNext(){return _appendNext2.apply(this,arguments)}return appendNext}()}])}();function onSourceBufferReady(_x81){return _onSourceBufferReady.apply(this,arguments)}function _onSourceBufferReady(){_onSourceBufferReady=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee970(sourceBuffer){return _regenerator().w(function(_context971){while(1)switch(_context971.n){case 0:if(sourceBuffer.updating){_context971.n=1;break}return _context971.a(2);case 1:_context971.n=2;return onUpdateEnd(sourceBuffer);case 2:return _context971.a(2,onSourceBufferReady(sourceBuffer))}},_callee970)}));return _onSourceBufferReady.apply(this,arguments)}function onUpdateEnd(sourceBuffer){return new Promise(function(resolve){sourceBuffer.addEventListener("updateend",function(){resolve(void 0)},{once:true})})}// ../vinyl-util/test/testUtil/global/overrideGlobalInit.ts
1982
1982
  function overrideGlobalInit(initHandle,initOverride){beforeEach(function(){initHandle.set(initOverride)});return initHandle}// ../vinyl-util/test/testUtil/mock/event/MockEventHost.ts
1983
1983
  var MockEventHost=/*#__PURE__*/function(_EventHostImpl20){function MockEventHost(){var _this135;_classCallCheck(this,MockEventHost);_this135=_callSuper(this,MockEventHost,arguments);__publicField(_this135,"spyFactory",createSpyFactory(function(key){return _superPropGet((_this135,MockEventHost),key,_this135,1).bind(_this135)}));__publicField(_this135,"logPrefix","MockEventHost");__publicField(_this135,"hasAnyListeners",_this135.spyFactory("hasAnyListeners"));__publicField(_this135,"hasListeners",_this135.spyFactory("hasListeners"));__publicField(_this135,"dispatch",_this135.spyFactory("dispatch"));__publicField(_this135,"on",_this135.spyFactory("on"));__publicField(_this135,"dispose",_this135.spyFactory("dispose"));return _this135}_inherits(MockEventHost,_EventHostImpl20);return _createClass(MockEventHost)}(EventHostImpl);// ../vinyl-util/test/testUtil/mock/logging/MockLogger.ts
1984
1984
  var createSpy3=jasmine.createSpy;var spyFactory=createSpyFactory();var MockLogger=/*#__PURE__*/function(_MockEventHost){function MockLogger(){var _this136;_classCallCheck(this,MockLogger);_this136=_callSuper(this,MockLogger,arguments);__publicField(_this136,"logLevel",1/* DEBUG */);__publicField(_this136,"log",spyFactory("log").and.callFake(function(target,level){var _this137,_this138,_this139,_this140,_this141;for(var _len27=arguments.length,messages=new Array(_len27>2?_len27-2:0),_key28=2;_key28<_len27;_key28++){messages[_key28-2]=arguments[_key28]}switch(level){// Delegates logs to spies separated by log level.
@@ -2065,14 +2065,14 @@ var MockTrackFactory=/*#__PURE__*/_createClass(function MockTrackFactory(){_clas
2065
2065
  var VinylSuite=/*#__PURE__*/function(){function VinylSuite(playerFactory,options){_classCallCheck(this,VinylSuite);__publicField(this,"playerFactory",playerFactory);__publicField(this,"options",options);__publicField(this,"logPrefix",createLogPrefix(this));__publicField(this,"_player",null);__publicField(this,"visibilityChangeHandler",function(){if(document.visibilityState==="hidden"){fail("The window must remain visible during the tests.")}})}return _createClass(VinylSuite,[{key:Symbol.toStringTag,get:function get(){return"VinylSuite"}},{key:"player",get:function get(){if(!this._player)throw new IllegalStateError("player cannot be accessed outside of a test");return this._player}/**
2066
2066
  * Initializes jasmine test setup.
2067
2067
  */},{key:"init",value:function init(){var _this169=this;var _a3,_b;var playerSub=null;setTestTimeout((_b=(_a3=this.options)==null?void 0:_a3.timeout)!=null?_b:60);beforeEach(function(){var _a4;var _createDisposer1=createDisposer(),add=_createDisposer1.add,dispose=_createDisposer1.dispose;playerSub=dispose;requesterWithRetryRef.set(function(){return createRequester({retryOptions:__spreadProps(__spreadValues({},RetryStrategy.ONE_RETRY),{retries:3})})});document.addEventListener("visibilitychange",_this169.visibilityChangeHandler);_this169._player=_this169.playerFactory();add(_this169._player.on("error",function(e){logError(_this169,"player emitted error event",toJson(e))}));if(((_a4=_this169.options)==null?void 0:_a4.failOnError)!==false){add(_this169._player.on("error",function(e){fail(e.error)}))}});afterEach(function(){var _a4;logDebug(_this169,"disposing");if(playerSub)playerSub();(_a4=_this169._player)==null?void 0:_a4.dispose();_this169._player=null;document.removeEventListener("visibilitychange",_this169.visibilityChangeHandler);getGlobalRegistry().reset()})}}])}();function createVinylSuite(playerDependencyOptions,options){var suite=new VinylSuite(function(){return createVinylPlayer(__spreadProps(__spreadValues({},playerDependencyOptions),{media:mediaRef.value}))},options);suite.init();return suite}// test/vinylTestUtil/util/playback/eventPromises.ts
2068
- function onPlaying(_x84){return _onPlaying.apply(this,arguments)}function _onPlaying(){_onPlaying=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee967(playbackController){var timeout2,_args968=arguments;return _regenerator().w(function(_context968){while(1)switch(_context968.n){case 0:timeout2=_args968.length>1&&_args968[1]!==undefined?_args968[1]:10;if(!playbackController.playing){_context968.n=1;break}return _context968.a(2,Promise.resolve());case 1:return _context968.a(2,nextEventAsPromise(playbackController,"playing",{timeout:timeout2,timeoutMessage:"playing timed out after {time}s"}).then(function(){return void 0}))}},_callee967)}));return _onPlaying.apply(this,arguments)}function onEnded(_x85){return _onEnded.apply(this,arguments)}function _onEnded(){_onEnded=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee968(playbackController){var timeout2,metadataTimeout,_args969=arguments;return _regenerator().w(function(_context969){while(1)switch(_context969.n){case 0:timeout2=_args969.length>1&&_args969[1]!==undefined?_args969[1]:10;metadataTimeout=_args969.length>2&&_args969[2]!==undefined?_args969[2]:10;if(!playbackController.ended){_context969.n=1;break}return _context969.a(2,Promise.resolve());case 1:_context969.n=2;return nextHasMetadata(playbackController,{timeout:metadataTimeout});case 2:return _context969.a(2,nextEventAsPromise(playbackController,"ended",{// Set the timeout to be the remaining track duration plus a large margin of error for stalls and seek
2068
+ function onPlaying(_x84){return _onPlaying.apply(this,arguments)}function _onPlaying(){_onPlaying=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee971(playbackController){var timeout2,_args972=arguments;return _regenerator().w(function(_context972){while(1)switch(_context972.n){case 0:timeout2=_args972.length>1&&_args972[1]!==undefined?_args972[1]:10;if(!playbackController.playing){_context972.n=1;break}return _context972.a(2,Promise.resolve());case 1:return _context972.a(2,nextEventAsPromise(playbackController,"playing",{timeout:timeout2,timeoutMessage:"playing timed out after {time}s"}).then(function(){return void 0}))}},_callee971)}));return _onPlaying.apply(this,arguments)}function onEnded(_x85){return _onEnded.apply(this,arguments)}function _onEnded(){_onEnded=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee972(playbackController){var timeout2,metadataTimeout,_args973=arguments;return _regenerator().w(function(_context973){while(1)switch(_context973.n){case 0:timeout2=_args973.length>1&&_args973[1]!==undefined?_args973[1]:10;metadataTimeout=_args973.length>2&&_args973[2]!==undefined?_args973[2]:10;if(!playbackController.ended){_context973.n=1;break}return _context973.a(2,Promise.resolve());case 1:_context973.n=2;return nextHasMetadata(playbackController,{timeout:metadataTimeout});case 2:return _context973.a(2,nextEventAsPromise(playbackController,"ended",{// Set the timeout to be the remaining track duration plus a large margin of error for stalls and seek
2069
2069
  // inaccuracy.
2070
- timeout:playbackController.duration-playbackController.currentTime+timeout2,timeoutMessage:"ended timed out after {time}s"}).then(function(){return void 0}))}},_callee968)}));return _onEnded.apply(this,arguments)}function onTimeUpdate(playbackController){var timeout2=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;return nextEventAsPromise(playbackController,"timeUpdate",{timeout:timeout2,timeoutMessage:"timeUpdate timed out after {time}s"})}function onDuration(playbackController){var timeout2=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;if(playbackController.duration>0)return Promise.resolve();return nextEventAsPromise(playbackController,"durationChange",{timeout:timeout2,timeoutMessage:"durationChange timed out after {time}s"}).then(function(){return void 0})}// test/vinylTestUtil/util/playback/playbackStateExpectations.ts
2071
- function expectTimeDoesNotElapse(_x86){return _expectTimeDoesNotElapse.apply(this,arguments)}function _expectTimeDoesNotElapse(){_expectTimeDoesNotElapse=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee969(player){var startTime;return _regenerator().w(function(_context970){while(1)switch(_context970.n){case 0:startTime=player.currentTime;_context970.n=1;return _sleep(0.5);case 1:if(!closeTo(player.currentTime,startTime,0.1)){_context970.n=2;break}expectNothing();_context970.n=4;break;case 2:_context970.n=3;return _sleep(2);case 3:expect(player.currentTime).withContext("expectTimeDoesNotElapse").toBeCloseToWithin(startTime,0.3);case 4:return _context970.a(2)}},_callee969)}));return _expectTimeDoesNotElapse.apply(this,arguments)}function expectTimeElapses(_x87){return _expectTimeElapses.apply(this,arguments)}function _expectTimeElapses(){_expectTimeElapses=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee970(player){var minTimeDelta,startTime;return _regenerator().w(function(_context971){while(1)switch(_context971.n){case 0:minTimeDelta=0.5;startTime=player.currentTime;_context971.n=1;return nextEventAsPromise(player,"timeUpdate",{filter:function filter(){return player.currentTime>startTime+minTimeDelta},timeout:4,timeoutMessage:"currentTime did not progress at least ".concat(minTimeDelta,"s after {time} seconds.")});case 1:return _context971.a(2)}},_callee970)}));return _expectTimeElapses.apply(this,arguments)}function expectPausedState(player){expect(player.paused).withContext("paused").toBeTrue();expect(player.playing).withContext("not playing").toBeFalse()}function expectPlayingState(player){expect(player.playIsPending).withContext("not pending play").toBeFalse();expect(player.paused).withContext("not paused").toBeFalse();expect(player.playing).withContext("playing").toBeTrue()}function expectPendingPlaying(player){expect(player.playIsPending).withContext("pending play").toBeTrue();expect(player.playing).withContext("pending, not playing").toBeFalse()}// test/vinylTestUtil/util/playback/expectTrackCanSeek.ts
2070
+ timeout:playbackController.duration-playbackController.currentTime+timeout2,timeoutMessage:"ended timed out after {time}s"}).then(function(){return void 0}))}},_callee972)}));return _onEnded.apply(this,arguments)}function onTimeUpdate(playbackController){var timeout2=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;return nextEventAsPromise(playbackController,"timeUpdate",{timeout:timeout2,timeoutMessage:"timeUpdate timed out after {time}s"})}function onDuration(playbackController){var timeout2=arguments.length>1&&arguments[1]!==undefined?arguments[1]:10;if(playbackController.duration>0)return Promise.resolve();return nextEventAsPromise(playbackController,"durationChange",{timeout:timeout2,timeoutMessage:"durationChange timed out after {time}s"}).then(function(){return void 0})}// test/vinylTestUtil/util/playback/playbackStateExpectations.ts
2071
+ function expectTimeDoesNotElapse(_x86){return _expectTimeDoesNotElapse.apply(this,arguments)}function _expectTimeDoesNotElapse(){_expectTimeDoesNotElapse=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee973(player){var startTime;return _regenerator().w(function(_context974){while(1)switch(_context974.n){case 0:startTime=player.currentTime;_context974.n=1;return _sleep(0.5);case 1:if(!closeTo(player.currentTime,startTime,0.1)){_context974.n=2;break}expectNothing();_context974.n=4;break;case 2:_context974.n=3;return _sleep(2);case 3:expect(player.currentTime).withContext("expectTimeDoesNotElapse").toBeCloseToWithin(startTime,0.3);case 4:return _context974.a(2)}},_callee973)}));return _expectTimeDoesNotElapse.apply(this,arguments)}function expectTimeElapses(_x87){return _expectTimeElapses.apply(this,arguments)}function _expectTimeElapses(){_expectTimeElapses=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee974(player){var minTimeDelta,startTime;return _regenerator().w(function(_context975){while(1)switch(_context975.n){case 0:minTimeDelta=0.5;startTime=player.currentTime;_context975.n=1;return nextEventAsPromise(player,"timeUpdate",{filter:function filter(){return player.currentTime>startTime+minTimeDelta},timeout:4,timeoutMessage:"currentTime did not progress at least ".concat(minTimeDelta,"s after {time} seconds.")});case 1:return _context975.a(2)}},_callee974)}));return _expectTimeElapses.apply(this,arguments)}function expectPausedState(player){expect(player.paused).withContext("paused").toBeTrue();expect(player.playing).withContext("not playing").toBeFalse()}function expectPlayingState(player){expect(player.playIsPending).withContext("not pending play").toBeFalse();expect(player.paused).withContext("not paused").toBeFalse();expect(player.playing).withContext("playing").toBeTrue()}function expectPendingPlaying(player){expect(player.playIsPending).withContext("pending play").toBeTrue();expect(player.playing).withContext("pending, not playing").toBeFalse()}// test/vinylTestUtil/util/playback/expectTrackCanSeek.ts
2072
2072
  function expectTrackCanSeekTo(_x88,_x89){return _expectTrackCanSeekTo.apply(this,arguments)}// test/vinylTestUtil/util/playback/expectTrackPlaysUntil.ts
2073
- function _expectTrackCanSeekTo(){_expectTrackCanSeekTo=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee971(player,time){var tolerance,_createDisposer10,dispose,add,playedSpy,seekingSpy,seekedSpy,wasPaused,expectNoop,expectedTime;return _regenerator().w(function(_context972){while(1)switch(_context972.n){case 0:tolerance=0.5;_createDisposer10=createDisposer(),dispose=_createDisposer10.dispose,add=_createDisposer10.add;playedSpy=add(createEventSpy(player,"played"));seekingSpy=add(createEventSpy(player,"seeking"));seekedSpy=add(createEventSpy(player,"seeked"));wasPaused=player.paused;if(player.playing){seekingSpy.next().then(function(){expect(playedSpy).toHaveBeenCalledBefore(seekingSpy)})["catch"](noop)}expectNoop=closeTo(player.currentTime,time,tolerance);_context972.n=1;return player.seekTo(time,tolerance);case 1:expectedTime=clamp(time,0,player.duration-(wasPaused?0:getMinSeekableBufferDefault()));expect(player.currentTime).toBeCloseToWithin(expectedTime,1);if(!expectNoop){_context972.n=2;break}expect(seekingSpy).not.toHaveBeenCalled();expect(seekedSpy).not.toHaveBeenCalled();_context972.n=7;break;case 2:expect(seekingSpy).toHaveBeenCalledBefore(seekedSpy);expect(player.paused).withContext("paused").toBe(wasPaused);if(!wasPaused){_context972.n=4;break}expectPausedState(player);_context972.n=3;return expectTimeDoesNotElapse(player);case 3:_context972.n=7;break;case 4:_context972.n=5;return onPlaying(player);case 5:expectPlayingState(player);_context972.n=6;return assertFrequency();case 6:_context972.n=7;return expectTimeElapses(player);case 7:dispose();case 8:return _context972.a(2)}},_callee971)}));return _expectTrackCanSeekTo.apply(this,arguments)}var sleepInterval=1;var affordanceBefore=1;var affordanceAfter=3;function expectTrackPlaysUntil(_x90,_x91){return _expectTrackPlaysUntil.apply(this,arguments)}// test/vinylTestUtil/util/playback/expectTrackPlays.ts
2074
- function _expectTrackPlaysUntil(){_expectTrackPlaysUntil=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee972(player,endTime){var timeout2,startedBeforeEnd,elapsed,maxTime,_args973=arguments;return _regenerator().w(function(_context973){while(1)switch(_context973.n){case 0:timeout2=_args973.length>2&&_args973[2]!==undefined?_args973[2]:20;_context973.n=1;return onPlaying(player);case 1:_context973.n=2;return onTimeUpdate(player);case 2:startedBeforeEnd=player.currentTime<endTime;_context973.n=3;return assertFrequency();case 3:elapsed=0;maxTime=endTime-player.currentTime+timeout2;case 4:if(!(!player.ended&&player.currentTime<endTime&&elapsed<maxTime)){_context973.n=6;break}_context973.n=5;return _sleep(sleepInterval);case 5:elapsed+=sleepInterval;_context973.n=4;break;case 6:expect(player.currentTime).withContext("currentTime").toBeGreaterThanOrEqual(endTime-affordanceBefore);if(startedBeforeEnd){expect(player.currentTime).withContext("currentTime").toBeLessThan(endTime+affordanceAfter)}case 7:return _context973.a(2)}},_callee972)}));return _expectTrackPlaysUntil.apply(this,arguments)}var PLAYBACK_DURATION=6;function expectTrackPlays(_x92){return _expectTrackPlays.apply(this,arguments)}function _expectTrackPlays(){_expectTrackPlays=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee973(player){var _createDisposer11,dispose,add,ended,timeUpdate,duration,_time3;return _regenerator().w(function(_context974){while(1)switch(_context974.n){case 0:_createDisposer11=createDisposer(),dispose=_createDisposer11.dispose,add=_createDisposer11.add;ended=add(createEventSpy(player,"ended"));timeUpdate=add(createEventSpy(player,"timeUpdate"));expect(player.currentTime).withContext("currentTime starts near the beginning").toBeLessThan(1);_context974.n=1;return onDuration(player);case 1:duration=player.duration;expect(duration).withContext("duration should be non-zero").toBeGreaterThan(0);if(!(player.duration>PLAYBACK_DURATION)){_context974.n=3;break}_context974.n=2;return expectTrackPlaysUntil(player,player.currentTime+PLAYBACK_DURATION/2);case 2:_time3=player.duration-PLAYBACK_DURATION/2;_context974.n=3;return player.seekTo(_time3);case 3:_context974.n=4;return ended.next(PLAYBACK_DURATION+10);case 4:expect(player.currentTime).toBeCloseToWithin(duration,3);expect(player.ended).withContext("ended").toBeTrue();expect(timeUpdate.calls.count()).toBeGreaterThanOrEqual(Math.floor(PLAYBACK_DURATION));dispose();case 5:return _context974.a(2)}},_callee973)}));return _expectTrackPlays.apply(this,arguments)}function expectPlaylistPlays(_x93,_x94){return _expectPlaylistPlays.apply(this,arguments)}// test/unit/ad/AdControllerImpl.test.ts
2075
- function _expectPlaylistPlays(){_expectPlaylistPlays=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee974(player,playlist){var _a3,_createDisposer12,dispose,add,trackTimeout,queueEnded,queueChange,trackChange,assertQueueChangeCount,i,isLastTrack,nextTrack;return _regenerator().w(function(_context975){while(1)switch(_context975.n){case 0:assertQueueChangeCount=function _assertQueueChangeCou(count){expect(queueChange).toHaveBeenCalledTimes(count);queueChange.calls.reset()};_createDisposer12=createDisposer(),dispose=_createDisposer12.dispose,add=_createDisposer12.add;trackTimeout=PLAYBACK_DURATION+60;queueEnded=add(createEventSpy(player,"queueEnded"));queueChange=add(createEventSpy(player,"queueChange"));trackChange=add(createEventSpy(player,"trackActivated"));player.load.apply(player,_toConsumableArray(playlist));assertQueueChangeCount(1);_context975.n=1;return player.play();case 1:i=0;case 2:if(!(i<playlist.length)){_context975.n=6;break}isLastTrack=i===playlist.length-1;expect((_a3=player.activeTrack)==null?void 0:_a3.uri).withContext("activeTrack uri").toBe(playlist[i].uri);nextTrack=isLastTrack?queueEnded.next(trackTimeout):trackChange.next(trackTimeout);_context975.n=3;return expectTrackPlays(player);case 3:_context975.n=4;return nextTrack;case 4:assertQueueChangeCount(isLastTrack?0:1);case 5:i++;_context975.n=2;break;case 6:dispose();case 7:return _context975.a(2)}},_callee974)}));return _expectPlaylistPlays.apply(this,arguments)}describe("AdControllerImpl",function(){var playbackController;beforeEach(function(){playbackController=new MockPlaybackController});function createController(){return new AdControllerImpl({playbackController:playbackController})}function updateTime(time){playbackController.currentTime=time;playbackController.dispatch("timeUpdate",{previous:0,current:time})}function seekTo(time){playbackController.currentTime=time;playbackController.dispatch("seeked",{started:0,ended:0,duration:0,reason:"seeked"})}var defaultAd={id:"a1",startTime:10,duration:5,uri:"ad.m3u8"};function makeBreak(){var overrides=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _a3=overrides,ads=_a3.ads,rest=__objRest(_a3,["ads"]);var adsResolver=typeof ads==="function"?ads:function(){return Promise.resolve(ads!=null?ads:[defaultAd])};return __spreadValues({id:"b1",startTime:10,duration:5,placement:"midroll",restrict:{},once:false,resumeOffset:null,playoutLimit:null,resolutionTimeOffset:null,skipControl:function skipControl(){return null},ads:adsResolver},rest)}function trackAds(){for(var _len29=arguments.length,adBreaks=new Array(_len29),_key30=0;_key30<_len29;_key30++){adBreaks[_key30]=arguments[_key30]}return{trackUri:"t1",adBreaks:adBreaks}}function flush(){return _flush.apply(this,arguments)}function _flush(){_flush=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee159(){var i;return _regenerator().w(function(_context159){while(1)switch(_context159.n){case 0:i=0;case 1:if(!(i<12)){_context159.n=3;break}_context159.n=2;return Promise.resolve();case 2:i++;_context159.n=1;break;case 3:return _context159.a(2)}},_callee159)}));return _flush.apply(this,arguments)}function setContent(_x95,_x96){return _setContent.apply(this,arguments)}function _setContent(){_setContent=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee160(c,ads){var track2;return _regenerator().w(function(_context160){while(1)switch(_context160.n){case 0:track2=new MockTrack;track2.uri=ads.trackUri;track2.active=true;track2.ads=ads;playbackController.playing=true;c.setAdsProvider(track2);_context160.n=1;return flush();case 1:return _context160.a(2,track2)}},_callee160)}));return _setContent.apply(this,arguments)}function refreshAds(_x97,_x98){return _refreshAds.apply(this,arguments)}function _refreshAds(){_refreshAds=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee161(track2,ads){return _regenerator().w(function(_context161){while(1)switch(_context161.n){case 0:track2.ads=ads;track2.dispatch("adsChange",{});_context161.n=1;return flush();case 1:return _context161.a(2)}},_callee161)}));return _refreshAds.apply(this,arguments)}it("starts with no ads and no active break",function(){var c=createController();expect(c.currentTrackAds).toBeNull();expect(c.currentAdBreak).toBeNull();expect(c.currentAd).toBeNull()});describe("adPreload",function(){it("emits adPreload as the playhead approaches a midroll",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee83(){var c,preloaded;return _regenerator().w(function(_context83){while(1)switch(_context83.n){case 0:c=createController();_context83.n=1;return setContent(c,trackAds(makeBreak({id:"m",startTime:30,duration:5})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(19);_context83.n=2;return flush();case 2:expect(preloaded).toEqual([]);updateTime(21);_context83.n=3;return flush();case 3:expect(preloaded).toEqual(["m"]);case 4:return _context83.a(2)}},_callee83)})));it("emits adPreload only once while approaching",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee84(){var c,preloaded;return _regenerator().w(function(_context84){while(1)switch(_context84.n){case 0:c=createController();_context84.n=1;return setContent(c,trackAds(makeBreak({id:"m",startTime:30,duration:5})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(21);updateTime(22);updateTime(23);_context84.n=2;return flush();case 2:expect(preloaded).toEqual(["m"]);case 3:return _context84.a(2)}},_callee84)})));it("does not emit adPreload for a preroll",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee85(){var c,preloaded;return _regenerator().w(function(_context85){while(1)switch(_context85.n){case 0:c=createController();_context85.n=1;return setContent(c,trackAds(makeBreak({id:"pre",startTime:0,placement:"preroll"})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(1);_context85.n=2;return flush();case 2:expect(preloaded).toEqual([]);case 3:return _context85.a(2)}},_callee85)})));it("emits adPreload as the playhead approaches a postroll",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee86(){var c,preloaded;return _regenerator().w(function(_context86){while(1)switch(_context86.n){case 0:c=createController();_context86.n=1;return setContent(c,trackAds(makeBreak({id:"post",startTime:60,duration:5,placement:"postroll"})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(49);_context86.n=2;return flush();case 2:expect(preloaded).toEqual([]);updateTime(51);_context86.n=3;return flush();case 3:expect(preloaded).toEqual(["post"]);case 4:return _context86.a(2)}},_callee86)})));it("uses the break's resolutionTimeOffset over the preloadAheadTime option",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee87(){var c,preloaded;return _regenerator().w(function(_context87){while(1)switch(_context87.n){case 0:c=createController();_context87.n=1;return setContent(c,trackAds(makeBreak({id:"m",startTime:30,duration:5,resolutionTimeOffset:5})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(21);_context87.n=2;return flush();case 2:expect(preloaded).toEqual([]);updateTime(26);_context87.n=3;return flush();case 3:expect(preloaded).toEqual(["m"]);case 4:return _context87.a(2)}},_callee87)})));it("honors a custom preloadAheadTime option",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee88(){var c,preloaded;return _regenerator().w(function(_context88){while(1)switch(_context88.n){case 0:c=new AdControllerImpl({playbackController:playbackController},{preloadAheadTime:3});_context88.n=1;return setContent(c,trackAds(makeBreak({id:"m",startTime:30,duration:5})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(26);_context88.n=2;return flush();case 2:expect(preloaded).toEqual([]);updateTime(28);_context88.n=3;return flush();case 3:expect(preloaded).toEqual(["m"]);case 4:return _context88.a(2)}},_callee88)})));it("does not emit adPreload for a played-once (suppressed) break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee89(){var c,preloaded;return _regenerator().w(function(_context89){while(1)switch(_context89.n){case 0:c=createController();_context89.n=1;return setContent(c,trackAds(makeBreak({id:"m",startTime:30,duration:5,once:true})));case 1:updateTime(30);_context89.n=2;return flush();case 2:c.skipAd();_context89.n=3;return flush();case 3:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});seekTo(15);updateTime(22);_context89.n=4;return flush();case 4:expect(preloaded).toEqual([]);case 5:return _context89.a(2)}},_callee89)})));it("re-arms the preload signal for a replayable break after a seek back",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee90(){var c,preloaded;return _regenerator().w(function(_context90){while(1)switch(_context90.n){case 0:c=createController();_context90.n=1;return setContent(c,trackAds(makeBreak({id:"m",startTime:30,duration:5})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(22);_context90.n=2;return flush();case 2:expect(preloaded).toEqual(["m"]);seekTo(10);updateTime(23);_context90.n=3;return flush();case 3:expect(preloaded).toEqual(["m","m"]);case 4:return _context90.a(2)}},_callee90)})))});describe("ad discovery failures",function(){function rejectingTrack(){var track2=new MockTrack;track2.uri="t1";track2.active=true;track2.getAds=function(){return Promise.reject(new Error("discovery failed"))};return track2}it("logs and does not throw when parent-track ad discovery rejects",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee91(){var c;return _regenerator().w(function(_context91){while(1)switch(_context91.n){case 0:c=createController();c.setAdsProvider(rejectingTrack());_context91.n=1;return flush();case 1:expect(c.currentTrackAds).toBeNull();expect(c.currentAdBreak).toBeNull();case 2:return _context91.a(2)}},_callee91)})));it("ignores a rejected discovery after the parent track has changed",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee92(){var c;return _regenerator().w(function(_context92){while(1)switch(_context92.n){case 0:c=createController();c.setAdsProvider(rejectingTrack());c.setAdsProvider(null);_context92.n=1;return flush();case 1:expect(c.currentTrackAds).toBeNull();case 2:return _context92.a(2)}},_callee92)})));it("resolves enterPreroll to null when ad discovery rejects",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee93(){var c,_t23;return _regenerator().w(function(_context93){while(1)switch(_context93.n){case 0:c=createController();c.setAdsProvider(rejectingTrack());_context93.n=1;return flush();case 1:_t23=expect;_context93.n=2;return c.enterPreroll();case 2:_t23(_context93.v).toBeNull();case 3:return _context93.a(2)}},_callee93)})))});describe("defensive no-ops and disposal",function(){it("is a no-op when the same parent track is set again",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee94(){var c,track2,changes;return _regenerator().w(function(_context94){while(1)switch(_context94.n){case 0:c=createController();track2=new MockTrack;track2.uri="t1";track2.active=true;track2.ads=trackAds(makeBreak());c.setAdsProvider(track2);_context94.n=1;return flush();case 1:changes=0;c.on("currentTrackAdsChange",function(){return changes++});c.setAdsProvider(track2);_context94.n=2;return flush();case 2:expect(changes).toBe(0);case 3:return _context94.a(2)}},_callee94)})));it("resolves enterPreroll and enterPostroll to null with no parent track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee95(){var c,_t24,_t25;return _regenerator().w(function(_context95){while(1)switch(_context95.n){case 0:c=createController();_t24=expect;_context95.n=1;return c.enterPreroll();case 1:_t24(_context95.v).toBeNull();_t25=expect;_context95.n=2;return c.enterPostroll();case 2:_t25(_context95.v).toBeNull();case 3:return _context95.a(2)}},_callee95)})));it("does not scan midrolls when there is no active content track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee96(){var c;return _regenerator().w(function(_context96){while(1)switch(_context96.n){case 0:c=createController();playbackController.playing=true;updateTime(15);_context96.n=1;return flush();case 1:expect(c.currentAdBreak).toBeNull();case 2:return _context96.a(2)}},_callee96)})));it("ignores a late ad-list rejection after dispose",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee97(){var c,rejectAds,track2;return _regenerator().w(function(_context97){while(1)switch(_context97.n){case 0:c=createController();rejectAds=function rejectAds(){};track2=new MockTrack;track2.uri="t1";track2.active=true;track2.ads=trackAds(makeBreak({startTime:0,duration:5,ads:function ads(){return new Promise(function(_res,rej){rejectAds=rej})}}));c.setAdsProvider(track2);playbackController.playing=true;_context97.n=1;return flush();case 1:updateTime(1);_context97.n=2;return flush();case 2:c.dispose();rejectAds(new Error("late"));_context97.n=3;return flush();case 3:expect(c.currentAdBreak).toBeNull();case 4:return _context97.a(2)}},_callee97)})))});it("emits currentTrackAdsChange with the TrackAds when a parent track is set",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee98(){var _a3,_b,c,events;return _regenerator().w(function(_context98){while(1)switch(_context98.n){case 0:c=createController();events=[];c.on("currentTrackAdsChange",function(e){return events.push(e.current)});_context98.n=1;return setContent(c,trackAds(makeBreak()));case 1:expect((_a3=events.at(-1))==null?void 0:_a3.adBreaks.map(function(b){return b.id})).toEqual(["b1"]);expect((_b=c.currentTrackAds)==null?void 0:_b.adBreaks.map(function(b){return b.id})).toEqual(["b1"]);case 2:return _context98.a(2)}},_callee98)})));it("clears the ads when the parent track is cleared",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee99(){var c;return _regenerator().w(function(_context99){while(1)switch(_context99.n){case 0:c=createController();_context99.n=1;return setContent(c,trackAds(makeBreak()));case 1:c.setAdsProvider(null);expect(c.currentTrackAds).toBeNull();case 2:return _context99.a(2)}},_callee99)})));describe("midroll entry",function(){it("activates a break when the playhead crosses its start time",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee100(){var _a3,_b,c,entered;return _regenerator().w(function(_context100){while(1)switch(_context100.n){case 0:c=createController();_context100.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:5})));case 1:entered=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});updateTime(9);_context100.n=2;return flush();case 2:expect(entered).toEqual([]);expect(c.currentAdBreak).toBeNull();updateTime(10);_context100.n=3;return flush();case 3:expect(entered).toEqual(["b1"]);expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("b1");expect((_b=c.currentAd)==null?void 0:_b.id).toBe("a1");case 4:return _context100.a(2)}},_callee100)})));it("does not re-emit while remaining inside the same break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee101(){var c,changes;return _regenerator().w(function(_context101){while(1)switch(_context101.n){case 0:c=createController();_context101.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:10})));case 1:changes=0;c.on("adBreakEntered",function(){return changes++});updateTime(11);_context101.n=2;return flush();case 2:updateTime(12);updateTime(13);_context101.n=3;return flush();case 3:expect(changes).toBe(1);case 4:return _context101.a(2)}},_callee101)})));it("treats a null-duration break as open-ended (still enters)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee102(){var _a3,c;return _regenerator().w(function(_context102){while(1)switch(_context102.n){case 0:c=createController();_context102.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:null})));case 1:updateTime(11);_context102.n=2;return flush();case 2:expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("b1");case 3:return _context102.a(2)}},_callee102)})));it("enters tied breaks that share a start time",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee103(){var c,entered;return _regenerator().w(function(_context103){while(1)switch(_context103.n){case 0:c=createController();entered=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});_context103.n=1;return setContent(c,trackAds(makeBreak({id:"A",startTime:10,duration:5}),makeBreak({id:"B",startTime:10,duration:5})));case 1:updateTime(10);_context103.n=2;return flush();case 2:expect(entered).toContain("A");c.skipAdBreak();_context103.n=3;return flush();case 3:expect(entered).toEqual(["A","B"]);case 4:return _context103.a(2)}},_callee103)})));it("enters an earlier still-open break after seeking into it",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee104(){var _a3,c,entered;return _regenerator().w(function(_context104){while(1)switch(_context104.n){case 0:c=createController();entered=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});_context104.n=1;return setContent(c,trackAds(makeBreak({id:"long",startTime:10,duration:100}),makeBreak({id:"short",startTime:50,duration:5})));case 1:updateTime(60);_context104.n=2;return flush();case 2:expect(entered).toEqual(["long"]);expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("long");case 3:return _context104.a(2)}},_callee104)})))});describe("preroll",function(){it("enters when enterPreroll is called",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee105(){var _a3,_b,c;return _regenerator().w(function(_context105){while(1)switch(_context105.n){case 0:c=createController();_context105.n=1;return setContent(c,trackAds(makeBreak({id:"pre",startTime:0,placement:"preroll"})));case 1:expect(c.currentAdBreak).toBeNull();_context105.n=2;return c.enterPreroll();case 2:expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("pre");_context105.n=3;return flush();case 3:expect((_b=c.currentAd)==null?void 0:_b.id).toBe("a1");case 4:return _context105.a(2)}},_callee105)})))});describe("skipAd",function(){function multiAdBreak(){return makeBreak({id:"b1",startTime:0,duration:30,ads:[{id:"a1",startTime:0,duration:10,uri:"ad1.m3u8"},{id:"a2",startTime:10,duration:20,uri:"ad2.m3u8"}]})}it("advances to the next ad within a multi-ad break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee106(){var _a3,_b,_c,c;return _regenerator().w(function(_context106){while(1)switch(_context106.n){case 0:c=createController();_context106.n=1;return setContent(c,trackAds(multiAdBreak()));case 1:updateTime(1);_context106.n=2;return flush();case 2:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");c.skipAd();_context106.n=3;return flush();case 3:expect((_b=c.currentAd)==null?void 0:_b.id).toBe("a2");expect((_c=c.currentAdBreak)==null?void 0:_c.id).toBe("b1");case 4:return _context106.a(2)}},_callee106)})));it("ends the break after skipping the last ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee107(){var c,changes;return _regenerator().w(function(_context107){while(1)switch(_context107.n){case 0:c=createController();_context107.n=1;return setContent(c,trackAds(multiAdBreak()));case 1:updateTime(1);_context107.n=2;return flush();case 2:c.skipAd();_context107.n=3;return flush();case 3:changes=[];c.on("adBreakEntered",function(e){return changes.push(e.adBreak.id)});c.on("adBreakCompleted",function(){return changes.push(null)});c.skipAd();_context107.n=4;return flush();case 4:expect(changes).toEqual([null]);expect(c.currentAdBreak).toBeNull();case 5:return _context107.a(2)}},_callee107)})));it("is a no-op when no ad is active",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee108(){var c,spy;return _regenerator().w(function(_context108){while(1)switch(_context108.n){case 0:c=createController();_context108.n=1;return setContent(c,trackAds(makeBreak()));case 1:spy=jasmine.createSpy("adBreakChange");c.on("adBreakEntered",spy);c.on("adBreakCompleted",spy);c.skipAd();expect(spy).not.toHaveBeenCalled();case 2:return _context108.a(2)}},_callee108)})));it("prevents re-entry into a skipped single-ad break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee109(){var c,spy;return _regenerator().w(function(_context109){while(1)switch(_context109.n){case 0:c=createController();_context109.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(5);_context109.n=2;return flush();case 2:c.skipAd();spy=jasmine.createSpy("adBreakChange");c.on("adBreakEntered",spy);c.on("adBreakCompleted",spy);updateTime(7);_context109.n=3;return flush();case 3:expect(spy).not.toHaveBeenCalled();expect(c.currentAdBreak).toBeNull();case 4:return _context109.a(2)}},_callee109)})))});describe("skipAdBreak",function(){it("is a no-op when no break is active",function(){var c=createController();var spy=jasmine.createSpy("adBreakChange");c.on("adBreakEntered",spy);c.on("adBreakCompleted",spy);c.skipAdBreak();expect(spy).not.toHaveBeenCalled()});it("skips the entire active break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee110(){var c,events;return _regenerator().w(function(_context110){while(1)switch(_context110.n){case 0:c=createController();_context110.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:30,ads:[{id:"a1",startTime:0,duration:10,uri:"ad1.m3u8"},{id:"a2",startTime:10,duration:20,uri:"ad2.m3u8"}]})));case 1:updateTime(1);_context110.n=2;return flush();case 2:events=[];c.on("adBreakEntered",function(e){return events.push(e.adBreak.id)});c.on("adBreakCompleted",function(){return events.push(null)});c.skipAdBreak();_context110.n=3;return flush();case 3:expect(events).toEqual([null]);expect(c.currentAdBreak).toBeNull();updateTime(5);_context110.n=4;return flush();case 4:expect(c.currentAdBreak).toBeNull();case 5:return _context110.a(2)}},_callee110)})))});describe("a break with no ads",function(){it("completes immediately with a resume position and plays no ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee111(){var c,entered,completed;return _regenerator().w(function(_context111){while(1)switch(_context111.n){case 0:c=createController();entered=[];completed=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});c.on("adBreakCompleted",function(e){return completed.push({id:e.adBreak.id,resumePosition:e.resumePosition})});_context111.n=1;return setContent(c,trackAds(makeBreak({id:"mid",startTime:10,duration:5,resumeOffset:2,ads:[]})));case 1:updateTime(10);_context111.n=2;return flush();case 2:expect(entered).toEqual(["mid"]);expect(completed).toEqual([{id:"mid",resumePosition:12}]);expect(c.currentAd).toBeNull();expect(c.currentAdBreak).toBeNull();case 3:return _context111.a(2)}},_callee111)})));it("advances to the next break rather than trapping the playhead",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee112(){var _a3,c,entered;return _regenerator().w(function(_context112){while(1)switch(_context112.n){case 0:c=createController();entered=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});_context112.n=1;return setContent(c,trackAds(makeBreak({id:"pre1",placement:"preroll",ads:[]}),makeBreak({id:"pre2",placement:"preroll"})));case 1:_context112.n=2;return c.enterPreroll();case 2:_context112.n=3;return flush();case 3:expect(entered).toEqual(["pre1","pre2"]);expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("pre2");case 4:return _context112.a(2)}},_callee112)})))});describe("clearCompletedAds",function(){it("allows a previously skipped break to be entered again",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee113(){var _a3,c,track2;return _regenerator().w(function(_context113){while(1)switch(_context113.n){case 0:c=createController();_context113.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:track2=_context113.v;updateTime(5);_context113.n=2;return flush();case 2:c.skipAd();expect(c.currentAdBreak).toBeNull();_context113.n=3;return setContent(c,track2.ads);case 3:updateTime(6);_context113.n=4;return flush();case 4:expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("b1");case 5:return _context113.a(2)}},_callee113)})))});describe("empty / failing ad lists",function(){it("completes a break whose resolver returns no ads",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee114(){var c;return _regenerator().w(function(_context114){while(1)switch(_context114.n){case 0:c=createController();_context114.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10,ads:[]})));case 1:updateTime(5);_context114.n=2;return flush();case 2:expect(c.currentAdBreak).toBeNull();updateTime(7);_context114.n=3;return flush();case 3:expect(c.currentAdBreak).toBeNull();case 4:return _context114.a(2)}},_callee114)})));it("emits adError and clears the break when the resolver rejects",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee115(){var c,errors,completedReasons;return _regenerator().w(function(_context115){while(1)switch(_context115.n){case 0:c=createController();errors=[];completedReasons=[];c.on("adError",function(e){return errors.push(e.error)});c.on("adBreakCompleted",function(e){return completedReasons.push(e.reason)});_context115.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10,ads:function ads(){return Promise.reject(new Error("boom"))}})));case 1:updateTime(5);_context115.n=2;return flush();case 2:expect(errors.length).toBe(1);expect(completedReasons).toEqual(["error"]);expect(c.currentAdBreak).toBeNull();case 3:return _context115.a(2)}},_callee115)})));it("recovers: a later midroll still enters after an ad-list rejection",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee116(){var _a3,c,entered;return _regenerator().w(function(_context116){while(1)switch(_context116.n){case 0:c=createController();entered=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});_context116.n=1;return setContent(c,trackAds(makeBreak({id:"bad",startTime:10,duration:5,ads:function ads(){return Promise.reject(new Error("fetch failed"))}}),makeBreak({id:"good",startTime:20,duration:5})));case 1:updateTime(10);_context116.n=2;return flush();case 2:expect(c.currentAdBreak).toBeNull();updateTime(20);_context116.n=3;return flush();case 3:expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("good");expect(entered).toEqual(["bad","good"]);case 4:return _context116.a(2)}},_callee116)})))});describe("failAd",function(){it("emits adError carrying the failing ad and completes it",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee117(){var _a3,c,errorEvents,completed;return _regenerator().w(function(_context117){while(1)switch(_context117.n){case 0:c=createController();errorEvents=[];c.on("adError",function(e){var _a4,_b;return errorEvents.push({adId:(_b=(_a4=e.currentAd)==null?void 0:_a4.id)!=null?_b:null,breakId:e.adBreak.id})});completed=[];c.on("adCompleted",function(e){return completed.push(e.reason)});_context117.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(5);_context117.n=2;return flush();case 2:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");c.failAd(new Error("decode failed"));expect(errorEvents).toEqual([{adId:"a1",breakId:"b1"}]);expect(completed).toEqual(["error"]);expect(c.currentAdBreak).toBeNull();case 3:return _context117.a(2)}},_callee117)})));it("is a no-op when no break is active",function(){var c=createController();var spy=jasmine.createSpy("adError");c.on("adError",spy);c.failAd(new Error("boom"));expect(spy).not.toHaveBeenCalled()})});describe("enterPostroll",function(){it("activates a pending postroll break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee118(){var _a3,_b,c;return _regenerator().w(function(_context118){while(1)switch(_context118.n){case 0:c=createController();_context118.n=1;return setContent(c,trackAds(makeBreak({id:"post",startTime:60,duration:10,placement:"postroll"})));case 1:updateTime(60);_context118.n=2;return flush();case 2:expect(c.currentAdBreak).toBeNull();_context118.n=3;return c.enterPostroll();case 3:expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("post");_context118.n=4;return flush();case 4:expect((_b=c.currentAd)==null?void 0:_b.id).toBe("a1");case 5:return _context118.a(2)}},_callee118)})))});describe("playback progress events",function(){it("dispatches adEntered and adPlaying",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee119(){var c,entered,playing;return _regenerator().w(function(_context119){while(1)switch(_context119.n){case 0:c=createController();entered=[];playing=[];c.on("adEntered",function(e){return entered.push(e.ad.id)});c.on("adPlaying",function(e){return playing.push(e.ad.id)});_context119.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(1);_context119.n=2;return flush();case 2:expect(entered).toEqual(["a1"]);playbackController.dispatch("playing",{});expect(playing).toEqual(["a1"]);case 3:return _context119.a(2)}},_callee119)})));it("dispatches adEnded when playback ends",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee120(){var c,ended;return _regenerator().w(function(_context120){while(1)switch(_context120.n){case 0:c=createController();ended=[];c.on("adEnded",function(e){return ended.push(e.ad.id)});_context120.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(1);_context120.n=2;return flush();case 2:playbackController.dispatch("ended",{previous:false,current:true});expect(ended).toEqual(["a1"]);expect(c.currentAdBreak).toBeNull();case 3:return _context120.a(2)}},_callee120)})));it("dispatches adFirstQuartile after 25% of the ad has played",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee121(){var c,quartiles;return _regenerator().w(function(_context121){while(1)switch(_context121.n){case 0:c=createController();quartiles=[];c.on("adFirstQuartile",function(e){return quartiles.push(e.ad.id)});_context121.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(0);_context121.n=2;return flush();case 2:playbackController.dispatch("playing",{});playbackController.duration=10;playbackController.playbackRate=1;playbackController.currentTimePercent=0.3;updateTime(3);_context121.n=3;return flush();case 3:expect(quartiles).toEqual(["a1"]);case 4:return _context121.a(2)}},_callee121)})));it("dispatches adMidpoint after 50% of the ad has played",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee122(){var c,midpoints;return _regenerator().w(function(_context122){while(1)switch(_context122.n){case 0:c=createController();midpoints=[];c.on("adMidpoint",function(e){return midpoints.push(e.playbackRateAvg)});_context122.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(0);_context122.n=2;return flush();case 2:playbackController.dispatch("playing",{});playbackController.duration=10;playbackController.playbackRate=1;playbackController.currentTimePercent=0.6;updateTime(6);_context122.n=3;return flush();case 3:expect(midpoints.length).toBe(1);case 4:return _context122.a(2)}},_callee122)})));it("dispatches adThirdQuartile after 75% of the ad has played",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee123(){var c,thirds;return _regenerator().w(function(_context123){while(1)switch(_context123.n){case 0:c=createController();thirds=[];c.on("adThirdQuartile",function(e){return thirds.push(e.ad.id)});_context123.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(0);_context123.n=2;return flush();case 2:playbackController.dispatch("playing",{});playbackController.duration=10;playbackController.playbackRate=1;playbackController.currentTimePercent=0.8;updateTime(8);_context123.n=3;return flush();case 3:expect(thirds).toEqual(["a1"]);case 4:return _context123.a(2)}},_callee123)})));it("does not emit quartiles or throw when the ad duration is zero",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee124(){var c,events;return _regenerator().w(function(_context124){while(1)switch(_context124.n){case 0:c=createController();events=[];c.on("adFirstQuartile",function(){return events.push("first")});c.on("adMidpoint",function(){return events.push("mid")});c.on("adThirdQuartile",function(){return events.push("third")});_context124.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(0);_context124.n=2;return flush();case 2:playbackController.dispatch("playing",{});playbackController.duration=0;playbackController.currentTimePercent=0.9;expect(function(){return updateTime(1)}).not.toThrow();_context124.n=3;return flush();case 3:expect(events).toEqual([]);case 4:return _context124.a(2)}},_callee124)})));it("fails the ad if it does not start within the load timeout",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee125(){var c,errors;return _regenerator().w(function(_context125){while(1)switch(_context125.n){case 0:c=new AdControllerImpl({playbackController:playbackController},{adLoadTimeout:0});errors=[];c.on("adError",function(e){return errors.push(e.error)});_context125.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(1);_context125.n=2;return flush();case 2:_context125.n=3;return new Promise(function(resolve){return setTimeout(resolve,5)});case 3:expect(errors.length).toBe(1);expect(c.currentAdBreak).toBeNull();case 4:return _context125.a(2)}},_callee125)})))});describe("edge cases",function(){it("tears down an active ad when the content track changes",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee126(){var _a3,c,entered,completedReasons;return _regenerator().w(function(_context126){while(1)switch(_context126.n){case 0:c=createController();_context126.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(1);_context126.n=2;return flush();case 2:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");entered=[];completedReasons=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});c.on("adBreakCompleted",function(e){return completedReasons.push(e.reason)});_context126.n=3;return setContent(c,{trackUri:"t2",adBreaks:[]});case 3:expect(c.currentAd).toBeNull();expect(c.currentAdBreak).toBeNull();expect(entered).toEqual([]);expect(completedReasons).toEqual(["contentChange"]);case 4:return _context126.a(2)}},_callee126)})));it("does not emit a stray adEntered when the content swaps mid-resolve",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee127(){var c,resolveAds,enteredAds;return _regenerator().w(function(_context127){while(1)switch(_context127.n){case 0:c=createController();resolveAds=function resolveAds(){};enteredAds=[];c.on("adEntered",function(e){return enteredAds.push(e.ad.id)});_context127.n=1;return setContent(c,trackAds(makeBreak({startTime:10,ads:function ads(){return new Promise(function(resolve){resolveAds=resolve})}})));case 1:updateTime(10);_context127.n=2;return flush();case 2:_context127.n=3;return setContent(c,{trackUri:"t2",adBreaks:[]});case 3:resolveAds([defaultAd]);_context127.n=4;return flush();case 4:expect(enteredAds).toEqual([]);expect(c.currentAd).toBeNull();case 5:return _context127.a(2)}},_callee127)})));it("ignores an ended event when no ad is active",function(){var c=createController();var ended=jasmine.createSpy("adEnded");c.on("adEnded",ended);playbackController.dispatch("ended",{previous:false,current:true});expect(ended).not.toHaveBeenCalled()});it("does not start another ad while one is active",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee128(){var _a3,_b,c,track2;return _regenerator().w(function(_context128){while(1)switch(_context128.n){case 0:c=createController();_context128.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:track2=_context128.v;updateTime(1);_context128.n=2;return flush();case 2:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");_context128.n=3;return refreshAds(track2,trackAds(makeBreak({id:"pre",startTime:0,placement:"preroll"})));case 3:expect((_b=c.currentAd)==null?void 0:_b.id).toBe("a1");case 4:return _context128.a(2)}},_callee128)})));it("enters the nearest preceding midroll on a forward crossing",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee129(){var _a3,c;return _regenerator().w(function(_context129){while(1)switch(_context129.n){case 0:c=createController();_context129.n=1;return setContent(c,trackAds(makeBreak({id:"near",startTime:5,duration:10}),makeBreak({id:"far",startTime:50,duration:10})));case 1:updateTime(6);_context129.n=2;return flush();case 2:expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("near");case 3:return _context129.a(2)}},_callee129)})))});describe("X-RESUME-OFFSET resume position",function(){function resumesOf(c){var resumes=[];c.on("adBreakCompleted",function(e){return resumes.push(e.resumePosition)});return resumes}it("resumes at the scheduled start plus a present offset",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee130(){var _a3,c,resumes;return _regenerator().w(function(_context130){while(1)switch(_context130.n){case 0:c=createController();resumes=resumesOf(c);_context130.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:6,resumeOffset:5})));case 1:updateTime(10);_context130.n=2;return flush();case 2:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");c.skipAd();expect(resumes.at(-1)).toBe(15);case 3:return _context130.a(2)}},_callee130)})));it("treats a present offset of 0 as resume-in-place",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee131(){var c,resumes;return _regenerator().w(function(_context131){while(1)switch(_context131.n){case 0:c=createController();resumes=resumesOf(c);_context131.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:6,resumeOffset:0})));case 1:updateTime(10);_context131.n=2;return flush();case 2:c.skipAd();expect(resumes.at(-1)).toBe(10);case 3:return _context131.a(2)}},_callee131)})));it("clamps a negative offset to the natural resume position",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee132(){var c,resumes;return _regenerator().w(function(_context132){while(1)switch(_context132.n){case 0:c=createController();resumes=resumesOf(c);_context132.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:6,resumeOffset:-4})));case 1:updateTime(10);_context132.n=2;return flush();case 2:c.skipAd();expect(resumes.at(-1)).toBe(10);case 3:return _context132.a(2)}},_callee132)})));it("resumes at the cue point regardless of how long the ad played",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee133(){var c,resumes;return _regenerator().w(function(_context133){while(1)switch(_context133.n){case 0:c=createController();resumes=resumesOf(c);_context133.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:20,// Null per-ad duration so the per-ad cap does not end it.
2073
+ function _expectTrackCanSeekTo(){_expectTrackCanSeekTo=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee975(player,time){var tolerance,_createDisposer10,dispose,add,playedSpy,seekingSpy,seekedSpy,wasPaused,expectNoop,expectedTime;return _regenerator().w(function(_context976){while(1)switch(_context976.n){case 0:tolerance=0.5;_createDisposer10=createDisposer(),dispose=_createDisposer10.dispose,add=_createDisposer10.add;playedSpy=add(createEventSpy(player,"played"));seekingSpy=add(createEventSpy(player,"seeking"));seekedSpy=add(createEventSpy(player,"seeked"));wasPaused=player.paused;if(player.playing){seekingSpy.next().then(function(){expect(playedSpy).toHaveBeenCalledBefore(seekingSpy)})["catch"](noop)}expectNoop=closeTo(player.currentTime,time,tolerance);_context976.n=1;return player.seekTo(time,tolerance);case 1:expectedTime=clamp(time,0,player.duration-(wasPaused?0:getMinSeekableBufferDefault()));expect(player.currentTime).toBeCloseToWithin(expectedTime,1);if(!expectNoop){_context976.n=2;break}expect(seekingSpy).not.toHaveBeenCalled();expect(seekedSpy).not.toHaveBeenCalled();_context976.n=7;break;case 2:expect(seekingSpy).toHaveBeenCalledBefore(seekedSpy);expect(player.paused).withContext("paused").toBe(wasPaused);if(!wasPaused){_context976.n=4;break}expectPausedState(player);_context976.n=3;return expectTimeDoesNotElapse(player);case 3:_context976.n=7;break;case 4:_context976.n=5;return onPlaying(player);case 5:expectPlayingState(player);_context976.n=6;return assertFrequency();case 6:_context976.n=7;return expectTimeElapses(player);case 7:dispose();case 8:return _context976.a(2)}},_callee975)}));return _expectTrackCanSeekTo.apply(this,arguments)}var sleepInterval=1;var affordanceBefore=1;var affordanceAfter=3;function expectTrackPlaysUntil(_x90,_x91){return _expectTrackPlaysUntil.apply(this,arguments)}// test/vinylTestUtil/util/playback/expectTrackPlays.ts
2074
+ function _expectTrackPlaysUntil(){_expectTrackPlaysUntil=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee976(player,endTime){var timeout2,startedBeforeEnd,elapsed,maxTime,_args977=arguments;return _regenerator().w(function(_context977){while(1)switch(_context977.n){case 0:timeout2=_args977.length>2&&_args977[2]!==undefined?_args977[2]:20;_context977.n=1;return onPlaying(player);case 1:_context977.n=2;return onTimeUpdate(player);case 2:startedBeforeEnd=player.currentTime<endTime;_context977.n=3;return assertFrequency();case 3:elapsed=0;maxTime=endTime-player.currentTime+timeout2;case 4:if(!(!player.ended&&player.currentTime<endTime&&elapsed<maxTime)){_context977.n=6;break}_context977.n=5;return _sleep(sleepInterval);case 5:elapsed+=sleepInterval;_context977.n=4;break;case 6:expect(player.currentTime).withContext("currentTime").toBeGreaterThanOrEqual(endTime-affordanceBefore);if(startedBeforeEnd){expect(player.currentTime).withContext("currentTime").toBeLessThan(endTime+affordanceAfter)}case 7:return _context977.a(2)}},_callee976)}));return _expectTrackPlaysUntil.apply(this,arguments)}var PLAYBACK_DURATION=6;function expectTrackPlays(_x92){return _expectTrackPlays.apply(this,arguments)}function _expectTrackPlays(){_expectTrackPlays=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee977(player){var _createDisposer11,dispose,add,ended,timeUpdate,duration,_time3;return _regenerator().w(function(_context978){while(1)switch(_context978.n){case 0:_createDisposer11=createDisposer(),dispose=_createDisposer11.dispose,add=_createDisposer11.add;ended=add(createEventSpy(player,"ended"));timeUpdate=add(createEventSpy(player,"timeUpdate"));expect(player.currentTime).withContext("currentTime starts near the beginning").toBeLessThan(1);_context978.n=1;return onDuration(player);case 1:duration=player.duration;expect(duration).withContext("duration should be non-zero").toBeGreaterThan(0);if(!(player.duration>PLAYBACK_DURATION)){_context978.n=3;break}_context978.n=2;return expectTrackPlaysUntil(player,player.currentTime+PLAYBACK_DURATION/2);case 2:_time3=player.duration-PLAYBACK_DURATION/2;_context978.n=3;return player.seekTo(_time3);case 3:_context978.n=4;return ended.next(PLAYBACK_DURATION+10);case 4:expect(player.currentTime).toBeCloseToWithin(duration,3);expect(player.ended).withContext("ended").toBeTrue();expect(timeUpdate.calls.count()).toBeGreaterThanOrEqual(Math.floor(PLAYBACK_DURATION));dispose();case 5:return _context978.a(2)}},_callee977)}));return _expectTrackPlays.apply(this,arguments)}function expectPlaylistPlays(_x93,_x94){return _expectPlaylistPlays.apply(this,arguments)}// test/unit/ad/AdControllerImpl.test.ts
2075
+ function _expectPlaylistPlays(){_expectPlaylistPlays=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee978(player,playlist){var _a3,_createDisposer12,dispose,add,trackTimeout,queueEnded,queueChange,trackChange,assertQueueChangeCount,i,isLastTrack,nextTrack;return _regenerator().w(function(_context979){while(1)switch(_context979.n){case 0:assertQueueChangeCount=function _assertQueueChangeCou(count){expect(queueChange).toHaveBeenCalledTimes(count);queueChange.calls.reset()};_createDisposer12=createDisposer(),dispose=_createDisposer12.dispose,add=_createDisposer12.add;trackTimeout=PLAYBACK_DURATION+60;queueEnded=add(createEventSpy(player,"queueEnded"));queueChange=add(createEventSpy(player,"queueChange"));trackChange=add(createEventSpy(player,"trackActivated"));player.load.apply(player,_toConsumableArray(playlist));assertQueueChangeCount(1);_context979.n=1;return player.play();case 1:i=0;case 2:if(!(i<playlist.length)){_context979.n=6;break}isLastTrack=i===playlist.length-1;expect((_a3=player.activeTrack)==null?void 0:_a3.uri).withContext("activeTrack uri").toBe(playlist[i].uri);nextTrack=isLastTrack?queueEnded.next(trackTimeout):trackChange.next(trackTimeout);_context979.n=3;return expectTrackPlays(player);case 3:_context979.n=4;return nextTrack;case 4:assertQueueChangeCount(isLastTrack?0:1);case 5:i++;_context979.n=2;break;case 6:dispose();case 7:return _context979.a(2)}},_callee978)}));return _expectPlaylistPlays.apply(this,arguments)}describe("AdControllerImpl",function(){var playbackController;beforeEach(function(){playbackController=new MockPlaybackController});function createController(){return new AdControllerImpl({playbackController:playbackController})}function updateTime(time){playbackController.currentTime=time;playbackController.dispatch("timeUpdate",{previous:0,current:time})}function seekTo(time){playbackController.currentTime=time;playbackController.dispatch("seeked",{started:0,ended:0,duration:0,reason:"seeked"})}var defaultAd={id:"a1",startTime:10,duration:5,uri:"ad.m3u8"};function makeBreak(){var overrides=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};var _a3=overrides,ads=_a3.ads,rest=__objRest(_a3,["ads"]);var adsResolver=typeof ads==="function"?ads:function(){return Promise.resolve(ads!=null?ads:[defaultAd])};return __spreadValues({id:"b1",startTime:10,duration:5,placement:"midroll",restrict:{},once:false,resumeOffset:null,playoutLimit:null,resolutionTimeOffset:null,skipControl:function skipControl(){return null},ads:adsResolver},rest)}function trackAds(){for(var _len29=arguments.length,adBreaks=new Array(_len29),_key30=0;_key30<_len29;_key30++){adBreaks[_key30]=arguments[_key30]}return{trackUri:"t1",adBreaks:adBreaks}}function flush(){return _flush.apply(this,arguments)}function _flush(){_flush=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee159(){var i;return _regenerator().w(function(_context159){while(1)switch(_context159.n){case 0:i=0;case 1:if(!(i<12)){_context159.n=3;break}_context159.n=2;return Promise.resolve();case 2:i++;_context159.n=1;break;case 3:return _context159.a(2)}},_callee159)}));return _flush.apply(this,arguments)}function setContent(_x95,_x96){return _setContent.apply(this,arguments)}function _setContent(){_setContent=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee160(c,ads){var track2;return _regenerator().w(function(_context160){while(1)switch(_context160.n){case 0:track2=new MockTrack;track2.uri=ads.trackUri;track2.active=true;track2.ads=ads;playbackController.playing=true;c.setAdsProvider(track2);_context160.n=1;return flush();case 1:return _context160.a(2,track2)}},_callee160)}));return _setContent.apply(this,arguments)}function refreshAds(_x97,_x98){return _refreshAds.apply(this,arguments)}function _refreshAds(){_refreshAds=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee161(track2,ads){return _regenerator().w(function(_context161){while(1)switch(_context161.n){case 0:track2.ads=ads;track2.dispatch("adsChange",{});_context161.n=1;return flush();case 1:return _context161.a(2)}},_callee161)}));return _refreshAds.apply(this,arguments)}it("starts with no ads and no active break",function(){var c=createController();expect(c.currentTrackAds).toBeNull();expect(c.currentAdBreak).toBeNull();expect(c.currentAd).toBeNull()});describe("adPreload",function(){it("emits adPreload as the playhead approaches a midroll",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee83(){var c,preloaded;return _regenerator().w(function(_context83){while(1)switch(_context83.n){case 0:c=createController();_context83.n=1;return setContent(c,trackAds(makeBreak({id:"m",startTime:30,duration:5})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(19);_context83.n=2;return flush();case 2:expect(preloaded).toEqual([]);updateTime(21);_context83.n=3;return flush();case 3:expect(preloaded).toEqual(["m"]);case 4:return _context83.a(2)}},_callee83)})));it("emits adPreload only once while approaching",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee84(){var c,preloaded;return _regenerator().w(function(_context84){while(1)switch(_context84.n){case 0:c=createController();_context84.n=1;return setContent(c,trackAds(makeBreak({id:"m",startTime:30,duration:5})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(21);updateTime(22);updateTime(23);_context84.n=2;return flush();case 2:expect(preloaded).toEqual(["m"]);case 3:return _context84.a(2)}},_callee84)})));it("does not emit adPreload for a preroll",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee85(){var c,preloaded;return _regenerator().w(function(_context85){while(1)switch(_context85.n){case 0:c=createController();_context85.n=1;return setContent(c,trackAds(makeBreak({id:"pre",startTime:0,placement:"preroll"})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(1);_context85.n=2;return flush();case 2:expect(preloaded).toEqual([]);case 3:return _context85.a(2)}},_callee85)})));it("emits adPreload as the playhead approaches a postroll",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee86(){var c,preloaded;return _regenerator().w(function(_context86){while(1)switch(_context86.n){case 0:c=createController();_context86.n=1;return setContent(c,trackAds(makeBreak({id:"post",startTime:60,duration:5,placement:"postroll"})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(49);_context86.n=2;return flush();case 2:expect(preloaded).toEqual([]);updateTime(51);_context86.n=3;return flush();case 3:expect(preloaded).toEqual(["post"]);case 4:return _context86.a(2)}},_callee86)})));it("uses the break's resolutionTimeOffset over the preloadAheadTime option",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee87(){var c,preloaded;return _regenerator().w(function(_context87){while(1)switch(_context87.n){case 0:c=createController();_context87.n=1;return setContent(c,trackAds(makeBreak({id:"m",startTime:30,duration:5,resolutionTimeOffset:5})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(21);_context87.n=2;return flush();case 2:expect(preloaded).toEqual([]);updateTime(26);_context87.n=3;return flush();case 3:expect(preloaded).toEqual(["m"]);case 4:return _context87.a(2)}},_callee87)})));it("honors a custom preloadAheadTime option",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee88(){var c,preloaded;return _regenerator().w(function(_context88){while(1)switch(_context88.n){case 0:c=new AdControllerImpl({playbackController:playbackController},{preloadAheadTime:3});_context88.n=1;return setContent(c,trackAds(makeBreak({id:"m",startTime:30,duration:5})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(26);_context88.n=2;return flush();case 2:expect(preloaded).toEqual([]);updateTime(28);_context88.n=3;return flush();case 3:expect(preloaded).toEqual(["m"]);case 4:return _context88.a(2)}},_callee88)})));it("does not emit adPreload for a played-once (suppressed) break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee89(){var c,preloaded;return _regenerator().w(function(_context89){while(1)switch(_context89.n){case 0:c=createController();_context89.n=1;return setContent(c,trackAds(makeBreak({id:"m",startTime:30,duration:5,once:true})));case 1:updateTime(30);_context89.n=2;return flush();case 2:c.skipAd();_context89.n=3;return flush();case 3:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});seekTo(15);updateTime(22);_context89.n=4;return flush();case 4:expect(preloaded).toEqual([]);case 5:return _context89.a(2)}},_callee89)})));it("re-arms the preload signal for a replayable break after a seek back",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee90(){var c,preloaded;return _regenerator().w(function(_context90){while(1)switch(_context90.n){case 0:c=createController();_context90.n=1;return setContent(c,trackAds(makeBreak({id:"m",startTime:30,duration:5})));case 1:preloaded=[];c.on("adPreload",function(e){return preloaded.push(e.adBreak.id)});updateTime(22);_context90.n=2;return flush();case 2:expect(preloaded).toEqual(["m"]);seekTo(10);updateTime(23);_context90.n=3;return flush();case 3:expect(preloaded).toEqual(["m","m"]);case 4:return _context90.a(2)}},_callee90)})))});describe("ad discovery failures",function(){function rejectingTrack(){var track2=new MockTrack;track2.uri="t1";track2.active=true;track2.getAds=function(){return Promise.reject(new Error("discovery failed"))};return track2}it("logs and does not throw when parent-track ad discovery rejects",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee91(){var c;return _regenerator().w(function(_context91){while(1)switch(_context91.n){case 0:c=createController();c.setAdsProvider(rejectingTrack());_context91.n=1;return flush();case 1:expect(c.currentTrackAds).toBeNull();expect(c.currentAdBreak).toBeNull();case 2:return _context91.a(2)}},_callee91)})));it("ignores a rejected discovery after the parent track has changed",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee92(){var c;return _regenerator().w(function(_context92){while(1)switch(_context92.n){case 0:c=createController();c.setAdsProvider(rejectingTrack());c.setAdsProvider(null);_context92.n=1;return flush();case 1:expect(c.currentTrackAds).toBeNull();case 2:return _context92.a(2)}},_callee92)})));it("resolves enterPreroll to null when ad discovery rejects",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee93(){var c,_t23;return _regenerator().w(function(_context93){while(1)switch(_context93.n){case 0:c=createController();c.setAdsProvider(rejectingTrack());_context93.n=1;return flush();case 1:_t23=expect;_context93.n=2;return c.enterPreroll();case 2:_t23(_context93.v).toBeNull();case 3:return _context93.a(2)}},_callee93)})))});describe("defensive no-ops and disposal",function(){it("is a no-op when the same parent track is set again",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee94(){var c,track2,changes;return _regenerator().w(function(_context94){while(1)switch(_context94.n){case 0:c=createController();track2=new MockTrack;track2.uri="t1";track2.active=true;track2.ads=trackAds(makeBreak());c.setAdsProvider(track2);_context94.n=1;return flush();case 1:changes=0;c.on("currentTrackAdsChange",function(){return changes++});c.setAdsProvider(track2);_context94.n=2;return flush();case 2:expect(changes).toBe(0);case 3:return _context94.a(2)}},_callee94)})));it("resolves enterPreroll and enterPostroll to null with no parent track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee95(){var c,_t24,_t25;return _regenerator().w(function(_context95){while(1)switch(_context95.n){case 0:c=createController();_t24=expect;_context95.n=1;return c.enterPreroll();case 1:_t24(_context95.v).toBeNull();_t25=expect;_context95.n=2;return c.enterPostroll();case 2:_t25(_context95.v).toBeNull();case 3:return _context95.a(2)}},_callee95)})));it("does not scan midrolls when there is no active content track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee96(){var c;return _regenerator().w(function(_context96){while(1)switch(_context96.n){case 0:c=createController();playbackController.playing=true;updateTime(15);_context96.n=1;return flush();case 1:expect(c.currentAdBreak).toBeNull();case 2:return _context96.a(2)}},_callee96)})));it("ignores a late ad-list rejection after dispose",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee97(){var c,rejectAds,track2;return _regenerator().w(function(_context97){while(1)switch(_context97.n){case 0:c=createController();rejectAds=function rejectAds(){};track2=new MockTrack;track2.uri="t1";track2.active=true;track2.ads=trackAds(makeBreak({startTime:0,duration:5,ads:function ads(){return new Promise(function(_res,rej){rejectAds=rej})}}));c.setAdsProvider(track2);playbackController.playing=true;_context97.n=1;return flush();case 1:updateTime(1);_context97.n=2;return flush();case 2:c.dispose();rejectAds(new Error("late"));_context97.n=3;return flush();case 3:expect(c.currentAdBreak).toBeNull();case 4:return _context97.a(2)}},_callee97)})))});it("emits currentTrackAdsChange with the TrackAds when a parent track is set",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee98(){var _a3,_b,c,events;return _regenerator().w(function(_context98){while(1)switch(_context98.n){case 0:c=createController();events=[];c.on("currentTrackAdsChange",function(e){return events.push(e.current)});_context98.n=1;return setContent(c,trackAds(makeBreak()));case 1:expect((_a3=events.at(-1))==null?void 0:_a3.adBreaks.map(function(b){return b.id})).toEqual(["b1"]);expect((_b=c.currentTrackAds)==null?void 0:_b.adBreaks.map(function(b){return b.id})).toEqual(["b1"]);case 2:return _context98.a(2)}},_callee98)})));it("clears the ads when the parent track is cleared",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee99(){var c;return _regenerator().w(function(_context99){while(1)switch(_context99.n){case 0:c=createController();_context99.n=1;return setContent(c,trackAds(makeBreak()));case 1:c.setAdsProvider(null);expect(c.currentTrackAds).toBeNull();case 2:return _context99.a(2)}},_callee99)})));describe("midroll entry",function(){it("activates a break when the playhead crosses its start time",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee100(){var _a3,_b,c,entered;return _regenerator().w(function(_context100){while(1)switch(_context100.n){case 0:c=createController();_context100.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:5})));case 1:entered=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});updateTime(9);_context100.n=2;return flush();case 2:expect(entered).toEqual([]);expect(c.currentAdBreak).toBeNull();updateTime(10);_context100.n=3;return flush();case 3:expect(entered).toEqual(["b1"]);expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("b1");expect((_b=c.currentAd)==null?void 0:_b.id).toBe("a1");case 4:return _context100.a(2)}},_callee100)})));it("does not re-emit while remaining inside the same break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee101(){var c,changes;return _regenerator().w(function(_context101){while(1)switch(_context101.n){case 0:c=createController();_context101.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:10})));case 1:changes=0;c.on("adBreakEntered",function(){return changes++});updateTime(11);_context101.n=2;return flush();case 2:updateTime(12);updateTime(13);_context101.n=3;return flush();case 3:expect(changes).toBe(1);case 4:return _context101.a(2)}},_callee101)})));it("treats a null-duration break as open-ended (still enters)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee102(){var _a3,c;return _regenerator().w(function(_context102){while(1)switch(_context102.n){case 0:c=createController();_context102.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:null})));case 1:updateTime(11);_context102.n=2;return flush();case 2:expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("b1");case 3:return _context102.a(2)}},_callee102)})));it("enters tied breaks that share a start time",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee103(){var c,entered;return _regenerator().w(function(_context103){while(1)switch(_context103.n){case 0:c=createController();entered=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});_context103.n=1;return setContent(c,trackAds(makeBreak({id:"A",startTime:10,duration:5}),makeBreak({id:"B",startTime:10,duration:5})));case 1:updateTime(10);_context103.n=2;return flush();case 2:expect(entered).toContain("A");c.skipAdBreak();_context103.n=3;return flush();case 3:expect(entered).toEqual(["A","B"]);case 4:return _context103.a(2)}},_callee103)})));it("enters an earlier still-open break after seeking into it",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee104(){var _a3,c,entered;return _regenerator().w(function(_context104){while(1)switch(_context104.n){case 0:c=createController();entered=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});_context104.n=1;return setContent(c,trackAds(makeBreak({id:"long",startTime:10,duration:100}),makeBreak({id:"short",startTime:50,duration:5})));case 1:updateTime(60);_context104.n=2;return flush();case 2:expect(entered).toEqual(["long"]);expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("long");case 3:return _context104.a(2)}},_callee104)})))});describe("preroll",function(){it("enters when enterPreroll is called",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee105(){var _a3,_b,c;return _regenerator().w(function(_context105){while(1)switch(_context105.n){case 0:c=createController();_context105.n=1;return setContent(c,trackAds(makeBreak({id:"pre",startTime:0,placement:"preroll"})));case 1:expect(c.currentAdBreak).toBeNull();_context105.n=2;return c.enterPreroll();case 2:expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("pre");_context105.n=3;return flush();case 3:expect((_b=c.currentAd)==null?void 0:_b.id).toBe("a1");case 4:return _context105.a(2)}},_callee105)})))});describe("skipAd",function(){function multiAdBreak(){return makeBreak({id:"b1",startTime:0,duration:30,ads:[{id:"a1",startTime:0,duration:10,uri:"ad1.m3u8"},{id:"a2",startTime:10,duration:20,uri:"ad2.m3u8"}]})}it("advances to the next ad within a multi-ad break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee106(){var _a3,_b,_c,c;return _regenerator().w(function(_context106){while(1)switch(_context106.n){case 0:c=createController();_context106.n=1;return setContent(c,trackAds(multiAdBreak()));case 1:updateTime(1);_context106.n=2;return flush();case 2:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");c.skipAd();_context106.n=3;return flush();case 3:expect((_b=c.currentAd)==null?void 0:_b.id).toBe("a2");expect((_c=c.currentAdBreak)==null?void 0:_c.id).toBe("b1");case 4:return _context106.a(2)}},_callee106)})));it("ends the break after skipping the last ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee107(){var c,changes;return _regenerator().w(function(_context107){while(1)switch(_context107.n){case 0:c=createController();_context107.n=1;return setContent(c,trackAds(multiAdBreak()));case 1:updateTime(1);_context107.n=2;return flush();case 2:c.skipAd();_context107.n=3;return flush();case 3:changes=[];c.on("adBreakEntered",function(e){return changes.push(e.adBreak.id)});c.on("adBreakCompleted",function(){return changes.push(null)});c.skipAd();_context107.n=4;return flush();case 4:expect(changes).toEqual([null]);expect(c.currentAdBreak).toBeNull();case 5:return _context107.a(2)}},_callee107)})));it("is a no-op when no ad is active",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee108(){var c,spy;return _regenerator().w(function(_context108){while(1)switch(_context108.n){case 0:c=createController();_context108.n=1;return setContent(c,trackAds(makeBreak()));case 1:spy=jasmine.createSpy("adBreakChange");c.on("adBreakEntered",spy);c.on("adBreakCompleted",spy);c.skipAd();expect(spy).not.toHaveBeenCalled();case 2:return _context108.a(2)}},_callee108)})));it("prevents re-entry into a skipped single-ad break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee109(){var c,spy;return _regenerator().w(function(_context109){while(1)switch(_context109.n){case 0:c=createController();_context109.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(5);_context109.n=2;return flush();case 2:c.skipAd();spy=jasmine.createSpy("adBreakChange");c.on("adBreakEntered",spy);c.on("adBreakCompleted",spy);updateTime(7);_context109.n=3;return flush();case 3:expect(spy).not.toHaveBeenCalled();expect(c.currentAdBreak).toBeNull();case 4:return _context109.a(2)}},_callee109)})))});describe("skipAdBreak",function(){it("is a no-op when no break is active",function(){var c=createController();var spy=jasmine.createSpy("adBreakChange");c.on("adBreakEntered",spy);c.on("adBreakCompleted",spy);c.skipAdBreak();expect(spy).not.toHaveBeenCalled()});it("skips the entire active break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee110(){var c,events;return _regenerator().w(function(_context110){while(1)switch(_context110.n){case 0:c=createController();_context110.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:30,ads:[{id:"a1",startTime:0,duration:10,uri:"ad1.m3u8"},{id:"a2",startTime:10,duration:20,uri:"ad2.m3u8"}]})));case 1:updateTime(1);_context110.n=2;return flush();case 2:events=[];c.on("adBreakEntered",function(e){return events.push(e.adBreak.id)});c.on("adBreakCompleted",function(){return events.push(null)});c.skipAdBreak();_context110.n=3;return flush();case 3:expect(events).toEqual([null]);expect(c.currentAdBreak).toBeNull();updateTime(5);_context110.n=4;return flush();case 4:expect(c.currentAdBreak).toBeNull();case 5:return _context110.a(2)}},_callee110)})))});describe("a break with no ads",function(){it("completes immediately with a resume position and plays no ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee111(){var c,entered,completed;return _regenerator().w(function(_context111){while(1)switch(_context111.n){case 0:c=createController();entered=[];completed=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});c.on("adBreakCompleted",function(e){return completed.push({id:e.adBreak.id,resumePosition:e.resumePosition})});_context111.n=1;return setContent(c,trackAds(makeBreak({id:"mid",startTime:10,duration:5,resumeOffset:2,ads:[]})));case 1:updateTime(10);_context111.n=2;return flush();case 2:expect(entered).toEqual(["mid"]);expect(completed).toEqual([{id:"mid",resumePosition:12}]);expect(c.currentAd).toBeNull();expect(c.currentAdBreak).toBeNull();case 3:return _context111.a(2)}},_callee111)})));it("advances to the next break rather than trapping the playhead",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee112(){var _a3,c,entered;return _regenerator().w(function(_context112){while(1)switch(_context112.n){case 0:c=createController();entered=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});_context112.n=1;return setContent(c,trackAds(makeBreak({id:"pre1",placement:"preroll",ads:[]}),makeBreak({id:"pre2",placement:"preroll"})));case 1:_context112.n=2;return c.enterPreroll();case 2:_context112.n=3;return flush();case 3:expect(entered).toEqual(["pre1","pre2"]);expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("pre2");case 4:return _context112.a(2)}},_callee112)})))});describe("clearCompletedAds",function(){it("allows a previously skipped break to be entered again",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee113(){var _a3,c,track2;return _regenerator().w(function(_context113){while(1)switch(_context113.n){case 0:c=createController();_context113.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:track2=_context113.v;updateTime(5);_context113.n=2;return flush();case 2:c.skipAd();expect(c.currentAdBreak).toBeNull();_context113.n=3;return setContent(c,track2.ads);case 3:updateTime(6);_context113.n=4;return flush();case 4:expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("b1");case 5:return _context113.a(2)}},_callee113)})))});describe("empty / failing ad lists",function(){it("completes a break whose resolver returns no ads",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee114(){var c;return _regenerator().w(function(_context114){while(1)switch(_context114.n){case 0:c=createController();_context114.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10,ads:[]})));case 1:updateTime(5);_context114.n=2;return flush();case 2:expect(c.currentAdBreak).toBeNull();updateTime(7);_context114.n=3;return flush();case 3:expect(c.currentAdBreak).toBeNull();case 4:return _context114.a(2)}},_callee114)})));it("emits adError and clears the break when the resolver rejects",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee115(){var c,errors,completedReasons;return _regenerator().w(function(_context115){while(1)switch(_context115.n){case 0:c=createController();errors=[];completedReasons=[];c.on("adError",function(e){return errors.push(e.error)});c.on("adBreakCompleted",function(e){return completedReasons.push(e.reason)});_context115.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10,ads:function ads(){return Promise.reject(new Error("boom"))}})));case 1:updateTime(5);_context115.n=2;return flush();case 2:expect(errors.length).toBe(1);expect(completedReasons).toEqual(["error"]);expect(c.currentAdBreak).toBeNull();case 3:return _context115.a(2)}},_callee115)})));it("recovers: a later midroll still enters after an ad-list rejection",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee116(){var _a3,c,entered;return _regenerator().w(function(_context116){while(1)switch(_context116.n){case 0:c=createController();entered=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});_context116.n=1;return setContent(c,trackAds(makeBreak({id:"bad",startTime:10,duration:5,ads:function ads(){return Promise.reject(new Error("fetch failed"))}}),makeBreak({id:"good",startTime:20,duration:5})));case 1:updateTime(10);_context116.n=2;return flush();case 2:expect(c.currentAdBreak).toBeNull();updateTime(20);_context116.n=3;return flush();case 3:expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("good");expect(entered).toEqual(["bad","good"]);case 4:return _context116.a(2)}},_callee116)})))});describe("failAd",function(){it("emits adError carrying the failing ad and completes it",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee117(){var _a3,c,errorEvents,completed;return _regenerator().w(function(_context117){while(1)switch(_context117.n){case 0:c=createController();errorEvents=[];c.on("adError",function(e){var _a4,_b;return errorEvents.push({adId:(_b=(_a4=e.currentAd)==null?void 0:_a4.id)!=null?_b:null,breakId:e.adBreak.id})});completed=[];c.on("adCompleted",function(e){return completed.push(e.reason)});_context117.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(5);_context117.n=2;return flush();case 2:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");c.failAd(new Error("decode failed"));expect(errorEvents).toEqual([{adId:"a1",breakId:"b1"}]);expect(completed).toEqual(["error"]);expect(c.currentAdBreak).toBeNull();case 3:return _context117.a(2)}},_callee117)})));it("is a no-op when no break is active",function(){var c=createController();var spy=jasmine.createSpy("adError");c.on("adError",spy);c.failAd(new Error("boom"));expect(spy).not.toHaveBeenCalled()})});describe("enterPostroll",function(){it("activates a pending postroll break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee118(){var _a3,_b,c;return _regenerator().w(function(_context118){while(1)switch(_context118.n){case 0:c=createController();_context118.n=1;return setContent(c,trackAds(makeBreak({id:"post",startTime:60,duration:10,placement:"postroll"})));case 1:updateTime(60);_context118.n=2;return flush();case 2:expect(c.currentAdBreak).toBeNull();_context118.n=3;return c.enterPostroll();case 3:expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("post");_context118.n=4;return flush();case 4:expect((_b=c.currentAd)==null?void 0:_b.id).toBe("a1");case 5:return _context118.a(2)}},_callee118)})))});describe("playback progress events",function(){it("dispatches adEntered and adPlaying",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee119(){var c,entered,playing;return _regenerator().w(function(_context119){while(1)switch(_context119.n){case 0:c=createController();entered=[];playing=[];c.on("adEntered",function(e){return entered.push(e.ad.id)});c.on("adPlaying",function(e){return playing.push(e.ad.id)});_context119.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(1);_context119.n=2;return flush();case 2:expect(entered).toEqual(["a1"]);playbackController.dispatch("playing",{});expect(playing).toEqual(["a1"]);case 3:return _context119.a(2)}},_callee119)})));it("dispatches adEnded when playback ends",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee120(){var c,ended;return _regenerator().w(function(_context120){while(1)switch(_context120.n){case 0:c=createController();ended=[];c.on("adEnded",function(e){return ended.push(e.ad.id)});_context120.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(1);_context120.n=2;return flush();case 2:playbackController.dispatch("ended",{previous:false,current:true});expect(ended).toEqual(["a1"]);expect(c.currentAdBreak).toBeNull();case 3:return _context120.a(2)}},_callee120)})));it("dispatches adFirstQuartile after 25% of the ad has played",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee121(){var c,quartiles;return _regenerator().w(function(_context121){while(1)switch(_context121.n){case 0:c=createController();quartiles=[];c.on("adFirstQuartile",function(e){return quartiles.push(e.ad.id)});_context121.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(0);_context121.n=2;return flush();case 2:playbackController.dispatch("playing",{});playbackController.duration=10;playbackController.playbackRate=1;playbackController.currentTimePercent=0.3;updateTime(3);_context121.n=3;return flush();case 3:expect(quartiles).toEqual(["a1"]);case 4:return _context121.a(2)}},_callee121)})));it("dispatches adMidpoint after 50% of the ad has played",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee122(){var c,midpoints;return _regenerator().w(function(_context122){while(1)switch(_context122.n){case 0:c=createController();midpoints=[];c.on("adMidpoint",function(e){return midpoints.push(e.playbackRateAvg)});_context122.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(0);_context122.n=2;return flush();case 2:playbackController.dispatch("playing",{});playbackController.duration=10;playbackController.playbackRate=1;playbackController.currentTimePercent=0.6;updateTime(6);_context122.n=3;return flush();case 3:expect(midpoints.length).toBe(1);case 4:return _context122.a(2)}},_callee122)})));it("dispatches adThirdQuartile after 75% of the ad has played",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee123(){var c,thirds;return _regenerator().w(function(_context123){while(1)switch(_context123.n){case 0:c=createController();thirds=[];c.on("adThirdQuartile",function(e){return thirds.push(e.ad.id)});_context123.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(0);_context123.n=2;return flush();case 2:playbackController.dispatch("playing",{});playbackController.duration=10;playbackController.playbackRate=1;playbackController.currentTimePercent=0.8;updateTime(8);_context123.n=3;return flush();case 3:expect(thirds).toEqual(["a1"]);case 4:return _context123.a(2)}},_callee123)})));it("does not emit quartiles or throw when the ad duration is zero",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee124(){var c,events;return _regenerator().w(function(_context124){while(1)switch(_context124.n){case 0:c=createController();events=[];c.on("adFirstQuartile",function(){return events.push("first")});c.on("adMidpoint",function(){return events.push("mid")});c.on("adThirdQuartile",function(){return events.push("third")});_context124.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(0);_context124.n=2;return flush();case 2:playbackController.dispatch("playing",{});playbackController.duration=0;playbackController.currentTimePercent=0.9;expect(function(){return updateTime(1)}).not.toThrow();_context124.n=3;return flush();case 3:expect(events).toEqual([]);case 4:return _context124.a(2)}},_callee124)})));it("fails the ad if it does not start within the load timeout",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee125(){var c,errors;return _regenerator().w(function(_context125){while(1)switch(_context125.n){case 0:c=new AdControllerImpl({playbackController:playbackController},{adLoadTimeout:0});errors=[];c.on("adError",function(e){return errors.push(e.error)});_context125.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(1);_context125.n=2;return flush();case 2:_context125.n=3;return new Promise(function(resolve){return setTimeout(resolve,5)});case 3:expect(errors.length).toBe(1);expect(c.currentAdBreak).toBeNull();case 4:return _context125.a(2)}},_callee125)})))});describe("edge cases",function(){it("tears down an active ad when the content track changes",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee126(){var _a3,c,entered,completedReasons;return _regenerator().w(function(_context126){while(1)switch(_context126.n){case 0:c=createController();_context126.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:updateTime(1);_context126.n=2;return flush();case 2:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");entered=[];completedReasons=[];c.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});c.on("adBreakCompleted",function(e){return completedReasons.push(e.reason)});_context126.n=3;return setContent(c,{trackUri:"t2",adBreaks:[]});case 3:expect(c.currentAd).toBeNull();expect(c.currentAdBreak).toBeNull();expect(entered).toEqual([]);expect(completedReasons).toEqual(["contentChange"]);case 4:return _context126.a(2)}},_callee126)})));it("does not emit a stray adEntered when the content swaps mid-resolve",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee127(){var c,resolveAds,enteredAds;return _regenerator().w(function(_context127){while(1)switch(_context127.n){case 0:c=createController();resolveAds=function resolveAds(){};enteredAds=[];c.on("adEntered",function(e){return enteredAds.push(e.ad.id)});_context127.n=1;return setContent(c,trackAds(makeBreak({startTime:10,ads:function ads(){return new Promise(function(resolve){resolveAds=resolve})}})));case 1:updateTime(10);_context127.n=2;return flush();case 2:_context127.n=3;return setContent(c,{trackUri:"t2",adBreaks:[]});case 3:resolveAds([defaultAd]);_context127.n=4;return flush();case 4:expect(enteredAds).toEqual([]);expect(c.currentAd).toBeNull();case 5:return _context127.a(2)}},_callee127)})));it("ignores an ended event when no ad is active",function(){var c=createController();var ended=jasmine.createSpy("adEnded");c.on("adEnded",ended);playbackController.dispatch("ended",{previous:false,current:true});expect(ended).not.toHaveBeenCalled()});it("does not start another ad while one is active",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee128(){var _a3,_b,c,track2;return _regenerator().w(function(_context128){while(1)switch(_context128.n){case 0:c=createController();_context128.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:10})));case 1:track2=_context128.v;updateTime(1);_context128.n=2;return flush();case 2:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");_context128.n=3;return refreshAds(track2,trackAds(makeBreak({id:"pre",startTime:0,placement:"preroll"})));case 3:expect((_b=c.currentAd)==null?void 0:_b.id).toBe("a1");case 4:return _context128.a(2)}},_callee128)})));it("enters the nearest preceding midroll on a forward crossing",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee129(){var _a3,c;return _regenerator().w(function(_context129){while(1)switch(_context129.n){case 0:c=createController();_context129.n=1;return setContent(c,trackAds(makeBreak({id:"near",startTime:5,duration:10}),makeBreak({id:"far",startTime:50,duration:10})));case 1:updateTime(6);_context129.n=2;return flush();case 2:expect((_a3=c.currentAdBreak)==null?void 0:_a3.id).toBe("near");case 3:return _context129.a(2)}},_callee129)})))});describe("X-RESUME-OFFSET resume position",function(){function resumesOf(c){var resumes=[];c.on("adBreakCompleted",function(e){return resumes.push(e.resumePosition)});return resumes}it("resumes at the scheduled start plus a present offset",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee130(){var _a3,c,resumes;return _regenerator().w(function(_context130){while(1)switch(_context130.n){case 0:c=createController();resumes=resumesOf(c);_context130.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:6,resumeOffset:5})));case 1:updateTime(10);_context130.n=2;return flush();case 2:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");c.skipAd();expect(resumes.at(-1)).toBe(15);case 3:return _context130.a(2)}},_callee130)})));it("treats a present offset of 0 as resume-in-place",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee131(){var c,resumes;return _regenerator().w(function(_context131){while(1)switch(_context131.n){case 0:c=createController();resumes=resumesOf(c);_context131.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:6,resumeOffset:0})));case 1:updateTime(10);_context131.n=2;return flush();case 2:c.skipAd();expect(resumes.at(-1)).toBe(10);case 3:return _context131.a(2)}},_callee131)})));it("clamps a negative offset to the natural resume position",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee132(){var c,resumes;return _regenerator().w(function(_context132){while(1)switch(_context132.n){case 0:c=createController();resumes=resumesOf(c);_context132.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:6,resumeOffset:-4})));case 1:updateTime(10);_context132.n=2;return flush();case 2:c.skipAd();expect(resumes.at(-1)).toBe(10);case 3:return _context132.a(2)}},_callee132)})));it("resumes at the cue point regardless of how long the ad played",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee133(){var c,resumes;return _regenerator().w(function(_context133){while(1)switch(_context133.n){case 0:c=createController();resumes=resumesOf(c);_context133.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:20,// Null per-ad duration so the per-ad cap does not end it.
2076
2076
  ads:[{id:"a1",startTime:0,duration:null,uri:"ad.m3u8"}]})));case 1:updateTime(10);_context133.n=2;return flush();case 2:playbackController.dispatch("playing",{});updateTime(16);playbackController.dispatch("ended",{previous:false,current:true});expect(resumes.at(-1)).toBe(10);case 3:return _context133.a(2)}},_callee133)})));it("resumes at the cue point even after a seek within the ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee134(){var c,resumes;return _regenerator().w(function(_context134){while(1)switch(_context134.n){case 0:c=createController();resumes=[];c.on("adBreakCompleted",function(e){return resumes.push(e.resumePosition)});_context134.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:20,ads:[{id:"a1",startTime:0,duration:null,uri:"ad.m3u8"}]})));case 1:updateTime(10);_context134.n=2;return flush();case 2:playbackController.dispatch("playing",{});seekTo(14);updateTime(18);playbackController.dispatch("ended",{previous:false,current:true});expect(resumes.at(-1)).toBe(10);case 3:return _context134.a(2)}},_callee134)})));it("parks a postroll resume at the content end, not past it",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee135(){var c,resumes;return _regenerator().w(function(_context135){while(1)switch(_context135.n){case 0:c=createController();resumes=[];c.on("adBreakCompleted",function(e){return resumes.push(e.resumePosition)});playbackController.duration=100;_context135.n=1;return setContent(c,trackAds(makeBreak({id:"post",startTime:100,duration:10,placement:"postroll",ads:[{id:"a1",startTime:0,duration:null,uri:"ad.m3u8"}]})));case 1:_context135.n=2;return c.enterPostroll();case 2:_context135.n=3;return flush();case 3:playbackController.dispatch("playing",{});playbackController.currentTime=8;playbackController.dispatch("ended",{previous:false,current:true});expect(resumes.at(-1)).toBe(100);case 4:return _context135.a(2)}},_callee135)})));it("preserves a forward seek into the break over the offset",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee136(){var c,resumes;return _regenerator().w(function(_context136){while(1)switch(_context136.n){case 0:c=createController();resumes=resumesOf(c);_context136.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:6,resumeOffset:2})));case 1:updateTime(13);_context136.n=2;return flush();case 2:c.skipAd();expect(resumes.at(-1)).toBe(13);case 3:return _context136.a(2)}},_callee136)})))});describe("ad duration and playout limits",function(){it("advances to the next ad when one reaches its declared duration",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee137(){var _a3,_b,c;return _regenerator().w(function(_context137){while(1)switch(_context137.n){case 0:c=createController();_context137.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:30,ads:[{id:"a1",startTime:0,duration:5,uri:"ad1.m3u8"},{id:"a2",startTime:0,duration:20,uri:"ad2.m3u8"}]})));case 1:updateTime(0);_context137.n=2;return flush();case 2:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");playbackController.dispatch("playing",{});updateTime(6);_context137.n=3;return flush();case 3:expect((_b=c.currentAd)==null?void 0:_b.id).toBe("a2");case 4:return _context137.a(2)}},_callee137)})));it("ends the whole break when the playout limit is reached, dropping remaining ads",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee138(){var _a3,c,resumes;return _regenerator().w(function(_context138){while(1)switch(_context138.n){case 0:c=createController();resumes=[];c.on("adBreakCompleted",function(e){return resumes.push(e.resumePosition)});_context138.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:null,playoutLimit:8,ads:[{id:"a1",startTime:0,duration:20,uri:"ad1.m3u8"},{id:"a2",startTime:0,duration:20,uri:"ad2.m3u8"}]})));case 1:updateTime(0);_context138.n=2;return flush();case 2:playbackController.dispatch("playing",{});updateTime(4);expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");updateTime(8);_context138.n=3;return flush();case 3:expect(c.currentAdBreak).toBeNull();expect(resumes.at(-1)).toBe(0);case 4:return _context138.a(2)}},_callee138)})))});describe("CUE=ONCE and replay",function(){it("replays a non-ONCE break after the playhead seeks back before it",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee139(){var _a3,_b,c;return _regenerator().w(function(_context139){while(1)switch(_context139.n){case 0:c=createController();_context139.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:6})));case 1:updateTime(11);_context139.n=2;return flush();case 2:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");c.skipAd();expect(c.currentAdBreak).toBeNull();seekTo(5);_context139.n=3;return flush();case 3:updateTime(11);_context139.n=4;return flush();case 4:expect((_b=c.currentAdBreak)==null?void 0:_b.id).toBe("b1");case 5:return _context139.a(2)}},_callee139)})));it("does not replay a ONCE break after a seek back",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee140(){var c;return _regenerator().w(function(_context140){while(1)switch(_context140.n){case 0:c=createController();_context140.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:6,once:true})));case 1:updateTime(11);_context140.n=2;return flush();case 2:c.skipAd();seekTo(5);_context140.n=3;return flush();case 3:updateTime(11);_context140.n=4;return flush();case 4:expect(c.currentAdBreak).toBeNull();case 5:return _context140.a(2)}},_callee140)})));it("does not replay a spent break on a non-user seek settle",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee141(){var c;return _regenerator().w(function(_context141){while(1)switch(_context141.n){case 0:c=createController();_context141.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:6})));case 1:updateTime(11);_context141.n=2;return flush();case 2:c.skipAd();playbackController.currentTime=0;playbackController.dispatch("seeked",{started:0,ended:0,duration:0,reason:"emptied"});_context141.n=3;return flush();case 3:updateTime(11);_context141.n=4;return flush();case 4:expect(c.currentAdBreak).toBeNull();case 5:return _context141.a(2)}},_callee141)})));it("does not replay a non-ONCE break when a seek stays at or after its start",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee142(){var c;return _regenerator().w(function(_context142){while(1)switch(_context142.n){case 0:c=createController();_context142.n=1;return setContent(c,trackAds(makeBreak({startTime:10,duration:6})));case 1:updateTime(11);_context142.n=2;return flush();case 2:c.skipAd();seekTo(12);_context142.n=3;return flush();case 3:updateTime(13);_context142.n=4;return flush();case 4:expect(c.currentAdBreak).toBeNull();case 5:return _context142.a(2)}},_callee142)})));it("permanently suppresses a completed preroll within the presentation",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee143(){var _a3,c,track2;return _regenerator().w(function(_context143){while(1)switch(_context143.n){case 0:c=createController();_context143.n=1;return setContent(c,trackAds(makeBreak({id:"pre",startTime:0,placement:"preroll"})));case 1:track2=_context143.v;_context143.n=2;return c.enterPreroll();case 2:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");c.skipAd();expect(c.currentAdBreak).toBeNull();_context143.n=3;return refreshAds(track2,trackAds(makeBreak({id:"pre",startTime:0,placement:"preroll"})));case 3:_context143.n=4;return c.enterPreroll();case 4:expect(c.currentAdBreak).toBeNull();case 5:return _context143.a(2)}},_callee143)})));it("suppresses a completed postroll so enterPostroll does not replay it",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee144(){var _a3,c,entered;return _regenerator().w(function(_context144){while(1)switch(_context144.n){case 0:c=createController();entered=[];c.on("adBreakEntered",function(e){entered.push(e.adBreak.id)});_context144.n=1;return setContent(c,trackAds(makeBreak({id:"post",startTime:60,duration:10,placement:"postroll"})));case 1:_context144.n=2;return c.enterPostroll();case 2:_context144.n=3;return flush();case 3:expect((_a3=c.currentAd)==null?void 0:_a3.id).toBe("a1");playbackController.dispatch("ended",{previous:false,current:true});expect(c.currentAdBreak).toBeNull();_context144.n=4;return c.enterPostroll();case 4:_context144.n=5;return flush();case 5:expect(c.currentAdBreak).withContext("postroll must not replay").toBeNull();expect(c.currentAd).toBeNull();expect(entered).toEqual(["post"]);case 6:return _context144.a(2)}},_callee144)})))});describe("adTimeUpdate",function(){function timingsOf(c){var seen=[];c.on("adTimeUpdate",function(e){return seen.push({adCurrentTime:e.adCurrentTime,adTimeRemaining:e.adTimeRemaining,breakCurrentTime:e.breakCurrentTime,breakTimeRemaining:e.breakTimeRemaining})});return seen}it("reports elapsed and remaining time for the ad and the break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee145(){var c,seen,last2;return _regenerator().w(function(_context145){while(1)switch(_context145.n){case 0:c=createController();seen=timingsOf(c);_context145.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:30,playoutLimit:20,ads:[{id:"a1",startTime:0,duration:10,uri:"ad.m3u8"}]})));case 1:updateTime(0);_context145.n=2;return flush();case 2:playbackController.dispatch("playing",{});updateTime(4);_context145.n=3;return flush();case 3:last2=seen.at(-1);expect(last2.adCurrentTime).toBe(4);expect(last2.adTimeRemaining).toBe(6);expect(last2.breakCurrentTime).toBe(4);expect(last2.breakTimeRemaining).toBe(16);case 4:return _context145.a(2)}},_callee145)})));it("falls back to the media duration when the ad duration is unknown",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee146(){var c,seen,last2;return _regenerator().w(function(_context146){while(1)switch(_context146.n){case 0:c=createController();seen=timingsOf(c);playbackController.duration=12;_context146.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:12,ads:[{id:"a1",startTime:0,duration:null,uri:"ad.m3u8"}]})));case 1:updateTime(0);_context146.n=2;return flush();case 2:playbackController.dispatch("playing",{});updateTime(5);_context146.n=3;return flush();case 3:last2=seen.at(-1);expect(last2.adTimeRemaining).toBe(7);expect(last2.breakTimeRemaining).toBe(7);case 4:return _context146.a(2)}},_callee146)})));it("reports null remaining when the ad and break durations are unknown",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee147(){var c,seen,last2;return _regenerator().w(function(_context147){while(1)switch(_context147.n){case 0:c=createController();seen=timingsOf(c);playbackController.duration=Infinity;_context147.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:null,playoutLimit:null,resolutionTimeOffset:null,ads:[{id:"a1",startTime:0,duration:null,uri:"ad.m3u8"}]})));case 1:updateTime(0);_context147.n=2;return flush();case 2:playbackController.dispatch("playing",{});updateTime(3);_context147.n=3;return flush();case 3:last2=seen.at(-1);expect(last2.adCurrentTime).toBe(3);expect(last2.adTimeRemaining).toBeNull();expect(last2.breakTimeRemaining).toBeNull();case 4:return _context147.a(2)}},_callee147)})));it("caps ad time remaining by the break playout limit",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee148(){var c,seen,last2;return _regenerator().w(function(_context148){while(1)switch(_context148.n){case 0:c=createController();seen=timingsOf(c);_context148.n=1;return setContent(c,trackAds(makeBreak({startTime:0,duration:8,playoutLimit:8,ads:[{id:"a1",startTime:0,// Natural duration exceeds the playout limit, so
2077
2077
  // the ad is cut off at the limit and the reported
2078
2078
  // total must reflect that (not the full 20s).
@@ -2191,7 +2191,7 @@ describe("parseWebVtt",function(){it("parses a minimal cue",function(){var text=
2191
2191
  "00:00:01.0"// truncated timestamp at end of input
2192
2192
  ];_i38<_arr7.length;_i38++){_loop18()}var _loop19=function _loop19(){var identifier=_arr8[_i39];it("treats keyword prefix \"".concat(identifier,"\" as an identifier"),function(){var cues=parseWebVtt("WEBVTT\n\n".concat(identifier,"\n00:00:01.000 --> 00:00:02.000\nhi")).cues;expect(cues.length).toBe(1);expect(cues[0].id).toBe(identifier)})};for(var _i39=0,_arr8=["NOTES","REGIONAL","STYLES"];_i39<_arr8.length;_i39++){_loop19()}it("normalizes CRLF line endings and splits CRLF-separated cues",function(){var text="WEBVTT\r\n\r\n00:00:01.000 --> 00:00:02.000\r\nline one\r\nline two\r\n\r\n00:00:03.000 --> 00:00:04.000\r\nsecond";expect(parseWebVtt(text).cues.map(function(c){return c.text})).toEqual(["line one\nline two","second"])});it("accepts a NOTE block at end of input",function(){expect(parseWebVtt("WEBVTT\n\nNOTE").cues).toEqual([])});it("handles input that ends mid-timestamp",function(){expect(parseWebVtt("WEBVTT\n\n00:00:00.000 --> 00:00:0").cues).toEqual([])});it("returns empty cues on header-only input",function(){expect(parseWebVtt("WEBVTT\n").cues).toEqual([])});it("throws on missing header",function(){expect(function(){return parseWebVtt("not a vtt file")}).toThrowMatching(function(e){return e instanceof ValidationError})});it("throws on non-string input",function(){expect(function(){return parseWebVtt(void 0)}).toThrowMatching(function(e){return e instanceof ValidationError})});it("accepts header followed by extra description",function(){var text="WEBVTT - English subtitles\n\n00:00:01.000 --> 00:00:02.000\nhi";expect(parseWebVtt(text).cues.length).toBe(1)});it("accepts header followed by tab",function(){var text="WEBVTT\t\n\n00:00:01.000 --> 00:00:02.000\nhi";expect(parseWebVtt(text).cues.length).toBe(1)});it("skips an HLS X-TIMESTAMP-MAP header line",function(){var text="WEBVTT\nX-TIMESTAMP-MAP=LOCAL:00:00:00.000,MPEGTS:900000\n\n00:00:00.250 --> 00:00:00.879\nWelcome,\n\n00:00:01.000 --> 00:00:02.000\nhi";var cues=parseWebVtt(text).cues;expect(cues.length).toBe(2);expect(cues[0].text).toBe("Welcome,");expect(cues[1].text).toBe("hi")});it("skips WebVTT metadata header lines",function(){var text="WEBVTT\nKind: captions\nLanguage: en\n\n00:00:01.000 --> 00:00:02.000\nhi";var cues=parseWebVtt(text).cues;expect(cues.length).toBe(1);expect(cues[0].text).toBe("hi")});it("handles trailing identifier without timing line",function(){var text="WEBVTT\n\ntrailing-id";expect(parseWebVtt(text).cues).toEqual([])})});// test/unit/text/pickPreferredTextTrack.test.ts
2193
2193
  var nextId=0;function track(){var overrides=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return __spreadValues({id:"t".concat(nextId++),kind:"subtitles",language:"en",label:"","default":false,forced:false,characteristics:[],uri:"x.vtt",mimeType:null},overrides)}describe("pickPreferredTextTrack",function(){it("falls back to navigator.languages when the preference is null",function(){setMockNavigator().languages=["en"];var en=track({id:"en",language:"en"});expect(pickPreferredTextTrack([en],null)).toBe(en)});it("returns null when no track relates to navigator.languages",function(){setMockNavigator().languages=["en"];expect(pickPreferredTextTrack([track({language:"ja"})],null)).toBeNull()});it("returns null for a null preference when navigator is unavailable",function(){spyOnPropertySafe(globalThis,"navigator").and.returnValue(void 0);expect(pickPreferredTextTrack([track()],null)).toBeNull()});it("returns null when there are no tracks",function(){expect(pickPreferredTextTrack([],"en")).toBeNull()});it("selects the track matching the preferred language",function(){var en=track({id:"en",language:"en"});var es=track({id:"es",language:"es"});expect(pickPreferredTextTrack([es,en],"en")).toBe(en)});it("returns null when no track relates to the preference",function(){expect(pickPreferredTextTrack([track({language:"es"})],"ja")).toBeNull()});it("ignores tracks without a language tag",function(){expect(pickPreferredTextTrack([track({language:null})],"en")).toBeNull()});it("prefers a full track over a forced-only track of the same language",function(){var forced=track({id:"forced",language:"en",forced:true});var full=track({id:"full",language:"en",forced:false});expect(pickPreferredTextTrack([forced,full],"en")).toBe(full)});it("breaks a remaining tie by the manifest-default flag",function(){var a=track({id:"a",language:"en","default":false});var b=track({id:"b",language:"en","default":true});expect(pickPreferredTextTrack([a,b],"en")).toBe(b)});it("honors preference order, earlier entries winning",function(){var en=track({id:"en",language:"en"});var fr=track({id:"fr",language:"fr"});expect(pickPreferredTextTrack([en,fr],["fr","en"])).toBe(fr);expect(pickPreferredTextTrack([en,fr],["en","fr"])).toBe(en)});it("matches a related language when no exact match exists",function(){var enUs=track({id:"en-US",language:"en-US"});var es=track({id:"es",language:"es"});expect(pickPreferredTextTrack([es,enUs],"en")).toBe(enUs)});it("prefers a closer language match over a more distant one",function(){var enUs=track({id:"en-US",language:"en-US"});var enGb=track({id:"en-GB",language:"en-GB"});expect(pickPreferredTextTrack([enGb,enUs],"en-US")).toBe(enUs)})});// test/unit/text/SidecarTextTrackController.test.ts
2194
- function flushUntil(_x110){return _flushUntil.apply(this,arguments)}function _flushUntil(){_flushUntil=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee975(predicate){var i;return _regenerator().w(function(_context976){while(1)switch(_context976.n){case 0:i=0;case 1:if(!(i<100&&!predicate())){_context976.n=3;break}_context976.n=2;return flushPromises();case 2:i++;_context976.n=1;break;case 3:return _context976.a(2)}},_callee975)}));return _flushUntil.apply(this,arguments)}var FakeTextTrackProvider=/*#__PURE__*/function(){function FakeTextTrackProvider(){var _this174=this;_classCallCheck(this,FakeTextTrackProvider);// Every distinct track created (one per rendition key).
2194
+ function flushUntil(_x110){return _flushUntil.apply(this,arguments)}function _flushUntil(){_flushUntil=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee979(predicate){var i;return _regenerator().w(function(_context980){while(1)switch(_context980.n){case 0:i=0;case 1:if(!(i<100&&!predicate())){_context980.n=3;break}_context980.n=2;return flushPromises();case 2:i++;_context980.n=1;break;case 3:return _context980.a(2)}},_callee979)}));return _flushUntil.apply(this,arguments)}var FakeTextTrackProvider=/*#__PURE__*/function(){function FakeTextTrackProvider(){var _this174=this;_classCallCheck(this,FakeTextTrackProvider);// Every distinct track created (one per rendition key).
2195
2195
  __publicField(this,"created",[]);// The track handed out by the most recent getOrCreate (the active one).
2196
2196
  __publicField(this,"lastTrack",null);__publicField(this,"cache",/* @__PURE__ */new Map);__publicField(this,"getOrCreate",jasmine.createSpy("getOrCreate").and.callFake(function(kind,label,language){var key="".concat(kind,"-").concat(label,"-").concat(language);var existing=_this174.cache.get(key);if(existing){_this174.lastTrack=existing.track;return existing}var storedCues=[];var track2={kind:kind,label:label!=null?label:"",language:language!=null?language:"",mode:"disabled",storedCues:storedCues,// Real TextTrack.cues returns null when mode is 'disabled'.
2197
2197
  get cues(){return this.mode==="disabled"?null:storedCues},addCue:function addCue(cue){storedCues.push(cue)},removeCue:function removeCue(cue){var i=storedCues.indexOf(cue);if(i>=0)storedCues.splice(i,1)}};var ref={track:track2,clear:function clear(){if(track2.mode==="disabled")return;storedCues.length=0}};_this174.created.push(track2);_this174.cache.set(key,ref);_this174.lastTrack=track2;return ref}))}/** Tracks currently rendering captions (showing with at least one cue). */return _createClass(FakeTextTrackProvider,[{key:"showingWithCues",value:function showingWithCues(){return this.created.filter(function(t){var _a3,_b;return t.mode==="showing"&&((_b=(_a3=t.cues)==null?void 0:_a3.length)!=null?_b:0)>0})}}])}();function makeTrack(){var overrides=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return __spreadValues({id:"a",kind:"subtitles",language:"en",label:"English","default":false,forced:false,characteristics:[],uri:"https://x.test/a.vtt",mimeType:"text/vtt"},overrides)}describe("SidecarTextTrackController",function(){var requester;var originalCue;var disposers=[];function build(opts){var _a3;var provider=new FakeTextTrackProvider;var textTracks$=data(Promise.resolve([]));var options$=data((_a3=opts==null?void 0:opts.options)!=null?_a3:{selection:{}});var playback={currentTime:0};var controller=new SidecarTextTrackController({textTrackProvider:provider,textTracks:textTracks$,options:options$,playbackController:playback,requestInit:opts==null?void 0:opts.requestInit,textTrackRenderer:opts==null?void 0:opts.textTrackRenderer});if((opts==null?void 0:opts.activate)!==false)controller.activate();disposers.push(function(){return controller.dispose()});return{controller:controller,provider:provider,options$:options$,textTracks$:textTracks$,playback:playback,setTracks:function setTracks(tracks){return _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee588(){return _regenerator().w(function(_context588){while(1)switch(_context588.n){case 0:textTracks$.value=Promise.resolve(tracks);_context588.n=1;return flushPromises();case 1:return _context588.a(2)}},_callee588)}))()},select:function select(selection){options$.value=__spreadProps(__spreadValues({},options$.value),{selection:selection})}}}beforeEach(function(){requester=new MockRequester;requesterWithRetryRef.set(function(){return requester});originalCue=globalThis.VTTCue;globalThis.VTTCue=function VTTCue2(startTime,endTime,text){this.startTime=startTime;this.endTime=endTime;this.text=text;this.id="";this.size=100}});afterEach(function(){var _iterator115=_createForOfIteratorHelper(disposers.splice(0)),_step115;try{for(_iterator115.s();!(_step115=_iterator115.n()).done;){var dispose=_step115.value;dispose()}}catch(err){_iterator115.e(err)}finally{_iterator115.f()}globalThis.VTTCue=originalCue});function respondVtt(body){requester.request.and.resolveTo(new Response(body))}it("starts with no tracks and no active selection",function(){var _build=build(),controller=_build.controller;expect(controller.textTracks).toEqual([]);expect(controller.activeTextTrack).toBeNull()});describe("resolveSelectedTrack",function(){var full=makeTrack({id:"full",language:"en",forced:false});var forced=makeTrack({id:"forced",language:"en",forced:true});var captions=makeTrack({id:"cc",language:"en",forced:false,kind:"captions"});it("renders nothing when enabled is 'off' (even with an id)",function(){expect(resolveSelectedTrack([full,forced],{enabled:"off",selection:{id:"full"}})).toBeNull()});it("enabled 'on' selects the full track",function(){var _a3;expect((_a3=resolveSelectedTrack([full,forced],{enabled:"on",selection:{language:"en"}}))==null?void 0:_a3.id).toBe("full")});it("enabled 'forced' selects the forced track",function(){var _a3;expect((_a3=resolveSelectedTrack([full,forced],{enabled:"forced",selection:{language:"en"}}))==null?void 0:_a3.id).toBe("forced")});it("selection.forced overrides the enabled mode",function(){var _a3;expect((_a3=resolveSelectedTrack([full,forced],{enabled:"on",selection:{language:"en",forced:true}}))==null?void 0:_a3.id).toBe("forced")});it("an explicit id wins over other criteria",function(){var _a3;expect((_a3=resolveSelectedTrack([full,forced],{selection:{id:"forced",language:"en",forced:false}}))==null?void 0:_a3.id).toBe("forced")});it("unknown id selects nothing",function(){expect(resolveSelectedTrack([full],{selection:{id:"nope"}})).toBeNull()});it("forced defaults to true (only forced tracks)",function(){var _a3;expect((_a3=resolveSelectedTrack([full,forced],{selection:{language:"en"}}))==null?void 0:_a3.id).toBe("forced")});it("forced:false selects the full track",function(){var _a3;expect((_a3=resolveSelectedTrack([full,forced],{selection:{language:"en",forced:false}}))==null?void 0:_a3.id).toBe("full")});it("kind restricts the candidate pool",function(){var _a3;expect((_a3=resolveSelectedTrack([full,captions],{selection:{language:"en",forced:false,kind:"captions"}}))==null?void 0:_a3.id).toBe("cc")});it("falls back to navigator.languages when no language is given",function(){var _a3;expect((_a3=resolveSelectedTrack([full],{selection:{forced:false}}))==null?void 0:_a3.id).toBe("full")});it("an ordered language list prefers earlier entries",function(){var _a3;var es=makeTrack({id:"es",language:"es",forced:false});expect((_a3=resolveSelectedTrack([full,es],{selection:{language:["es","en"],forced:false}}))==null?void 0:_a3.id).toBe("es")})});it("selecting a known id loads cues and creates a TextTrack",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee589(){var _a3,_b,_c,_d,h,activeChange;return _regenerator().w(function(_context589){while(1)switch(_context589.n){case 0:respondVtt("WEBVTT\n\n00:00:01.000 --> 00:00:02.000\nfirst");h=build({options:{selection:{id:"a"}}});activeChange=jasmine.createSpy();h.controller.on("activeTextTrackChange",activeChange);_context589.n=1;return h.setTracks([makeTrack()]);case 1:expect((_a3=h.controller.activeTextTrack)==null?void 0:_a3.id).toBe("a");expect(activeChange).toHaveBeenCalledTimes(1);_context589.n=2;return flushUntil(function(){var _a4,_b2,_c2;return((_c2=(_b2=(_a4=h.provider.lastTrack)==null?void 0:_a4.cues)==null?void 0:_b2.length)!=null?_c2:0)>0});case 2:expect(h.provider.getOrCreate).toHaveBeenCalledWith("subtitles","English","en");expect((_b=h.provider.lastTrack)==null?void 0:_b.mode).toBe("showing");expect((_d=(_c=h.provider.lastTrack)==null?void 0:_c.cues)==null?void 0:_d.length).toBe(1);case 3:return _context589.a(2)}},_callee589)})));describe("authored cue settings",function(){it("applies the cue's own parsed settings to the VTTCue",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee590(){var _a3,_b,h,cue;return _regenerator().w(function(_context590){while(1)switch(_context590.n){case 0:respondVtt("WEBVTT\n\n00:00:01.000 --> 00:00:02.000 align:left size:80%\nx");h=build({options:{selection:{id:"a"}}});_context590.n=1;return h.setTracks([makeTrack()]);case 1:_context590.n=2;return flushUntil(function(){var _a4,_b2,_c;return((_c=(_b2=(_a4=h.provider.lastTrack)==null?void 0:_a4.cues)==null?void 0:_b2.length)!=null?_c:0)>0});case 2:cue=(_b=(_a3=h.provider.lastTrack)==null?void 0:_a3.cues)==null?void 0:_b[0];expect(cue.align).toBe("left");expect(cue.size).toBe(80);case 3:return _context590.a(2)}},_callee590)})));it("leaves the cue at defaults when it declares no settings",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee591(){var _a3,_b,h,cue;return _regenerator().w(function(_context591){while(1)switch(_context591.n){case 0:respondVtt("WEBVTT\n\n00:00:01.000 --> 00:00:02.000\nx");h=build({options:{selection:{id:"a"}}});_context591.n=1;return h.setTracks([makeTrack()]);case 1:_context591.n=2;return flushUntil(function(){var _a4,_b2,_c;return((_c=(_b2=(_a4=h.provider.lastTrack)==null?void 0:_a4.cues)==null?void 0:_b2.length)!=null?_c:0)>0});case 2:cue=(_b=(_a3=h.provider.lastTrack)==null?void 0:_a3.cues)==null?void 0:_b[0];expect(cue.size).toBe(100);case 3:return _context591.a(2)}},_callee591)})));it("does not apply settings to non-VTTCue cues",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee592(){var _a3,_b,h,cue;return _regenerator().w(function(_context592){while(1)switch(_context592.n){case 0:;globalThis.VTTCue=void 0;globalThis.TextTrackCue=function TextTrackCue(start,end,text){this.startTime=start;this.endTime=end;this.text=text;this.id="";this.size=100};respondVtt("WEBVTT\n\n00:00:01.000 --> 00:00:02.000 size:80%\nignored");h=build({options:{selection:{id:"a"}}});_context592.n=1;return h.setTracks([makeTrack()]);case 1:_context592.n=2;return flushUntil(function(){var _a4,_b2,_c;return((_c=(_b2=(_a4=h.provider.lastTrack)==null?void 0:_a4.cues)==null?void 0:_b2.length)!=null?_c:0)>0});case 2:cue=(_b=(_a3=h.provider.lastTrack)==null?void 0:_a3.cues)==null?void 0:_b[0];expect(cue.size).toBe(100);globalThis.TextTrackCue=void 0;case 3:return _context592.a(2)}},_callee592)})))});describe("text track renderer",function(){function fakeRenderer(){return{setTextTrack:jasmine.createSpy("setTextTrack"),setStyles:jasmine.createSpy("setStyles")}}it("keeps the DOM track 'hidden' and hands it to the renderer",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee593(){var _a3,renderer,h;return _regenerator().w(function(_context593){while(1)switch(_context593.n){case 0:respondVtt("WEBVTT\n\n00:00:01.000 --> 00:00:02.000\nx");renderer=fakeRenderer();h=build({options:{selection:{id:"a"}},textTrackRenderer:renderer});_context593.n=1;return h.setTracks([makeTrack()]);case 1:_context593.n=2;return flushUntil(function(){var _a4,_b,_c;return((_c=(_b=(_a4=h.provider.lastTrack)==null?void 0:_a4.cues)==null?void 0:_b.length)!=null?_c:0)>0});case 2:expect((_a3=h.provider.lastTrack)==null?void 0:_a3.mode).toBe("hidden");expect(renderer.setTextTrack).toHaveBeenCalledWith(h.provider.lastTrack);case 3:return _context593.a(2)}},_callee593)})));it("detaches the renderer when captions are turned off",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee594(){var renderer,h;return _regenerator().w(function(_context594){while(1)switch(_context594.n){case 0:respondVtt("WEBVTT\n\n00:00:01.000 --> 00:00:02.000\nx");renderer=fakeRenderer();h=build({options:{selection:{id:"a"}},textTrackRenderer:renderer});_context594.n=1;return h.setTracks([makeTrack()]);case 1:_context594.n=2;return flushUntil(function(){var _a3,_b,_c;return((_c=(_b=(_a3=h.provider.lastTrack)==null?void 0:_a3.cues)==null?void 0:_b.length)!=null?_c:0)>0});case 2:renderer.setTextTrack.calls.reset();h.options$.value={enabled:"off"};expect(renderer.setTextTrack).toHaveBeenCalledWith(null);case 3:return _context594.a(2)}},_callee594)})));it("forwards authored STYLE blocks to the renderer",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee595(){var renderer,h;return _regenerator().w(function(_context595){while(1)switch(_context595.n){case 0:respondVtt("WEBVTT\n\nSTYLE\n::cue { color: red }\n\n00:00:01.000 --> 00:00:02.000\nx");renderer=fakeRenderer();h=build({options:{selection:{id:"a"}},textTrackRenderer:renderer});_context595.n=1;return h.setTracks([makeTrack()]);case 1:_context595.n=2;return flushUntil(function(){return renderer.setStyles.calls.count()>0});case 2:expect(renderer.setStyles).toHaveBeenCalledWith(["::cue { color: red }"]);case 3:return _context595.a(2)}},_callee595)})));it("ignores styles that arrive after the load is cancelled",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee596(){var resolveFetch,renderer,h;return _regenerator().w(function(_context596){while(1)switch(_context596.n){case 0:resolveFetch=function resolveFetch(){};requester.request.and.returnValue(new Promise(function(res){resolveFetch=res}));renderer=fakeRenderer();h=build({options:{selection:{id:"a"}},textTrackRenderer:renderer});_context596.n=1;return h.setTracks([makeTrack()]);case 1:h.options$.value={enabled:"off"};renderer.setStyles.calls.reset();resolveFetch(new Response("WEBVTT\n\nSTYLE\n::cue { color: red }\n\n00:00:01.000 --> 00:00:02.000\nx"));_context596.n=2;return flushPromises();case 2:expect(renderer.setStyles).not.toHaveBeenCalled();case 3:return _context596.a(2)}},_callee596)})));it("works with a renderer that cannot consume styles",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee597(){var renderer,h;return _regenerator().w(function(_context597){while(1)switch(_context597.n){case 0:respondVtt("WEBVTT\n\nSTYLE\n::cue { color: red }\n\n00:00:01.000 --> 00:00:02.000\nx");renderer={setTextTrack:jasmine.createSpy("setTextTrack")};h=build({options:{selection:{id:"a"}},textTrackRenderer:renderer});_context597.n=1;return h.setTracks([makeTrack()]);case 1:_context597.n=2;return flushUntil(function(){var _a3,_b,_c;return((_c=(_b=(_a3=h.provider.lastTrack)==null?void 0:_a3.cues)==null?void 0:_b.length)!=null?_c:0)>0});case 2:expect(renderer.setTextTrack).toHaveBeenCalled();case 3:return _context597.a(2)}},_callee597)})));it("renders natively ('showing') when no renderer is injected",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee598(){var _a3,h;return _regenerator().w(function(_context598){while(1)switch(_context598.n){case 0:respondVtt("WEBVTT\n\n00:00:01.000 --> 00:00:02.000\nx");h=build({options:{selection:{id:"a"}}});_context598.n=1;return h.setTracks([makeTrack()]);case 1:_context598.n=2;return flushUntil(function(){var _a4,_b,_c;return((_c=(_b=(_a4=h.provider.lastTrack)==null?void 0:_a4.cues)==null?void 0:_b.length)!=null?_c:0)>0});case 2:expect((_a3=h.provider.lastTrack)==null?void 0:_a3.mode).toBe("showing");case 3:return _context598.a(2)}},_callee598)})))});it("preserves cue id when present",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee599(){var _a3,_b,h,cue;return _regenerator().w(function(_context599){while(1)switch(_context599.n){case 0:respondVtt("WEBVTT\n\nidA\n00:00:01.000 --> 00:00:02.000\nfirst");h=build({options:{selection:{id:"a"}}});_context599.n=1;return h.setTracks([makeTrack()]);case 1:_context599.n=2;return flushUntil(function(){var _a4,_b2,_c;return((_c=(_b2=(_a4=h.provider.lastTrack)==null?void 0:_a4.cues)==null?void 0:_b2.length)!=null?_c:0)>0});case 2:cue=(_b=(_a3=h.provider.lastTrack)==null?void 0:_a3.cues)==null?void 0:_b[0];expect(cue.id).toBe("idA");case 3:return _context599.a(2)}},_callee599)})));it("dedupes cues that appear in more than one segment",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee600(){var _a3,_b,playlistBody,segA,segB,call,h,texts;return _regenerator().w(function(_context600){while(1)switch(_context600.n){case 0:playlistBody="#EXTM3U\n#EXT-X-TARGETDURATION:5\n#EXTINF:5.0,\na.vtt\n#EXTINF:5.0,\nb.vtt\n#EXT-X-ENDLIST\n";segA="WEBVTT\n\n00:00:00.500 --> 00:00:01.500\nonly-a\n\n00:00:04.500 --> 00:00:05.500\nshared";segB="WEBVTT\n\n00:00:04.500 --> 00:00:05.500\nshared\n\n00:00:07.000 --> 00:00:08.000\nonly-b";call=0;requester.request.and.callFake(function(){call++;if(call===1)return Promise.resolve(new Response(playlistBody));if(call===2)return Promise.resolve(new Response(segA));return Promise.resolve(new Response(segB))});h=build({options:{selection:{id:"a"}}});_context600.n=1;return h.setTracks([makeTrack({uri:"https://x.test/sub.m3u8"})]);case 1:_context600.n=2;return flushUntil(function(){var _a4,_b2,_c;return((_c=(_b2=(_a4=h.provider.lastTrack)==null?void 0:_a4.cues)==null?void 0:_b2.length)!=null?_c:0)>=3});case 2:texts=((_b=(_a3=h.provider.lastTrack)==null?void 0:_a3.cues)!=null?_b:[]).map(function(c){return c.text});expect(texts).toEqual(["only-a","shared","only-b"]);case 3:return _context600.a(2)}},_callee600)})));it("selecting an unknown id renders nothing and stays inactive",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee601(){var handler,h;return _regenerator().w(function(_context601){while(1)switch(_context601.n){case 0:handler=jasmine.createSpy();h=build({options:{selection:{id:"unknown"}}});h.controller.on("activeTextTrackChange",handler);_context601.n=1;return h.setTracks([makeTrack()]);case 1:expect(handler).not.toHaveBeenCalled();expect(h.controller.activeTextTrack).toBeNull();expect(h.provider.getOrCreate).not.toHaveBeenCalled();case 2:return _context601.a(2)}},_callee601)})));it("disabling clears the current active track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee602(){var _a3,h;return _regenerator().w(function(_context602){while(1)switch(_context602.n){case 0:respondVtt("WEBVTT\n");h=build({options:{selection:{id:"a"}}});_context602.n=1;return h.setTracks([makeTrack()]);case 1:expect((_a3=h.controller.activeTextTrack)==null?void 0:_a3.id).toBe("a");h.options$.value={enabled:"off"};expect(h.controller.activeTextTrack).toBeNull();case 2:return _context602.a(2)}},_callee602)})));it("clears active selection when its track is removed",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee603(){var _a3,h,t1,t2;return _regenerator().w(function(_context603){while(1)switch(_context603.n){case 0:respondVtt("WEBVTT\n");h=build({options:{selection:{id:"a"}}});t1=makeTrack({id:"a"});t2=makeTrack({id:"b",uri:"https://x.test/b.vtt"});_context603.n=1;return h.setTracks([t1,t2]);case 1:expect((_a3=h.controller.activeTextTrack)==null?void 0:_a3.id).toBe("a");_context603.n=2;return h.setTracks([t2]);case 2:expect(h.controller.activeTextTrack).toBeNull();case 3:return _context603.a(2)}},_callee603)})));it("keeps the active selection when the list updates with it still present",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee604(){var _a3,_b,h,t1,t2;return _regenerator().w(function(_context604){while(1)switch(_context604.n){case 0:respondVtt("WEBVTT\n");h=build({options:{selection:{id:"a"}}});t1=makeTrack({id:"a"});t2=makeTrack({id:"b"});_context604.n=1;return h.setTracks([t1]);case 1:expect((_a3=h.controller.activeTextTrack)==null?void 0:_a3.id).toBe("a");_context604.n=2;return h.setTracks([t1,t2]);case 2:expect((_b=h.controller.activeTextTrack)==null?void 0:_b.id).toBe("a");case 3:return _context604.a(2)}},_callee604)})));it("emits textTrackError on fetch failure",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee605(){var h,onError,t,arg;return _regenerator().w(function(_context605){while(1)switch(_context605.n){case 0:requester.request.and.rejectWith(new Error("boom"));h=build({options:{selection:{id:"a"}}});onError=jasmine.createSpy("textTrackError");h.controller.on("textTrackError",onError);t=makeTrack();_context605.n=1;return h.setTracks([t]);case 1:_context605.n=2;return flushUntil(function(){return onError.calls.count()>0});case 2:expect(onError).toHaveBeenCalledTimes(1);arg=onError.calls.mostRecent().args[0];expect(arg.track).toBe(t);expect(arg.error.message).toBe("boom");case 3:return _context605.a(2)}},_callee605)})));it("wraps non-Error rejections",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee606(){var h,onError;return _regenerator().w(function(_context606){while(1)switch(_context606.n){case 0:requester.request.and.rejectWith("plain");h=build({options:{selection:{id:"a"}}});onError=jasmine.createSpy();h.controller.on("textTrackError",onError);_context606.n=1;return h.setTracks([makeTrack()]);case 1:_context606.n=2;return flushUntil(function(){return onError.calls.count()>0});case 2:expect(onError.calls.mostRecent().args[0].error.message).toBe("plain");case 3:return _context606.a(2)}},_callee606)})));it("drops cues that arrive after the load has been cancelled",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee607(){var _a3,resolveFetch,h,track2;return _regenerator().w(function(_context607){while(1)switch(_context607.n){case 0:resolveFetch=function resolveFetch(){};requester.request.and.returnValue(new Promise(function(res){resolveFetch=res}));h=build({options:{selection:{id:"a"}}});_context607.n=1;return h.setTracks([makeTrack()]);case 1:track2=h.provider.lastTrack;h.options$.value={enabled:"off"};resolveFetch(new Response("WEBVTT\n\n00:00:00.500 --> 00:00:01.500\npost"));_context607.n=2;return flushPromises();case 2:expect((_a3=track2==null?void 0:track2.storedCues.length)!=null?_a3:0).toBe(0);case 3:return _context607.a(2)}},_callee607)})));it("does not emit textTrackError when a load is cancelled by switching",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee608(){var rejectFirst,callCount,h,onError;return _regenerator().w(function(_context608){while(1)switch(_context608.n){case 0:rejectFirst=function rejectFirst(){};callCount=0;requester.request.and.callFake(function(){return new Promise(function(_,rej){callCount++;if(callCount===1)rejectFirst=rej;else rej(new Error("unused"))})});h=build({options:{selection:{id:"a"}}});onError=jasmine.createSpy("textTrackError");h.controller.on("textTrackError",onError);_context608.n=1;return h.setTracks([makeTrack()]);case 1:h.options$.value={enabled:"off"};rejectFirst(new Error("would-be error"));_context608.n=2;return flushPromises();case 2:expect(onError).not.toHaveBeenCalled();case 3:return _context608.a(2)}},_callee608)})));it("switching language reuses the per-rendition track and swaps its cues",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee609(){var _a3,call,en,es,h,enTrack;return _regenerator().w(function(_context609){while(1)switch(_context609.n){case 0:call=0;requester.request.and.callFake(function(){call++;return Promise.resolve(new Response(call===1?"WEBVTT\n\n00:00:00.500 --> 00:00:01.500\none":"WEBVTT\n\n00:00:01.000 --> 00:00:02.000\ntwo"))});en=makeTrack({id:"en",language:"en",label:"English"});es=makeTrack({id:"es",language:"es",label:"Espanol",uri:"https://x.test/es.vtt"});h=build({options:{selection:{id:"en"}}});_context609.n=1;return h.setTracks([en,es]);case 1:_context609.n=2;return flushUntil(function(){var _a4,_b,_c;return((_c=(_b=(_a4=h.provider.lastTrack)==null?void 0:_a4.cues)==null?void 0:_b.length)!=null?_c:0)>0});case 2:enTrack=h.provider.lastTrack;h.select({id:"es"});expect(enTrack==null?void 0:enTrack.storedCues.length).toBe(0);expect(enTrack==null?void 0:enTrack.mode).toBe("disabled");_context609.n=3;return flushUntil(function(){var _a4,_b,_c;return h.provider.lastTrack!==enTrack&&((_c=(_b=(_a4=h.provider.lastTrack)==null?void 0:_a4.cues)==null?void 0:_b.length)!=null?_c:0)>0});case 3:expect(h.provider.lastTrack).not.toBe(enTrack);expect((_a3=h.provider.lastTrack)==null?void 0:_a3.language).toBe("es");expect(h.provider.showingWithCues().length).toBe(1);case 4:return _context609.a(2)}},_callee609)})));it("cycling languages never accumulates or double-shows cues",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee610(){var langs,h,_i40,_arr9,id;return _regenerator().w(function(_context610){while(1)switch(_context610.n){case 0:requester.request.and.callFake(function(){return Promise.resolve(new Response("WEBVTT\n\n00:00:01.000 --> 00:00:02.000\ncue"))});langs=["en","es","ja"].map(function(language){return makeTrack({id:language,language:language,uri:"https://x.test/".concat(language,".vtt")})});h=build({options:{selection:{id:"en"}}});_context610.n=1;return h.setTracks(langs);case 1:_i40=0,_arr9=["en","es","ja","en"];case 2:if(!(_i40<_arr9.length)){_context610.n=5;break}id=_arr9[_i40];h.select({id:id});_context610.n=3;return flushUntil(function(){var _a3,_b,_c;return((_c=(_b=(_a3=h.provider.lastTrack)==null?void 0:_a3.cues)==null?void 0:_b.length)!=null?_c:0)>0});case 3:expect(h.provider.showingWithCues().length).withContext("after selecting ".concat(id)).toBe(1);case 4:_i40++;_context610.n=2;break;case 5:expect(h.provider.created.length).toBe(3);case 6:return _context610.a(2)}},_callee610)})));it("deactivate hides the DOM track and activate rebuilds it, keeping the selection",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee611(){var _a3,_b,_c,_d,h,track2;return _regenerator().w(function(_context611){while(1)switch(_context611.n){case 0:requester.request.and.callFake(function(){return Promise.resolve(new Response("WEBVTT\n\n00:00:01.000 --> 00:00:02.000\none"))});h=build({options:{selection:{id:"a"}}});_context611.n=1;return h.setTracks([makeTrack()]);case 1:_context611.n=2;return flushUntil(function(){var _a4,_b2,_c2;return((_c2=(_b2=(_a4=h.provider.lastTrack)==null?void 0:_a4.cues)==null?void 0:_b2.length)!=null?_c2:0)>0});case 2:track2=h.provider.lastTrack;expect(track2==null?void 0:track2.mode).toBe("showing");expect(h.controller.active).toBeTrue();h.controller.deactivate();expect(h.controller.active).toBeFalse();expect(track2==null?void 0:track2.storedCues.length).toBe(0);expect(track2==null?void 0:track2.mode).toBe("disabled");expect((_a3=h.controller.activeTextTrack)==null?void 0:_a3.id).toBe("a");h.controller.activate();expect(h.controller.active).toBeTrue();_context611.n=3;return flushUntil(function(){var _a4,_b2,_c2;return((_c2=(_b2=(_a4=h.provider.lastTrack)==null?void 0:_a4.cues)==null?void 0:_b2.length)!=null?_c2:0)>0});case 3:expect((_b=h.provider.lastTrack)==null?void 0:_b.mode).toBe("showing");expect((_d=(_c=h.provider.lastTrack)==null?void 0:_c.cues)==null?void 0:_d.length).toBe(1);case 4:return _context611.a(2)}},_callee611)})));it("activate is a no-op when nothing is selected",function(){var h=build();h.controller.activate();expect(h.provider.getOrCreate).not.toHaveBeenCalled()});it("activate is a no-op when already rendering",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee612(){var h;return _regenerator().w(function(_context612){while(1)switch(_context612.n){case 0:respondVtt("WEBVTT\n\n00:00:01.000 --> 00:00:02.000\none");h=build({options:{selection:{id:"a"}}});_context612.n=1;return h.setTracks([makeTrack()]);case 1:_context612.n=2;return flushUntil(function(){var _a3,_b,_c;return((_c=(_b=(_a3=h.provider.lastTrack)==null?void 0:_a3.cues)==null?void 0:_b.length)!=null?_c:0)>0});case 2:h.provider.getOrCreate.calls.reset();h.controller.activate();expect(h.provider.getOrCreate).not.toHaveBeenCalled();case 3:return _context612.a(2)}},_callee612)})));it("does not render while deactivated even as the selection resolves",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee613(){var _a3,h;return _regenerator().w(function(_context613){while(1)switch(_context613.n){case 0:respondVtt("WEBVTT\n\n00:00:01.000 --> 00:00:02.000\none");h=build({options:{selection:{id:"a"}},activate:false});h.controller.deactivate();_context613.n=1;return h.setTracks([makeTrack()]);case 1:expect((_a3=h.controller.activeTextTrack)==null?void 0:_a3.id).toBe("a");expect(h.provider.getOrCreate).not.toHaveBeenCalled();case 2:return _context613.a(2)}},_callee613)})));it("skips DOM cue creation when no VTTCue ctor is available",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee614(){var _a3,_b,_c,h;return _regenerator().w(function(_context614){while(1)switch(_context614.n){case 0:;globalThis.VTTCue=void 0;respondVtt("WEBVTT\n\n00:00:01.000 --> 00:00:02.000\nignored");h=build({options:{selection:{id:"a"}}});_context614.n=1;return h.setTracks([makeTrack()]);case 1:_context614.n=2;return flushPromises();case 2:expect((_c=(_b=(_a3=h.provider.lastTrack)==null?void 0:_a3.cues)==null?void 0:_b.length)!=null?_c:0).toBe(0);case 3:return _context614.a(2)}},_callee614)})));it("forwards requestInit when configured",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee615(){var h,t;return _regenerator().w(function(_context615){while(1)switch(_context615.n){case 0:respondVtt("WEBVTT\n");h=build({options:{selection:{id:"a"}},requestInit:{credentials:"include"}});t=makeTrack();_context615.n=1;return h.setTracks([t]);case 1:_context615.n=2;return flushPromises();case 2:expect(requester.request).toHaveBeenCalledWith(t.uri,jasmine.objectContaining({credentials:"include"}),jasmine.any(Object));case 3:return _context615.a(2)}},_callee615)})));it("drives HLS caption segment order from the media playhead",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee616(){var playlistBody,fetched,call,h;return _regenerator().w(function(_context616){while(1)switch(_context616.n){case 0:playlistBody="#EXTM3U\n#EXT-X-TARGETDURATION:5\n#EXTINF:5.0,\na.vtt\n#EXTINF:5.0,\nb.vtt\n#EXTINF:5.0,\nc.vtt\n#EXTINF:5.0,\nd.vtt\n#EXT-X-ENDLIST\n";fetched=[];call=0;requester.request.and.callFake(function(url){call++;if(call===1)return Promise.resolve(new Response(playlistBody));var path=String(url).split("/").pop();fetched.push(path);return Promise.resolve(new Response("WEBVTT\n\n00:00:00.000 --> 00:00:01.000\n".concat(path)))});h=build({options:{selection:{id:"a"}}});h.playback.currentTime=12;_context616.n=1;return h.setTracks([makeTrack({uri:"https://x.test/sub.m3u8"})]);case 1:_context616.n=2;return flushUntil(function(){return fetched.length>0});case 2:expect(fetched[0]).toBe("c.vtt");case 3:return _context616.a(2)}},_callee616)})));it("dispose aborts in-flight loads and clears state",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee617(){var resolveResponse,h,track2;return _regenerator().w(function(_context617){while(1)switch(_context617.n){case 0:resolveResponse=function resolveResponse(){};requester.request.and.callFake(function(){return new Promise(function(res){resolveResponse=res})});h=build({options:{selection:{id:"a"}}});_context617.n=1;return h.setTracks([makeTrack()]);case 1:track2=h.provider.lastTrack;expect(track2).not.toBeNull();h.controller.dispose();resolveResponse(new Response("WEBVTT\n\n00:00:00.500 --> 00:00:01.500\npost"));_context617.n=2;return flushPromises();case 2:expect(track2==null?void 0:track2.mode).toBe("disabled");expect(track2==null?void 0:track2.storedCues.length).toBe(0);expect(h.controller.activeTextTrack).toBeNull();expect(h.controller.textTracks).toEqual([]);case 3:return _context617.a(2)}},_callee617)})));it("creates the DOM track with an undefined language for null-language tracks",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee618(){var h;return _regenerator().w(function(_context618){while(1)switch(_context618.n){case 0:respondVtt("WEBVTT\n");h=build({options:{selection:{id:"a"}}});_context618.n=1;return h.setTracks([makeTrack({language:null})]);case 1:_context618.n=2;return flushPromises();case 2:expect(h.provider.getOrCreate).toHaveBeenCalledWith("subtitles","English",void 0);case 3:return _context618.a(2)}},_callee618)})));it("setting the same resolved track list twice emits textTracksChange once",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee619(){var handler,h,list;return _regenerator().w(function(_context619){while(1)switch(_context619.n){case 0:handler=jasmine.createSpy();h=build();h.controller.on("textTracksChange",handler);list=[makeTrack()];_context619.n=1;return h.setTracks(list);case 1:_context619.n=2;return h.setTracks([makeTrack()]);case 2:expect(handler).toHaveBeenCalledTimes(1);case 3:return _context619.a(2)}},_callee619)})));it("re-selecting the same id is a no-op",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee620(){var h,handler;return _regenerator().w(function(_context620){while(1)switch(_context620.n){case 0:respondVtt("WEBVTT\n");h=build({options:{selection:{id:"a"}}});_context620.n=1;return h.setTracks([makeTrack()]);case 1:handler=jasmine.createSpy();h.controller.on("activeTextTrackChange",handler);h.select({id:"a"});expect(handler).not.toHaveBeenCalled();case 2:return _context620.a(2)}},_callee620)})))});// test/unit/text/SidecarTextTrackLoader.test.ts
@@ -2265,14 +2265,14 @@ _i46++){var track2=trackController.getCachedTrack(loadOptions[_i46].uri);expect(
2265
2265
  });(_trackController18=trackController).load.apply(_trackController18,_toConsumableArray(tracks));expectTracksCached(tracks,[0,1,2,3]);trackController.next();expectTracksCached(tracks,[1,2,3,4])});it("creates the tracks in order",function(){var _trackController19;var tracks=createLoadOptionsList(6);trackController.configure({trackPrefetchCount:3});(_trackController19=trackController).load.apply(_trackController19,_toConsumableArray(tracks));var _loop20=function _loop20(){var track2=trackController.getCachedTrack(tracks[i].uri);var createdIndex=deps.trackFactory.createTrack.calls.all().findIndex(function(call){return call.returnValue===track2});expect(createdIndex).toBe(i)};for(var i=0;i<4;i++){_loop20()}});describe("when called during a track ended event",function(){it("prevents the next automatic next()",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee793(){var _trackController20,_trackController21;var _a3,_b,loadOptionsList;return _regenerator().w(function(_context793){while(1)switch(_context793.n){case 0:loadOptionsList=createLoadOptionsList(3);(_trackController20=trackController).load.apply(_trackController20,_toConsumableArray(loadOptionsList));deps.playbackController.dispatch("ended",{});(_trackController21=trackController).load.apply(_trackController21,_toConsumableArray(loadOptionsList));_context793.n=1;return clock.tick();case 1:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toEqual(loadOptionsList[0].uri);deps.playbackController.dispatch("ended",{});_context793.n=2;return clock.tick();case 2:expect((_b=trackController.activeTrack)==null?void 0:_b.uri).toEqual(loadOptionsList[1].uri);case 3:return _context793.a(2)}},_callee793)})))});it("validates all tracks",function(){var _trackController22;var loadOptionsList=createLoadOptionsList(3);(_trackController22=trackController).load.apply(_trackController22,_toConsumableArray(loadOptionsList));expect(deps.trackFactory.validate).toHaveBeenCalledTimes(3);expect(deps.trackFactory.validate).toHaveBeenCalledWith(loadOptionsList[0]);expect(deps.trackFactory.validate).toHaveBeenCalledWith(loadOptionsList[1]);expect(deps.trackFactory.validate).toHaveBeenCalledWith(loadOptionsList[2])})});describe("enqueue",function(){it("appends the given track load options to the current queue",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee794(){var _trackController23,_trackController24,_trackController25;var _a3,tracks1,tracks2,tracks3;return _regenerator().w(function(_context794){while(1)switch(_context794.n){case 0:trackController.enqueue();expect(trackController.queue).toEqual([]);tracks1=createLoadOptionsList(1);tracks2=createLoadOptionsList(2);tracks3=createLoadOptionsList(3);(_trackController23=trackController).enqueue.apply(_trackController23,_toConsumableArray(tracks1));_context794.n=1;return clock.tick();case 1:expect(trackController.queue).toEqual([]);expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe(tracks1[0].uri);(_trackController24=trackController).enqueue.apply(_trackController24,_toConsumableArray(tracks2));expect(trackController.queue).toEqual(tracks2);(_trackController25=trackController).enqueue.apply(_trackController25,_toConsumableArray(tracks3));expect(trackController.queue).toEqual([].concat(_toConsumableArray(tracks2),_toConsumableArray(tracks3)));case 2:return _context794.a(2)}},_callee794)})));it("preloads up to preloadFetchCount tracks",function(){var _trackController26;var tracks=createLoadOptionsList(5);(_trackController26=trackController).enqueue.apply(_trackController26,_toConsumableArray(tracks));expect(trackCount).toBe(trackController.options.trackPrefetchCount+1// +1 for current track
2266
2266
  )});it("validates all tracks",function(){var _trackController27;var loadOptionsList=createLoadOptionsList(3);(_trackController27=trackController).enqueue.apply(_trackController27,_toConsumableArray(loadOptionsList));expect(deps.trackFactory.validate).toHaveBeenCalledTimes(3);expect(deps.trackFactory.validate).toHaveBeenCalledWith(loadOptionsList[0]);expect(deps.trackFactory.validate).toHaveBeenCalledWith(loadOptionsList[1]);expect(deps.trackFactory.validate).toHaveBeenCalledWith(loadOptionsList[2])})});describe("next",function(){it("shifts the queue, activating the next track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee796(){var _trackController28;var tracks,currentIndex,testNext,_testNext;return _regenerator().w(function(_context796){while(1)switch(_context796.n){case 0:_testNext=function _testNext3(){_testNext=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee795(){var _a3,i;return _regenerator().w(function(_context795){while(1)switch(_context795.n){case 0:++currentIndex;trackController.next();_context795.n=1;return clock.tick();case 1:expect(trackController.queue[0]).toEqual(tracks[currentIndex+1]);expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).withContext("currentTrack ".concat(currentIndex)).toBe(tracks[currentIndex].uri);for(i=currentIndex;i<tracks.length;i++){expect(trackController.isTrackCached(tracks[i].uri)).toEqual(i-currentIndex<=trackController.options.trackPrefetchCount)}case 2:return _context795.a(2)}},_callee795)}));return _testNext.apply(this,arguments)};testNext=function _testNext2(){return _testNext.apply(this,arguments)};trackController.configure({preloadCapacity:0});trackController.next();expect(trackController.activeTrack).toBeNull();tracks=createLoadOptionsList(5);(_trackController28=trackController).load.apply(_trackController28,_toConsumableArray(tracks));_context796.n=1;return clock.tick();case 1:currentIndex=0;_context796.n=2;return testNext();case 2:_context796.n=3;return testNext();case 3:_context796.n=4;return testNext();case 4:_context796.n=5;return testNext();case 5:trackController.next();_context796.n=6;return clock.tick();case 6:expect(trackController.queue).toEqual([]);expect(trackController.activeTrack).toBeNull();expect(trackCount).toBe(trackController.options.trackPrefetchCount+1);case 7:return _context796.a(2)}},_callee796)})));describe("when the current track is ended or not paused",function(){it("invokes playbackController.play",function(){var _trackController29;var play=deps.playbackController.play;var tracks=createLoadOptionsList(3);(_trackController29=trackController).load.apply(_trackController29,_toConsumableArray(tracks));deps.playbackController.paused=true;deps.playbackController.ended=true;expect(play).not.toHaveBeenCalled();trackController.next();expect(play).toHaveBeenCalledTimes(1);deps.playbackController.play.calls.reset();deps.playbackController.paused=false;deps.playbackController.ended=false;expect(play).not.toHaveBeenCalled();trackController.next();expect(deps.playbackController.play).toHaveBeenCalledTimes(1)})});describe("when the current track is paused and not ended",function(){it("does not invoke playbackController.play",function(){var _trackController30;var play=deps.playbackController.play;var tracks=createLoadOptionsList(3);(_trackController30=trackController).load.apply(_trackController30,_toConsumableArray(tracks));deps.playbackController.paused=true;deps.playbackController.ended=false;expect(play).not.toHaveBeenCalled();trackController.next();expect(play).not.toHaveBeenCalled()})});describe("when called during a track ended event",function(){it("prevents the next automatic next()",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee797(){var _trackController31;var _a3,_b,loadOptionsList;return _regenerator().w(function(_context797){while(1)switch(_context797.n){case 0:loadOptionsList=createLoadOptionsList(3);(_trackController31=trackController).load.apply(_trackController31,_toConsumableArray(loadOptionsList));deps.playbackController.dispatch("ended",{});trackController.next();_context797.n=1;return clock.tick();case 1:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toEqual(loadOptionsList[1].uri);deps.playbackController.dispatch("ended",{});_context797.n=2;return clock.tick();case 2:expect((_b=trackController.activeTrack)==null?void 0:_b.uri).toEqual(loadOptionsList[2].uri);case 3:return _context797.a(2)}},_callee797)})))})});describe("when the current track ends",function(){it("moves to the next track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee798(){var _trackController32;var loadOptionsList,activatedSpy,nextActivated;return _regenerator().w(function(_context798){while(1)switch(_context798.n){case 0:loadOptionsList=createLoadOptionsList(3);activatedSpy=createEventSpy(trackController,"trackActivated");(_trackController32=trackController).load.apply(_trackController32,_toConsumableArray(loadOptionsList));_context798.n=1;return clock.tick();case 1:nextActivated=activatedSpy.next();deps.playbackController.dispatch("ended",{});_context798.n=2;return clock.tick();case 2:_context798.n=3;return expectAsync(nextActivated).toBeResolvedTo({track:objectContaining24({uri:loadOptionsList[1].uri})});case 3:nextActivated=activatedSpy.next();deps.playbackController.dispatch("ended",{});_context798.n=4;return clock.tick();case 4:_context798.n=5;return expectAsync(nextActivated).toBeResolvedTo({track:objectContaining24({uri:loadOptionsList[2].uri})});case 5:return _context798.a(2)}},_callee798)})))});describe("unload",function(){it("unloads the active track and clears the queue",function(){var _trackController33;(_trackController33=trackController).load.apply(_trackController33,_toConsumableArray(createLoadOptionsList(3)));trackController.unload();expect(trackController.queue).toEqual([]);expect(trackController.activeTrack).toBeNull()})});describe("clearTrackCache",function(){var loadOptionsList=createLoadOptionsList(3);beforeEach(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee799(){var _trackController34;return _regenerator().w(function(_context799){while(1)switch(_context799.n){case 0:(_trackController34=trackController).load.apply(_trackController34,_toConsumableArray(loadOptionsList));_context799.n=1;return clock.tick();case 1:return _context799.a(2)}},_callee799)})));it("clears the cache",function(){expect(trackController.isTrackCached(loadOptionsList[0].uri)).toBeTrue();trackController.clearTrackCache();expect(trackController.isTrackCached(loadOptionsList[0].uri)).toBeFalse()});it("deactivates the current track",function(){var track2=trackController.activeTrack;expect(track2).not.toBeNull();trackController.clearTrackCache();expect(trackController.activeTrack).toBeNull();expect(track2.active).toBeFalse()});it("clears the queue",function(){trackController.clearTrackCache();expect(trackController.queue).toEqual([])});describe("when called during a track ended event",function(){it("prevents the next automatic next()",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee800(){var _trackController35;var loadOptionsList2;return _regenerator().w(function(_context800){while(1)switch(_context800.n){case 0:loadOptionsList2=createLoadOptionsList(3);(_trackController35=trackController).load.apply(_trackController35,_toConsumableArray(loadOptionsList2));deps.playbackController.dispatch("ended",{});trackController.clearTrackCache();_context800.n=1;return clock.tick();case 1:expect(trackController.activeTrack).toBeNull();case 2:return _context800.a(2)}},_callee800)})))});it("resets the auto preload capacity",function(){var _trackController36;(_trackController36=trackController).preload.apply(_trackController36,_toConsumableArray(createLoadOptionsList(5)));expect(trackController.preloadCapacity).toBe(5);trackController.clearTrackCache();expect(trackController.preloadCapacity).toBe(trackController.options.preloadCapacity)})});describe("clearPrefetch",function(){it("calls clearPrefetch on all cached tracks",function(){var _trackController37;(_trackController37=trackController).load.apply(_trackController37,_toConsumableArray(createLoadOptionsList(3)));trackController.clearPrefetch();var allTracks=Array.from(trackController.getCachedTracks());expect(allTracks.length).toBe(3);for(var _i47=0,_allTracks=allTracks;_i47<_allTracks.length;_i47++){var track2=_allTracks[_i47];expect(track2.clearPrefetch).toHaveBeenCalledTimes(1)}});it("also clears prefetch on preloaded ad tracks",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee801(){var _createLoadOptionsLis,_createLoadOptionsLis2,main,track2,ads,adTrack;return _regenerator().w(function(_context801){while(1)switch(_context801.n){case 0:pending("REVIEW: the refactor no longer proactively preloads ad tracks discovered on the current track (ad tracks are created on adEntered only). Decide: intended removal (delete this spec) or regression (restore discovery-time ad preloading).");_createLoadOptionsLis=createLoadOptionsList(1),_createLoadOptionsLis2=_slicedToArray(_createLoadOptionsLis,1),main=_createLoadOptionsLis2[0];trackController.load(main);track2=trackController.activeTrack;ads={trackUri:main.uri,adBreaks:[{id:"b1",startTime:5,duration:10,placement:"midroll",restrict:{},once:false,resumeOffset:null,playoutLimit:null,resolutionTimeOffset:null,skipControl:function skipControl(){return null},ads:function ads(){return Promise.resolve([{id:"a1",startTime:5,duration:10,uri:"https://ads/a.m3u8"}])}}]};track2.ads=ads;track2.dispatch("adsChange",{previous:null,current:ads});_context801.n=1;return Promise.resolve();case 1:_context801.n=2;return Promise.resolve();case 2:_context801.n=3;return Promise.resolve();case 3:adTrack=trackController.getCachedTrack("https://ads/a.m3u8");trackController.clearPrefetch();expect(adTrack.clearPrefetch).toHaveBeenCalled();case 4:return _context801.a(2)}},_callee801)})))});describe("clearQueue",function(){it("clears the queue without unloading the current track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee802(){var _trackController38;var _a3,tracks;return _regenerator().w(function(_context802){while(1)switch(_context802.n){case 0:tracks=createLoadOptionsList(3);(_trackController38=trackController).load.apply(_trackController38,_toConsumableArray(tracks));_context802.n=1;return clock.tick();case 1:trackController.clearQueue();expect(trackController.queue).toEqual([]);expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe(tracks[0].uri);case 2:return _context802.a(2)}},_callee802)})))});describe("isTrackCached",function(){it("returns true if the uri is a cached track",function(){var _trackController39,_trackController40;var loadOptionsList=createLoadOptionsList(5);expect(trackController.isTrackCached(loadOptionsList[0].uri)).toBeFalse();(_trackController39=trackController).load.apply(_trackController39,_toConsumableArray(loadOptionsList));expect(trackController.isTrackCached(loadOptionsList[0].uri)).toBeTrue();expect(trackController.isTrackCached(loadOptionsList[1].uri)).toBeTrue();expect(trackController.isTrackCached(loadOptionsList[2].uri)).toBeTrue();expect(trackController.isTrackCached(loadOptionsList[trackController.options.trackPrefetchCount+1].uri)).toBeFalse();(_trackController40=trackController).preload.apply(_trackController40,_toConsumableArray(loadOptionsList));expect(trackController.isTrackCached(loadOptionsList[4].uri)).toBeTrue()});describe("when preload and trackPrefetch sizes are zero",function(){var trackController2;beforeEach(function(){trackController2=new TrackControllerImpl(deps,{trackPrefetchCount:0// Only the current track is cached
2267
2267
  })});afterEach(function(){trackController2.dispose()});it("returns true if the uri is the current track",function(){var trackController3=new TrackControllerImpl(deps,{trackPrefetchCount:0,// Only the current track is cached
2268
- preloadCapacity:0});var loadOptionsList=createLoadOptionsList(3);trackController3.load.apply(trackController3,_toConsumableArray(loadOptionsList));expect(trackController3.isTrackCached(loadOptionsList[0].uri)).toBeTrue();expect(trackController3.isTrackCached(loadOptionsList[1].uri)).toBeFalse();trackController3.next();expect(trackController3.isTrackCached(loadOptionsList[1].uri)).toBeTrue();expect(trackController3.isTrackCached(loadOptionsList[0].uri)).toBeFalse();expect(trackController3.isTrackCached(loadOptionsList[2].uri)).toBeFalse();trackController3.dispose()})})});describe("getCachedTrack",function(){it("returns the cached track for the given uri",function(){var _trackController41;var loadOptionsList=createLoadOptionsList(5);expect(trackController.getCachedTrack(loadOptionsList[0].uri)).toBeNull();(_trackController41=trackController).load.apply(_trackController41,_toConsumableArray(loadOptionsList));expect(trackController.getCachedTrack(loadOptionsList[0].uri)).toBeInstanceOf(MockTrack);expect(trackController.getCachedTrack(loadOptionsList[1].uri)).toBeInstanceOf(MockTrack);expect(trackController.getCachedTrack(loadOptionsList[2].uri)).toBeInstanceOf(MockTrack);expect(trackController.getCachedTrack(loadOptionsList[trackController.options.trackPrefetchCount+1].uri)).toBeNull()})});describe("getCachedTracks",function(){it("returns an iterator for the currently cached tracks",function(){var _trackController42;expectIterableEquals(trackController.getCachedTracks(),[]);var loadOptionsList=createLoadOptionsList(5);(_trackController42=trackController).load.apply(_trackController42,_toConsumableArray(loadOptionsList));expect(Array.from(trackController.getCachedTracks())).toEqual([any29(MockTrack),any29(MockTrack),any29(MockTrack)])})});describe("when last track in the queue ends",function(){it("dispatches trackEnded for each track as the queue advances",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee803(){var _trackController43;var trackEnded;return _regenerator().w(function(_context803){while(1)switch(_context803.n){case 0:trackEnded=createEventSpy(trackController,"trackEnded");(_trackController43=trackController).load.apply(_trackController43,_toConsumableArray(createLoadOptionsList(2)));deps.playbackController.dispatch("ended",{});_context803.n=1;return clock.tick();case 1:expect(trackEnded).toHaveBeenCalledTimes(1);deps.playbackController.dispatch("ended",{});_context803.n=2;return clock.tick();case 2:expect(trackEnded).toHaveBeenCalledTimes(2);case 3:return _context803.a(2)}},_callee803)})));it("dispatches a queueEnded event",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee804(){var _trackController44,_trackController45;var queueEndedSpy,loadOptionsList;return _regenerator().w(function(_context804){while(1)switch(_context804.n){case 0:queueEndedSpy=createEventSpy(trackController,"queueEnded");(_trackController44=trackController).load.apply(_trackController44,_toConsumableArray(createLoadOptionsList(1)));expect(queueEndedSpy).not.toHaveBeenCalled();deps.playbackController.dispatch("ended",{});_context804.n=1;return clock.tick();case 1:expect(queueEndedSpy).toHaveBeenCalledWith({});queueEndedSpy.calls.reset();loadOptionsList=createLoadOptionsList(3);(_trackController45=trackController).load.apply(_trackController45,_toConsumableArray(loadOptionsList));deps.playbackController.dispatch("ended",{});_context804.n=2;return clock.tick();case 2:expect(queueEndedSpy).not.toHaveBeenCalled();deps.playbackController.dispatch("ended",{});_context804.n=3;return clock.tick();case 3:expect(queueEndedSpy).not.toHaveBeenCalled();deps.playbackController.dispatch("ended",{});_context804.n=4;return clock.tick();case 4:expect(queueEndedSpy).toHaveBeenCalledWith({});case 5:return _context804.a(2)}},_callee804)})))});describe("when the queue changes",function(){it("dispatches queueChange event",function(){var _trackController46;var queueChangeSpy=createEventSpy(trackController,"queueChange");var tracks=[{type:"",uri:"uri_0"},{type:"",uri:"uri_1"},{type:"",uri:"uri_2"},{type:"",uri:"uri_3"}];(_trackController46=trackController).load.apply(_trackController46,tracks);expect(queueChangeSpy).toHaveBeenCalledOnceWith({previous:[],current:[{type:"",uri:"uri_1"},{type:"",uri:"uri_2"},{type:"",uri:"uri_3"}]});queueChangeSpy.calls.reset();trackController.next();expect(queueChangeSpy).toHaveBeenCalledOnceWith({previous:[{type:"",uri:"uri_1"},{type:"",uri:"uri_2"},{type:"",uri:"uri_3"}],current:[{type:"",uri:"uri_2"},{type:"",uri:"uri_3"}]});queueChangeSpy.calls.reset();trackController.clearQueue();expect(queueChangeSpy).toHaveBeenCalledOnceWith({previous:[{type:"",uri:"uri_2"},{type:"",uri:"uri_3"}],current:[]});queueChangeSpy.calls.reset();trackController.preload({type:"",uri:"uri_4"});expect(queueChangeSpy).not.toHaveBeenCalled();trackController.enqueue({type:"",uri:"uri_4"});expect(queueChangeSpy).toHaveBeenCalledOnceWith({previous:[],current:[{type:"",uri:"uri_4"}]});queueChangeSpy.calls.reset();trackController.clearTrackCache();expect(queueChangeSpy).toHaveBeenCalledOnceWith({previous:[{type:"",uri:"uri_4"}],current:[]})})});describe("reset",function(){it("resets current track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee805(){var _trackController47;var track2;return _regenerator().w(function(_context805){while(1)switch(_context805.n){case 0:(_trackController47=trackController).load.apply(_trackController47,_toConsumableArray(createLoadOptionsList(1)));_context805.n=1;return clock.tick();case 1:track2=trackController.activeTrack;trackController.reset();expect(track2.reset).toHaveBeenCalled();case 2:return _context805.a(2)}},_callee805)})));it("does nothing when no current track",function(){expect(function(){return trackController.reset()}).not.toThrow()})});describe("reset",function(){it("delegates a hard reset to the current track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee806(){var _trackController48;var track2;return _regenerator().w(function(_context806){while(1)switch(_context806.n){case 0:(_trackController48=trackController).load.apply(_trackController48,_toConsumableArray(createLoadOptionsList(1)));_context806.n=1;return clock.tick();case 1:track2=trackController.activeTrack;trackController.reset(/* hard */true);expect(track2.reset).toHaveBeenCalledWith(true);case 2:return _context806.a(2)}},_callee806)})));it("delegates a soft reset to the current track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee807(){var _trackController49;var track2;return _regenerator().w(function(_context807){while(1)switch(_context807.n){case 0:(_trackController49=trackController).load.apply(_trackController49,_toConsumableArray(createLoadOptionsList(1)));_context807.n=1;return clock.tick();case 1:track2=trackController.activeTrack;trackController.reset();expect(track2.reset).toHaveBeenCalled();case 2:return _context807.a(2)}},_callee807)})));it("does nothing when there is no current track",function(){expect(function(){return trackController.reset(true)}).not.toThrow()})});describe("ad preloading",function(){function flushAds(){return _flushAds.apply(this,arguments)}function _flushAds(){_flushAds=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee820(){var i;return _regenerator().w(function(_context820){while(1)switch(_context820.n){case 0:i=0;case 1:if(!(i<8)){_context820.n=3;break}_context820.n=2;return Promise.resolve();case 2:i++;_context820.n=1;break;case 3:return _context820.a(2)}},_callee820)}));return _flushAds.apply(this,arguments)}var created=/* @__PURE__ */new Map;beforeEach(function(){return created.clear()});function factoryGivingBreak(contentUri,adUris){var placement=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"preroll";deps.trackFactory.createTrack.and.callFake(function(options){var track2=new MockTrack;trackCount++;track2.implementActivateFakes();track2.uri=options.uri;track2.ads=options.uri===contentUri?{trackUri:contentUri,adBreaks:[{id:"brk",startTime:0,duration:10,placement:placement,restrict:{},once:true,resumeOffset:null,playoutLimit:null,resolutionTimeOffset:null,skipControl:function skipControl(){return null},ads:function ads(){return Promise.resolve(adUris.map(function(uri,i){return{id:"pa".concat(i),startTime:0,duration:10,uri:uri}}))}}]}:{trackUri:options.uri,adBreaks:[]};track2.dispose.and.callFake(function(){if(track2.disposed)throw new DisposedError;track2.disposed=true;trackCount--});created.set(options.uri,track2);return track2})}it("preloads a preroll ad track when its parent track is preloaded",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee808(){var _createLoadOptionsLis3,_createLoadOptionsLis4,main,adTrack;return _regenerator().w(function(_context808){while(1)switch(_context808.n){case 0:_createLoadOptionsLis3=createLoadOptionsList(1),_createLoadOptionsLis4=_slicedToArray(_createLoadOptionsLis3,1),main=_createLoadOptionsLis4[0];factoryGivingBreak(main.uri,["https://ads/pre.m3u8"]);trackController.load(main);_context808.n=1;return flushAds();case 1:adTrack=created.get("https://ads/pre.m3u8");expect(adTrack).withContext("preroll ad track created").toBeDefined();expect(adTrack.preload).toHaveBeenCalled();case 2:return _context808.a(2)}},_callee808)})));it("gives the preroll ad track a higher prefetch priority than its parent",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee809(){var _createLoadOptionsLis5,_createLoadOptionsLis6,main,parentPriority,adPriority;return _regenerator().w(function(_context809){while(1)switch(_context809.n){case 0:_createLoadOptionsLis5=createLoadOptionsList(1),_createLoadOptionsLis6=_slicedToArray(_createLoadOptionsLis5,1),main=_createLoadOptionsLis6[0];factoryGivingBreak(main.uri,["https://ads/pre.m3u8"]);trackController.load(main);_context809.n=1;return flushAds();case 1:parentPriority=created.get(main.uri).preload.calls.mostRecent().args[0].prefetchPriority;adPriority=created.get("https://ads/pre.m3u8").preload.calls.mostRecent().args[0].prefetchPriority;expect(adPriority).toBeGreaterThan(parentPriority);case 2:return _context809.a(2)}},_callee809)})));it("preloads only preroll breaks, not midroll or postroll",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee810(){var _createLoadOptionsLis7,_createLoadOptionsLis8,main;return _regenerator().w(function(_context810){while(1)switch(_context810.n){case 0:_createLoadOptionsLis7=createLoadOptionsList(1),_createLoadOptionsLis8=_slicedToArray(_createLoadOptionsLis7,1),main=_createLoadOptionsLis8[0];factoryGivingBreak(main.uri,["https://ads/mid.m3u8"],"midroll");trackController.load(main);_context810.n=1;return flushAds();case 1:expect(created.has("https://ads/mid.m3u8")).toBeFalse();case 2:return _context810.a(2)}},_callee810)})));it("creates a preroll ad track only once across repeated preloads",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee811(){var _createLoadOptionsLis9,_createLoadOptionsLis0,main,next,adCreates;return _regenerator().w(function(_context811){while(1)switch(_context811.n){case 0:_createLoadOptionsLis9=createLoadOptionsList(2),_createLoadOptionsLis0=_slicedToArray(_createLoadOptionsLis9,2),main=_createLoadOptionsLis0[0],next=_createLoadOptionsLis0[1];factoryGivingBreak(main.uri,["https://ads/pre.m3u8"]);trackController.load(main);_context811.n=1;return flushAds();case 1:trackController.enqueue(next);_context811.n=2;return flushAds();case 2:adCreates=deps.trackFactory.createTrack.calls.allArgs().filter(function(a){return a[0].uri==="https://ads/pre.m3u8"}).length;expect(adCreates).toBe(1);case 3:return _context811.a(2)}},_callee811)})));it("does not inflate the content preload capacity to hold ad tracks",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee812(){var before,_createLoadOptionsLis1,_createLoadOptionsLis10,main;return _regenerator().w(function(_context812){while(1)switch(_context812.n){case 0:before=trackController.preloadCapacity;_createLoadOptionsLis1=createLoadOptionsList(1),_createLoadOptionsLis10=_slicedToArray(_createLoadOptionsLis1,1),main=_createLoadOptionsLis10[0];factoryGivingBreak(main.uri,["https://ads/pre.m3u8"]);trackController.load(main);_context812.n=1;return flushAds();case 1:expect(trackController.preloadCapacity).toBe(before);case 2:return _context812.a(2)}},_callee812)})));it("disposes a preloaded preroll ad track when its parent content track is evicted",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee813(){var _createLoadOptionsLis11,_createLoadOptionsLis12,a,b,adTrack;return _regenerator().w(function(_context813){while(1)switch(_context813.n){case 0:trackController.configure({preloadCapacity:0,trackPrefetchCount:0});_createLoadOptionsLis11=createLoadOptionsList(2),_createLoadOptionsLis12=_slicedToArray(_createLoadOptionsLis11,2),a=_createLoadOptionsLis12[0],b=_createLoadOptionsLis12[1];factoryGivingBreak(a.uri,["https://ads/a-pre.m3u8"]);trackController.load(a);_context813.n=1;return flushAds();case 1:adTrack=created.get("https://ads/a-pre.m3u8");expect(adTrack).withContext("ad track created for A").toBeDefined();trackController.load(b);_context813.n=2;return flushAds();case 2:expect(trackController.isTrackCached(a.uri)).toBeFalse();expect(adTrack.dispose).toHaveBeenCalled();case 3:return _context813.a(2)}},_callee813)})));it("disposes preloaded preroll ad tracks on clearTrackCache",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee814(){var _createLoadOptionsLis13,_createLoadOptionsLis14,main,adTrack;return _regenerator().w(function(_context814){while(1)switch(_context814.n){case 0:_createLoadOptionsLis13=createLoadOptionsList(1),_createLoadOptionsLis14=_slicedToArray(_createLoadOptionsLis13,1),main=_createLoadOptionsLis14[0];factoryGivingBreak(main.uri,["https://ads/pre.m3u8"]);trackController.load(main);_context814.n=1;return flushAds();case 1:adTrack=created.get("https://ads/pre.m3u8");trackController.clearTrackCache();expect(adTrack.dispose).toHaveBeenCalled();case 2:return _context814.a(2)}},_callee814)})));it("does not preload the ad track if the parent is disposed before its options resolve",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee815(){var resolveOptions,tc,_createLoadOptionsLis15,_createLoadOptionsLis16,main;return _regenerator().w(function(_context815){while(1)switch(_context815.n){case 0:resolveOptions=function resolveOptions(){};tc=new TrackControllerImpl(__spreadProps(__spreadValues({},deps),{adTrackLoadOptionsProvider:function adTrackLoadOptionsProvider(){return new Promise(function(resolve){resolveOptions=resolve})}}));_createLoadOptionsLis15=createLoadOptionsList(1),_createLoadOptionsLis16=_slicedToArray(_createLoadOptionsLis15,1),main=_createLoadOptionsLis16[0];factoryGivingBreak(main.uri,["https://ads/late.m3u8"]);tc.load(main);_context815.n=1;return flushAds();case 1:tc.dispose();resolveOptions({uri:"https://ads/late.m3u8",type:""});_context815.n=2;return flushAds();case 2:expect(created.has("https://ads/late.m3u8")).toBeFalse();case 3:return _context815.a(2)}},_callee815)})));it("does not throw when a preroll ad options provider rejects",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee816(){var tc,_createLoadOptionsLis17,_createLoadOptionsLis18,main;return _regenerator().w(function(_context816){while(1)switch(_context816.n){case 0:tc=new TrackControllerImpl(__spreadProps(__spreadValues({},deps),{adTrackLoadOptionsProvider:function adTrackLoadOptionsProvider(){return Promise.reject(new Error("boom"))}}));_createLoadOptionsLis17=createLoadOptionsList(1),_createLoadOptionsLis18=_slicedToArray(_createLoadOptionsLis17,1),main=_createLoadOptionsLis18[0];factoryGivingBreak(main.uri,["https://ads/x.m3u8"]);expect(function(){return tc.load(main)}).not.toThrow();_context816.n=1;return flushAds();case 1:expect(created.has("https://ads/x.m3u8")).toBeFalse();tc.dispose();case 2:return _context816.a(2)}},_callee816)})));it("does not throw when a preroll break's ad list fails to resolve",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee817(){var _a3,_createLoadOptionsLis19,_createLoadOptionsLis20,main;return _regenerator().w(function(_context817){while(1)switch(_context817.n){case 0:deps.trackFactory.createTrack.and.callFake(function(options){var track2=new MockTrack;trackCount++;track2.implementActivateFakes();track2.uri=options.uri;track2.ads={trackUri:options.uri,adBreaks:[{id:"brk",startTime:0,duration:10,placement:"preroll",restrict:{},once:true,resumeOffset:null,playoutLimit:null,resolutionTimeOffset:null,skipControl:function skipControl(){return null},ads:function ads(){return Promise.reject(new Error("ad list down"))}}]};track2.dispose.and.callFake(function(){if(track2.disposed)throw new DisposedError;track2.disposed=true;trackCount--});return track2});_createLoadOptionsLis19=createLoadOptionsList(1),_createLoadOptionsLis20=_slicedToArray(_createLoadOptionsLis19,1),main=_createLoadOptionsLis20[0];expect(function(){return trackController.load(main)}).not.toThrow();_context817.n=1;return flushAds();case 1:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe(main.uri);case 2:return _context817.a(2)}},_callee817)})));function midrollBreak(adUri){return{id:"mid",startTime:30,duration:5,placement:"midroll",restrict:{},once:false,resumeOffset:null,playoutLimit:null,resolutionTimeOffset:null,skipControl:function skipControl(){return null},ads:function ads(){return Promise.resolve([{id:"ma",startTime:30,duration:5,uri:adUri}])}}}it("preloads a break's ad tracks when adPreload fires",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee818(){var _createLoadOptionsLis21,_createLoadOptionsLis22,main,adTrack;return _regenerator().w(function(_context818){while(1)switch(_context818.n){case 0:_createLoadOptionsLis21=createLoadOptionsList(1),_createLoadOptionsLis22=_slicedToArray(_createLoadOptionsLis21,1),main=_createLoadOptionsLis22[0];factoryGivingBreak(main.uri,[]);trackController.load(main);_context818.n=1;return flushAds();case 1:deps.adController.dispatch("adPreload",{adBreak:midrollBreak("https://ads/mid.m3u8")});_context818.n=2;return flushAds();case 2:adTrack=created.get("https://ads/mid.m3u8");expect(adTrack).withContext("midroll ad track warmed").toBeDefined();expect(adTrack.preload).toHaveBeenCalled();case 3:return _context818.a(2)}},_callee818)})));it("ignores adPreload when there is no parent track",function(){expect(function(){return deps.adController.dispatch("adPreload",{adBreak:midrollBreak("https://ads/mid.m3u8")})}).not.toThrow()});it("does not throw when an adPreload break's ad list rejects",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee819(){var _a3,_createLoadOptionsLis23,_createLoadOptionsLis24,main,adBreak;return _regenerator().w(function(_context819){while(1)switch(_context819.n){case 0:_createLoadOptionsLis23=createLoadOptionsList(1),_createLoadOptionsLis24=_slicedToArray(_createLoadOptionsLis23,1),main=_createLoadOptionsLis24[0];trackController.load(main);_context819.n=1;return flushAds();case 1:adBreak=__spreadProps(__spreadValues({},midrollBreak("https://ads/mid.m3u8")),{ads:function ads(){return Promise.reject(new Error("ad list down"))}});expect(function(){return deps.adController.dispatch("adPreload",{adBreak:adBreak})}).not.toThrow();_context819.n=2;return flushAds();case 2:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe(main.uri);case 3:return _context819.a(2)}},_callee819)})))});describe("ad track lifecycle",function(){function adBreak(placement){return{id:"b1",startTime:0,duration:10,placement:placement,restrict:{},once:false,resumeOffset:null,playoutLimit:null,resolutionTimeOffset:null,skipControl:function skipControl(){return null},ads:function ads(){return Promise.resolve([])}}}var ad={id:"a1",startTime:0,duration:5,uri:"https://ads/x.m3u8"};function flushAds(){return _flushAds2.apply(this,arguments)}function _flushAds2(){_flushAds2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee837(){return _regenerator().w(function(_context837){while(1)switch(_context837.n){case 0:_context837.n=1;return Promise.resolve();case 1:_context837.n=2;return Promise.resolve();case 2:_context837.n=3;return Promise.resolve();case 3:return _context837.a(2)}},_callee837)}));return _flushAds2.apply(this,arguments)}it("loads an ad track when an ad is entered",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee821(){var _trackController50;var _a3;return _regenerator().w(function(_context821){while(1)switch(_context821.n){case 0:(_trackController50=trackController).load.apply(_trackController50,_toConsumableArray(createLoadOptionsList(1)));deps.adController.currentAd=ad;deps.adController.dispatch("adEntered",{ad:ad,index:0,totalAds:1});_context821.n=1;return flushAds();case 1:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe("https://ads/x.m3u8");case 2:return _context821.a(2)}},_callee821)})));it("does not re-activate the current track when its ads change again",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee822(){var _createLoadOptionsLis25,_createLoadOptionsLis26,main,track2;return _regenerator().w(function(_context822){while(1)switch(_context822.n){case 0:_createLoadOptionsLis25=createLoadOptionsList(1),_createLoadOptionsLis26=_slicedToArray(_createLoadOptionsLis25,1),main=_createLoadOptionsLis26[0];trackController.load(main);_context822.n=1;return clock.tick();case 1:track2=trackController.activeTrack;track2.activate.calls.reset();track2.dispatch("adsChange",{previous:track2.ads,current:{trackUri:main.uri,adBreaks:[]}});expect(track2.activate).not.toHaveBeenCalled();case 2:return _context822.a(2)}},_callee822)})));it("fails the ad when its track cannot be resolved",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee823(){var _trackController51;var badAd;return _regenerator().w(function(_context823){while(1)switch(_context823.n){case 0:(_trackController51=trackController).load.apply(_trackController51,_toConsumableArray(createLoadOptionsList(1)));badAd=__spreadProps(__spreadValues({},ad),{uri:"unresolvable"});deps.adController.currentAd=badAd;deps.adController.dispatch("adEntered",{ad:badAd,index:0,totalAds:1});_context823.n=1;return flushAds();case 1:expect(deps.adController.failAd).toHaveBeenCalled();case 2:return _context823.a(2)}},_callee823)})));it("does nothing when an ad break completes with no parent track",function(){expect(function(){return deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("midroll"),resumePosition:0})}).not.toThrow();expect(trackController.activeTrack).toBeNull()});it("ignores adEntered when there is no parent track",function(){expect(function(){return deps.adController.dispatch("adEntered",{ad:{id:"a1",startTime:0,duration:5,uri:"ad"},index:0,totalAds:1})}).not.toThrow();expect(trackController.activeTrack).toBeNull()});it("waits for the next break when another is still active on adBreakCompleted",function(){var _createLoadOptionsLis27=createLoadOptionsList(1),_createLoadOptionsLis28=_slicedToArray(_createLoadOptionsLis27,1),main=_createLoadOptionsLis28[0];trackController.load(main);var before=trackController.activeTrack;deps.adController.currentAdBreak=adBreak("midroll");deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("midroll"),resumePosition:5});expect(trackController.activeTrack).toBe(before)});it("does not resume content on adBreakCompleted for a break that played no ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee824(){var _createLoadOptionsLis29,_createLoadOptionsLis30,main,track2;return _regenerator().w(function(_context824){while(1)switch(_context824.n){case 0:_createLoadOptionsLis29=createLoadOptionsList(1),_createLoadOptionsLis30=_slicedToArray(_createLoadOptionsLis29,1),main=_createLoadOptionsLis30[0];trackController.load(main);_context824.n=1;return clock.tick();case 1:track2=trackController.activeTrack;track2.activate.calls.reset();deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("midroll"),resumePosition:5});expect(track2.activate).not.toHaveBeenCalled();case 2:return _context824.a(2)}},_callee824)})));it("ignores an ended event when there is no current track",function(){expect(function(){return deps.playbackController.dispatch("ended",{previous:false,current:true})}).not.toThrow()});it("logs and does not throw when enterPostroll rejects on track end",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee825(){var _createLoadOptionsLis31,_createLoadOptionsLis32,main;return _regenerator().w(function(_context825){while(1)switch(_context825.n){case 0:_createLoadOptionsLis31=createLoadOptionsList(1),_createLoadOptionsLis32=_slicedToArray(_createLoadOptionsLis31,1),main=_createLoadOptionsLis32[0];trackController.load(main);_context825.n=1;return clock.tick();case 1:deps.adController.enterPostroll.and.rejectWith(new Error("boom"));expect(function(){return deps.playbackController.dispatch("ended",{previous:false,current:true})}).not.toThrow();_context825.n=2;return clock.tick();case 2:return _context825.a(2)}},_callee825)})));it("activates content when enterPreroll rejects",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee826(){var _createLoadOptionsLis33,_createLoadOptionsLis34,main,track2;return _regenerator().w(function(_context826){while(1)switch(_context826.n){case 0:_createLoadOptionsLis33=createLoadOptionsList(1),_createLoadOptionsLis34=_slicedToArray(_createLoadOptionsLis33,1),main=_createLoadOptionsLis34[0];deps.adController.enterPreroll.and.rejectWith(new Error("boom"));trackController.load(main);_context826.n=1;return clock.tick();case 1:track2=trackController.activeTrack;expect(track2.activate).toHaveBeenCalled();case 2:return _context826.a(2)}},_callee826)})));it("does not activate content while a preroll is entered",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee827(){var _createLoadOptionsLis35,_createLoadOptionsLis36,main,track2;return _regenerator().w(function(_context827){while(1)switch(_context827.n){case 0:_createLoadOptionsLis35=createLoadOptionsList(1),_createLoadOptionsLis36=_slicedToArray(_createLoadOptionsLis35,1),main=_createLoadOptionsLis36[0];deps.adController.enterPreroll.and.resolveTo(adBreak("preroll"));trackController.load(main);_context827.n=1;return clock.tick();case 1:expect(trackController.activeTrack).toBeNull();track2=trackController.getCachedTrack(main.uri);expect(track2.activate).not.toHaveBeenCalled();case 2:return _context827.a(2)}},_callee827)})));it("resumes the parent track at the resume position after a midroll ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee828(){var _createLoadOptionsLis37,_createLoadOptionsLis38,main,track2;return _regenerator().w(function(_context828){while(1)switch(_context828.n){case 0:_createLoadOptionsLis37=createLoadOptionsList(1),_createLoadOptionsLis38=_slicedToArray(_createLoadOptionsLis37,1),main=_createLoadOptionsLis38[0];trackController.load(main);deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("midroll"),resumePosition:7});_context828.n=1;return clock.tick();case 1:track2=trackController.activeTrack;expect(track2.uri).toBe(main.uri);expect(track2.activate).toHaveBeenCalledWith(objectContaining24({startTime:7}));case 2:return _context828.a(2)}},_callee828)})));it("resumes the parent at its configured start time after a preroll ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee829(){var _createLoadOptionsLis39,_createLoadOptionsLis40,main,track2;return _regenerator().w(function(_context829){while(1)switch(_context829.n){case 0:_createLoadOptionsLis39=createLoadOptionsList(1),_createLoadOptionsLis40=_slicedToArray(_createLoadOptionsLis39,1),main=_createLoadOptionsLis40[0];main.config={startTime:3};trackController.load(main);deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("preroll"),resumePosition:99});_context829.n=1;return clock.tick();case 1:track2=trackController.activeTrack;expect(track2.activate).toHaveBeenCalledWith(objectContaining24({startTime:3}));case 2:return _context829.a(2)}},_callee829)})));it("skips the deferred resume if interrupted before the frame",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee830(){var _createLoadOptionsLis41,_createLoadOptionsLis42,main,changeSpy;return _regenerator().w(function(_context830){while(1)switch(_context830.n){case 0:pending("REVIEW: content resume on adBreakCompleted is now synchronous (no deferred/interruptible frame), so this interruption guard no longer applies. Decide: intended or restore deferral.");_createLoadOptionsLis41=createLoadOptionsList(1),_createLoadOptionsLis42=_slicedToArray(_createLoadOptionsLis41,1),main=_createLoadOptionsLis42[0];trackController.load(main);changeSpy=createEventSpy(trackController,"trackActivated");deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("midroll"),resumePosition:5});deps.adController.currentAd=__spreadProps(__spreadValues({},ad),{id:"other"});_context830.n=1;return clock.tick();case 1:expect(changeSpy).not.toHaveBeenCalled();case 2:return _context830.a(2)}},_callee830)})));it("advances to the next track after a postroll ad when one exists",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee831(){var _trackController52;var _a3,list,trackEnded;return _regenerator().w(function(_context831){while(1)switch(_context831.n){case 0:list=createLoadOptionsList(2);(_trackController52=trackController).load.apply(_trackController52,_toConsumableArray(list));trackEnded=createEventSpy(trackController,"trackEnded");deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("postroll"),resumePosition:0});_context831.n=1;return clock.tick();case 1:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe(list[1].uri);expect(trackEnded).toHaveBeenCalledWith(objectContaining24({track:any29(Object)}));case 2:return _context831.a(2)}},_callee831)})));it("ends the queue after a postroll ad when there is no next track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee832(){var _a3,_b,_createLoadOptionsLis43,_createLoadOptionsLis44,main,queueEnded,trackEnded,trackActivated;return _regenerator().w(function(_context832){while(1)switch(_context832.n){case 0:_createLoadOptionsLis43=createLoadOptionsList(1),_createLoadOptionsLis44=_slicedToArray(_createLoadOptionsLis43,1),main=_createLoadOptionsLis44[0];trackController.load(main);_context832.n=1;return clock.tick();case 1:deps.adController.currentAd=ad;deps.adController.dispatch("adEntered",{ad:ad,index:0,totalAds:1});_context832.n=2;return flushAds();case 2:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe("https://ads/x.m3u8");queueEnded=createEventSpy(trackController,"queueEnded");trackEnded=createEventSpy(trackController,"trackEnded");trackActivated=createEventSpy(trackController,"trackActivated");deps.adController.currentAd=null;deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("postroll"),resumePosition:0});_context832.n=3;return clock.tick();case 3:expect(trackEnded).toHaveBeenCalledWith(objectContaining24({track:any29(Object)}));expect(queueEnded).toHaveBeenCalled();expect((_b=trackController.activeTrack)==null?void 0:_b.uri).toBe(main.uri);expect(trackActivated).toHaveBeenCalledWith(objectContaining24({track:objectContaining24({uri:main.uri})}));expect(trackActivated).toHaveBeenCalledBefore(queueEnded);case 4:return _context832.a(2)}},_callee832)})));it("does not treat a completed midroll ad as the track ending",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee833(){var _trackController53;var trackEnded;return _regenerator().w(function(_context833){while(1)switch(_context833.n){case 0:(_trackController53=trackController).load.apply(_trackController53,_toConsumableArray(createLoadOptionsList(1)));trackEnded=createEventSpy(trackController,"trackEnded");deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("midroll"),resumePosition:5});_context833.n=1;return clock.tick();case 1:expect(trackEnded).not.toHaveBeenCalled();case 2:return _context833.a(2)}},_callee833)})));it("does not advance the queue when a postroll is pending on track end",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee834(){var _a3,_createLoadOptionsLis45,_createLoadOptionsLis46,main,queueEnded;return _regenerator().w(function(_context834){while(1)switch(_context834.n){case 0:_createLoadOptionsLis45=createLoadOptionsList(2),_createLoadOptionsLis46=_slicedToArray(_createLoadOptionsLis45,1),main=_createLoadOptionsLis46[0];trackController.load(main);deps.adController.enterPostroll.and.resolveTo(adBreak("postroll"));queueEnded=createEventSpy(trackController,"queueEnded");deps.playbackController.dispatch("ended",{});_context834.n=1;return clock.tick();case 1:expect(deps.adController.enterPostroll).toHaveBeenCalled();expect(queueEnded).not.toHaveBeenCalled();expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe(main.uri);case 2:return _context834.a(2)}},_callee834)})));it("ignores an ended event fired while an ad track is playing",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee835(){var _trackController54;var _a3,trackEnded,queueEnded;return _regenerator().w(function(_context835){while(1)switch(_context835.n){case 0:(_trackController54=trackController).load.apply(_trackController54,_toConsumableArray(createLoadOptionsList(1)));deps.adController.currentAd=ad;deps.adController.dispatch("adEntered",{ad:ad,index:0,totalAds:1});_context835.n=1;return flushAds();case 1:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe("https://ads/x.m3u8");trackEnded=createEventSpy(trackController,"trackEnded");queueEnded=createEventSpy(trackController,"queueEnded");deps.playbackController.dispatch("ended",{});_context835.n=2;return clock.tick();case 2:expect(deps.adController.enterPostroll).not.toHaveBeenCalled();expect(trackEnded).not.toHaveBeenCalled();expect(queueEnded).not.toHaveBeenCalled();case 3:return _context835.a(2)}},_callee835)})));it("fails the ad when the current track errors",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee836(){var _trackController55;var track2,error;return _regenerator().w(function(_context836){while(1)switch(_context836.n){case 0:(_trackController55=trackController).load.apply(_trackController55,_toConsumableArray(createLoadOptionsList(1)));_context836.n=1;return clock.tick();case 1:track2=trackController.activeTrack;error=new Error("boom");track2.dispatch("error",{target:track2,error:error});expect(deps.adController.failAd).toHaveBeenCalledWith(error);case 2:return _context836.a(2)}},_callee836)})))});describe("re-entrant queue changes",function(){it("throws if a trackDeactivated handler mutates the queue",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee838(){var _trackController56;var reentered;return _regenerator().w(function(_context838){while(1)switch(_context838.n){case 0:(_trackController56=trackController).load.apply(_trackController56,_toConsumableArray(createLoadOptionsList(1)));_context838.n=1;return clock.tick();case 1:reentered=false;trackController.on("trackDeactivated",function(){if(!reentered){reentered=true;trackController.clearQueue()}});expect(function(){var _trackController57;return(_trackController57=trackController).load.apply(_trackController57,_toConsumableArray(createLoadOptionsList(2)))}).toThrowError(/queue/);case 2:return _context838.a(2)}},_callee838)})));it("throws if a queueChange handler mutates the queue",function(){var reentered=false;trackController.on("queueChange",function(){if(!reentered){var _trackController58;reentered=true;(_trackController58=trackController).enqueue.apply(_trackController58,_toConsumableArray(createLoadOptionsList(1)))}});expect(function(){var _trackController59;return(_trackController59=trackController).load.apply(_trackController59,_toConsumableArray(createLoadOptionsList(2)))}).toThrowError(/queueChange/)})});describe("dispose",function(){afterEach(function(){disposed=true});it("removes all handlers",function(){trackController.dispose();expect(deps.playbackController.hasAnyListeners()).toBeFalse()});it("disposes current track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee839(){var _trackController60;var track2;return _regenerator().w(function(_context839){while(1)switch(_context839.n){case 0:(_trackController60=trackController).load.apply(_trackController60,_toConsumableArray(createLoadOptionsList(1)));_context839.n=1;return clock.tick();case 1:track2=trackController.activeTrack;trackController.dispose();expect(track2.dispose).toHaveBeenCalledOnceWith();case 2:return _context839.a(2)}},_callee839)})));it("disposes all tracks",function(){var _trackController61;var loadOptionsList=createLoadOptionsList(5);(_trackController61=trackController).load.apply(_trackController61,_toConsumableArray(loadOptionsList));expect(trackCount).toBe(trackController.options.trackPrefetchCount+1);expect(trackCount).toBeGreaterThan(0);trackController.dispose();expect(trackCount).toBe(0)})})});describe("ALL_TRACK_CONTROLLER_EVENTS",function(){it("provides a comprehensive list of all track controller events",function(){expectTypeStrictlyEquals(true)})});// test/unit/track/TrackFactory.test.ts
2268
+ preloadCapacity:0});var loadOptionsList=createLoadOptionsList(3);trackController3.load.apply(trackController3,_toConsumableArray(loadOptionsList));expect(trackController3.isTrackCached(loadOptionsList[0].uri)).toBeTrue();expect(trackController3.isTrackCached(loadOptionsList[1].uri)).toBeFalse();trackController3.next();expect(trackController3.isTrackCached(loadOptionsList[1].uri)).toBeTrue();expect(trackController3.isTrackCached(loadOptionsList[0].uri)).toBeFalse();expect(trackController3.isTrackCached(loadOptionsList[2].uri)).toBeFalse();trackController3.dispose()})})});describe("getCachedTrack",function(){it("returns the cached track for the given uri",function(){var _trackController41;var loadOptionsList=createLoadOptionsList(5);expect(trackController.getCachedTrack(loadOptionsList[0].uri)).toBeNull();(_trackController41=trackController).load.apply(_trackController41,_toConsumableArray(loadOptionsList));expect(trackController.getCachedTrack(loadOptionsList[0].uri)).toBeInstanceOf(MockTrack);expect(trackController.getCachedTrack(loadOptionsList[1].uri)).toBeInstanceOf(MockTrack);expect(trackController.getCachedTrack(loadOptionsList[2].uri)).toBeInstanceOf(MockTrack);expect(trackController.getCachedTrack(loadOptionsList[trackController.options.trackPrefetchCount+1].uri)).toBeNull()})});describe("getCachedTracks",function(){it("returns an iterator for the currently cached tracks",function(){var _trackController42;expectIterableEquals(trackController.getCachedTracks(),[]);var loadOptionsList=createLoadOptionsList(5);(_trackController42=trackController).load.apply(_trackController42,_toConsumableArray(loadOptionsList));expect(Array.from(trackController.getCachedTracks())).toEqual([any29(MockTrack),any29(MockTrack),any29(MockTrack)])})});describe("when last track in the queue ends",function(){it("dispatches trackEnded for each track as the queue advances",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee803(){var _trackController43;var trackEnded;return _regenerator().w(function(_context803){while(1)switch(_context803.n){case 0:trackEnded=createEventSpy(trackController,"trackEnded");(_trackController43=trackController).load.apply(_trackController43,_toConsumableArray(createLoadOptionsList(2)));deps.playbackController.dispatch("ended",{});_context803.n=1;return clock.tick();case 1:expect(trackEnded).toHaveBeenCalledTimes(1);deps.playbackController.dispatch("ended",{});_context803.n=2;return clock.tick();case 2:expect(trackEnded).toHaveBeenCalledTimes(2);case 3:return _context803.a(2)}},_callee803)})));it("dispatches a queueEnded event",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee804(){var _trackController44,_trackController45;var queueEndedSpy,loadOptionsList;return _regenerator().w(function(_context804){while(1)switch(_context804.n){case 0:queueEndedSpy=createEventSpy(trackController,"queueEnded");(_trackController44=trackController).load.apply(_trackController44,_toConsumableArray(createLoadOptionsList(1)));expect(queueEndedSpy).not.toHaveBeenCalled();deps.playbackController.dispatch("ended",{});_context804.n=1;return clock.tick();case 1:expect(queueEndedSpy).toHaveBeenCalledWith({});queueEndedSpy.calls.reset();loadOptionsList=createLoadOptionsList(3);(_trackController45=trackController).load.apply(_trackController45,_toConsumableArray(loadOptionsList));deps.playbackController.dispatch("ended",{});_context804.n=2;return clock.tick();case 2:expect(queueEndedSpy).not.toHaveBeenCalled();deps.playbackController.dispatch("ended",{});_context804.n=3;return clock.tick();case 3:expect(queueEndedSpy).not.toHaveBeenCalled();deps.playbackController.dispatch("ended",{});_context804.n=4;return clock.tick();case 4:expect(queueEndedSpy).toHaveBeenCalledWith({});case 5:return _context804.a(2)}},_callee804)})))});describe("when the queue changes",function(){it("dispatches queueChange event",function(){var _trackController46;var queueChangeSpy=createEventSpy(trackController,"queueChange");var tracks=[{type:"",uri:"uri_0"},{type:"",uri:"uri_1"},{type:"",uri:"uri_2"},{type:"",uri:"uri_3"}];(_trackController46=trackController).load.apply(_trackController46,tracks);expect(queueChangeSpy).toHaveBeenCalledOnceWith({previous:[],current:[{type:"",uri:"uri_1"},{type:"",uri:"uri_2"},{type:"",uri:"uri_3"}]});queueChangeSpy.calls.reset();trackController.next();expect(queueChangeSpy).toHaveBeenCalledOnceWith({previous:[{type:"",uri:"uri_1"},{type:"",uri:"uri_2"},{type:"",uri:"uri_3"}],current:[{type:"",uri:"uri_2"},{type:"",uri:"uri_3"}]});queueChangeSpy.calls.reset();trackController.clearQueue();expect(queueChangeSpy).toHaveBeenCalledOnceWith({previous:[{type:"",uri:"uri_2"},{type:"",uri:"uri_3"}],current:[]});queueChangeSpy.calls.reset();trackController.preload({type:"",uri:"uri_4"});expect(queueChangeSpy).not.toHaveBeenCalled();trackController.enqueue({type:"",uri:"uri_4"});expect(queueChangeSpy).toHaveBeenCalledOnceWith({previous:[],current:[{type:"",uri:"uri_4"}]});queueChangeSpy.calls.reset();trackController.clearTrackCache();expect(queueChangeSpy).toHaveBeenCalledOnceWith({previous:[{type:"",uri:"uri_4"}],current:[]})})});describe("reset",function(){it("resets current track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee805(){var _trackController47;var track2;return _regenerator().w(function(_context805){while(1)switch(_context805.n){case 0:(_trackController47=trackController).load.apply(_trackController47,_toConsumableArray(createLoadOptionsList(1)));_context805.n=1;return clock.tick();case 1:track2=trackController.activeTrack;trackController.reset();expect(track2.reset).toHaveBeenCalled();case 2:return _context805.a(2)}},_callee805)})));it("does nothing when no current track",function(){expect(function(){return trackController.reset()}).not.toThrow()})});describe("reset",function(){it("delegates a hard reset to the current track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee806(){var _trackController48;var track2;return _regenerator().w(function(_context806){while(1)switch(_context806.n){case 0:(_trackController48=trackController).load.apply(_trackController48,_toConsumableArray(createLoadOptionsList(1)));_context806.n=1;return clock.tick();case 1:track2=trackController.activeTrack;trackController.reset(/* hard */true);expect(track2.reset).toHaveBeenCalledWith(true);case 2:return _context806.a(2)}},_callee806)})));it("delegates a soft reset to the current track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee807(){var _trackController49;var track2;return _regenerator().w(function(_context807){while(1)switch(_context807.n){case 0:(_trackController49=trackController).load.apply(_trackController49,_toConsumableArray(createLoadOptionsList(1)));_context807.n=1;return clock.tick();case 1:track2=trackController.activeTrack;trackController.reset();expect(track2.reset).toHaveBeenCalled();case 2:return _context807.a(2)}},_callee807)})));it("does nothing when there is no current track",function(){expect(function(){return trackController.reset(true)}).not.toThrow()})});describe("ad preloading",function(){function flushAds(){return _flushAds.apply(this,arguments)}function _flushAds(){_flushAds=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee820(){var i;return _regenerator().w(function(_context820){while(1)switch(_context820.n){case 0:i=0;case 1:if(!(i<8)){_context820.n=3;break}_context820.n=2;return Promise.resolve();case 2:i++;_context820.n=1;break;case 3:return _context820.a(2)}},_callee820)}));return _flushAds.apply(this,arguments)}var created=/* @__PURE__ */new Map;beforeEach(function(){return created.clear()});function factoryGivingBreak(contentUri,adUris){var placement=arguments.length>2&&arguments[2]!==undefined?arguments[2]:"preroll";deps.trackFactory.createTrack.and.callFake(function(options){var track2=new MockTrack;trackCount++;track2.implementActivateFakes();track2.uri=options.uri;track2.ads=options.uri===contentUri?{trackUri:contentUri,adBreaks:[{id:"brk",startTime:0,duration:10,placement:placement,restrict:{},once:true,resumeOffset:null,playoutLimit:null,resolutionTimeOffset:null,skipControl:function skipControl(){return null},ads:function ads(){return Promise.resolve(adUris.map(function(uri,i){return{id:"pa".concat(i),startTime:0,duration:10,uri:uri}}))}}]}:{trackUri:options.uri,adBreaks:[]};track2.dispose.and.callFake(function(){if(track2.disposed)throw new DisposedError;track2.disposed=true;trackCount--});created.set(options.uri,track2);return track2})}it("preloads a preroll ad track when its parent track is preloaded",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee808(){var _createLoadOptionsLis3,_createLoadOptionsLis4,main,adTrack;return _regenerator().w(function(_context808){while(1)switch(_context808.n){case 0:_createLoadOptionsLis3=createLoadOptionsList(1),_createLoadOptionsLis4=_slicedToArray(_createLoadOptionsLis3,1),main=_createLoadOptionsLis4[0];factoryGivingBreak(main.uri,["https://ads/pre.m3u8"]);trackController.load(main);_context808.n=1;return flushAds();case 1:adTrack=created.get("https://ads/pre.m3u8");expect(adTrack).withContext("preroll ad track created").toBeDefined();expect(adTrack.preload).toHaveBeenCalled();case 2:return _context808.a(2)}},_callee808)})));it("gives the preroll ad track a higher prefetch priority than its parent",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee809(){var _createLoadOptionsLis5,_createLoadOptionsLis6,main,parentPriority,adPriority;return _regenerator().w(function(_context809){while(1)switch(_context809.n){case 0:_createLoadOptionsLis5=createLoadOptionsList(1),_createLoadOptionsLis6=_slicedToArray(_createLoadOptionsLis5,1),main=_createLoadOptionsLis6[0];factoryGivingBreak(main.uri,["https://ads/pre.m3u8"]);trackController.load(main);_context809.n=1;return flushAds();case 1:parentPriority=created.get(main.uri).preload.calls.mostRecent().args[0].prefetchPriority;adPriority=created.get("https://ads/pre.m3u8").preload.calls.mostRecent().args[0].prefetchPriority;expect(adPriority).toBeGreaterThan(parentPriority);case 2:return _context809.a(2)}},_callee809)})));it("preloads only preroll breaks, not midroll or postroll",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee810(){var _createLoadOptionsLis7,_createLoadOptionsLis8,main;return _regenerator().w(function(_context810){while(1)switch(_context810.n){case 0:_createLoadOptionsLis7=createLoadOptionsList(1),_createLoadOptionsLis8=_slicedToArray(_createLoadOptionsLis7,1),main=_createLoadOptionsLis8[0];factoryGivingBreak(main.uri,["https://ads/mid.m3u8"],"midroll");trackController.load(main);_context810.n=1;return flushAds();case 1:expect(created.has("https://ads/mid.m3u8")).toBeFalse();case 2:return _context810.a(2)}},_callee810)})));it("creates a preroll ad track only once across repeated preloads",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee811(){var _createLoadOptionsLis9,_createLoadOptionsLis0,main,next,adCreates;return _regenerator().w(function(_context811){while(1)switch(_context811.n){case 0:_createLoadOptionsLis9=createLoadOptionsList(2),_createLoadOptionsLis0=_slicedToArray(_createLoadOptionsLis9,2),main=_createLoadOptionsLis0[0],next=_createLoadOptionsLis0[1];factoryGivingBreak(main.uri,["https://ads/pre.m3u8"]);trackController.load(main);_context811.n=1;return flushAds();case 1:trackController.enqueue(next);_context811.n=2;return flushAds();case 2:adCreates=deps.trackFactory.createTrack.calls.allArgs().filter(function(a){return a[0].uri==="https://ads/pre.m3u8"}).length;expect(adCreates).toBe(1);case 3:return _context811.a(2)}},_callee811)})));it("does not inflate the content preload capacity to hold ad tracks",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee812(){var before,_createLoadOptionsLis1,_createLoadOptionsLis10,main;return _regenerator().w(function(_context812){while(1)switch(_context812.n){case 0:before=trackController.preloadCapacity;_createLoadOptionsLis1=createLoadOptionsList(1),_createLoadOptionsLis10=_slicedToArray(_createLoadOptionsLis1,1),main=_createLoadOptionsLis10[0];factoryGivingBreak(main.uri,["https://ads/pre.m3u8"]);trackController.load(main);_context812.n=1;return flushAds();case 1:expect(trackController.preloadCapacity).toBe(before);case 2:return _context812.a(2)}},_callee812)})));it("disposes a preloaded preroll ad track when its parent content track is evicted",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee813(){var _createLoadOptionsLis11,_createLoadOptionsLis12,a,b,adTrack;return _regenerator().w(function(_context813){while(1)switch(_context813.n){case 0:trackController.configure({preloadCapacity:0,trackPrefetchCount:0});_createLoadOptionsLis11=createLoadOptionsList(2),_createLoadOptionsLis12=_slicedToArray(_createLoadOptionsLis11,2),a=_createLoadOptionsLis12[0],b=_createLoadOptionsLis12[1];factoryGivingBreak(a.uri,["https://ads/a-pre.m3u8"]);trackController.load(a);_context813.n=1;return flushAds();case 1:adTrack=created.get("https://ads/a-pre.m3u8");expect(adTrack).withContext("ad track created for A").toBeDefined();trackController.load(b);_context813.n=2;return flushAds();case 2:expect(trackController.isTrackCached(a.uri)).toBeFalse();expect(adTrack.dispose).toHaveBeenCalled();case 3:return _context813.a(2)}},_callee813)})));it("disposes preloaded preroll ad tracks on clearTrackCache",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee814(){var _createLoadOptionsLis13,_createLoadOptionsLis14,main,adTrack;return _regenerator().w(function(_context814){while(1)switch(_context814.n){case 0:_createLoadOptionsLis13=createLoadOptionsList(1),_createLoadOptionsLis14=_slicedToArray(_createLoadOptionsLis13,1),main=_createLoadOptionsLis14[0];factoryGivingBreak(main.uri,["https://ads/pre.m3u8"]);trackController.load(main);_context814.n=1;return flushAds();case 1:adTrack=created.get("https://ads/pre.m3u8");trackController.clearTrackCache();expect(adTrack.dispose).toHaveBeenCalled();case 2:return _context814.a(2)}},_callee814)})));it("does not preload the ad track if the parent is disposed before its options resolve",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee815(){var resolveOptions,tc,_createLoadOptionsLis15,_createLoadOptionsLis16,main;return _regenerator().w(function(_context815){while(1)switch(_context815.n){case 0:resolveOptions=function resolveOptions(){};tc=new TrackControllerImpl(__spreadProps(__spreadValues({},deps),{adTrackLoadOptionsProvider:function adTrackLoadOptionsProvider(){return new Promise(function(resolve){resolveOptions=resolve})}}));_createLoadOptionsLis15=createLoadOptionsList(1),_createLoadOptionsLis16=_slicedToArray(_createLoadOptionsLis15,1),main=_createLoadOptionsLis16[0];factoryGivingBreak(main.uri,["https://ads/late.m3u8"]);tc.load(main);_context815.n=1;return flushAds();case 1:tc.dispose();resolveOptions({uri:"https://ads/late.m3u8",type:""});_context815.n=2;return flushAds();case 2:expect(created.has("https://ads/late.m3u8")).toBeFalse();case 3:return _context815.a(2)}},_callee815)})));it("does not throw when a preroll ad options provider rejects",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee816(){var tc,_createLoadOptionsLis17,_createLoadOptionsLis18,main;return _regenerator().w(function(_context816){while(1)switch(_context816.n){case 0:tc=new TrackControllerImpl(__spreadProps(__spreadValues({},deps),{adTrackLoadOptionsProvider:function adTrackLoadOptionsProvider(){return Promise.reject(new Error("boom"))}}));_createLoadOptionsLis17=createLoadOptionsList(1),_createLoadOptionsLis18=_slicedToArray(_createLoadOptionsLis17,1),main=_createLoadOptionsLis18[0];factoryGivingBreak(main.uri,["https://ads/x.m3u8"]);expect(function(){return tc.load(main)}).not.toThrow();_context816.n=1;return flushAds();case 1:expect(created.has("https://ads/x.m3u8")).toBeFalse();tc.dispose();case 2:return _context816.a(2)}},_callee816)})));it("does not throw when a preroll break's ad list fails to resolve",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee817(){var _a3,_createLoadOptionsLis19,_createLoadOptionsLis20,main;return _regenerator().w(function(_context817){while(1)switch(_context817.n){case 0:deps.trackFactory.createTrack.and.callFake(function(options){var track2=new MockTrack;trackCount++;track2.implementActivateFakes();track2.uri=options.uri;track2.ads={trackUri:options.uri,adBreaks:[{id:"brk",startTime:0,duration:10,placement:"preroll",restrict:{},once:true,resumeOffset:null,playoutLimit:null,resolutionTimeOffset:null,skipControl:function skipControl(){return null},ads:function ads(){return Promise.reject(new Error("ad list down"))}}]};track2.dispose.and.callFake(function(){if(track2.disposed)throw new DisposedError;track2.disposed=true;trackCount--});return track2});_createLoadOptionsLis19=createLoadOptionsList(1),_createLoadOptionsLis20=_slicedToArray(_createLoadOptionsLis19,1),main=_createLoadOptionsLis20[0];expect(function(){return trackController.load(main)}).not.toThrow();_context817.n=1;return flushAds();case 1:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe(main.uri);case 2:return _context817.a(2)}},_callee817)})));function midrollBreak(adUri){return{id:"mid",startTime:30,duration:5,placement:"midroll",restrict:{},once:false,resumeOffset:null,playoutLimit:null,resolutionTimeOffset:null,skipControl:function skipControl(){return null},ads:function ads(){return Promise.resolve([{id:"ma",startTime:30,duration:5,uri:adUri}])}}}it("preloads a break's ad tracks when adPreload fires",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee818(){var _createLoadOptionsLis21,_createLoadOptionsLis22,main,adTrack;return _regenerator().w(function(_context818){while(1)switch(_context818.n){case 0:_createLoadOptionsLis21=createLoadOptionsList(1),_createLoadOptionsLis22=_slicedToArray(_createLoadOptionsLis21,1),main=_createLoadOptionsLis22[0];factoryGivingBreak(main.uri,[]);trackController.load(main);_context818.n=1;return flushAds();case 1:deps.adController.dispatch("adPreload",{adBreak:midrollBreak("https://ads/mid.m3u8")});_context818.n=2;return flushAds();case 2:adTrack=created.get("https://ads/mid.m3u8");expect(adTrack).withContext("midroll ad track warmed").toBeDefined();expect(adTrack.preload).toHaveBeenCalled();case 3:return _context818.a(2)}},_callee818)})));it("ignores adPreload when there is no parent track",function(){expect(function(){return deps.adController.dispatch("adPreload",{adBreak:midrollBreak("https://ads/mid.m3u8")})}).not.toThrow()});it("does not throw when an adPreload break's ad list rejects",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee819(){var _a3,_createLoadOptionsLis23,_createLoadOptionsLis24,main,adBreak;return _regenerator().w(function(_context819){while(1)switch(_context819.n){case 0:_createLoadOptionsLis23=createLoadOptionsList(1),_createLoadOptionsLis24=_slicedToArray(_createLoadOptionsLis23,1),main=_createLoadOptionsLis24[0];trackController.load(main);_context819.n=1;return flushAds();case 1:adBreak=__spreadProps(__spreadValues({},midrollBreak("https://ads/mid.m3u8")),{ads:function ads(){return Promise.reject(new Error("ad list down"))}});expect(function(){return deps.adController.dispatch("adPreload",{adBreak:adBreak})}).not.toThrow();_context819.n=2;return flushAds();case 2:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe(main.uri);case 3:return _context819.a(2)}},_callee819)})))});describe("ad track lifecycle",function(){function adBreak(placement){return{id:"b1",startTime:0,duration:10,placement:placement,restrict:{},once:false,resumeOffset:null,playoutLimit:null,resolutionTimeOffset:null,skipControl:function skipControl(){return null},ads:function ads(){return Promise.resolve([])}}}var ad={id:"a1",startTime:0,duration:5,uri:"https://ads/x.m3u8"};function flushAds(){return _flushAds2.apply(this,arguments)}function _flushAds2(){_flushAds2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee839(){return _regenerator().w(function(_context839){while(1)switch(_context839.n){case 0:_context839.n=1;return Promise.resolve();case 1:_context839.n=2;return Promise.resolve();case 2:_context839.n=3;return Promise.resolve();case 3:return _context839.a(2)}},_callee839)}));return _flushAds2.apply(this,arguments)}it("loads an ad track when an ad is entered",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee821(){var _trackController50;var _a3;return _regenerator().w(function(_context821){while(1)switch(_context821.n){case 0:(_trackController50=trackController).load.apply(_trackController50,_toConsumableArray(createLoadOptionsList(1)));deps.adController.currentAd=ad;deps.adController.dispatch("adEntered",{ad:ad,index:0,totalAds:1});_context821.n=1;return flushAds();case 1:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe("https://ads/x.m3u8");case 2:return _context821.a(2)}},_callee821)})));it("does not re-activate the current track when its ads change again",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee822(){var _createLoadOptionsLis25,_createLoadOptionsLis26,main,track2;return _regenerator().w(function(_context822){while(1)switch(_context822.n){case 0:_createLoadOptionsLis25=createLoadOptionsList(1),_createLoadOptionsLis26=_slicedToArray(_createLoadOptionsLis25,1),main=_createLoadOptionsLis26[0];trackController.load(main);_context822.n=1;return clock.tick();case 1:track2=trackController.activeTrack;track2.activate.calls.reset();track2.dispatch("adsChange",{previous:track2.ads,current:{trackUri:main.uri,adBreaks:[]}});expect(track2.activate).not.toHaveBeenCalled();case 2:return _context822.a(2)}},_callee822)})));it("fails the ad when its track cannot be resolved",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee823(){var _trackController51;var badAd;return _regenerator().w(function(_context823){while(1)switch(_context823.n){case 0:(_trackController51=trackController).load.apply(_trackController51,_toConsumableArray(createLoadOptionsList(1)));badAd=__spreadProps(__spreadValues({},ad),{uri:"unresolvable"});deps.adController.currentAd=badAd;deps.adController.dispatch("adEntered",{ad:badAd,index:0,totalAds:1});_context823.n=1;return flushAds();case 1:expect(deps.adController.failAd).toHaveBeenCalled();case 2:return _context823.a(2)}},_callee823)})));it("does nothing when an ad break completes with no parent track",function(){expect(function(){return deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("midroll"),resumePosition:0})}).not.toThrow();expect(trackController.activeTrack).toBeNull()});it("ignores adEntered when there is no parent track",function(){expect(function(){return deps.adController.dispatch("adEntered",{ad:{id:"a1",startTime:0,duration:5,uri:"ad"},index:0,totalAds:1})}).not.toThrow();expect(trackController.activeTrack).toBeNull()});it("waits for the next break when another is still active on adBreakCompleted",function(){var _createLoadOptionsLis27=createLoadOptionsList(1),_createLoadOptionsLis28=_slicedToArray(_createLoadOptionsLis27,1),main=_createLoadOptionsLis28[0];trackController.load(main);var before=trackController.activeTrack;deps.adController.currentAdBreak=adBreak("midroll");deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("midroll"),resumePosition:5});expect(trackController.activeTrack).toBe(before)});it("does not resume content on adBreakCompleted for a break that played no ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee824(){var _createLoadOptionsLis29,_createLoadOptionsLis30,main,track2;return _regenerator().w(function(_context824){while(1)switch(_context824.n){case 0:_createLoadOptionsLis29=createLoadOptionsList(1),_createLoadOptionsLis30=_slicedToArray(_createLoadOptionsLis29,1),main=_createLoadOptionsLis30[0];trackController.load(main);_context824.n=1;return clock.tick();case 1:track2=trackController.activeTrack;track2.activate.calls.reset();deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("midroll"),resumePosition:5});expect(track2.activate).not.toHaveBeenCalled();case 2:return _context824.a(2)}},_callee824)})));it("ignores an ended event when there is no current track",function(){expect(function(){return deps.playbackController.dispatch("ended",{previous:false,current:true})}).not.toThrow()});it("logs and does not throw when enterPostroll rejects on track end",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee825(){var _createLoadOptionsLis31,_createLoadOptionsLis32,main;return _regenerator().w(function(_context825){while(1)switch(_context825.n){case 0:_createLoadOptionsLis31=createLoadOptionsList(1),_createLoadOptionsLis32=_slicedToArray(_createLoadOptionsLis31,1),main=_createLoadOptionsLis32[0];trackController.load(main);_context825.n=1;return clock.tick();case 1:deps.adController.enterPostroll.and.rejectWith(new Error("boom"));expect(function(){return deps.playbackController.dispatch("ended",{previous:false,current:true})}).not.toThrow();_context825.n=2;return clock.tick();case 2:return _context825.a(2)}},_callee825)})));it("activates content when enterPreroll rejects",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee826(){var _createLoadOptionsLis33,_createLoadOptionsLis34,main,track2;return _regenerator().w(function(_context826){while(1)switch(_context826.n){case 0:_createLoadOptionsLis33=createLoadOptionsList(1),_createLoadOptionsLis34=_slicedToArray(_createLoadOptionsLis33,1),main=_createLoadOptionsLis34[0];deps.adController.enterPreroll.and.rejectWith(new Error("boom"));trackController.load(main);_context826.n=1;return clock.tick();case 1:track2=trackController.activeTrack;expect(track2.activate).toHaveBeenCalled();case 2:return _context826.a(2)}},_callee826)})));it("does not activate content while a preroll is entered",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee827(){var _createLoadOptionsLis35,_createLoadOptionsLis36,main,track2;return _regenerator().w(function(_context827){while(1)switch(_context827.n){case 0:_createLoadOptionsLis35=createLoadOptionsList(1),_createLoadOptionsLis36=_slicedToArray(_createLoadOptionsLis35,1),main=_createLoadOptionsLis36[0];deps.adController.enterPreroll.and.resolveTo(adBreak("preroll"));trackController.load(main);_context827.n=1;return clock.tick();case 1:expect(trackController.activeTrack).toBeNull();track2=trackController.getCachedTrack(main.uri);expect(track2.activate).not.toHaveBeenCalled();case 2:return _context827.a(2)}},_callee827)})));it("resumes the parent track at the resume position after a midroll ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee828(){var _createLoadOptionsLis37,_createLoadOptionsLis38,main,track2;return _regenerator().w(function(_context828){while(1)switch(_context828.n){case 0:_createLoadOptionsLis37=createLoadOptionsList(1),_createLoadOptionsLis38=_slicedToArray(_createLoadOptionsLis37,1),main=_createLoadOptionsLis38[0];trackController.load(main);deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("midroll"),resumePosition:7});_context828.n=1;return clock.tick();case 1:track2=trackController.activeTrack;expect(track2.uri).toBe(main.uri);expect(track2.activate).toHaveBeenCalledWith(objectContaining24({startTime:7}));case 2:return _context828.a(2)}},_callee828)})));it("resumes the parent at its configured start time after a preroll ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee829(){var _createLoadOptionsLis39,_createLoadOptionsLis40,main,track2;return _regenerator().w(function(_context829){while(1)switch(_context829.n){case 0:_createLoadOptionsLis39=createLoadOptionsList(1),_createLoadOptionsLis40=_slicedToArray(_createLoadOptionsLis39,1),main=_createLoadOptionsLis40[0];main.config={startTime:3};trackController.load(main);deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("preroll"),resumePosition:99});_context829.n=1;return clock.tick();case 1:track2=trackController.activeTrack;expect(track2.activate).toHaveBeenCalledWith(objectContaining24({startTime:3}));case 2:return _context829.a(2)}},_callee829)})));it("skips the deferred resume if interrupted before the frame",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee830(){var _createLoadOptionsLis41,_createLoadOptionsLis42,main,changeSpy;return _regenerator().w(function(_context830){while(1)switch(_context830.n){case 0:pending("REVIEW: content resume on adBreakCompleted is now synchronous (no deferred/interruptible frame), so this interruption guard no longer applies. Decide: intended or restore deferral.");_createLoadOptionsLis41=createLoadOptionsList(1),_createLoadOptionsLis42=_slicedToArray(_createLoadOptionsLis41,1),main=_createLoadOptionsLis42[0];trackController.load(main);changeSpy=createEventSpy(trackController,"trackActivated");deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("midroll"),resumePosition:5});deps.adController.currentAd=__spreadProps(__spreadValues({},ad),{id:"other"});_context830.n=1;return clock.tick();case 1:expect(changeSpy).not.toHaveBeenCalled();case 2:return _context830.a(2)}},_callee830)})));it("advances to the next track after a postroll ad when one exists",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee831(){var _trackController52;var _a3,list,trackEnded;return _regenerator().w(function(_context831){while(1)switch(_context831.n){case 0:list=createLoadOptionsList(2);(_trackController52=trackController).load.apply(_trackController52,_toConsumableArray(list));trackEnded=createEventSpy(trackController,"trackEnded");deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("postroll"),resumePosition:0});_context831.n=1;return clock.tick();case 1:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe(list[1].uri);expect(trackEnded).toHaveBeenCalledWith(objectContaining24({track:any29(Object)}));case 2:return _context831.a(2)}},_callee831)})));it("ends the queue after a postroll ad when there is no next track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee832(){var _a3,_b,_createLoadOptionsLis43,_createLoadOptionsLis44,main,queueEnded,trackEnded,trackActivated;return _regenerator().w(function(_context832){while(1)switch(_context832.n){case 0:_createLoadOptionsLis43=createLoadOptionsList(1),_createLoadOptionsLis44=_slicedToArray(_createLoadOptionsLis43,1),main=_createLoadOptionsLis44[0];trackController.load(main);_context832.n=1;return clock.tick();case 1:deps.adController.currentAd=ad;deps.adController.dispatch("adEntered",{ad:ad,index:0,totalAds:1});_context832.n=2;return flushAds();case 2:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe("https://ads/x.m3u8");queueEnded=createEventSpy(trackController,"queueEnded");trackEnded=createEventSpy(trackController,"trackEnded");trackActivated=createEventSpy(trackController,"trackActivated");deps.adController.currentAd=null;deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("postroll"),resumePosition:0});_context832.n=3;return clock.tick();case 3:expect(trackEnded).toHaveBeenCalledWith(objectContaining24({track:any29(Object)}));expect(queueEnded).toHaveBeenCalled();expect((_b=trackController.activeTrack)==null?void 0:_b.uri).toBe(main.uri);expect(trackActivated).toHaveBeenCalledWith(objectContaining24({track:objectContaining24({uri:main.uri})}));expect(trackActivated).toHaveBeenCalledBefore(queueEnded);case 4:return _context832.a(2)}},_callee832)})));it("ends the track after an empty postroll where no ad ever began",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee833(){var _createLoadOptionsLis45,_createLoadOptionsLis46,main,trackEnded,queueEnded;return _regenerator().w(function(_context833){while(1)switch(_context833.n){case 0:_createLoadOptionsLis45=createLoadOptionsList(1),_createLoadOptionsLis46=_slicedToArray(_createLoadOptionsLis45,1),main=_createLoadOptionsLis46[0];trackController.load(main);_context833.n=1;return clock.tick();case 1:expect(trackController.activeTrack.active).toBeTrue();trackEnded=createEventSpy(trackController,"trackEnded");queueEnded=createEventSpy(trackController,"queueEnded");deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("postroll"),resumePosition:0});_context833.n=2;return clock.tick();case 2:expect(trackEnded).toHaveBeenCalledWith(objectContaining24({track:objectContaining24({uri:main.uri})}));expect(queueEnded).toHaveBeenCalled();case 3:return _context833.a(2)}},_callee833)})));it("advances to the next track after an empty postroll where no ad ever began",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee834(){var _trackController53;var _a3,list,trackEnded;return _regenerator().w(function(_context834){while(1)switch(_context834.n){case 0:list=createLoadOptionsList(2);(_trackController53=trackController).load.apply(_trackController53,_toConsumableArray(list));_context834.n=1;return clock.tick();case 1:expect(trackController.activeTrack.active).toBeTrue();trackEnded=createEventSpy(trackController,"trackEnded");deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("postroll"),resumePosition:0});_context834.n=2;return clock.tick();case 2:expect(trackEnded).toHaveBeenCalledWith(objectContaining24({track:any29(Object)}));expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe(list[1].uri);case 3:return _context834.a(2)}},_callee834)})));it("does not treat a completed midroll ad as the track ending",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee835(){var _trackController54;var trackEnded;return _regenerator().w(function(_context835){while(1)switch(_context835.n){case 0:(_trackController54=trackController).load.apply(_trackController54,_toConsumableArray(createLoadOptionsList(1)));trackEnded=createEventSpy(trackController,"trackEnded");deps.adController.dispatch("adBreakCompleted",{adBreak:adBreak("midroll"),resumePosition:5});_context835.n=1;return clock.tick();case 1:expect(trackEnded).not.toHaveBeenCalled();case 2:return _context835.a(2)}},_callee835)})));it("does not advance the queue when a postroll is pending on track end",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee836(){var _a3,_createLoadOptionsLis47,_createLoadOptionsLis48,main,queueEnded;return _regenerator().w(function(_context836){while(1)switch(_context836.n){case 0:_createLoadOptionsLis47=createLoadOptionsList(2),_createLoadOptionsLis48=_slicedToArray(_createLoadOptionsLis47,1),main=_createLoadOptionsLis48[0];trackController.load(main);deps.adController.enterPostroll.and.resolveTo(adBreak("postroll"));queueEnded=createEventSpy(trackController,"queueEnded");deps.playbackController.dispatch("ended",{});_context836.n=1;return clock.tick();case 1:expect(deps.adController.enterPostroll).toHaveBeenCalled();expect(queueEnded).not.toHaveBeenCalled();expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe(main.uri);case 2:return _context836.a(2)}},_callee836)})));it("ignores an ended event fired while an ad track is playing",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee837(){var _trackController55;var _a3,trackEnded,queueEnded;return _regenerator().w(function(_context837){while(1)switch(_context837.n){case 0:(_trackController55=trackController).load.apply(_trackController55,_toConsumableArray(createLoadOptionsList(1)));deps.adController.currentAd=ad;deps.adController.dispatch("adEntered",{ad:ad,index:0,totalAds:1});_context837.n=1;return flushAds();case 1:expect((_a3=trackController.activeTrack)==null?void 0:_a3.uri).toBe("https://ads/x.m3u8");trackEnded=createEventSpy(trackController,"trackEnded");queueEnded=createEventSpy(trackController,"queueEnded");deps.playbackController.dispatch("ended",{});_context837.n=2;return clock.tick();case 2:expect(deps.adController.enterPostroll).not.toHaveBeenCalled();expect(trackEnded).not.toHaveBeenCalled();expect(queueEnded).not.toHaveBeenCalled();case 3:return _context837.a(2)}},_callee837)})));it("fails the ad when the current track errors",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee838(){var _trackController56;var track2,error;return _regenerator().w(function(_context838){while(1)switch(_context838.n){case 0:(_trackController56=trackController).load.apply(_trackController56,_toConsumableArray(createLoadOptionsList(1)));_context838.n=1;return clock.tick();case 1:track2=trackController.activeTrack;error=new Error("boom");track2.dispatch("error",{target:track2,error:error});expect(deps.adController.failAd).toHaveBeenCalledWith(error);case 2:return _context838.a(2)}},_callee838)})))});describe("re-entrant queue changes",function(){it("throws if a trackDeactivated handler mutates the queue",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee840(){var _trackController57;var reentered;return _regenerator().w(function(_context840){while(1)switch(_context840.n){case 0:(_trackController57=trackController).load.apply(_trackController57,_toConsumableArray(createLoadOptionsList(1)));_context840.n=1;return clock.tick();case 1:reentered=false;trackController.on("trackDeactivated",function(){if(!reentered){reentered=true;trackController.clearQueue()}});expect(function(){var _trackController58;return(_trackController58=trackController).load.apply(_trackController58,_toConsumableArray(createLoadOptionsList(2)))}).toThrowError(/queue/);case 2:return _context840.a(2)}},_callee840)})));it("throws if a queueChange handler mutates the queue",function(){var reentered=false;trackController.on("queueChange",function(){if(!reentered){var _trackController59;reentered=true;(_trackController59=trackController).enqueue.apply(_trackController59,_toConsumableArray(createLoadOptionsList(1)))}});expect(function(){var _trackController60;return(_trackController60=trackController).load.apply(_trackController60,_toConsumableArray(createLoadOptionsList(2)))}).toThrowError(/queueChange/)})});describe("dispose",function(){afterEach(function(){disposed=true});it("removes all handlers",function(){trackController.dispose();expect(deps.playbackController.hasAnyListeners()).toBeFalse()});it("disposes current track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee841(){var _trackController61;var track2;return _regenerator().w(function(_context841){while(1)switch(_context841.n){case 0:(_trackController61=trackController).load.apply(_trackController61,_toConsumableArray(createLoadOptionsList(1)));_context841.n=1;return clock.tick();case 1:track2=trackController.activeTrack;trackController.dispose();expect(track2.dispose).toHaveBeenCalledOnceWith();case 2:return _context841.a(2)}},_callee841)})));it("disposes all tracks",function(){var _trackController62;var loadOptionsList=createLoadOptionsList(5);(_trackController62=trackController).load.apply(_trackController62,_toConsumableArray(loadOptionsList));expect(trackCount).toBe(trackController.options.trackPrefetchCount+1);expect(trackCount).toBeGreaterThan(0);trackController.dispose();expect(trackCount).toBe(0)})})});describe("ALL_TRACK_CONTROLLER_EVENTS",function(){it("provides a comprehensive list of all track controller events",function(){expectTypeStrictlyEquals(true)})});// test/unit/track/TrackFactory.test.ts
2269
2269
  describe("createTrackFactory",function(){var MockTrack1=/*#__PURE__*/function(_MockTrack){function MockTrack1(){_classCallCheck(this,MockTrack1);return _callSuper(this,MockTrack1,arguments)}_inherits(MockTrack1,_MockTrack);return _createClass(MockTrack1)}(MockTrack);var MockTrack2=/*#__PURE__*/function(_MockTrack2){function MockTrack2(){_classCallCheck(this,MockTrack2);return _callSuper(this,MockTrack2,arguments)}_inherits(MockTrack2,_MockTrack2);return _createClass(MockTrack2)}(MockTrack);var MockTrack3=/*#__PURE__*/function(_MockTrack3){function MockTrack3(){_classCallCheck(this,MockTrack3);return _callSuper(this,MockTrack3,arguments)}_inherits(MockTrack3,_MockTrack3);return _createClass(MockTrack3)}(MockTrack);var trackFactory;function factory(Ctor){return{validate:function validate(){},createTrack:function createTrack(options){var track2=new Ctor;track2.uri=options.uri;return track2}}}beforeEach(function(){trackFactory=createTrackFactory({key1:factory(MockTrack1),key2:factory(MockTrack2),key3:factory(MockTrack3)})});it("maps track type keys to their respective factories",function(){var track1=trackFactory.createTrack({type:"key1",uri:"uri1"});expect(track1).toBeInstanceOf(MockTrack1);expect(track1.uri).toBe("uri1");var track2=trackFactory.createTrack({type:"key2",uri:"uri2"});expect(track2).toBeInstanceOf(MockTrack2);expect(track2.uri).toBe("uri2");var track3=trackFactory.createTrack({type:"key3",uri:"uri3"});expect(track3).toBeInstanceOf(MockTrack3);expect(track3.uri).toBe("uri3")});it("validates type",function(){trackFactory.validate({type:"key3",uri:"abc"});expect(function(){return trackFactory.validate({type:"non-existent",uri:"abc"})}).toThrowError("Expected: one of: key1 | key2 | key3, but was: \"non-existent\". At: ")});it("enforces that track factory keys can be assigned to the track type id",function(){createTrackFactory({key1:{validate:function validate(){},createTrack:function createTrack(_options){return new MockTrack1}}});createTrackFactory({// @ts-expect-error 'key1' is not assignable to 'key2'
2270
2270
  key1:{validate:function validate(){},createTrack:function createTrack(_options){return new MockTrack1}}});expectNothing()})});describe("InferLoadOptionsFromFactory",function(){it("provides the type of load options for the given factory type",function(){expectTypeStrictlyEquals(true)})});// test/unit/util/media/codecOverrides.test.ts
2271
2271
  describe("codecOverrides",function(){describe("resolveCodecOverride",function(){it("returns undefined when overrides are undefined",function(){expect(resolveCodecOverride("video/mp4; codecs=\"hvc1.1\"",void 0)).toBeUndefined()});it("returns undefined when overrides are empty",function(){expect(resolveCodecOverride("video/mp4; codecs=\"hvc1.1\"",{})).toBeUndefined()});it("returns undefined when no key matches",function(){expect(resolveCodecOverride("video/mp4; codecs=\"avc1.64001f\"",{hvc1:"deny"})).toBeUndefined()});it("matches a codec by prefix",function(){expect(resolveCodecOverride("video/mp4; codecs=\"hvc1.2.20000000.L123.B0\"",{hvc1:"deny"})).toBe("deny")});it("resolves an allow",function(){expect(resolveCodecOverride("video/mp4; codecs=\"av01.0.05M.08\"",{av01:"allow"})).toBe("allow")});it("is case-insensitive on the key",function(){expect(resolveCodecOverride("video/mp4; codecs=\"HVC1.1\"",{hvc1:"deny"})).toBe("deny")});it("deny wins over allow across multiple codecs",function(){expect(resolveCodecOverride("video/mp4; codecs=\"hvc1.1,mp4a.40.2\"",{mp4a:"allow",hvc1:"deny"})).toBe("deny")});it("returns undefined when the mimeType has no codecs",function(){expect(resolveCodecOverride("video/mp4",{hvc1:"deny"})).toBeUndefined()})})});// test/unit/util/media/codecSupport.test.ts
2272
2272
  describe("codecSupport",function(){describe("extractCodecs",function(){it("extracts a single codec from a mimeType",function(){expect(extractCodecs("video/mp4; codecs=\"avc1.64001f\"")).toEqual(["avc1.64001f"])});it("extracts multiple comma-separated codecs",function(){expect(extractCodecs("video/mp4; codecs=\"avc1.64001f,mp4a.40.2\"")).toEqual(["avc1.64001f","mp4a.40.2"])});it("handles unquoted codecs",function(){expect(extractCodecs("audio/mp4; codecs=ac-3")).toEqual(["ac-3"])});it("returns empty when no codecs parameter is present",function(){expect(extractCodecs("video/mp4")).toEqual([])});it("trims whitespace around codecs",function(){expect(extractCodecs("video/mp4; codecs=\"hvc1.1 , mp4a.40.2\"")).toEqual(["hvc1.1","mp4a.40.2"])})})});// test/unit/util/media/getAudioContext.test.ts
2273
2273
  describe("audioContext",function(){describe("createAudioContext",function(){beforeEach(function(){if(!isNode())pending("requires node environment to test")});describe("when AudioContext is not supported",function(){it("returns null",function(){expect(createAudioContext()).toBeNull()})});describe("when AudioContext is supported",function(){beforeEach(function(){globalThis.AudioContext=MockAudioContext});afterEach(function(){delete globalThis.AudioContext});it("creates a new AudioContext instance if it does not exist",function(){expect(createAudioContext()).toBeInstanceOf(MockAudioContext)})});describe("when webkitAudioContext is supported",function(){beforeEach(function(){globalThis.webkitAudioContext=MockAudioContext});afterEach(function(){delete globalThis.webkitAudioContext});it("creates a new AudioContext instance if it does not exist",function(){expect(createAudioContext()).toBeInstanceOf(MockAudioContext)})})});describe("getAudioContext",function(){it("returns the audio context singleton",function(){var audioContext=getAudioContext();expect(getAudioContext()).toBe(audioContext)})})});// test/unit/util/media/mediaSource.test.ts
2274
- var createSpy29=jasmine.createSpy;describe("mediaSource",function(){var originalMediaSource=globalThis.MediaSource;var originalManagedMediaSource=globalThis.ManagedMediaSource;beforeEach(function(){globalThis.ManagedMediaSource=void 0;globalThis.MediaSource=void 0});afterEach(function(){globalThis.MediaSource=originalMediaSource;globalThis.ManagedMediaSource=originalManagedMediaSource;MockMediaSourceGlobal.isTypeSupported.calls.reset()});describe("supportsMse",function(){it("returns true if MediaSource or ManagedMediaSource is defined",function(){globalThis.MediaSource=MockMediaSourceGlobal;expect(supportsMse()).toBe(true);globalThis.MediaSource=void 0;expect(supportsMse()).toBe(false);globalThis.ManagedMediaSource=MockMediaSourceGlobal;expect(supportsMse()).toBe(true)})});describe("createMediaSource",function(){it("creates a MediaSource from either a ManagedMediaSource or MediaSource",function(){globalThis.MediaSource=MockMediaSourceGlobal;expect(createMediaSource()).toBeInstanceOf(MockMediaSource);globalThis.MediaSource=void 0;expect(function(){return createMediaSource()}).toThrowError("Media Source Extensions not supported");globalThis.ManagedMediaSource=MockMediaSourceGlobal;expect(createMediaSource()).toBeInstanceOf(MockMediaSource)})});describe("assertMseSupported",function(){it("throws when MSE is not supported",function(){expect(function(){return assertMseSupported()}).toThrowError("Media Source Extensions not supported");globalThis.MediaSource=MockMediaSourceGlobal;expect(function(){return assertMseSupported()}).not.toThrow()})});describe("isTypeSupported",function(){it("Uses the static isTypeSupported from ManagedMediaSource or MediaSource",function(){globalThis.ManagedMediaSource=MockMediaSourceGlobal;MockMediaSourceGlobal.isTypeSupported.and.returnValue(true);expect(isTypeSupported("type1")).toBeTrue();expect(MockMediaSourceGlobal.isTypeSupported).toHaveBeenCalledOnceWith("type1");globalThis.ManagedMediaSource=void 0;globalThis.MediaSource=MockMediaSourceGlobal;MockMediaSourceGlobal.isTypeSupported.calls.reset();expect(isTypeSupported("type2")).toBeTrue();expect(MockMediaSourceGlobal.isTypeSupported).toHaveBeenCalledOnceWith("type2")});it("delegates to the native MediaSource.isTypeSupported",function(){globalThis.MediaSource=MockMediaSourceGlobal;MockMediaSourceGlobal.isTypeSupported.and.returnValue(true);expect(isTypeSupported("video/mp4; codecs=\"hvc1.2.20000000.L123.B0\"")).toBeTrue();expect(MockMediaSourceGlobal.isTypeSupported).toHaveBeenCalled()})});describe("onMediaSourceOpen",function(){var mediaSource;var mediaSourceEventFakes;beforeEach(function(){mediaSource=new MockMediaSource;mediaSourceEventFakes=implementEventFakes(mediaSource)});describe("when already open",function(){beforeEach(function(){mediaSource.readyState="open"});it("invokes callback immediately",function(){var spy=createSpy29("handler");onMediaSourceOpen(mediaSource,spy);expect(spy).toHaveBeenCalledOnceWith();spy.calls.reset();mediaSource.dispatchEvent(mockEvent("sourceopen"));expect(spy).toHaveBeenCalledOnceWith()});describe("when options.once is true",function(){it("invokes callback once",function(){var spy=createSpy29("handler");onMediaSourceOpen(mediaSource,spy,{once:true});expect(spy).toHaveBeenCalledOnceWith();expect(mediaSourceEventFakes.hasAnyListeners()).toBeFalse()})})});it("invokes callback on sourceopen event",function(){var spy=createSpy29("handler");onMediaSourceOpen(mediaSource,spy);expect(spy).not.toHaveBeenCalled();mediaSource.dispatchEvent(mockEvent("sourceopen"));expect(spy).toHaveBeenCalledOnceWith()});describe("when options.once is true",function(){it("invokes callback once",function(){var spy=createSpy29("handler");onMediaSourceOpen(mediaSource,spy,{once:true});mediaSource.dispatchEvent(mockEvent("sourceopen"));expect(spy).toHaveBeenCalledOnceWith();spy.calls.reset();mediaSource.dispatchEvent(mockEvent("sourceopen"));expect(spy).not.toHaveBeenCalled()})});describe("when unsubscribed",function(){it("removes handler",function(){var spy=createSpy29("handler");var unsub=onMediaSourceOpen(mediaSource,spy);expect(mediaSourceEventFakes.hasAnyListeners()).toBeTrue();unsub();expect(mediaSourceEventFakes.hasAnyListeners()).toBeFalse()})})});describe("onMediaSourceEnded",function(){var mediaSource;var mediaSourceEventFakes;beforeEach(function(){mediaSource=new MockMediaSource;mediaSourceEventFakes=implementEventFakes(mediaSource)});describe("when already ended",function(){beforeEach(function(){mediaSource.readyState="ended"});it("invokes callback immediately",function(){var spy=createSpy29("handler");onMediaSourceEnded(mediaSource,spy);expect(spy).toHaveBeenCalledOnceWith();spy.calls.reset();mediaSource.dispatchEvent(mockEvent("sourceended"));expect(spy).toHaveBeenCalledOnceWith()});describe("when options.once is true",function(){it("invokes callback once",function(){var spy=createSpy29("handler");onMediaSourceEnded(mediaSource,spy,{once:true});expect(spy).toHaveBeenCalledOnceWith();expect(mediaSourceEventFakes.hasAnyListeners()).toBeFalse()})})});it("invokes callback on sourceended event",function(){var spy=createSpy29("handler");onMediaSourceEnded(mediaSource,spy);expect(spy).not.toHaveBeenCalled();mediaSource.dispatchEvent(mockEvent("sourceended"));expect(spy).toHaveBeenCalledOnceWith()});describe("when options.once is true",function(){it("invokes callback once",function(){var spy=createSpy29("handler");onMediaSourceEnded(mediaSource,spy,{once:true});mediaSource.dispatchEvent(mockEvent("sourceended"));expect(spy).toHaveBeenCalledOnceWith();spy.calls.reset();mediaSource.dispatchEvent(mockEvent("sourceended"));expect(spy).not.toHaveBeenCalled()})});describe("when unsubscribed",function(){it("removes handler",function(){var spy=createSpy29("handler");var unsub=onMediaSourceEnded(mediaSource,spy);expect(mediaSourceEventFakes.hasAnyListeners()).toBeTrue();unsub();expect(mediaSourceEventFakes.hasAnyListeners()).toBeFalse()})})});describe("nextMediaSourceEnded",function(){var mediaSource;var clock=useMockTime();beforeEach(function(){mediaSource=new MockMediaSource;implementEventFakes(mediaSource)});it("returns a promise that resolves on next media source ended state",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee840(){var nextEnded;return _regenerator().w(function(_context840){while(1)switch(_context840.n){case 0:nextEnded=nextMediaSourceEnded(mediaSource);_context840.n=1;return expectAsync(nextEnded).toBePending();case 1:mediaSource.dispatchEvent(mockEvent("sourceended"));_context840.n=2;return expectAsync(nextEnded).toBeResolved();case 2:return _context840.a(2)}},_callee840)})));it("uses the provided timeout",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee841(){var nextEnded;return _regenerator().w(function(_context841){while(1)switch(_context841.n){case 0:nextEnded=nextMediaSourceEnded(mediaSource,3,"message");_context841.n=1;return clock.tick(2.9);case 1:_context841.n=2;return expectAsync(nextEnded).toBePending();case 2:_context841.n=3;return clock.tick(0.1);case 3:_context841.n=4;return expectAsync(nextEnded).toBeRejectedWithError(TimeoutError,"message");case 4:return _context841.a(2)}},_callee841)})));it("resolves immediately when media source is already ended",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee842(){var nextEnded;return _regenerator().w(function(_context842){while(1)switch(_context842.n){case 0:mediaSource.readyState="ended";nextEnded=nextMediaSourceEnded(mediaSource);_context842.n=1;return expectAsync(nextEnded).toBeResolved();case 1:return _context842.a(2)}},_callee842)})))})});// test/unit/util/media/sourceBuffer.test.ts
2275
- describe("nextSourceBufferIdle",function(){var mockSourceBuffer;var mockSourceBufferEventFakes;beforeEach(function(){mockSourceBuffer=new MockSourceBuffer;mockSourceBufferEventFakes=implementEventFakes(mockSourceBuffer)});it("resolves immediately if sourceBuffer is null",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee843(){return _regenerator().w(function(_context843){while(1)switch(_context843.n){case 0:_context843.n=1;return expectAsync(nextSourceBufferIdle(null)).toBeResolved();case 1:return _context843.a(2)}},_callee843)})));it("resolves immediately if sourceBuffer is not updating",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee844(){return _regenerator().w(function(_context844){while(1)switch(_context844.n){case 0:_context844.n=1;return expectAsync(nextSourceBufferIdle(mockSourceBuffer)).toBeResolved();case 1:return _context844.a(2)}},_callee844)})));it("resolves when update event is emitted",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee845(){var promise2;return _regenerator().w(function(_context845){while(1)switch(_context845.n){case 0:mockSourceBuffer.updating=true;promise2=nextSourceBufferIdle(mockSourceBuffer);mockSourceBuffer.dispatchEvent(mockEvent("update"));_context845.n=1;return expectAsync(promise2).toBeResolved();case 1:expect(mockSourceBufferEventFakes.hasAnyListeners()).toBeFalse();case 2:return _context845.a(2)}},_callee845)})));it("rejects with SourceBufferError when an error event is emitted",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee846(){var promise2;return _regenerator().w(function(_context846){while(1)switch(_context846.n){case 0:mockSourceBuffer.updating=true;promise2=nextSourceBufferIdle(mockSourceBuffer);mockSourceBuffer.dispatchEvent(mockEvent("error"));_context846.n=1;return expectAsync(promise2).toBeRejectedWithError(SourceBufferError);case 1:expect(mockSourceBufferEventFakes.hasAnyListeners()).toBeFalse();case 2:return _context846.a(2)}},_callee846)})));it("rejects with an AbortError when abort event is emitted",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee847(){var promise2;return _regenerator().w(function(_context847){while(1)switch(_context847.n){case 0:mockSourceBuffer.updating=true;promise2=nextSourceBufferIdle(mockSourceBuffer);mockSourceBuffer.dispatchEvent(mockEvent("abort"));_context847.n=1;return expectAsync(promise2).toBeRejectedWith(new AbortError);case 1:expect(mockSourceBufferEventFakes.hasAnyListeners()).toBeFalse();case 2:return _context847.a(2)}},_callee847)})))});// test/unit/vinyl/createVinylFactories.test.ts
2274
+ var createSpy29=jasmine.createSpy;describe("mediaSource",function(){var originalMediaSource=globalThis.MediaSource;var originalManagedMediaSource=globalThis.ManagedMediaSource;beforeEach(function(){globalThis.ManagedMediaSource=void 0;globalThis.MediaSource=void 0});afterEach(function(){globalThis.MediaSource=originalMediaSource;globalThis.ManagedMediaSource=originalManagedMediaSource;MockMediaSourceGlobal.isTypeSupported.calls.reset()});describe("supportsMse",function(){it("returns true if MediaSource or ManagedMediaSource is defined",function(){globalThis.MediaSource=MockMediaSourceGlobal;expect(supportsMse()).toBe(true);globalThis.MediaSource=void 0;expect(supportsMse()).toBe(false);globalThis.ManagedMediaSource=MockMediaSourceGlobal;expect(supportsMse()).toBe(true)})});describe("createMediaSource",function(){it("creates a MediaSource from either a ManagedMediaSource or MediaSource",function(){globalThis.MediaSource=MockMediaSourceGlobal;expect(createMediaSource()).toBeInstanceOf(MockMediaSource);globalThis.MediaSource=void 0;expect(function(){return createMediaSource()}).toThrowError("Media Source Extensions not supported");globalThis.ManagedMediaSource=MockMediaSourceGlobal;expect(createMediaSource()).toBeInstanceOf(MockMediaSource)})});describe("assertMseSupported",function(){it("throws when MSE is not supported",function(){expect(function(){return assertMseSupported()}).toThrowError("Media Source Extensions not supported");globalThis.MediaSource=MockMediaSourceGlobal;expect(function(){return assertMseSupported()}).not.toThrow()})});describe("isTypeSupported",function(){it("Uses the static isTypeSupported from ManagedMediaSource or MediaSource",function(){globalThis.ManagedMediaSource=MockMediaSourceGlobal;MockMediaSourceGlobal.isTypeSupported.and.returnValue(true);expect(isTypeSupported("type1")).toBeTrue();expect(MockMediaSourceGlobal.isTypeSupported).toHaveBeenCalledOnceWith("type1");globalThis.ManagedMediaSource=void 0;globalThis.MediaSource=MockMediaSourceGlobal;MockMediaSourceGlobal.isTypeSupported.calls.reset();expect(isTypeSupported("type2")).toBeTrue();expect(MockMediaSourceGlobal.isTypeSupported).toHaveBeenCalledOnceWith("type2")});it("delegates to the native MediaSource.isTypeSupported",function(){globalThis.MediaSource=MockMediaSourceGlobal;MockMediaSourceGlobal.isTypeSupported.and.returnValue(true);expect(isTypeSupported("video/mp4; codecs=\"hvc1.2.20000000.L123.B0\"")).toBeTrue();expect(MockMediaSourceGlobal.isTypeSupported).toHaveBeenCalled()})});describe("onMediaSourceOpen",function(){var mediaSource;var mediaSourceEventFakes;beforeEach(function(){mediaSource=new MockMediaSource;mediaSourceEventFakes=implementEventFakes(mediaSource)});describe("when already open",function(){beforeEach(function(){mediaSource.readyState="open"});it("invokes callback immediately",function(){var spy=createSpy29("handler");onMediaSourceOpen(mediaSource,spy);expect(spy).toHaveBeenCalledOnceWith();spy.calls.reset();mediaSource.dispatchEvent(mockEvent("sourceopen"));expect(spy).toHaveBeenCalledOnceWith()});describe("when options.once is true",function(){it("invokes callback once",function(){var spy=createSpy29("handler");onMediaSourceOpen(mediaSource,spy,{once:true});expect(spy).toHaveBeenCalledOnceWith();expect(mediaSourceEventFakes.hasAnyListeners()).toBeFalse()})})});it("invokes callback on sourceopen event",function(){var spy=createSpy29("handler");onMediaSourceOpen(mediaSource,spy);expect(spy).not.toHaveBeenCalled();mediaSource.dispatchEvent(mockEvent("sourceopen"));expect(spy).toHaveBeenCalledOnceWith()});describe("when options.once is true",function(){it("invokes callback once",function(){var spy=createSpy29("handler");onMediaSourceOpen(mediaSource,spy,{once:true});mediaSource.dispatchEvent(mockEvent("sourceopen"));expect(spy).toHaveBeenCalledOnceWith();spy.calls.reset();mediaSource.dispatchEvent(mockEvent("sourceopen"));expect(spy).not.toHaveBeenCalled()})});describe("when unsubscribed",function(){it("removes handler",function(){var spy=createSpy29("handler");var unsub=onMediaSourceOpen(mediaSource,spy);expect(mediaSourceEventFakes.hasAnyListeners()).toBeTrue();unsub();expect(mediaSourceEventFakes.hasAnyListeners()).toBeFalse()})})});describe("onMediaSourceEnded",function(){var mediaSource;var mediaSourceEventFakes;beforeEach(function(){mediaSource=new MockMediaSource;mediaSourceEventFakes=implementEventFakes(mediaSource)});describe("when already ended",function(){beforeEach(function(){mediaSource.readyState="ended"});it("invokes callback immediately",function(){var spy=createSpy29("handler");onMediaSourceEnded(mediaSource,spy);expect(spy).toHaveBeenCalledOnceWith();spy.calls.reset();mediaSource.dispatchEvent(mockEvent("sourceended"));expect(spy).toHaveBeenCalledOnceWith()});describe("when options.once is true",function(){it("invokes callback once",function(){var spy=createSpy29("handler");onMediaSourceEnded(mediaSource,spy,{once:true});expect(spy).toHaveBeenCalledOnceWith();expect(mediaSourceEventFakes.hasAnyListeners()).toBeFalse()})})});it("invokes callback on sourceended event",function(){var spy=createSpy29("handler");onMediaSourceEnded(mediaSource,spy);expect(spy).not.toHaveBeenCalled();mediaSource.dispatchEvent(mockEvent("sourceended"));expect(spy).toHaveBeenCalledOnceWith()});describe("when options.once is true",function(){it("invokes callback once",function(){var spy=createSpy29("handler");onMediaSourceEnded(mediaSource,spy,{once:true});mediaSource.dispatchEvent(mockEvent("sourceended"));expect(spy).toHaveBeenCalledOnceWith();spy.calls.reset();mediaSource.dispatchEvent(mockEvent("sourceended"));expect(spy).not.toHaveBeenCalled()})});describe("when unsubscribed",function(){it("removes handler",function(){var spy=createSpy29("handler");var unsub=onMediaSourceEnded(mediaSource,spy);expect(mediaSourceEventFakes.hasAnyListeners()).toBeTrue();unsub();expect(mediaSourceEventFakes.hasAnyListeners()).toBeFalse()})})});describe("nextMediaSourceEnded",function(){var mediaSource;var clock=useMockTime();beforeEach(function(){mediaSource=new MockMediaSource;implementEventFakes(mediaSource)});it("returns a promise that resolves on next media source ended state",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee842(){var nextEnded;return _regenerator().w(function(_context842){while(1)switch(_context842.n){case 0:nextEnded=nextMediaSourceEnded(mediaSource);_context842.n=1;return expectAsync(nextEnded).toBePending();case 1:mediaSource.dispatchEvent(mockEvent("sourceended"));_context842.n=2;return expectAsync(nextEnded).toBeResolved();case 2:return _context842.a(2)}},_callee842)})));it("uses the provided timeout",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee843(){var nextEnded;return _regenerator().w(function(_context843){while(1)switch(_context843.n){case 0:nextEnded=nextMediaSourceEnded(mediaSource,3,"message");_context843.n=1;return clock.tick(2.9);case 1:_context843.n=2;return expectAsync(nextEnded).toBePending();case 2:_context843.n=3;return clock.tick(0.1);case 3:_context843.n=4;return expectAsync(nextEnded).toBeRejectedWithError(TimeoutError,"message");case 4:return _context843.a(2)}},_callee843)})));it("resolves immediately when media source is already ended",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee844(){var nextEnded;return _regenerator().w(function(_context844){while(1)switch(_context844.n){case 0:mediaSource.readyState="ended";nextEnded=nextMediaSourceEnded(mediaSource);_context844.n=1;return expectAsync(nextEnded).toBeResolved();case 1:return _context844.a(2)}},_callee844)})))})});// test/unit/util/media/sourceBuffer.test.ts
2275
+ describe("nextSourceBufferIdle",function(){var mockSourceBuffer;var mockSourceBufferEventFakes;beforeEach(function(){mockSourceBuffer=new MockSourceBuffer;mockSourceBufferEventFakes=implementEventFakes(mockSourceBuffer)});it("resolves immediately if sourceBuffer is null",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee845(){return _regenerator().w(function(_context845){while(1)switch(_context845.n){case 0:_context845.n=1;return expectAsync(nextSourceBufferIdle(null)).toBeResolved();case 1:return _context845.a(2)}},_callee845)})));it("resolves immediately if sourceBuffer is not updating",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee846(){return _regenerator().w(function(_context846){while(1)switch(_context846.n){case 0:_context846.n=1;return expectAsync(nextSourceBufferIdle(mockSourceBuffer)).toBeResolved();case 1:return _context846.a(2)}},_callee846)})));it("resolves when update event is emitted",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee847(){var promise2;return _regenerator().w(function(_context847){while(1)switch(_context847.n){case 0:mockSourceBuffer.updating=true;promise2=nextSourceBufferIdle(mockSourceBuffer);mockSourceBuffer.dispatchEvent(mockEvent("update"));_context847.n=1;return expectAsync(promise2).toBeResolved();case 1:expect(mockSourceBufferEventFakes.hasAnyListeners()).toBeFalse();case 2:return _context847.a(2)}},_callee847)})));it("rejects with SourceBufferError when an error event is emitted",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee848(){var promise2;return _regenerator().w(function(_context848){while(1)switch(_context848.n){case 0:mockSourceBuffer.updating=true;promise2=nextSourceBufferIdle(mockSourceBuffer);mockSourceBuffer.dispatchEvent(mockEvent("error"));_context848.n=1;return expectAsync(promise2).toBeRejectedWithError(SourceBufferError);case 1:expect(mockSourceBufferEventFakes.hasAnyListeners()).toBeFalse();case 2:return _context848.a(2)}},_callee848)})));it("rejects with an AbortError when abort event is emitted",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee849(){var promise2;return _regenerator().w(function(_context849){while(1)switch(_context849.n){case 0:mockSourceBuffer.updating=true;promise2=nextSourceBufferIdle(mockSourceBuffer);mockSourceBuffer.dispatchEvent(mockEvent("abort"));_context849.n=1;return expectAsync(promise2).toBeRejectedWith(new AbortError);case 1:expect(mockSourceBufferEventFakes.hasAnyListeners()).toBeFalse();case 2:return _context849.a(2)}},_callee849)})))});// test/unit/vinyl/createVinylFactories.test.ts
2276
2276
  var any30=jasmine.any;var objectContaining25=jasmine.objectContaining;describe("createVinylFactories",function(){var loggerRef2=useMockLogger();afterEach(function(){defaultMediaElementPatchOptions.clear()});it("delivers all essential dependency providers",function(){var playerDependencies=createVinylFactories({media:new MockHTMLAudioElement});expect(playerDependencies).toEqual(objectContaining25({playbackController:any30(Function),playbackSource:any30(Function),trackController:any30(Function),capabilities:any30(Function),loudnessNormalizationController:any30(Function)}))});it("supplies all crucial dependencies for the Vinyl Player",function(){expectTypeExtends(true)});it("provides options.trackController to the TrackController",function(){var playerDependencies=createVinylFactories({media:new MockHTMLAudioElement,trackController:{preloadCapacity:3}});var container=createContainer(playerDependencies);expect(container.dependencies.trackController.options).toEqual(objectContaining25({preloadCapacity:3}));container.dispose()});describe("when patch override flags are provided",function(){polyfillCustomEvent();beforeEach(function(){defaultPatchOptions.value={media:{unreliablePlaybackEvents:true,preventStalls:false}}});afterEach(function(){defaultPatchOptions.clear()});it("merges those flags with the defaults",function(){var playerDependencies=createVinylFactories({media:new MockHTMLAudioElement,patches:{media:{preventStalls:true}}});var patched=playerDependencies.patchedMedia();expect(loggerRef2.value.debug).toHaveBeenCalledWith(any30(Object),"Applying 'preventStalls' patch");expect(loggerRef2.value.debug).toHaveBeenCalledWith(any30(Object),"Applying 'unreliablePlaybackEvents' patch");patched.dispose()})});it("can be used in a dependency container",function(){var container=createContainer(createVinylFactories({media:new MockHTMLAudioElement,drm:{keySystems:_defineProperty({},"com.widevine.alpha"/* WIDEVINE */,"https://example.com")}}));expect(container.dependencies).toEqual(objectContaining25({patchedMedia:any30(Object),media:any30(Object),textTrackProvider:any30(Object),textTrackRenderer:null,playbackController:any30(PlaybackControllerImpl),playbackSource:any30(PlaybackSourceImpl),loudnessNormalizationController:any30(LoudnessNormalizationControllerImpl),capabilities:any30(CapabilitiesImpl),requestInterceptor:any30(Function),trackFactory:any30(Object),trackController:any30(TrackControllerImpl),drmKeySystemResolver:any30(Function),autoResetController:any30(Object),createDashFactories:any30(Function)}));container.dispose()});describe("InferVinylOverrideDependencyType",function(){it("provides the dependency value type for an overridden factory",function(){expectTypeStrictlyEquals(true)});it("provides the dependency value type for default factories",function(){expectTypeStrictlyEquals(true);expectTypeStrictlyEquals(true)});it("allows undefined type for overrides",function(){expectTypeStrictlyEquals(true)})})});// test/unit/vinyl/playerConfigFactory.test.ts
2277
2277
  var createSpy30=jasmine.createSpy;describe("playerConfigFactory",function(){var defaultConfig={name:"test",value:42};var validator=object({name:string(),value:number()});var disposer;beforeEach(function(){disposer=createDisposer()});afterEach(function(){if(!disposer.disposed){disposer.dispose()}});it("creates a config observable with default values",function(){var factory=playerConfigFactory(defaultConfig,validator);var config=factory({},disposer.add);expect(config.value).toEqual(defaultConfig)});it("validates config data when changed",function(){var factory=playerConfigFactory(defaultConfig,validator);var config=factory({},disposer.add);expect(function(){config.value={name:"updated",value:100}}).not.toThrow();expect(config.value).toEqual({name:"updated",value:100});expect(function(){config.value={name:"updated",// @ts-expect-error Expected number
2278
2278
  value:"100"}}).toThrowError(ValidationError)});it("creates factory function that returns config observable",function(){var factory=playerConfigFactory(defaultConfig,validator);expect(_typeof(factory)).toBe("function");var config=factory({},disposer.add);expect(config).toBeDefined();expect(config.value).toEqual(defaultConfig)});it("adds validation listener to disposer",function(){var factory=playerConfigFactory(defaultConfig,validator);var addSpy=createSpy30("add");factory({},addSpy);expect(addSpy).toHaveBeenCalledTimes(1);expect(addSpy).toHaveBeenCalledWith(jasmine.any(Function))});it("returns same config structure for multiple calls",function(){var factory=playerConfigFactory(defaultConfig,validator);var config1=factory({},disposer.add);var config2=factory({},disposer.add);expect(config1.value).toEqual(config2.value);expect(config1.value).toEqual(defaultConfig)})});// test/unit/vinyl/VinylPlayer.test.ts
@@ -2281,36 +2281,36 @@ trackController:function trackController(){return deps.trackController}});var pl
2281
2281
  capabilities:function capabilities(){return 0}}).dispose();createVinylPlayer({media:media},{trackController:function trackController(_){return new MockTrackController}}).dispose();createVinylPlayer({media:media},{// @ts-expect-error Expect playbackController dependency to be incompatible
2282
2282
  trackController:function trackController(_){return new MockTrackController}}).dispose();expectNothing()});describe("when trackFactory is overridden",function(){it("provides the player typed to the factory's load parameters",function(){{var player=createVinylPlayer({media:new MockHTMLAudioElement});expectTypeStrictlyEquals(true);player.dispose()}{var _player4=createVinylPlayer({media:new MockHTMLAudioElement},{}// Empty object for overrides
2283
2283
  );expectTypeStrictlyEquals(true);_player4.dispose()}{var _player5=createVinylPlayer({media:new MockHTMLAudioElement},{trackFactory:function trackFactory(deps){return createTrackFactory({src:createSourceTrackFactory(deps)})}});expectTypeStrictlyEquals(true);_player5.dispose()}{var _player6=createVinylPlayer({media:new MockHTMLAudioElement},{trackFactory:function trackFactory(){return createTrackFactory({test1:{validate:function validate(){},createTrack:function createTrack(_options){return new MockTrack}},test2:{validate:function validate(){},createTrack:function createTrack(_options){return new MockTrack}}})}});expectTypeStrictlyEquals(true);_player6.dispose()}})});describe("when config dependency is overridden",function(){it("provides a player with overridden configuration type",function(){{var player=createVinylPlayer({media:new MockHTMLAudioElement},__spreadProps(__spreadValues({},externalDependencies(createMockVinylDependencies())),{options:function options(){return data({})}}));expectTypeStrictlyEquals(true);player.dispose()}})})})});// test/unit/vinyl/VinylPlayerAdBreaks.test.ts
2284
- describe("VinylPlayer ad break API",function(){var adController;var base;var depFactories;var player;beforeEach(function(){base=createMockVinylDependencies();adController=new AdControllerImpl({playbackController:base.playbackController});depFactories=externalDependencies(__spreadProps(__spreadValues({},base),{adController:adController}));player=createVinylPlayer({media:new MockHTMLAudioElement},depFactories)});afterEach(function(){player.dispose()});function makeBreak(){var overrides=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return __spreadValues({id:"b1",startTime:10,duration:5,placement:"midroll",restrict:{},once:false,resumeOffset:null,playoutLimit:null,resolutionTimeOffset:null,skipControl:function skipControl(){return null},ads:function ads(){return Promise.resolve([{id:"a1",startTime:10,duration:5,uri:"ad.m3u8"}])}},overrides)}function trackAds(){for(var _len31=arguments.length,adBreaks=new Array(_len31),_key32=0;_key32<_len31;_key32++){adBreaks[_key32]=arguments[_key32]}return{trackUri:"t1",adBreaks:adBreaks}}function simulateTimeUpdate(time){base.playbackController.currentTime=time;base.playbackController.dispatch("timeUpdate",{previous:0,current:time})}function flush(){return _flush2.apply(this,arguments)}function _flush2(){_flush2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee855(){return _regenerator().w(function(_context855){while(1)switch(_context855.n){case 0:_context855.n=1;return Promise.resolve();case 1:_context855.n=2;return Promise.resolve();case 2:return _context855.a(2)}},_callee855)}));return _flush2.apply(this,arguments)}function setContent(_x118){return _setContent2.apply(this,arguments)}function _setContent2(){_setContent2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee856(ads){var track2;return _regenerator().w(function(_context856){while(1)switch(_context856.n){case 0:track2=new MockTrack;track2.uri=ads.trackUri;track2.active=true;track2.ads=ads;base.playbackController.playing=true;adController.setAdsProvider(track2);_context856.n=1;return flush();case 1:return _context856.a(2)}},_callee856)}));return _setContent2.apply(this,arguments)}it("returns empty defaults when no ad breaks are set",function(){expect(player.currentTrackAds).toBeNull();expect(player.currentAdBreak).toBeNull()});it("returns ad breaks from the player-level ad controller",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee848(){var _a3;return _regenerator().w(function(_context848){while(1)switch(_context848.n){case 0:_context848.n=1;return setContent(trackAds(makeBreak()));case 1:expect((_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.map(function(b){return b.id})).toEqual(["b1"]);case 2:return _context848.a(2)}},_callee848)})));it("redispatches currentTrackAdsChange from the ad controller",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee849(){var spy;return _regenerator().w(function(_context849){while(1)switch(_context849.n){case 0:spy=createEventSpy(player,"currentTrackAdsChange");_context849.n=1;return setContent(trackAds(makeBreak()));case 1:expect(spy).toHaveBeenCalled();case 2:return _context849.a(2)}},_callee849)})));it("redispatches adBreakEntered and adBreakCompleted from the ad controller",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee850(){var entered,completed;return _regenerator().w(function(_context850){while(1)switch(_context850.n){case 0:_context850.n=1;return setContent(trackAds(makeBreak({startTime:10,duration:5})));case 1:entered=createEventSpy(player,"adBreakEntered");completed=createEventSpy(player,"adBreakCompleted");simulateTimeUpdate(11);_context850.n=2;return flush();case 2:expect(entered).toHaveBeenCalledTimes(1);expect(entered.calls.mostRecent().args[0].adBreak.id).toBe("b1");player.skipAd();expect(completed).toHaveBeenCalledTimes(1);expect(completed.calls.mostRecent().args[0].adBreak.id).toBe("b1");case 3:return _context850.a(2)}},_callee850)})));it("reflects the current ad break through the player getter",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee851(){var _a3;return _regenerator().w(function(_context851){while(1)switch(_context851.n){case 0:_context851.n=1;return setContent(trackAds(makeBreak({startTime:0,duration:10})));case 1:simulateTimeUpdate(5);_context851.n=2;return flush();case 2:expect((_a3=player.currentAdBreak)==null?void 0:_a3.id).toBe("b1");case 3:return _context851.a(2)}},_callee851)})));it("reflects the current ad through the player getter",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee852(){var _a3;return _regenerator().w(function(_context852){while(1)switch(_context852.n){case 0:_context852.n=1;return setContent(trackAds(makeBreak({startTime:0,duration:10})));case 1:expect(player.currentAd).toBeNull();simulateTimeUpdate(5);_context852.n=2;return flush();case 2:expect((_a3=player.currentAd)==null?void 0:_a3.id).toBe("a1");case 3:return _context852.a(2)}},_callee852)})));it("skipAd delegates to the ad controller",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee853(){return _regenerator().w(function(_context853){while(1)switch(_context853.n){case 0:_context853.n=1;return setContent(trackAds(makeBreak({startTime:0,duration:10})));case 1:simulateTimeUpdate(5);_context853.n=2;return flush();case 2:expect(player.currentAdBreak).not.toBeNull();player.skipAd();expect(player.currentAdBreak).toBeNull();case 3:return _context853.a(2)}},_callee853)})));it("skipAdBreak delegates to the ad controller",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee854(){return _regenerator().w(function(_context854){while(1)switch(_context854.n){case 0:_context854.n=1;return setContent(trackAds(makeBreak({startTime:0,duration:10})));case 1:simulateTimeUpdate(5);_context854.n=2;return flush();case 2:player.skipAdBreak();expect(player.currentAdBreak).toBeNull();case 3:return _context854.a(2)}},_callee854)})));it("skipAd is a no-op without an active break",function(){expect(function(){return player.skipAd()}).not.toThrow()});it("skipAdBreak is a no-op without an active break",function(){expect(function(){return player.skipAdBreak()}).not.toThrow()})});// test/unit/vinyl/VinylPlayerTextTracks.test.ts
2284
+ describe("VinylPlayer ad break API",function(){var adController;var base;var depFactories;var player;beforeEach(function(){base=createMockVinylDependencies();adController=new AdControllerImpl({playbackController:base.playbackController});depFactories=externalDependencies(__spreadProps(__spreadValues({},base),{adController:adController}));player=createVinylPlayer({media:new MockHTMLAudioElement},depFactories)});afterEach(function(){player.dispose()});function makeBreak(){var overrides=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return __spreadValues({id:"b1",startTime:10,duration:5,placement:"midroll",restrict:{},once:false,resumeOffset:null,playoutLimit:null,resolutionTimeOffset:null,skipControl:function skipControl(){return null},ads:function ads(){return Promise.resolve([{id:"a1",startTime:10,duration:5,uri:"ad.m3u8"}])}},overrides)}function trackAds(){for(var _len31=arguments.length,adBreaks=new Array(_len31),_key32=0;_key32<_len31;_key32++){adBreaks[_key32]=arguments[_key32]}return{trackUri:"t1",adBreaks:adBreaks}}function simulateTimeUpdate(time){base.playbackController.currentTime=time;base.playbackController.dispatch("timeUpdate",{previous:0,current:time})}function flush(){return _flush2.apply(this,arguments)}function _flush2(){_flush2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee857(){return _regenerator().w(function(_context857){while(1)switch(_context857.n){case 0:_context857.n=1;return Promise.resolve();case 1:_context857.n=2;return Promise.resolve();case 2:return _context857.a(2)}},_callee857)}));return _flush2.apply(this,arguments)}function setContent(_x118){return _setContent2.apply(this,arguments)}function _setContent2(){_setContent2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee858(ads){var track2;return _regenerator().w(function(_context858){while(1)switch(_context858.n){case 0:track2=new MockTrack;track2.uri=ads.trackUri;track2.active=true;track2.ads=ads;base.playbackController.playing=true;adController.setAdsProvider(track2);_context858.n=1;return flush();case 1:return _context858.a(2)}},_callee858)}));return _setContent2.apply(this,arguments)}it("returns empty defaults when no ad breaks are set",function(){expect(player.currentTrackAds).toBeNull();expect(player.currentAdBreak).toBeNull()});it("returns ad breaks from the player-level ad controller",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee850(){var _a3;return _regenerator().w(function(_context850){while(1)switch(_context850.n){case 0:_context850.n=1;return setContent(trackAds(makeBreak()));case 1:expect((_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.map(function(b){return b.id})).toEqual(["b1"]);case 2:return _context850.a(2)}},_callee850)})));it("redispatches currentTrackAdsChange from the ad controller",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee851(){var spy;return _regenerator().w(function(_context851){while(1)switch(_context851.n){case 0:spy=createEventSpy(player,"currentTrackAdsChange");_context851.n=1;return setContent(trackAds(makeBreak()));case 1:expect(spy).toHaveBeenCalled();case 2:return _context851.a(2)}},_callee851)})));it("redispatches adBreakEntered and adBreakCompleted from the ad controller",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee852(){var entered,completed;return _regenerator().w(function(_context852){while(1)switch(_context852.n){case 0:_context852.n=1;return setContent(trackAds(makeBreak({startTime:10,duration:5})));case 1:entered=createEventSpy(player,"adBreakEntered");completed=createEventSpy(player,"adBreakCompleted");simulateTimeUpdate(11);_context852.n=2;return flush();case 2:expect(entered).toHaveBeenCalledTimes(1);expect(entered.calls.mostRecent().args[0].adBreak.id).toBe("b1");player.skipAd();expect(completed).toHaveBeenCalledTimes(1);expect(completed.calls.mostRecent().args[0].adBreak.id).toBe("b1");case 3:return _context852.a(2)}},_callee852)})));it("reflects the current ad break through the player getter",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee853(){var _a3;return _regenerator().w(function(_context853){while(1)switch(_context853.n){case 0:_context853.n=1;return setContent(trackAds(makeBreak({startTime:0,duration:10})));case 1:simulateTimeUpdate(5);_context853.n=2;return flush();case 2:expect((_a3=player.currentAdBreak)==null?void 0:_a3.id).toBe("b1");case 3:return _context853.a(2)}},_callee853)})));it("reflects the current ad through the player getter",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee854(){var _a3;return _regenerator().w(function(_context854){while(1)switch(_context854.n){case 0:_context854.n=1;return setContent(trackAds(makeBreak({startTime:0,duration:10})));case 1:expect(player.currentAd).toBeNull();simulateTimeUpdate(5);_context854.n=2;return flush();case 2:expect((_a3=player.currentAd)==null?void 0:_a3.id).toBe("a1");case 3:return _context854.a(2)}},_callee854)})));it("skipAd delegates to the ad controller",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee855(){return _regenerator().w(function(_context855){while(1)switch(_context855.n){case 0:_context855.n=1;return setContent(trackAds(makeBreak({startTime:0,duration:10})));case 1:simulateTimeUpdate(5);_context855.n=2;return flush();case 2:expect(player.currentAdBreak).not.toBeNull();player.skipAd();expect(player.currentAdBreak).toBeNull();case 3:return _context855.a(2)}},_callee855)})));it("skipAdBreak delegates to the ad controller",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee856(){return _regenerator().w(function(_context856){while(1)switch(_context856.n){case 0:_context856.n=1;return setContent(trackAds(makeBreak({startTime:0,duration:10})));case 1:simulateTimeUpdate(5);_context856.n=2;return flush();case 2:player.skipAdBreak();expect(player.currentAdBreak).toBeNull();case 3:return _context856.a(2)}},_callee856)})));it("skipAd is a no-op without an active break",function(){expect(function(){return player.skipAd()}).not.toThrow()});it("skipAdBreak is a no-op without an active break",function(){expect(function(){return player.skipAdBreak()}).not.toThrow()})});// test/unit/vinyl/VinylPlayerTextTracks.test.ts
2285
2285
  describe("VinylPlayer text track API",function(){var deps;var depFactories;var player;beforeEach(function(){deps=createMockVinylDependencies();depFactories=externalDependencies(deps);player=createVinylPlayer({media:new MockHTMLAudioElement},depFactories)});afterEach(function(){player.dispose()});function info(){var overrides=arguments.length>0&&arguments[0]!==undefined?arguments[0]:{};return __spreadValues({id:"t1",kind:"subtitles",language:"en",label:"A","default":false,forced:false,characteristics:[],uri:"a.vtt",mimeType:"text/vtt"},overrides)}function makeTrackWithController(){var track2=new MockTrack;var controller=new MockTextTrackController;track2.textTrackController=controller;return{track:track2,controller:controller}}function setTracks(controller,tracks){var previous=controller.textTracks;controller.textTracks=tracks;controller.dispatch("textTracksChange",{previous:previous,current:tracks})}function setActive(controller,current){var previous=controller.activeTextTrack;controller.activeTextTrack=current;controller.dispatch("activeTextTrackChange",{previous:previous,current:current})}function activate(track2){deps.trackController.activeTrack=track2;deps.trackController.dispatch("trackActivated",{track:track2})}it("returns empty defaults when no current track",function(){expect(player.textTracks).toEqual([]);expect(player.activeTextTrack).toBeNull()});it("returns text tracks from the current track",function(){var _makeTrackWithControl=makeTrackWithController(),track2=_makeTrackWithControl.track,controller=_makeTrackWithControl.controller;controller.textTracks=[info()];activate(track2);expect(player.textTracks.length).toBe(1)});it("reflects the current track controller active selection",function(){var _a3;var _makeTrackWithControl2=makeTrackWithController(),track2=_makeTrackWithControl2.track,controller=_makeTrackWithControl2.controller;controller.textTracks=[info()];activate(track2);setActive(controller,info());expect((_a3=player.activeTextTrack)==null?void 0:_a3.id).toBe("t1");setActive(controller,null);expect(player.activeTextTrack).toBeNull()});it("reports null active when the current track has no controller",function(){var track2=new MockTrack;activate(track2);expect(player.activeTextTrack).toBeNull()});it("redispatches textTracksChange events from the active controller",function(){var _makeTrackWithControl3=makeTrackWithController(),track2=_makeTrackWithControl3.track,controller=_makeTrackWithControl3.controller;activate(track2);var spy=createEventSpy(player,"textTracksChange");setTracks(controller,[info({language:null})]);expect(spy).toHaveBeenCalled()});it("fires textTracksChange when switching to a track with a different list",function(){var a=makeTrackWithController();var b=makeTrackWithController();setTracks(a.controller,[info({id:"t1",language:"en"})]);setTracks(b.controller,[info({id:"t2",language:"fr",label:"B"})]);activate(a.track);var spy=createEventSpy(player,"textTracksChange");activate(b.track);expect(spy).toHaveBeenCalled()});it("fires activeTextTrackChange when switching tracks",function(){var a=makeTrackWithController();var b=makeTrackWithController();setTracks(a.controller,[info({id:"t1"})]);setActive(a.controller,info({id:"t1"}));activate(a.track);var spy=createEventSpy(player,"activeTextTrackChange");activate(b.track);expect(spy).toHaveBeenCalled()});it("re-announces the content caption after an ad break so it does not read as off",function(){var _a3,_b;var content=makeTrackWithController();var contentForced=info({id:"c-forced",label:"English (Forced)","default":true,forced:true,uri:"c.vtt"});setTracks(content.controller,[contentForced]);setActive(content.controller,contentForced);var ad=makeTrackWithController();var adCc=info({id:"ad-cc",label:"English",uri:"ad.vtt"});setTracks(ad.controller,[adCc]);activate(content.track);deps.adController.currentAdBreak={placement:"midroll"};content.controller.deactivate();activate(ad.track);setActive(ad.controller,adCc);expect((_a3=player.activeTextTrack)==null?void 0:_a3.id).toBe("ad-cc");deps.adController.currentAdBreak=null;var spy=createEventSpy(player,"activeTextTrackChange");content.controller.activate();activate(content.track);expect((_b=player.activeTextTrack)==null?void 0:_b.id).toBe("c-forced");expect(spy).toHaveBeenCalled();var lastCurrent=spy.calls.mostRecent().args[0].current;expect(lastCurrent==null?void 0:lastCurrent.id).toBe("c-forced")});it("announces empty tracks and null active when the track is torn down",function(){var a=makeTrackWithController();var t=info({id:"t1"});setTracks(a.controller,[t]);setActive(a.controller,t);activate(a.track);var tracksSpy=createEventSpy(player,"textTracksChange");var activeSpy=createEventSpy(player,"activeTextTrackChange");deps.trackController.activeTrack=null;deps.trackController.dispatch("trackDeactivated",{track:a.track});expect(tracksSpy).toHaveBeenCalled();expect(tracksSpy.calls.mostRecent().args[0].current).toEqual([]);expect(activeSpy).toHaveBeenCalled();expect(activeSpy.calls.mostRecent().args[0].current).toBeNull();expect(player.activeTextTrack).toBeNull()});it("does not emit activeTextTrackChange when neither track has an active selection",function(){var a=makeTrackWithController();var b=makeTrackWithController();activate(a.track);var spy=createEventSpy(player,"activeTextTrackChange");activate(b.track);expect(spy).not.toHaveBeenCalled()})});// test/unit/vinylTestUtil/util/playback/createEventSpy.test.ts
2286
- describe("createEventSpy",function(){var host;var clock=useMockTime();beforeEach(function(){host=new EventHostImpl});it("adds a spy listener",function(){var eventASpy=createEventSpy(host,"eventA");expect(eventASpy).not.toHaveBeenCalled();host.dispatch("eventA",{strValue:"testStr"});expect(eventASpy).toHaveBeenCalledOnceWith({strValue:"testStr"})});describe("next",function(){it("resolves on the next spy call",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee857(){var eventASpy,nextA,nextB,nextC;return _regenerator().w(function(_context857){while(1)switch(_context857.n){case 0:eventASpy=createEventSpy(host,"eventA");_context857.n=1;return expectAsync(eventASpy.next()).toBePending();case 1:nextA=eventASpy.next();nextB=eventASpy.next();host.dispatch("eventA",{strValue:"testStr"});_context857.n=2;return expectAsync(nextA).toBeResolvedTo({strValue:"testStr"});case 2:_context857.n=3;return expectAsync(nextB).toBeResolvedTo({strValue:"testStr"});case 3:nextC=eventASpy.next();_context857.n=4;return expectAsync(nextC).toBePending();case 4:host.dispatch("eventA",{strValue:"testStr2"});_context857.n=5;return expectAsync(nextC).toBeResolvedTo({strValue:"testStr2"});case 5:return _context857.a(2)}},_callee857)})));it("rejects after the timeout",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee858(){var eventASpy,next;return _regenerator().w(function(_context858){while(1)switch(_context858.n){case 0:eventASpy=createEventSpy(host,"eventA");next=eventASpy.next(6);_context858.n=1;return clock.tick(5.9);case 1:_context858.n=2;return expectAsync(next).toBePending();case 2:_context858.n=3;return clock.tick(0.1);case 3:_context858.n=4;return expectAsync(next).toBeRejectedWithError("event 'eventA' has not been dispatched after 6s.");case 4:next=eventASpy.next(2,"{type}:{timeout}");_context858.n=5;return expectAsync(next).toBePending();case 5:_context858.n=6;return clock.tick(2);case 6:_context858.n=7;return expectAsync(next).toBeRejectedWithError("eventA:2");case 7:return _context858.a(2)}},_callee858)})))});describe("dispose",function(){it("removes the event listener",function(){var eventASpy=createEventSpy(host,"eventA");expect(host.hasAnyListeners()).toBeTrue();eventASpy.dispose();expect(host.hasAnyListeners()).toBeFalse()})})});// test/integ/drm/pendingIfWidevineNotSupported.ts
2287
- var pendingIfWidevineNotSupported=memoize(/*#__PURE__*/function(){var _ref802=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee859(player){var response,_t88;return _regenerator().w(function(_context859){while(1)switch(_context859.p=_context859.n){case 0:_context859.p=0;_context859.n=1;return fetch("https://cwip-shaka-proxy.appspot.com/no_auth",{method:"OPTIONS",mode:"cors"});case 1:response=_context859.v;if(response.ok){_context859.n=2;break}pending("shaka proxy rejected CORS");return _context859.a(2,true);case 2:_context859.n=4;break;case 3:_context859.p=3;_t88=_context859.v;pending("shaka proxy could not be reached");return _context859.a(2,true);case 4:if(!(location.hostname!=="localhost")){_context859.n=5;break}pending("shaka-proxy requires localhost");return _context859.a(2,true);case 5:if(window.isSecureContext){_context859.n=6;break}pending("requires a secure context");return _context859.a(2,true);case 6:_context859.n=7;return player.client.capabilities.supportsKeySystem("com.widevine.alpha"/* WIDEVINE */);case 7:if(_context859.v.supported){_context859.n=8;break}pending("requires Widevine");case 8:return _context859.a(2,false)}},_callee859,null,[[0,3]])}));return function(_x119){return _ref802.apply(this,arguments)}}(),function(){});// test/integ/drm/DrmControllerImpl.test.ts
2288
- describe("DrmControllerImpl integ",function(){var vinylSuite=createVinylSuite({drm:{keySystems:_defineProperty({},"com.widevine.alpha"/* WIDEVINE */,{licenseServer:{url:"https://cwip-shaka-proxy.appspot.com/no_auth"}})}});beforeEach(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee860(){return _regenerator().w(function(_context860){while(1)switch(_context860.n){case 0:_context860.n=1;return pendingIfWidevineNotSupported(vinylSuite.player);case 1:return _context860.a(2)}},_callee860)})));describe("when given dash widevine",function(){it("plays",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee861(){return _regenerator().w(function(_context861){while(1)switch(_context861.n){case 0:vinylSuite.player.load({type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase_widevine});_context861.n=1;return vinylSuite.player.play();case 1:_context861.n=2;return expectTrackPlays(vinylSuite.player);case 2:return _context861.a(2)}},_callee861)})))})});// test/integ/event/looped.test.ts
2289
- describe("looped integ",function(){var suite=createVinylSuite();describe("when playback looped",function(){it("dispatches looped event",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee862(){var player,loopedSpy,endedSpy,nextEnded;return _regenerator().w(function(_context862){while(1)switch(_context862.n){case 0:player=suite.player;player.load({type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase});_context862.n=1;return player.play();case 1:loopedSpy=createEventSpy(player,"looped");endedSpy=createEventSpy(player,"ended");player.loop=true;_context862.n=2;return player.seekTo(player.duration);case 2:expect(loopedSpy).not.toHaveBeenCalled();_context862.n=3;return loopedSpy.next(20,"looped 1 timed out in {timeout}s");case 3:expect(loopedSpy).toHaveBeenCalledTimes(1);loopedSpy.calls.reset();_context862.n=4;return player.seekTo(30);case 4:_context862.n=5;return player.seekTo(0);case 5:expect(loopedSpy).not.toHaveBeenCalled();_context862.n=6;return player.seekTo(player.duration);case 6:_context862.n=7;return loopedSpy.next(20,"looped 2 timed out in {timeout}s");case 7:expect(loopedSpy).toHaveBeenCalledTimes(1);loopedSpy.calls.reset();expect(player.currentTime).toBeLessThan(1);expect(endedSpy).not.toHaveBeenCalled();expect(player.ended).withContext("ended").toBeFalse();player.loop=false;nextEnded=endedSpy.next(20);_context862.n=8;return player.seekTo(player.duration);case 8:_context862.n=9;return expectAsync(nextEnded).toBeResolved();case 9:expect(player.currentTime).toBeGreaterThan(player.duration-0.5);expect(loopedSpy).not.toHaveBeenCalled();expect(player.ended).withContext("ended").toBeTrue();case 10:return _context862.a(2)}},_callee862)})))})});// test/integ/event/playingAndPlayed.test.ts
2290
- var any32=jasmine.any;var createSpy32=jasmine.createSpy;var PLAYBACK_TIME=2;describe("integ playing and played events",function(){var suite=createVinylSuite();var player;var playingSpy;var playSpy;var playedSpy;beforeEach(function(){player=suite.player;playingSpy=createEventSpy(player,"playing");playSpy=createEventSpy(player,"play");playedSpy=createEventSpy(player,"played")});function play(){return _play.apply(this,arguments)}function _play(){_play=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee868(){return _regenerator().w(function(_context868){while(1)switch(_context868.n){case 0:player.load({type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase});_context868.n=1;return player.play();case 1:return _context868.a(2)}},_callee868)}));return _play.apply(this,arguments)}afterEach(function(){suite.player.defaultPlaybackRate=1});describe("when playback is started",function(){it("emits play then playing",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee863(){var nextPlay,nextPlaying;return _regenerator().w(function(_context863){while(1)switch(_context863.n){case 0:nextPlay=playSpy.next(10);nextPlaying=playingSpy.next(10);_context863.n=1;return play();case 1:_context863.n=2;return nextPlay;case 2:_context863.n=3;return nextPlaying;case 3:expect(playSpy).toHaveBeenCalledBefore(playingSpy);case 4:return _context863.a(2)}},_callee863)})));describe("then playback is paused",function(){it("emits played",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee864(){var expectedStarted,nextPlayed,playedEvent;return _regenerator().w(function(_context864){while(1)switch(_context864.n){case 0:player.defaultPlaybackRate=0.5;_context864.n=1;return play();case 1:expectedStarted=Date.now();_context864.n=2;return _sleep(PLAYBACK_TIME);case 2:playingSpy.calls.reset();playedSpy.calls.reset();nextPlayed=playedSpy.next(1);player.pause();_context864.n=3;return nextPlayed;case 3:playedEvent=_context864.v;expect(playedEvent).toEqual({started:any32(Number),reason:"pause"/* PAUSE */,ended:any32(Number),playbackTime:any32(Number),duration:any32(Number)});expect(playedEvent.started).withContext("started").toBeCloseToWithin(expectedStarted,1e3);expect(playedEvent.ended).withContext("ended").toBeCloseToWithin(expectedStarted+PLAYBACK_TIME*1e3,500);expect(playedEvent.duration).withContext("duration").toBeCloseToWithin(PLAYBACK_TIME,0.2);expect(playingSpy).not.toHaveBeenCalled();case 4:return _context864.a(2)}},_callee864)})))});describe("then a seek is requested",function(){it("emits played",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee865(){var nextPlayed,nextPlaying,firstPlayed,firstPlaying,unPlayed,unPlaying;return _regenerator().w(function(_context865){while(1)switch(_context865.n){case 0:_context865.n=1;return play();case 1:playedSpy.calls.reset();playingSpy.calls.reset();nextPlayed=playedSpy.next(15);nextPlaying=playingSpy.next(15);firstPlayed=createSpy32("firstPlayed");firstPlaying=createSpy32("firstPlaying");unPlayed=player.on("played",function(){firstPlayed();unPlayed()});unPlaying=player.on("playing",function(){firstPlaying();unPlaying()});_context865.n=2;return player.seekTo(20);case 2:_context865.n=3;return expectAsync(nextPlayed).toBeResolvedTo({started:any32(Number),ended:any32(Number),duration:any32(Number),playbackTime:any32(Number),// Firefox may emit the 'waiting' event before the 'seeking'.
2286
+ describe("createEventSpy",function(){var host;var clock=useMockTime();beforeEach(function(){host=new EventHostImpl});it("adds a spy listener",function(){var eventASpy=createEventSpy(host,"eventA");expect(eventASpy).not.toHaveBeenCalled();host.dispatch("eventA",{strValue:"testStr"});expect(eventASpy).toHaveBeenCalledOnceWith({strValue:"testStr"})});describe("next",function(){it("resolves on the next spy call",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee859(){var eventASpy,nextA,nextB,nextC;return _regenerator().w(function(_context859){while(1)switch(_context859.n){case 0:eventASpy=createEventSpy(host,"eventA");_context859.n=1;return expectAsync(eventASpy.next()).toBePending();case 1:nextA=eventASpy.next();nextB=eventASpy.next();host.dispatch("eventA",{strValue:"testStr"});_context859.n=2;return expectAsync(nextA).toBeResolvedTo({strValue:"testStr"});case 2:_context859.n=3;return expectAsync(nextB).toBeResolvedTo({strValue:"testStr"});case 3:nextC=eventASpy.next();_context859.n=4;return expectAsync(nextC).toBePending();case 4:host.dispatch("eventA",{strValue:"testStr2"});_context859.n=5;return expectAsync(nextC).toBeResolvedTo({strValue:"testStr2"});case 5:return _context859.a(2)}},_callee859)})));it("rejects after the timeout",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee860(){var eventASpy,next;return _regenerator().w(function(_context860){while(1)switch(_context860.n){case 0:eventASpy=createEventSpy(host,"eventA");next=eventASpy.next(6);_context860.n=1;return clock.tick(5.9);case 1:_context860.n=2;return expectAsync(next).toBePending();case 2:_context860.n=3;return clock.tick(0.1);case 3:_context860.n=4;return expectAsync(next).toBeRejectedWithError("event 'eventA' has not been dispatched after 6s.");case 4:next=eventASpy.next(2,"{type}:{timeout}");_context860.n=5;return expectAsync(next).toBePending();case 5:_context860.n=6;return clock.tick(2);case 6:_context860.n=7;return expectAsync(next).toBeRejectedWithError("eventA:2");case 7:return _context860.a(2)}},_callee860)})))});describe("dispose",function(){it("removes the event listener",function(){var eventASpy=createEventSpy(host,"eventA");expect(host.hasAnyListeners()).toBeTrue();eventASpy.dispose();expect(host.hasAnyListeners()).toBeFalse()})})});// test/integ/drm/pendingIfWidevineNotSupported.ts
2287
+ var pendingIfWidevineNotSupported=memoize(/*#__PURE__*/function(){var _ref804=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee861(player){var response,_t88;return _regenerator().w(function(_context861){while(1)switch(_context861.p=_context861.n){case 0:_context861.p=0;_context861.n=1;return fetch("https://cwip-shaka-proxy.appspot.com/no_auth",{method:"OPTIONS",mode:"cors"});case 1:response=_context861.v;if(response.ok){_context861.n=2;break}pending("shaka proxy rejected CORS");return _context861.a(2,true);case 2:_context861.n=4;break;case 3:_context861.p=3;_t88=_context861.v;pending("shaka proxy could not be reached");return _context861.a(2,true);case 4:if(!(location.hostname!=="localhost")){_context861.n=5;break}pending("shaka-proxy requires localhost");return _context861.a(2,true);case 5:if(window.isSecureContext){_context861.n=6;break}pending("requires a secure context");return _context861.a(2,true);case 6:_context861.n=7;return player.client.capabilities.supportsKeySystem("com.widevine.alpha"/* WIDEVINE */);case 7:if(_context861.v.supported){_context861.n=8;break}pending("requires Widevine");case 8:return _context861.a(2,false)}},_callee861,null,[[0,3]])}));return function(_x119){return _ref804.apply(this,arguments)}}(),function(){});// test/integ/drm/DrmControllerImpl.test.ts
2288
+ describe("DrmControllerImpl integ",function(){var vinylSuite=createVinylSuite({drm:{keySystems:_defineProperty({},"com.widevine.alpha"/* WIDEVINE */,{licenseServer:{url:"https://cwip-shaka-proxy.appspot.com/no_auth"}})}});beforeEach(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee862(){return _regenerator().w(function(_context862){while(1)switch(_context862.n){case 0:_context862.n=1;return pendingIfWidevineNotSupported(vinylSuite.player);case 1:return _context862.a(2)}},_callee862)})));describe("when given dash widevine",function(){it("plays",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee863(){return _regenerator().w(function(_context863){while(1)switch(_context863.n){case 0:vinylSuite.player.load({type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase_widevine});_context863.n=1;return vinylSuite.player.play();case 1:_context863.n=2;return expectTrackPlays(vinylSuite.player);case 2:return _context863.a(2)}},_callee863)})))})});// test/integ/event/looped.test.ts
2289
+ describe("looped integ",function(){var suite=createVinylSuite();describe("when playback looped",function(){it("dispatches looped event",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee864(){var player,loopedSpy,endedSpy,nextEnded;return _regenerator().w(function(_context864){while(1)switch(_context864.n){case 0:player=suite.player;player.load({type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase});_context864.n=1;return player.play();case 1:loopedSpy=createEventSpy(player,"looped");endedSpy=createEventSpy(player,"ended");player.loop=true;_context864.n=2;return player.seekTo(player.duration);case 2:expect(loopedSpy).not.toHaveBeenCalled();_context864.n=3;return loopedSpy.next(20,"looped 1 timed out in {timeout}s");case 3:expect(loopedSpy).toHaveBeenCalledTimes(1);loopedSpy.calls.reset();_context864.n=4;return player.seekTo(30);case 4:_context864.n=5;return player.seekTo(0);case 5:expect(loopedSpy).not.toHaveBeenCalled();_context864.n=6;return player.seekTo(player.duration);case 6:_context864.n=7;return loopedSpy.next(20,"looped 2 timed out in {timeout}s");case 7:expect(loopedSpy).toHaveBeenCalledTimes(1);loopedSpy.calls.reset();expect(player.currentTime).toBeLessThan(1);expect(endedSpy).not.toHaveBeenCalled();expect(player.ended).withContext("ended").toBeFalse();player.loop=false;nextEnded=endedSpy.next(20);_context864.n=8;return player.seekTo(player.duration);case 8:_context864.n=9;return expectAsync(nextEnded).toBeResolved();case 9:expect(player.currentTime).toBeGreaterThan(player.duration-0.5);expect(loopedSpy).not.toHaveBeenCalled();expect(player.ended).withContext("ended").toBeTrue();case 10:return _context864.a(2)}},_callee864)})))})});// test/integ/event/playingAndPlayed.test.ts
2290
+ var any32=jasmine.any;var createSpy32=jasmine.createSpy;var PLAYBACK_TIME=2;describe("integ playing and played events",function(){var suite=createVinylSuite();var player;var playingSpy;var playSpy;var playedSpy;beforeEach(function(){player=suite.player;playingSpy=createEventSpy(player,"playing");playSpy=createEventSpy(player,"play");playedSpy=createEventSpy(player,"played")});function play(){return _play.apply(this,arguments)}function _play(){_play=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee870(){return _regenerator().w(function(_context870){while(1)switch(_context870.n){case 0:player.load({type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase});_context870.n=1;return player.play();case 1:return _context870.a(2)}},_callee870)}));return _play.apply(this,arguments)}afterEach(function(){suite.player.defaultPlaybackRate=1});describe("when playback is started",function(){it("emits play then playing",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee865(){var nextPlay,nextPlaying;return _regenerator().w(function(_context865){while(1)switch(_context865.n){case 0:nextPlay=playSpy.next(10);nextPlaying=playingSpy.next(10);_context865.n=1;return play();case 1:_context865.n=2;return nextPlay;case 2:_context865.n=3;return nextPlaying;case 3:expect(playSpy).toHaveBeenCalledBefore(playingSpy);case 4:return _context865.a(2)}},_callee865)})));describe("then playback is paused",function(){it("emits played",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee866(){var expectedStarted,nextPlayed,playedEvent;return _regenerator().w(function(_context866){while(1)switch(_context866.n){case 0:player.defaultPlaybackRate=0.5;_context866.n=1;return play();case 1:expectedStarted=Date.now();_context866.n=2;return _sleep(PLAYBACK_TIME);case 2:playingSpy.calls.reset();playedSpy.calls.reset();nextPlayed=playedSpy.next(1);player.pause();_context866.n=3;return nextPlayed;case 3:playedEvent=_context866.v;expect(playedEvent).toEqual({started:any32(Number),reason:"pause"/* PAUSE */,ended:any32(Number),playbackTime:any32(Number),duration:any32(Number)});expect(playedEvent.started).withContext("started").toBeCloseToWithin(expectedStarted,1e3);expect(playedEvent.ended).withContext("ended").toBeCloseToWithin(expectedStarted+PLAYBACK_TIME*1e3,500);expect(playedEvent.duration).withContext("duration").toBeCloseToWithin(PLAYBACK_TIME,0.2);expect(playingSpy).not.toHaveBeenCalled();case 4:return _context866.a(2)}},_callee866)})))});describe("then a seek is requested",function(){it("emits played",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee867(){var nextPlayed,nextPlaying,firstPlayed,firstPlaying,unPlayed,unPlaying;return _regenerator().w(function(_context867){while(1)switch(_context867.n){case 0:_context867.n=1;return play();case 1:playedSpy.calls.reset();playingSpy.calls.reset();nextPlayed=playedSpy.next(15);nextPlaying=playingSpy.next(15);firstPlayed=createSpy32("firstPlayed");firstPlaying=createSpy32("firstPlaying");unPlayed=player.on("played",function(){firstPlayed();unPlayed()});unPlaying=player.on("playing",function(){firstPlaying();unPlaying()});_context867.n=2;return player.seekTo(20);case 2:_context867.n=3;return expectAsync(nextPlayed).toBeResolvedTo({started:any32(Number),ended:any32(Number),duration:any32(Number),playbackTime:any32(Number),// Firefox may emit the 'waiting' event before the 'seeking'.
2291
2291
  // While not ideal, not worth a patch.
2292
- reason:any32(String)});case 3:_context865.n=4;return expectAsync(nextPlaying).toBeResolved();case 4:expect(firstPlayed).toHaveBeenCalledBefore(firstPlaying);case 5:return _context865.a(2)}},_callee865)})))});describe("then a backwards seek is requested",function(){it("never reports a negative playbackTime",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee866(){var nextPlayed,events,_iterator118,_step118,event;return _regenerator().w(function(_context866){while(1)switch(_context866.n){case 0:_context866.n=1;return play();case 1:_context866.n=2;return player.seekTo(40);case 2:_context866.n=3;return _sleep(0.5);case 3:playedSpy.calls.reset();nextPlayed=playedSpy.next(15);_context866.n=4;return player.seekTo(2);case 4:_context866.n=5;return nextPlayed;case 5:_context866.n=6;return _sleep(0.5);case 6:events=playedSpy.calls.allArgs().map(function(_ref810){var _ref811=_slicedToArray(_ref810,1),event=_ref811[0];return event});expect(events.length).toBeGreaterThan(0);_iterator118=_createForOfIteratorHelper(events);try{for(_iterator118.s();!(_step118=_iterator118.n()).done;){event=_step118.value;expect(event.playbackTime).withContext("playbackTime").toBeGreaterThanOrEqual(0)}}catch(err){_iterator118.e(err)}finally{_iterator118.f()}case 7:return _context866.a(2)}},_callee866)})))})});describe("when seeking while paused",function(){it("does not emit playing",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee867(){var nextPlayed;return _regenerator().w(function(_context867){while(1)switch(_context867.n){case 0:_context867.n=1;return play();case 1:nextPlayed=playedSpy.next();playingSpy.calls.reset();player.pause();_context867.n=2;return player.seekTo(25);case 2:_context867.n=3;return expectAsync(nextPlayed).toBeResolved();case 3:_context867.n=4;return _sleep(0.5);case 4:expect(playingSpy).not.toHaveBeenCalled();case 5:return _context867.a(2)}},_callee867)})))})});// test/integ/event/waiting.test.ts
2293
- describe("waiting integ",function(){beforeEach(function(){if(!supportsMse())pending("MSE not supported")});var suite=createVinylSuite();describe("when playback is stopped due to lack of data",function(){it("emits waiting event",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee869(){var player,waitingSpy,waitedSpy,playSpy,mediaSource,nextPlay,nextWaiting,nextWaited,seekPromise,_t89,_t90,_t91;return _regenerator().w(function(_context869){while(1)switch(_context869.n){case 0:player=suite.player;waitingSpy=createEventSpy(player,"waiting");waitedSpy=createEventSpy(player,"waited");playSpy=createEventSpy(player,"play");mediaSource=new ControlledMediaSource;_t89=player;_t90=URL;_context869.n=1;return mediaSource.getMediaSource();case 1:_t91=_t90.createObjectURL.call(_t90,_context869.v);_t89.load.call(_t89,{type:"src",uri:_t91});nextPlay=playSpy.next(5);void player.play();nextWaiting=waitingSpy.next(10,"waiting after play when not buffered");_context869.n=2;return mediaSource.appendNext();case 2:_context869.n=3;return nextPlay;case 3:_context869.n=4;return nextWaiting;case 4:expect(player.waiting).toBeTrue();nextWaited=waitedSpy.next(5,"waited 1 timeout after {timeout}s");_context869.n=5;return mediaSource.appendNext();case 5:_context869.n=6;return nextWaited;case 6:expect(player.waiting).withContext("waiting").toBeFalse();_context869.n=7;return player.seekTo(5);case 7:_context869.n=8;return waitingSpy.next(30,"waiting after hit end of buffer timed out after {timeout}s");case 8:nextWaited=waitedSpy.next(5,"waited after data buffered timed out after {timeout}s");_context869.n=9;return mediaSource.appendNext();case 9:_context869.n=10;return nextWaited;case 10:nextWaiting=nextEventAsPromise(player,"waiting",{timeout:5,timeoutMessage:"waiting after seek to unbuffered region timed out after {time}s"});seekPromise=player.seekTo(22);_context869.n=11;return nextWaiting;case 11:nextWaited=waitedSpy.next(5,"waited after data buffered 2 timed out after {timeout}s");_context869.n=12;return mediaSource.appendNext();case 12:_context869.n=13;return nextWaited;case 13:_context869.n=14;return seekPromise;case 14:return _context869.a(2)}},_callee869)})))})});// test/integ/patch/media/patches/createUnreliablePlaybackEventsPatch.test.ts
2294
- describe("unreliablePlaybackEventsPatch integ",function(){setTestTimeout(25);function canReproduce(_x120){return _canReproduce.apply(this,arguments)}function _canReproduce(){_canReproduce=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee870(media){var domEvents,result,_t92;return _regenerator().w(function(_context870){while(1)switch(_context870.n){case 0:domEvents=new DomEventHost(media);_context870.n=1;return runWaitingScenarios(media,domEvents);case 1:_t92=_context870.v;if(_t92){_context870.n=3;break}_context870.n=2;return runPlayingScenarios(media,domEvents);case 2:_t92=_context870.v;case 3:result=_t92;domEvents.dispose();return _context870.a(2,result)}},_callee870)}));return _canReproduce.apply(this,arguments)}function runWaitingScenarios(_x121,_x122){return _runWaitingScenarios.apply(this,arguments)}function _runWaitingScenarios(){_runWaitingScenarios=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee871(media,domEvents){var waitingSpy,nextWaiting,mediaSource,loadedMetadataSpy,nextLoadedMetadata,_t93;return _regenerator().w(function(_context871){while(1)switch(_context871.n){case 0:if(supportsMse()){_context871.n=1;break}return _context871.a(2,false);case 1:waitingSpy=createEventSpy(domEvents,"waiting");nextWaiting=waitingSpy.next(7)["catch"](noop);mediaSource=new ControlledMediaSource;loadedMetadataSpy=createEventSpy(domEvents,"loadedmetadata");nextLoadedMetadata=loadedMetadataSpy.next(10);_t93=URL;_context871.n=2;return mediaSource.getMediaSource();case 2:media.src=_t93.createObjectURL.call(_t93,_context871.v);_context871.n=3;return mediaSource.appendNext();case 3:_context871.n=4;return nextLoadedMetadata;case 4:void media.play();_context871.n=5;return nextWaiting;case 5:if(waitingSpy.calls.any()){_context871.n=6;break}return _context871.a(2,true);case 6:_context871.n=7;return mediaSource.appendNext();case 7:media.currentTime=7;_context871.n=8;return nextEventAsPromise(domEvents,"timeupdate",{filter:function filter(){return media.currentTime>9.5}});case 8:waitingSpy.calls.reset();_context871.n=9;return waitingSpy.next(5)["catch"](noop);case 9:if(waitingSpy.calls.any()){_context871.n=10;break}return _context871.a(2,true);case 10:waitingSpy.calls.reset();_context871.n=11;return mediaSource.appendNext();case 11:_context871.n=12;return nextEventAsPromise(domEvents,"timeupdate");case 12:expect(waitingSpy).not.toHaveBeenCalled();nextWaiting=waitingSpy.next(5)["catch"](noop);media.currentTime=40;_context871.n=13;return nextWaiting;case 13:media.removeAttribute("src");media.load();return _context871.a(2,!waitingSpy.calls.any())}},_callee871)}));return _runWaitingScenarios.apply(this,arguments)}function runPlayingScenarios(_x123,_x124){return _runPlayingScenarios.apply(this,arguments)}function _runPlayingScenarios(){_runPlayingScenarios=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee872(media,domEvents){var canReproduce2,_t94;return _regenerator().w(function(_context872){while(1)switch(_context872.p=_context872.n){case 0:media.src=vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps;_context872.n=1;return withTimeout(media.play(),10,{message:"play timed out"});case 1:media.currentTime=15;_context872.p=2;_context872.n=3;return nextEventAsPromise(domEvents,"playing",{timeout:10});case 3:canReproduce2=false;_context872.n=5;break;case 4:_context872.p=4;_t94=_context872.v;canReproduce2=true;case 5:media.removeAttribute("src");media.load();return _context872.a(2,canReproduce2)}},_callee872,null,[[2,4]])}));return _runPlayingScenarios.apply(this,arguments)}addPatchTests("unreliablePlaybackEvents","ensures waiting events are emitted when playback reaches end of buffer",function(){return{target:mediaRef.value,canReproduce:canReproduce,actualFlag:defaultMediaElementPatchOptions.value.unreliablePlaybackEvents,patchedRef:patchMediaElement(mediaRef.value,defaultMediaElementPatchOptions.value),allowFalseNegative:true}})});// test/integ/patch/network/fetch.test.ts
2295
- describe("requiresPreventCacheRangeRequestsPatch integ",function(){function canReproduce(_x125){return _canReproduce2.apply(this,arguments)}function _canReproduce2(){_canReproduce2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee873(fetch2){var cacheBust,i,_i48,_arr0,range,_t95;return _regenerator().w(function(_context873){while(1)switch(_context873.p=_context873.n){case 0:cacheBust=createShortUid();i=0;case 1:if(!(i<2)){_context873.n=8;break}_i48=0,_arr0=["826-929","0-825","930-50160"];case 2:if(!(_i48<_arr0.length)){_context873.n=7;break}range=_arr0[_i48];_context873.p=3;_context873.n=4;return fetch2(vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps+"?cache=".concat(cacheBust),{headers:{Range:"bytes=".concat(range)}});case 4:_context873.n=6;break;case 5:_context873.p=5;_t95=_context873.v;if(!(_t95 instanceof TypeError)){_context873.n=6;break}return _context873.a(2,true);case 6:_i48++;_context873.n=2;break;case 7:i++;_context873.n=1;break;case 8:return _context873.a(2,false)}},_callee873,null,[[3,5]])}));return _canReproduce2.apply(this,arguments)}addPatchTests("requiresPreventCacheRangeRequestsPatch","ensures range requests are reliable",function(){return{target:window.fetch,canReproduce:canReproduce,actualFlag:requiresPreventCacheRangeRequestsPatch(),patchedRef:{patched:patchFetch(window.fetch),eventFabricated:emptySignal,eventSquelched:emptySignal,dispose:function dispose(){}},allowFalseNegative:true}})});// test/integ/playback/pause.test.ts
2296
- describe("pause integ",function(){var suite=createVinylSuite();var player;var pauseSpy;var playSpy;var playRejectedSpy;var playingSpy;beforeEach(function(){player=suite.player;pauseSpy=createEventSpy(player,"pause");playSpy=createEventSpy(player,"play");playRejectedSpy=createEventSpy(player,"playRejected");playingSpy=createEventSpy(player,"playing")});function runPauseScenario(){return _runPauseScenario.apply(this,arguments)}function _runPauseScenario(){_runPauseScenario=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee875(){var expectedEventPromise;return _regenerator().w(function(_context875){while(1)switch(_context875.n){case 0:expectedEventPromise=player.playIsPending?playRejectedSpy.next(1):pauseSpy.next(1);player.pause();_context875.n=1;return expectedEventPromise;case 1:expectPausedState(player);_context875.n=2;return expectTimeDoesNotElapse(player);case 2:return _context875.a(2)}},_callee875)}));return _runPauseScenario.apply(this,arguments)}function runPlayingScenario(){return _runPlayingScenario.apply(this,arguments)}function _runPlayingScenario(){_runPlayingScenario=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee876(){var nextPlay,nextPlaying,playPromise;return _regenerator().w(function(_context876){while(1)switch(_context876.n){case 0:nextPlay=playSpy.next(10);nextPlaying=playingSpy.next(10);playPromise=player.play();expectPendingPlaying(player);_context876.n=1;return nextPlay;case 1:_context876.n=2;return playPromise;case 2:_context876.n=3;return nextPlaying;case 3:expectPlayingState(player);_context876.n=4;return expectTimeElapses(player);case 4:return _context876.a(2)}},_callee876)}));return _runPlayingScenario.apply(this,arguments)}it("can pause when playing",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee874(){return _regenerator().w(function(_context874){while(1)switch(_context874.n){case 0:expect(player.paused).withContext("initial paused").toBeTrue();player.load({type:"src",uri:vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps});player.play()["catch"](noop);expectPendingPlaying(player);_context874.n=1;return runPauseScenario();case 1:_context874.n=2;return runPlayingScenario();case 2:_context874.n=3;return runPauseScenario();case 3:_context874.n=4;return runPlayingScenario();case 4:_context874.n=5;return runPauseScenario();case 5:return _context874.a(2)}},_callee874)})))});// test/integ/playback/PlaybackControllerImpl.test.ts
2297
- describe("PlaybackControllerImpl integ",function(){var media;var controller;var originalMuted;setTestTimeout(25);beforeEach(function(){media=mediaRef.value;originalMuted=media.muted;if(!media.muted){media.muted=true}controller=new PlaybackControllerImpl({media:media,loudnessNormalizationController:new MockLoudnessNormalizationController})});afterEach(function(){media.muted=originalMuted;controller.dispose()});describe("mutedChange",function(){it("emits when muted value has changed",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee877(){var mutedChangeSpy,next;return _regenerator().w(function(_context877){while(1)switch(_context877.n){case 0:mutedChangeSpy=createEventSpy(controller,"mutedChange");media.src=vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps;_context877.n=1;return nextHasMetadata(controller);case 1:next=mutedChangeSpy.next();media.muted=false;_context877.n=2;return expectAsync(next).toBeResolvedTo({previous:true,current:false});case 2:next=mutedChangeSpy.next();media.muted=true;_context877.n=3;return expectAsync(next).toBeResolvedTo({previous:false,current:true});case 3:return _context877.a(2)}},_callee877)})))})});// test/integ/playback/reset.test.ts
2292
+ reason:any32(String)});case 3:_context867.n=4;return expectAsync(nextPlaying).toBeResolved();case 4:expect(firstPlayed).toHaveBeenCalledBefore(firstPlaying);case 5:return _context867.a(2)}},_callee867)})))});describe("then a backwards seek is requested",function(){it("never reports a negative playbackTime",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee868(){var nextPlayed,events,_iterator118,_step118,event;return _regenerator().w(function(_context868){while(1)switch(_context868.n){case 0:_context868.n=1;return play();case 1:_context868.n=2;return player.seekTo(40);case 2:_context868.n=3;return _sleep(0.5);case 3:playedSpy.calls.reset();nextPlayed=playedSpy.next(15);_context868.n=4;return player.seekTo(2);case 4:_context868.n=5;return nextPlayed;case 5:_context868.n=6;return _sleep(0.5);case 6:events=playedSpy.calls.allArgs().map(function(_ref812){var _ref813=_slicedToArray(_ref812,1),event=_ref813[0];return event});expect(events.length).toBeGreaterThan(0);_iterator118=_createForOfIteratorHelper(events);try{for(_iterator118.s();!(_step118=_iterator118.n()).done;){event=_step118.value;expect(event.playbackTime).withContext("playbackTime").toBeGreaterThanOrEqual(0)}}catch(err){_iterator118.e(err)}finally{_iterator118.f()}case 7:return _context868.a(2)}},_callee868)})))})});describe("when seeking while paused",function(){it("does not emit playing",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee869(){var nextPlayed;return _regenerator().w(function(_context869){while(1)switch(_context869.n){case 0:_context869.n=1;return play();case 1:nextPlayed=playedSpy.next();playingSpy.calls.reset();player.pause();_context869.n=2;return player.seekTo(25);case 2:_context869.n=3;return expectAsync(nextPlayed).toBeResolved();case 3:_context869.n=4;return _sleep(0.5);case 4:expect(playingSpy).not.toHaveBeenCalled();case 5:return _context869.a(2)}},_callee869)})))})});// test/integ/event/waiting.test.ts
2293
+ describe("waiting integ",function(){beforeEach(function(){if(!supportsMse())pending("MSE not supported")});var suite=createVinylSuite();describe("when playback is stopped due to lack of data",function(){it("emits waiting event",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee871(){var player,waitingSpy,waitedSpy,playSpy,mediaSource,nextPlay,nextWaiting,nextWaited,seekPromise,_t89,_t90,_t91;return _regenerator().w(function(_context871){while(1)switch(_context871.n){case 0:player=suite.player;waitingSpy=createEventSpy(player,"waiting");waitedSpy=createEventSpy(player,"waited");playSpy=createEventSpy(player,"play");mediaSource=new ControlledMediaSource;_t89=player;_t90=URL;_context871.n=1;return mediaSource.getMediaSource();case 1:_t91=_t90.createObjectURL.call(_t90,_context871.v);_t89.load.call(_t89,{type:"src",uri:_t91});nextPlay=playSpy.next(5);void player.play();nextWaiting=waitingSpy.next(10,"waiting after play when not buffered");_context871.n=2;return mediaSource.appendNext();case 2:_context871.n=3;return nextPlay;case 3:_context871.n=4;return nextWaiting;case 4:expect(player.waiting).toBeTrue();nextWaited=waitedSpy.next(5,"waited 1 timeout after {timeout}s");_context871.n=5;return mediaSource.appendNext();case 5:_context871.n=6;return nextWaited;case 6:expect(player.waiting).withContext("waiting").toBeFalse();_context871.n=7;return player.seekTo(5);case 7:_context871.n=8;return waitingSpy.next(30,"waiting after hit end of buffer timed out after {timeout}s");case 8:nextWaited=waitedSpy.next(5,"waited after data buffered timed out after {timeout}s");_context871.n=9;return mediaSource.appendNext();case 9:_context871.n=10;return nextWaited;case 10:nextWaiting=nextEventAsPromise(player,"waiting",{timeout:5,timeoutMessage:"waiting after seek to unbuffered region timed out after {time}s"});seekPromise=player.seekTo(22);_context871.n=11;return nextWaiting;case 11:nextWaited=waitedSpy.next(5,"waited after data buffered 2 timed out after {timeout}s");_context871.n=12;return mediaSource.appendNext();case 12:_context871.n=13;return nextWaited;case 13:_context871.n=14;return seekPromise;case 14:return _context871.a(2)}},_callee871)})))})});// test/integ/patch/media/patches/createUnreliablePlaybackEventsPatch.test.ts
2294
+ describe("unreliablePlaybackEventsPatch integ",function(){setTestTimeout(25);function canReproduce(_x120){return _canReproduce.apply(this,arguments)}function _canReproduce(){_canReproduce=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee872(media){var domEvents,result,_t92;return _regenerator().w(function(_context872){while(1)switch(_context872.n){case 0:domEvents=new DomEventHost(media);_context872.n=1;return runWaitingScenarios(media,domEvents);case 1:_t92=_context872.v;if(_t92){_context872.n=3;break}_context872.n=2;return runPlayingScenarios(media,domEvents);case 2:_t92=_context872.v;case 3:result=_t92;domEvents.dispose();return _context872.a(2,result)}},_callee872)}));return _canReproduce.apply(this,arguments)}function runWaitingScenarios(_x121,_x122){return _runWaitingScenarios.apply(this,arguments)}function _runWaitingScenarios(){_runWaitingScenarios=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee873(media,domEvents){var waitingSpy,nextWaiting,mediaSource,loadedMetadataSpy,nextLoadedMetadata,_t93;return _regenerator().w(function(_context873){while(1)switch(_context873.n){case 0:if(supportsMse()){_context873.n=1;break}return _context873.a(2,false);case 1:waitingSpy=createEventSpy(domEvents,"waiting");nextWaiting=waitingSpy.next(7)["catch"](noop);mediaSource=new ControlledMediaSource;loadedMetadataSpy=createEventSpy(domEvents,"loadedmetadata");nextLoadedMetadata=loadedMetadataSpy.next(10);_t93=URL;_context873.n=2;return mediaSource.getMediaSource();case 2:media.src=_t93.createObjectURL.call(_t93,_context873.v);_context873.n=3;return mediaSource.appendNext();case 3:_context873.n=4;return nextLoadedMetadata;case 4:void media.play();_context873.n=5;return nextWaiting;case 5:if(waitingSpy.calls.any()){_context873.n=6;break}return _context873.a(2,true);case 6:_context873.n=7;return mediaSource.appendNext();case 7:media.currentTime=7;_context873.n=8;return nextEventAsPromise(domEvents,"timeupdate",{filter:function filter(){return media.currentTime>9.5}});case 8:waitingSpy.calls.reset();_context873.n=9;return waitingSpy.next(5)["catch"](noop);case 9:if(waitingSpy.calls.any()){_context873.n=10;break}return _context873.a(2,true);case 10:waitingSpy.calls.reset();_context873.n=11;return mediaSource.appendNext();case 11:_context873.n=12;return nextEventAsPromise(domEvents,"timeupdate");case 12:expect(waitingSpy).not.toHaveBeenCalled();nextWaiting=waitingSpy.next(5)["catch"](noop);media.currentTime=40;_context873.n=13;return nextWaiting;case 13:media.removeAttribute("src");media.load();return _context873.a(2,!waitingSpy.calls.any())}},_callee873)}));return _runWaitingScenarios.apply(this,arguments)}function runPlayingScenarios(_x123,_x124){return _runPlayingScenarios.apply(this,arguments)}function _runPlayingScenarios(){_runPlayingScenarios=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee874(media,domEvents){var canReproduce2,_t94;return _regenerator().w(function(_context874){while(1)switch(_context874.p=_context874.n){case 0:media.src=vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps;_context874.n=1;return withTimeout(media.play(),10,{message:"play timed out"});case 1:media.currentTime=15;_context874.p=2;_context874.n=3;return nextEventAsPromise(domEvents,"playing",{timeout:10});case 3:canReproduce2=false;_context874.n=5;break;case 4:_context874.p=4;_t94=_context874.v;canReproduce2=true;case 5:media.removeAttribute("src");media.load();return _context874.a(2,canReproduce2)}},_callee874,null,[[2,4]])}));return _runPlayingScenarios.apply(this,arguments)}addPatchTests("unreliablePlaybackEvents","ensures waiting events are emitted when playback reaches end of buffer",function(){return{target:mediaRef.value,canReproduce:canReproduce,actualFlag:defaultMediaElementPatchOptions.value.unreliablePlaybackEvents,patchedRef:patchMediaElement(mediaRef.value,defaultMediaElementPatchOptions.value),allowFalseNegative:true}})});// test/integ/patch/network/fetch.test.ts
2295
+ describe("requiresPreventCacheRangeRequestsPatch integ",function(){function canReproduce(_x125){return _canReproduce2.apply(this,arguments)}function _canReproduce2(){_canReproduce2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee875(fetch2){var cacheBust,i,_i48,_arr0,range,_t95;return _regenerator().w(function(_context875){while(1)switch(_context875.p=_context875.n){case 0:cacheBust=createShortUid();i=0;case 1:if(!(i<2)){_context875.n=8;break}_i48=0,_arr0=["826-929","0-825","930-50160"];case 2:if(!(_i48<_arr0.length)){_context875.n=7;break}range=_arr0[_i48];_context875.p=3;_context875.n=4;return fetch2(vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps+"?cache=".concat(cacheBust),{headers:{Range:"bytes=".concat(range)}});case 4:_context875.n=6;break;case 5:_context875.p=5;_t95=_context875.v;if(!(_t95 instanceof TypeError)){_context875.n=6;break}return _context875.a(2,true);case 6:_i48++;_context875.n=2;break;case 7:i++;_context875.n=1;break;case 8:return _context875.a(2,false)}},_callee875,null,[[3,5]])}));return _canReproduce2.apply(this,arguments)}addPatchTests("requiresPreventCacheRangeRequestsPatch","ensures range requests are reliable",function(){return{target:window.fetch,canReproduce:canReproduce,actualFlag:requiresPreventCacheRangeRequestsPatch(),patchedRef:{patched:patchFetch(window.fetch),eventFabricated:emptySignal,eventSquelched:emptySignal,dispose:function dispose(){}},allowFalseNegative:true}})});// test/integ/playback/pause.test.ts
2296
+ describe("pause integ",function(){var suite=createVinylSuite();var player;var pauseSpy;var playSpy;var playRejectedSpy;var playingSpy;beforeEach(function(){player=suite.player;pauseSpy=createEventSpy(player,"pause");playSpy=createEventSpy(player,"play");playRejectedSpy=createEventSpy(player,"playRejected");playingSpy=createEventSpy(player,"playing")});function runPauseScenario(){return _runPauseScenario.apply(this,arguments)}function _runPauseScenario(){_runPauseScenario=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee877(){var expectedEventPromise;return _regenerator().w(function(_context877){while(1)switch(_context877.n){case 0:expectedEventPromise=player.playIsPending?playRejectedSpy.next(1):pauseSpy.next(1);player.pause();_context877.n=1;return expectedEventPromise;case 1:expectPausedState(player);_context877.n=2;return expectTimeDoesNotElapse(player);case 2:return _context877.a(2)}},_callee877)}));return _runPauseScenario.apply(this,arguments)}function runPlayingScenario(){return _runPlayingScenario.apply(this,arguments)}function _runPlayingScenario(){_runPlayingScenario=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee878(){var nextPlay,nextPlaying,playPromise;return _regenerator().w(function(_context878){while(1)switch(_context878.n){case 0:nextPlay=playSpy.next(10);nextPlaying=playingSpy.next(10);playPromise=player.play();expectPendingPlaying(player);_context878.n=1;return nextPlay;case 1:_context878.n=2;return playPromise;case 2:_context878.n=3;return nextPlaying;case 3:expectPlayingState(player);_context878.n=4;return expectTimeElapses(player);case 4:return _context878.a(2)}},_callee878)}));return _runPlayingScenario.apply(this,arguments)}it("can pause when playing",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee876(){return _regenerator().w(function(_context876){while(1)switch(_context876.n){case 0:expect(player.paused).withContext("initial paused").toBeTrue();player.load({type:"src",uri:vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps});player.play()["catch"](noop);expectPendingPlaying(player);_context876.n=1;return runPauseScenario();case 1:_context876.n=2;return runPlayingScenario();case 2:_context876.n=3;return runPauseScenario();case 3:_context876.n=4;return runPlayingScenario();case 4:_context876.n=5;return runPauseScenario();case 5:return _context876.a(2)}},_callee876)})))});// test/integ/playback/PlaybackControllerImpl.test.ts
2297
+ describe("PlaybackControllerImpl integ",function(){var media;var controller;var originalMuted;setTestTimeout(25);beforeEach(function(){media=mediaRef.value;originalMuted=media.muted;if(!media.muted){media.muted=true}controller=new PlaybackControllerImpl({media:media,loudnessNormalizationController:new MockLoudnessNormalizationController})});afterEach(function(){media.muted=originalMuted;controller.dispose()});describe("mutedChange",function(){it("emits when muted value has changed",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee879(){var mutedChangeSpy,next;return _regenerator().w(function(_context879){while(1)switch(_context879.n){case 0:mutedChangeSpy=createEventSpy(controller,"mutedChange");media.src=vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps;_context879.n=1;return nextHasMetadata(controller);case 1:next=mutedChangeSpy.next();media.muted=false;_context879.n=2;return expectAsync(next).toBeResolvedTo({previous:true,current:false});case 2:next=mutedChangeSpy.next();media.muted=true;_context879.n=3;return expectAsync(next).toBeResolvedTo({previous:false,current:true});case 3:return _context879.a(2)}},_callee879)})))})});// test/integ/playback/reset.test.ts
2298
2298
  var playbackTime=5;describe("reset integ",function(){var mockNetworkState;var mockNetworkStateRef=overrideGlobalInit(networkState,function(){return new MockNetworkState});var suite=createVinylSuite({drm:{keySystems:_defineProperty({},"com.widevine.alpha"/* WIDEVINE */,{licenseServer:{url:"https://cwip-shaka-proxy.appspot.com/no_auth"}})}},{// Do not fail the suite on caught errors, this suite tests failures
2299
- failOnError:false});var player;var errorSpy;var resetSpy;var fetchedRangesChangeSpy;var requestGate;var failNext;beforeEach(function(){var requester=requesterWithRetryRef.value;var originalRequest=requester.request.bind(requester);spyOn(requester,"request").and.callFake(/*#__PURE__*/function(){var _ref816=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee878(input,init,requestOptions){return _regenerator().w(function(_context878){while(1)switch(_context878.n){case 0:if(requestGate(input,init,requestOptions)){_context878.n=2;break}_context878.n=1;return _sleep(0.1);case 1:throw new RequestError(null,{ok:false,type:"internal"/* INTERNAL */,willRetry:false,retryAfter:null,reason:null,timestamp:Date.now(),requestInfo:__spreadProps(__spreadValues({},emptyRequestInfo),{init:init!=null?init:emptyRequestInfo.init,input:input})});case 2:return _context878.a(2,originalRequest(input,init,requestOptions))}},_callee878)}));return function(_x126,_x127,_x128){return _ref816.apply(this,arguments)}}());mockNetworkState=mockNetworkStateRef.value;mockNetworkState.onLine=true;failNext=false;requestGate=function requestGate(){if(failNext){failNext=false;return false}return true};player=suite.player;errorSpy=createEventSpy(player,"error");resetSpy=createEventSpy(player,"reset");fetchedRangesChangeSpy=createEventSpy(player,"fetchedRangesChange");player.configure({abr:{// These tests aren't relevant to ABR, save bandwidth:
2300
- strategy:"lowest"/* LOWEST */}})});describe("on dash tracks",function(){beforeEach(function(){if(!supportsMse()){pending("MSE not supported");return}});function loadDash(){player.load({type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase})}it("recovers from failed segment prefetch",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee879(){var playPromise,seekToTime;return _regenerator().w(function(_context879){while(1)switch(_context879.n){case 0:loadDash();playPromise=player.play();case 1:if(!(player.fetchedTime<29)){_context879.n=3;break}_context879.n=2;return fetchedRangesChangeSpy.next(15);case 2:_context879.n=1;break;case 3:failNext=true;_context879.n=4;return playPromise;case 4:_context879.n=5;return _sleep(3);case 5:expect(player.fetchedTime).toBeLessThan(31);seekToTime=32;player.seekTo(seekToTime)["catch"](noop);_context879.n=6;return expectTrackPlaysUntil(player,seekToTime+playbackTime);case 6:expect(errorSpy).withContext("prefetch failures should not cause player errors").not.toHaveBeenCalled();case 7:return _context879.a(2)}},_callee879)})));var requestOrderFailures=[{label:"manifest",contentLengthRange:void 0},{label:"sidx segment",contentLengthRange:[50,400]},{label:"index segment",contentLengthRange:[700,2e3]// ~1KiB
2299
+ failOnError:false});var player;var errorSpy;var resetSpy;var fetchedRangesChangeSpy;var requestGate;var failNext;beforeEach(function(){var requester=requesterWithRetryRef.value;var originalRequest=requester.request.bind(requester);spyOn(requester,"request").and.callFake(/*#__PURE__*/function(){var _ref818=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee880(input,init,requestOptions){return _regenerator().w(function(_context880){while(1)switch(_context880.n){case 0:if(requestGate(input,init,requestOptions)){_context880.n=2;break}_context880.n=1;return _sleep(0.1);case 1:throw new RequestError(null,{ok:false,type:"internal"/* INTERNAL */,willRetry:false,retryAfter:null,reason:null,timestamp:Date.now(),requestInfo:__spreadProps(__spreadValues({},emptyRequestInfo),{init:init!=null?init:emptyRequestInfo.init,input:input})});case 2:return _context880.a(2,originalRequest(input,init,requestOptions))}},_callee880)}));return function(_x126,_x127,_x128){return _ref818.apply(this,arguments)}}());mockNetworkState=mockNetworkStateRef.value;mockNetworkState.onLine=true;failNext=false;requestGate=function requestGate(){if(failNext){failNext=false;return false}return true};player=suite.player;errorSpy=createEventSpy(player,"error");resetSpy=createEventSpy(player,"reset");fetchedRangesChangeSpy=createEventSpy(player,"fetchedRangesChange");player.configure({abr:{// These tests aren't relevant to ABR, save bandwidth:
2300
+ strategy:"lowest"/* LOWEST */}})});describe("on dash tracks",function(){beforeEach(function(){if(!supportsMse()){pending("MSE not supported");return}});function loadDash(){player.load({type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase})}it("recovers from failed segment prefetch",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee881(){var playPromise,seekToTime;return _regenerator().w(function(_context881){while(1)switch(_context881.n){case 0:loadDash();playPromise=player.play();case 1:if(!(player.fetchedTime<29)){_context881.n=3;break}_context881.n=2;return fetchedRangesChangeSpy.next(15);case 2:_context881.n=1;break;case 3:failNext=true;_context881.n=4;return playPromise;case 4:_context881.n=5;return _sleep(3);case 5:expect(player.fetchedTime).toBeLessThan(31);seekToTime=32;player.seekTo(seekToTime)["catch"](noop);_context881.n=6;return expectTrackPlaysUntil(player,seekToTime+playbackTime);case 6:expect(errorSpy).withContext("prefetch failures should not cause player errors").not.toHaveBeenCalled();case 7:return _context881.a(2)}},_callee881)})));var requestOrderFailures=[{label:"manifest",contentLengthRange:void 0},{label:"sidx segment",contentLengthRange:[50,400]},{label:"index segment",contentLengthRange:[700,2e3]// ~1KiB
2301
2301
  },{label:"media segment",contentLengthRange:[2e4,Infinity]// ~60KiB
2302
- }];var _loop21=function _loop21(){var _requestOrderFailures=requestOrderFailures[i],label=_requestOrderFailures.label,contentLengthRange=_requestOrderFailures.contentLengthRange;it("recovers next onLine for ".concat(label," errors"),/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee882(){var nextError,playPromise,nextReset;return _regenerator().w(function(_context882){while(1)switch(_context882.n){case 0:requestGate=function requestGate(_,init){var _a3;var headers=normalizeHeadersInit((_a3=init==null?void 0:init.headers)!=null?_a3:{});var rangeHeader=headers.Range;if(!rangeHeader)return!!contentLengthRange;if(!contentLengthRange)return true;var _rangeHeader$slice$sp=rangeHeader.slice(6).split("-").map(Number),_rangeHeader$slice$sp2=_slicedToArray(_rangeHeader$slice$sp,2),start=_rangeHeader$slice$sp2[0],end=_rangeHeader$slice$sp2[1];var contentLength=end-start+1;return contentLength<contentLengthRange[0]||contentLength>contentLengthRange[1]};nextError=errorSpy.next(30);loadDash();playPromise=player.play();_context882.n=1;return nextError;case 1:requestGate=function requestGate(){return true};nextReset=resetSpy.next(1);mockNetworkState.dispatch("online",mockEvent("online"));_context882.n=2;return nextReset;case 2:_context882.n=3;return playPromise;case 3:_context882.n=4;return expectTrackPlaysUntil(player,playbackTime);case 4:return _context882.a(2)}},_callee882)})))};for(var i=0;i<requestOrderFailures.length;i++){_loop21()}describe("when encrypted",function(){beforeEach(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee880(){return _regenerator().w(function(_context880){while(1)switch(_context880.n){case 0:_context880.n=1;return pendingIfWidevineNotSupported(player);case 1:return _context880.a(2)}},_callee880)})));it("recovers from failed license requests",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee881(){var nextError,licenseAttempt,playPromise,nextReset;return _regenerator().w(function(_context881){while(1)switch(_context881.n){case 0:nextError=errorSpy.next(30);licenseAttempt=0;requestGate=function requestGate(input){if(typeof input==="string"&&input==="https://cwip-shaka-proxy.appspot.com/no_auth"){return licenseAttempt++>0}return true};player.load({type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase_widevine});playPromise=player.play();_context881.n=1;return nextError;case 1:nextReset=resetSpy.next(1);mockNetworkState.dispatch("online",mockEvent("online"));_context881.n=2;return nextReset;case 2:_context881.n=3;return playPromise;case 3:_context881.n=4;return expectTrackPlaysUntil(player,playbackTime);case 4:return _context881.a(2)}},_callee881)})))})})});// test/integ/playback/seeking.test.ts
2303
- describe("seeking integ",function(){var suite=createVinylSuite({drm:{keySystems:_defineProperty({},"com.widevine.alpha"/* WIDEVINE */,{licenseServer:{url:"https://cwip-shaka-proxy.appspot.com/no_auth"}})}});var player;var trackSuites=[{description:"dash with segmentBase",needsWidevine:false,track:{type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase}},{description:"dash drm video with segmentTemplate",needsWidevine:true,track:{type:"dash",uri:vinylTestAssets.dash.live_static_video_audio_60s_2s_segmentTemplate_widevine_cl10}}];function addWhenSeekingRapidlyTests(){describe("when seeking rapidly",function(){it("the last seek should be honored",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee883(){var promises,FINAL,TOLERANCE,finalPromise;return _regenerator().w(function(_context883){while(1)switch(_context883.n){case 0:promises=[];promises.push(player.seekTo(12));promises.push(player.seekTo(15));promises.push(player.seekTo(15.1));promises.push(player.seekTo(30));promises.push(player.seekTo(30.5));promises.push(player.seekTo(5));promises.push(player.seekTo(25));FINAL=50;TOLERANCE=1;finalPromise=player.seekTo(FINAL);_context883.n=1;return Promise.all(promises);case 1:_context883.n=2;return finalPromise;case 2:expect(player.currentTime).toBeCloseToWithin(FINAL,TOLERANCE);if(player.paused){_context883.n=3;break}_context883.n=3;return assertFrequency();case 3:return _context883.a(2)}},_callee883)})))})}beforeEach(function(){player=suite.player});var _loop22=function _loop22(){var trackSuite=_trackSuites[_i49];describe(trackSuite.description,function(){beforeEach(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee884(){var _t96;return _regenerator().w(function(_context884){while(1)switch(_context884.p=_context884.n){case 0:if(!trackSuite.needsWidevine){_context884.n=2;break}_context884.n=1;return pendingIfWidevineNotSupported(player);case 1:if(!_context884.v){_context884.n=2;break}return _context884.a(2);case 2:_context884.p=2;player.load(trackSuite.track);_context884.n=6;break;case 3:_context884.p=3;_t96=_context884.v;if(!(_t96 instanceof MediaUnsupportedError)){_context884.n=4;break}pending("Track type not supported");_context884.n=5;break;case 4:throw _t96;case 5:return _context884.a(2);case 6:_context884.n=7;return player.play();case 7:return _context884.a(2)}},_callee884,null,[[2,3]])})));describe("when playing",function(){it("can seek to a time",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee885(){return _regenerator().w(function(_context885){while(1)switch(_context885.n){case 0:expect(player.paused).withContext("paused").toBeFalse();expect(player.playing).withContext("playing").toBeTrue();_context885.n=1;return expectTrackCanSeekTo(player,10);case 1:_context885.n=2;return expectTrackCanSeekTo(player,20);case 2:_context885.n=3;return expectTrackCanSeekTo(player,5);case 3:_context885.n=4;return expectTrackCanSeekTo(player,0);case 4:return _context885.a(2)}},_callee885)})));it("clamps when seeking to beyond duration",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee886(){return _regenerator().w(function(_context886){while(1)switch(_context886.n){case 0:_context886.n=1;return expectTrackCanSeekTo(player,999);case 1:return _context886.a(2)}},_callee886)})));addWhenSeekingRapidlyTests()});describe("when paused",function(){beforeEach(function(){player.pause()});it("can seek to a time",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee887(){return _regenerator().w(function(_context887){while(1)switch(_context887.n){case 0:_context887.n=1;return expectTrackCanSeekTo(player,12);case 1:_context887.n=2;return expectTrackCanSeekTo(player,25);case 2:_context887.n=3;return expectTrackCanSeekTo(player,7);case 3:_context887.n=4;return expectTrackCanSeekTo(player,0);case 4:return _context887.a(2)}},_callee887)})));it("clamps when seeking to beyond duration",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee888(){return _regenerator().w(function(_context888){while(1)switch(_context888.n){case 0:_context888.n=1;return expectTrackCanSeekTo(player,999);case 1:return _context888.a(2)}},_callee888)})));addWhenSeekingRapidlyTests()});describe("when track is segmented",function(){beforeEach(function(){if(trackSuite.track.type!=="dash")pending("not segmented")});it("can seek close to end and start of segment boundaries",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee889(){return _regenerator().w(function(_context889){while(1)switch(_context889.n){case 0:_context889.n=1;return expectTrackCanSeekTo(player,39.9);case 1:_context889.n=2;return expectTrackCanSeekTo(player,59.99);case 2:_context889.n=3;return expectTrackCanSeekTo(player,55);case 3:_context889.n=4;return expectTrackCanSeekTo(player,51);case 4:_context889.n=5;return expectTrackCanSeekTo(player,49);case 5:_context889.n=6;return expectTrackCanSeekTo(player,30.01);case 6:_context889.n=7;return expectTrackCanSeekTo(player,9.999);case 7:_context889.n=8;return expectTrackCanSeekTo(player,42);case 8:_context889.n=9;return expectTrackCanSeekTo(player,39.995);case 9:_context889.n=10;return expectTrackCanSeekTo(player,50.5);case 10:return _context889.a(2)}},_callee889)})));it("no-ops seeks when time is close to currentTime",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee890(){return _regenerator().w(function(_context890){while(1)switch(_context890.n){case 0:_context890.n=1;return expectTrackCanSeekTo(player,39.9);case 1:_context890.n=2;return expectTrackCanSeekTo(player,40.1);case 2:_context890.n=3;return expectTrackCanSeekTo(player,40);case 3:return _context890.a(2)}},_callee890)})))});describe("after track ends",function(){it("can seek back to beginning",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee891(){var nextEnded;return _regenerator().w(function(_context891){while(1)switch(_context891.n){case 0:nextEnded=nextEventAsPromise(player,"ended");_context891.n=1;return expectTrackCanSeekTo(player,999);case 1:_context891.n=2;return nextEnded;case 2:_context891.n=3;return expectTrackCanSeekTo(player,0);case 3:_context891.n=4;return expectTrackCanSeekTo(player,5);case 4:return _context891.a(2)}},_callee891)})));it("can continue seeking",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee892(){var nextEnded;return _regenerator().w(function(_context892){while(1)switch(_context892.n){case 0:nextEnded=nextEventAsPromise(player,"ended");_context892.n=1;return expectTrackCanSeekTo(player,999);case 1:_context892.n=2;return nextEnded;case 2:_context892.n=3;return expectTrackCanSeekTo(player,0);case 3:_context892.n=4;return expectTrackCanSeekTo(player,5);case 4:_context892.n=5;return expectTrackCanSeekTo(player,15);case 5:_context892.n=6;return expectTrackCanSeekTo(player,35);case 6:_context892.n=7;return expectTrackCanSeekTo(player,999);case 7:_context892.n=8;return nextEnded;case 8:return _context892.a(2)}},_callee892)})))})})};for(var _i49=0,_trackSuites=trackSuites;_i49<_trackSuites.length;_i49++){_loop22()}});// test/integ/track/allowedContentTypes.test.ts
2304
- describe("allowedContentTypes switching integ",function(){var dashPlaylist=[{type:"dash",uri:vinylTestAssets.dash.live_static_video_audio_60s_2s_segmentTemplate}];var hlsPlaylist=[{type:"hls",uri:vinylTestAssets.hls.live_static_video_audio_60s_2s}];var suite=createVinylSuite({},{timeout:180});beforeEach(function(){if(!supportsMse())pending("MSE not supported")});function reconfigureAllowed(_x129){return _reconfigureAllowed.apply(this,arguments)}function _reconfigureAllowed(){_reconfigureAllowed=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee896(allowedContentTypes){var player,wantsVideo,_t97;return _regenerator().w(function(_context896){while(1)switch(_context896.n){case 0:player=suite.player;wantsVideo=allowedContentTypes==null||allowedContentTypes.includes("video");player.configure({allowedContentTypes:allowedContentTypes});_t97=expect;_context896.n=1;return poll(function(){return player.contentTypes.has("video")===wantsVideo},{timeout:30});case 1:_t97(_context896.v).withContext("content types reflect allowedContentTypes").toBeTrue();case 2:return _context896.a(2)}},_callee896)}));return _reconfigureAllowed.apply(this,arguments)}function playThenSwitch(_x130){return _playThenSwitch.apply(this,arguments)}function _playThenSwitch(){_playThenSwitch=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee897(playlist){var player,resumeBefore,resumeBeforeRestore;return _regenerator().w(function(_context897){while(1)switch(_context897.n){case 0:player=suite.player;player.load.apply(player,_toConsumableArray(playlist));_context897.n=1;return player.play();case 1:_context897.n=2;return onDuration(player);case 2:_context897.n=3;return expectTrackPlaysUntil(player,3);case 3:expect(player.contentTypes.has("video")).withContext("starts with video").toBeTrue();expect(player.contentTypes.has("audio")).withContext("starts with audio").toBeTrue();resumeBefore=player.currentTime;_context897.n=4;return reconfigureAllowed(["audio"]);case 4:_context897.n=5;return expectTrackPlaysUntil(player,resumeBefore);case 5:expect(player.contentTypes.has("video")).withContext("video dropped after switch to audio-only").toBeFalse();expect(player.contentTypes.has("audio")).withContext("audio retained after switch to audio-only").toBeTrue();resumeBeforeRestore=player.currentTime;_context897.n=6;return reconfigureAllowed(null);case 6:_context897.n=7;return expectTrackPlaysUntil(player,resumeBeforeRestore);case 7:expect(player.contentTypes.has("video")).withContext("video restored after clearing the allow list").toBeTrue();case 8:return _context897.a(2)}},_callee897)}));return _playThenSwitch.apply(this,arguments)}it("DASH reloads the track when switching content types",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee893(){return _regenerator().w(function(_context893){while(1)switch(_context893.n){case 0:_context893.n=1;return playThenSwitch(dashPlaylist);case 1:return _context893.a(2)}},_callee893)})));it("HLS reloads the track when switching content types",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee894(){return _regenerator().w(function(_context894){while(1)switch(_context894.n){case 0:_context894.n=1;return playThenSwitch(hlsPlaylist);case 1:return _context894.a(2)}},_callee894)})));it("DASH applies allowedContentTypes set before load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee895(){var player;return _regenerator().w(function(_context895){while(1)switch(_context895.n){case 0:player=suite.player;player.configure({allowedContentTypes:["audio"]});player.load.apply(player,dashPlaylist);_context895.n=1;return player.play();case 1:_context895.n=2;return onDuration(player);case 2:_context895.n=3;return expectTrackPlaysUntil(player,3);case 3:expect(player.contentTypes.has("video")).withContext("video excluded when audio-only configured up front").toBeFalse();expect(player.contentTypes.has("audio")).withContext("audio present").toBeTrue();case 4:return _context895.a(2)}},_callee895)})))});// test/integ/track/dash/liveStaticSegmentBase.test.ts
2305
- describe("dash with segmentBase integ",function(){var playlist=[{type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase}];var suite=createVinylSuite();beforeEach(function(){if(!supportsMse())pending("MSE not supported")});it("plays",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee898(){return _regenerator().w(function(_context898){while(1)switch(_context898.n){case 0:_context898.n=1;return expectPlaylistPlays(suite.player,playlist);case 1:return _context898.a(2)}},_callee898)})))});// test/integ/track/dash/liveStaticSegmentTemplate.test.ts
2306
- describe("dash video with segmentTemplate integ",function(){var playlist=[{type:"dash",uri:vinylTestAssets.dash.live_static_video_audio_60s_2s_segmentTemplate}];var suite=createVinylSuite();beforeEach(function(){if(!supportsMse())pending("MSE not supported")});it("plays",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee899(){return _regenerator().w(function(_context899){while(1)switch(_context899.n){case 0:_context899.n=1;return expectPlaylistPlays(suite.player,playlist);case 1:return _context899.a(2)}},_callee899)})))});// test/integ/track/dash/Uhd.test.ts
2307
- describe("uhd integ",function(){var ForceUhdCapabilities=/*#__PURE__*/function(_CapabilitiesImpl){function ForceUhdCapabilities(){_classCallCheck(this,ForceUhdCapabilities);return _callSuper(this,ForceUhdCapabilities,arguments)}_inherits(ForceUhdCapabilities,_CapabilitiesImpl);return _createClass(ForceUhdCapabilities,[{key:"sampleRate",get:function get(){if(hasBrowser("Chromium"/* CHROMIUM */)){return Number.MAX_VALUE}else{return _superPropGet(ForceUhdCapabilities,"sampleRate",this,1)}}}])}(CapabilitiesImpl);var suite=new VinylSuite(function(){return createVinylPlayer({media:mediaRef.value},{capabilities:function capabilities(deps){return new ForceUhdCapabilities(deps)}})});suite.init();var playlist=[{type:"dash",uri:"https://assets.dev.vinyl.music.amazon.dev/dash/world___bpm85/manifest.mpd"}];beforeEach(function(){if(!suite.player.capabilities.canPlayTypeMse("flac")){pending("flac not supported")}});it("plays",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee900(){var _a3,player;return _regenerator().w(function(_context900){while(1)switch(_context900.n){case 0:player=suite.player;player.load.apply(player,playlist);_context900.n=1;return player.play();case 1:if(hasBrowser("Chromium"/* CHROMIUM */)){expect((_a3=player.getPlaybackQuality("audio"))==null?void 0:_a3.audioSamplingRate).toBe([192e3,192e3])}_context900.n=2;return _sleep(25);case 2:expect(player.currentTime).toBeGreaterThan(20);_context900.n=3;return player.seekTo(player.duration-3);case 3:_context900.n=4;return onEnded(player);case 4:expect(player.currentTime).withContext("currentTime ends near duration").toBeCloseToWithin(player.duration,3);case 5:return _context900.a(2)}},_callee900)})))});// test/integ/track/hls/adInterstitials.test.ts
2308
- var ANCHOR_ISO="2024-01-01T00:00:00.000Z";var ANCHOR_MS=Date.parse(ANCHOR_ISO);var CONTENT_ASSET=vinylTestAssets.hls.live_static_video_audio_60s_4s;var AD_ASSET=vinylTestAssets.hls.live_static_video_audio_60s_2s;function injectingManifestProvider(mainUrl,interstitials){return/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee902(){var mainText,mainPlaylist,cache;return _regenerator().w(function(_context902){while(1)switch(_context902.n){case 0:_context902.n=1;return fetch(mainUrl);case 1:_context902.n=2;return _context902.v.text();case 2:mainText=_context902.v;mainPlaylist=parseMainPlaylist(mainText);cache=/* @__PURE__ */new Map;return _context902.a(2,{mainPlaylist:mainPlaylist,baseUrl:mainUrl,getMediaPlaylist:function(){var _getMediaPlaylist=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee901(uri){var cached,url,text,injected,parsed;return _regenerator().w(function(_context901){while(1)switch(_context901.n){case 0:cached=cache.get(uri);if(!cached){_context901.n=1;break}return _context901.a(2,cached);case 1:url=resolveUrl(uri,mainUrl);_context901.n=2;return fetch(url);case 2:_context901.n=3;return _context901.v.text();case 3:text=_context901.v;injected=injectInterstitials(text,interstitials);parsed=parseMediaPlaylist(injected);cache.set(uri,parsed);return _context901.a(2,parsed)}},_callee901)}));function getMediaPlaylist(_x131){return _getMediaPlaylist.apply(this,arguments)}return getMediaPlaylist}()})}},_callee902)}))}function injectInterstitials(text,interstitials){var dateRanges=interstitials.map(function(it2){var startDate=new Date(ANCHOR_MS+it2.startTime*1e3).toISOString();var asset;if(it2.assetList){var json=JSON.stringify(__spreadValues({ASSETS:it2.assetList.map(function(a){return{URI:a.uri,DURATION:a.duration}})},it2.skipControl&&{"SKIP-CONTROL":__spreadValues({OFFSET:it2.skipControl.offset},it2.skipControl.duration!=null&&{DURATION:it2.skipControl.duration})}));var dataUrl="data:application/json;base64,"+btoa(json);asset="X-ASSET-LIST=\"".concat(dataUrl,"\"")}else{asset="X-ASSET-URI=\"".concat(it2.assetUri,"\"")}var cue=it2.cue?",CUE=\"".concat(it2.cue,"\""):"";var resumeOffset=it2.resumeOffset==null?"":",X-RESUME-OFFSET=".concat(it2.resumeOffset);var playoutLimit=it2.playoutLimit==null?"":",X-PLAYOUT-LIMIT=".concat(it2.playoutLimit);return"#EXT-X-DATERANGE:ID=\"".concat(it2.id,"\",CLASS=\"com.apple.hls.interstitial\",START-DATE=\"").concat(startDate,"\",DURATION=").concat(it2.duration,",").concat(asset).concat(cue).concat(resumeOffset).concat(playoutLimit)});var lines=text.split(/\r?\n/);var out=[];var anchored=false;var _iterator119=_createForOfIteratorHelper(lines),_step119;try{for(_iterator119.s();!(_step119=_iterator119.n()).done;){var line=_step119.value;if(!anchored&&line.startsWith("#EXTINF")){out.push("#EXT-X-PROGRAM-DATE-TIME:".concat(ANCHOR_ISO));anchored=true}out.push(line)}}catch(err){_iterator119.e(err)}finally{_iterator119.f()}out.splice.apply(out,[1,0].concat(_toConsumableArray(dateRanges)));return out.join("\n")}describe("hls ad interstitials integ",function(){var MIDROLL_TIME=20;var MIDROLL_DURATION=6;var AD_ID="integ-midroll-1";function makePlaylist(){return[{type:"hls",uri:"integ-interstitial",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:AD_ID,startTime:MIDROLL_TIME,duration:MIDROLL_DURATION,assetUri:AD_ASSET}])}]}var suite=createVinylSuite({},{timeout:180,failOnError:false});beforeEach(function(){if(!supportsMse())pending("MSE not supported")});function seekTolerant(_x132){return _seekTolerant.apply(this,arguments)}function _seekTolerant(){_seekTolerant=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee929(time){var _t160;return _regenerator().w(function(_context929){while(1)switch(_context929.p=_context929.n){case 0:_context929.p=0;_context929.n=1;return suite.player.seekTo(time,0.5);case 1:_context929.n=3;break;case 2:_context929.p=2;_t160=_context929.v;case 3:return _context929.a(2)}},_callee929,null,[[0,2]])}));return _seekTolerant.apply(this,arguments)}function playThenSeek(_x133){return _playThenSeek.apply(this,arguments)}function _playThenSeek(){_playThenSeek=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee930(time){return _regenerator().w(function(_context930){while(1)switch(_context930.n){case 0:_context930.n=1;return suite.player.play()["catch"](function(){return void 0});case 1:_context930.n=2;return seekTolerant(time);case 2:return _context930.a(2)}},_callee930)}));return _playThenSeek.apply(this,arguments)}function loadAndAwaitAdBreaks(){return _loadAndAwaitAdBreaks.apply(this,arguments)}function _loadAndAwaitAdBreaks(){_loadAndAwaitAdBreaks=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee931(){var _suite$player;var playlist,_args931=arguments;return _regenerator().w(function(_context931){while(1)switch(_context931.n){case 0:playlist=_args931.length>0&&_args931[0]!==undefined?_args931[0]:makePlaylist();(_suite$player=suite.player).load.apply(_suite$player,_toConsumableArray(playlist));_context931.n=1;return poll(function(){var _a3,_b;return((_b=(_a3=suite.player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:return _context931.a(2)}},_callee931)}));return _loadAndAwaitAdBreaks.apply(this,arguments)}it("discovers the injected interstitial as an ad break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee903(){var breaks,ads;return _regenerator().w(function(_context903){while(1)switch(_context903.n){case 0:_context903.n=1;return loadAndAwaitAdBreaks();case 1:breaks=suite.player.currentTrackAds.adBreaks;expect(breaks.length).toBe(1);expect(breaks[0].id).toBe(AD_ID);expect(breaks[0].startTime).toBeCloseTo(MIDROLL_TIME,1);expect(breaks[0].duration).toBe(MIDROLL_DURATION);expect(breaks[0].placement).toBe("midroll");_context903.n=2;return resolveValueProvider(breaks[0].ads);case 2:ads=_context903.v;expect(ads[0].uri).toBe(AD_ASSET);case 3:return _context903.a(2)}},_callee903)})));it("ad breaks have strongly typed fields (no metadata, no assetListUrl)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee904(){var adBreak;return _regenerator().w(function(_context904){while(1)switch(_context904.n){case 0:_context904.n=1;return loadAndAwaitAdBreaks();case 1:adBreak=suite.player.currentTrackAds.adBreaks[0];expect("metadata"in adBreak).toBeFalse();expect("assetListUrl"in adBreak).toBeFalse();expect(_typeof(adBreak.ads)).toBe("function");case 2:return _context904.a(2)}},_callee904)})));it("ad events come from the player-level controller (not per-track)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee905(){var player,spy,sub;return _regenerator().w(function(_context905){while(1)switch(_context905.n){case 0:player=suite.player;spy=jasmine.createSpy("currentTrackAdsChange");sub=player.on("currentTrackAdsChange",spy);player.load.apply(player,_toConsumableArray(makePlaylist()));_context905.n=1;return poll(function(){return spy.calls.count()>0&&spy.calls.mostRecent().args[0].current!=null},{timeout:15});case 1:sub();expect(spy.calls.mostRecent().args[0].current.adBreaks.length).toBe(1);case 2:return _context905.a(2)}},_callee905)})));it("emits adBreakEntered/adBreakCompleted as the playhead crosses into and out of the break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee906(){var player,entered,exited,enteredSub,exitedSub,_t98,_t99;return _regenerator().w(function(_context906){while(1)switch(_context906.p=_context906.n){case 0:_context906.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;entered=[];exited=[];enteredSub=player.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});exitedSub=player.on("adBreakCompleted",function(e){return exited.push(e.adBreak.id)});_context906.p=2;_context906.n=3;return playThenSeek(MIDROLL_TIME-1);case 3:_t98=expect;_context906.n=4;return poll(function(){return entered.includes(AD_ID)},{timeout:30});case 4:_t98(_context906.v).withContext("entered.includes(AD_ID)").toBeTrue();player.skipAd();_t99=expect;_context906.n=5;return poll(function(){return exited.includes(AD_ID)},{timeout:30});case 5:_t99(_context906.v).withContext("exited.includes(AD_ID)").toBeTrue();case 6:_context906.p=6;enteredSub();exitedSub();return _context906.f(6);case 7:return _context906.a(2)}},_callee906,null,[[2,,6,7]])})));it("reports the active ad break while the playhead is inside it",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee907(){var _a3,player,_t100;return _regenerator().w(function(_context907){while(1)switch(_context907.n){case 0:_context907.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context907.n=2;return playThenSeek(MIDROLL_TIME+MIDROLL_DURATION/2);case 2:_t100=expect;_context907.n=3;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 3:_t100(_context907.v).withContext("player.currentAdBreak != null").toBeTrue();expect((_a3=player.currentAdBreak)==null?void 0:_a3.id).toBe(AD_ID);case 4:return _context907.a(2)}},_callee907)})));it("skipAd clears the active ad break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee908(){var player,_t101;return _regenerator().w(function(_context908){while(1)switch(_context908.n){case 0:_context908.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context908.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t101=expect;_context908.n=3;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 3:_t101(_context908.v).withContext("player.currentAdBreak != null").toBeTrue();player.skipAd();expect(player.currentAdBreak).toBeNull();case 4:return _context908.a(2)}},_callee908)})));it("skipAdBreak clears the active ad break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee909(){var player,_t102;return _regenerator().w(function(_context909){while(1)switch(_context909.n){case 0:_context909.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context909.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t102=expect;_context909.n=3;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 3:_t102(_context909.v).withContext("player.currentAdBreak != null").toBeTrue();player.skipAdBreak();expect(player.currentAdBreak).toBeNull();case 4:return _context909.a(2)}},_callee909)})));it("exposes seekRange once the timeline resolves",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee910(){var player,_t103;return _regenerator().w(function(_context910){while(1)switch(_context910.n){case 0:_context910.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_t103=expect;_context910.n=2;return poll(function(){return player.seekRange!=null},{timeout:15});case 2:_t103(_context910.v).withContext("player.seekRange != null").toBeTrue();expect(player.seekRange.start).toBeGreaterThanOrEqual(0);expect(player.seekRange.end).toBeGreaterThan(0);case 3:return _context910.a(2)}},_callee910)})));it("plays the ad track as the current track over the content",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee911(){var _a3,player,_t104;return _regenerator().w(function(_context911){while(1)switch(_context911.n){case 0:_context911.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context911.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t104=expect;_context911.n=3;return poll(function(){var _a4;return((_a4=player.activeTrack)==null?void 0:_a4.uri)===AD_ASSET},{timeout:30});case 3:_t104(_context911.v).withContext("player.activeTrack?.uri === AD_ASSET").toBeTrue();expect(player.activeTrack.uri).toBe(AD_ASSET);expect(player.currentAd).not.toBeNull();expect((_a3=player.currentAdBreak)==null?void 0:_a3.id).toBe(AD_ID);case 4:return _context911.a(2)}},_callee911)})));it("lets an application attribute ended events to ads vs content",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee912(){var player,endedDuringAd,sub,_t105,_t106,_t107;return _regenerator().w(function(_context912){while(1)switch(_context912.p=_context912.n){case 0:player=suite.player;player.load({type:"hls",uri:"integ-ended-attribution",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"multi",startTime:MIDROLL_TIME,duration:12,assetList:[{uri:AD_ASSET,duration:6},{uri:AD_ASSET,duration:6}]}])});_context912.n=1;return poll(function(){var _a3,_b;return((_b=(_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:endedDuringAd=[];sub=player.on("ended",function(){endedDuringAd.push(player.currentAdBreak!=null)});_context912.p=2;_context912.n=3;return playThenSeek(MIDROLL_TIME+1);case 3:_t105=expect;_context912.n=4;return poll(function(){return player.currentAd!=null},{timeout:30});case 4:_t105(_context912.v).withContext("player.currentAd != null").toBeTrue();expect(player.currentAdBreak).not.toBeNull();player.skipAd();_t106=expect;_context912.n=5;return poll(function(){return player.currentAd!=null},{timeout:30});case 5:_t106(_context912.v).withContext("player.currentAd != null").toBeTrue();expect(player.currentAdBreak).not.toBeNull();player.skipAd();_t107=expect;_context912.n=6;return poll(function(){return player.currentAdBreak==null},{timeout:30});case 6:_t107(_context912.v).withContext("player.currentAdBreak == null").toBeTrue();expect(endedDuringAd.every(function(wasAd){return wasAd})).toBeTrue();case 7:_context912.p=7;sub();return _context912.f(7);case 8:return _context912.a(2)}},_callee912,null,[[2,,7,8]])})));it("resumes content playback after the ad break ends",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee913(){var player,_t108,_t109,_t110,_t111;return _regenerator().w(function(_context913){while(1)switch(_context913.n){case 0:_context913.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context913.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t108=expect;_context913.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t108(_context913.v).withContext("player.currentAd != null").toBeTrue();_t109=expect;_context913.n=4;return poll(function(){return player.currentTime>0},{timeout:20});case 4:_t109(_context913.v).withContext("player.currentTime > 0").toBeTrue();player.skipAd();_t110=expect;_context913.n=5;return poll(function(){return player.currentAd==null},{timeout:30});case 5:_t110(_context913.v).withContext("player.currentAd == null").toBeTrue();expect(player.currentAdBreak).toBeNull();_t111=expect;_context913.n=6;return poll(function(){var _a3;return((_a3=player.activeTrack)==null?void 0:_a3.uri)==="integ-interstitial"&&!player.paused},{timeout:20});case 6:_t111(_context913.v).withContext("content track resumed and playing").toBeTrue();case 7:return _context913.a(2)}},_callee913)})));it("resumes content playback when the ad ends naturally",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee914(){var player,adDuration,_t112,_t113,_t114,_t115;return _regenerator().w(function(_context914){while(1)switch(_context914.n){case 0:_context914.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context914.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t112=expect;_context914.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t112(_context914.v).withContext("player.currentAd != null").toBeTrue();_t113=expect;_context914.n=4;return poll(function(){return player.currentTime>0},{timeout:20});case 4:_t113(_context914.v).withContext("player.currentTime > 0").toBeTrue();adDuration=player.duration;_context914.n=5;return player.seekTo(Math.max(0,adDuration-1),1)["catch"](function(){return void 0});case 5:_t114=expect;_context914.n=6;return poll(function(){return player.currentAd==null},{timeout:40});case 6:_t114(_context914.v).withContext("player.currentAd == null").toBeTrue();expect(player.currentAdBreak).toBeNull();_t115=expect;_context914.n=7;return poll(function(){var _a3;return((_a3=player.activeTrack)==null?void 0:_a3.uri)==="integ-interstitial"&&!player.paused&&player.currentTime>0},{timeout:20});case 7:_t115(_context914.v).withContext("content track resumed and playing").toBeTrue();case 8:return _context914.a(2)}},_callee914)})));function loadMidroll(){return _loadMidroll.apply(this,arguments)}function _loadMidroll(){_loadMidroll=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee932(){var extra,_args932=arguments;return _regenerator().w(function(_context932){while(1)switch(_context932.n){case 0:extra=_args932.length>0&&_args932[0]!==undefined?_args932[0]:{};suite.player.load({type:"hls",uri:"integ-interstitial",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[__spreadValues({id:AD_ID,startTime:MIDROLL_TIME,duration:MIDROLL_DURATION,assetUri:AD_ASSET},extra)])});_context932.n=1;return poll(function(){var _a3,_b;return((_b=(_a3=suite.player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:return _context932.a(2)}},_callee932)}));return _loadMidroll.apply(this,arguments)}it("resumes content at the X-RESUME-OFFSET position after a midroll",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee915(){var player,_t116,_t117,_t118;return _regenerator().w(function(_context915){while(1)switch(_context915.n){case 0:player=suite.player;_context915.n=1;return loadMidroll({resumeOffset:10});case 1:_context915.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t116=expect;_context915.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t116(_context915.v).withContext("ad playing").toBeTrue();_t117=expect;_context915.n=4;return poll(function(){return player.currentTime>0},{timeout:20});case 4:_t117(_context915.v).withContext("ad advanced").toBeTrue();player.skipAd();_t118=expect;_context915.n=5;return poll(function(){var _a3;return((_a3=player.activeTrack)==null?void 0:_a3.uri)==="integ-interstitial"&&!player.paused&&player.currentTime>=MIDROLL_TIME+10-1},{timeout:20});case 5:_t118(_context915.v).withContext("content resumed at ~start+offset").toBeTrue();case 6:return _context915.a(2)}},_callee915)})));it("replays a non-ONCE midroll after seeking back across it",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee916(){var player,_t119,_t120,_t121;return _regenerator().w(function(_context916){while(1)switch(_context916.n){case 0:player=suite.player;_context916.n=1;return loadMidroll();case 1:_context916.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t119=expect;_context916.n=3;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 3:_t119(_context916.v).withContext("entered on the first crossing").toBeTrue();player.skipAd();_t120=expect;_context916.n=4;return poll(function(){var _a3;return player.currentAdBreak==null&&((_a3=player.activeTrack)==null?void 0:_a3.uri)==="integ-interstitial"&&player.currentTime>=MIDROLL_TIME},{timeout:20});case 4:_t120(_context916.v).withContext("content resumed past the break start").toBeTrue();_context916.n=5;return seekTolerant(MIDROLL_TIME-5);case 5:_context916.n=6;return player.play()["catch"](function(){return void 0});case 6:_t121=expect;_context916.n=7;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 7:_t121(_context916.v).withContext("non-ONCE break re-entered on the second crossing").toBeTrue();case 8:return _context916.a(2)}},_callee916)})));it("does not replay a CUE=ONCE midroll after seeking back across it",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee917(){var player,reentered,sub,_t122,_t123,_t124;return _regenerator().w(function(_context917){while(1)switch(_context917.p=_context917.n){case 0:player=suite.player;_context917.n=1;return loadMidroll({cue:"ONCE"});case 1:_context917.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t122=expect;_context917.n=3;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 3:_t122(_context917.v).withContext("entered on the first crossing").toBeTrue();player.skipAd();_t123=expect;_context917.n=4;return poll(function(){var _a3;return player.currentAdBreak==null&&((_a3=player.activeTrack)==null?void 0:_a3.uri)==="integ-interstitial"},{timeout:20});case 4:_t123(_context917.v).withContext("content resumed").toBeTrue();reentered=[];sub=player.on("adBreakEntered",function(e){return reentered.push(e.adBreak.id)});_context917.p=5;_context917.n=6;return seekTolerant(MIDROLL_TIME-5);case 6:_context917.n=7;return player.play()["catch"](function(){return void 0});case 7:_t124=expect;_context917.n=8;return poll(function(){var _a3;return player.currentAdBreak==null&&((_a3=player.activeTrack)==null?void 0:_a3.uri)==="integ-interstitial"&&player.currentTime>=MIDROLL_TIME+1},{timeout:30});case 8:_t124(_context917.v).withContext("crossed the ONCE break start without re-entering").toBeTrue();expect(reentered).toEqual([]);case 9:_context917.p=9;sub();return _context917.f(9);case 10:return _context917.a(2)}},_callee917,null,[[5,,9,10]])})));it("plays a preroll before content, then resumes content",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee918(){var _a3,player,_t125,_t126,_t127;return _regenerator().w(function(_context918){while(1)switch(_context918.n){case 0:player=suite.player;player.load({type:"hls",uri:"integ-preroll",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"preroll-1",startTime:0,duration:5,assetUri:AD_ASSET,cue:"PRE"}])});_context918.n=1;return poll(function(){var _a4,_b;return((_b=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:_context918.n=2;return player.play();case 2:_t125=expect;_context918.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t125(_context918.v).withContext("player.currentAd != null").toBeTrue();expect((_a3=player.currentAdBreak)==null?void 0:_a3.placement).toBe("preroll");player.skipAd();_t126=expect;_context918.n=4;return poll(function(){return player.currentAd==null},{timeout:30});case 4:_t126(_context918.v).withContext("player.currentAd == null").toBeTrue();_t127=expect;_context918.n=5;return poll(function(){return!player.paused&&player.currentTime>=0},{timeout:20});case 5:_t127(_context918.v).toBeTrue();case 6:return _context918.a(2)}},_callee918)})));it("activates a midroll during natural forward playback (no seek)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee919(){var _a3,player,_t128;return _regenerator().w(function(_context919){while(1)switch(_context919.n){case 0:player=suite.player;player.load({type:"hls",uri:"integ-natural-mid",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"mid",startTime:3,duration:MIDROLL_DURATION,assetUri:AD_ASSET}])});_context919.n=1;return poll(function(){var _a4,_b;return((_b=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:_context919.n=2;return player.play()["catch"](noop);case 2:_t128=expect;_context919.n=3;return poll(function(){var _a4;return((_a4=player.currentAdBreak)==null?void 0:_a4.id)==="mid"},{timeout:40});case 3:_t128(_context919.v).withContext("midroll activated on natural crossing").toBeTrue();expect((_a3=player.currentAdBreak)==null?void 0:_a3.placement).toBe("midroll");case 4:return _context919.a(2)}},_callee919)})));it("plays multiple ads in a break sequentially (X-ASSET-LIST)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee920(){var player,ads,_t129,_t130,_t131,_t132;return _regenerator().w(function(_context920){while(1)switch(_context920.n){case 0:player=suite.player;player.load({type:"hls",uri:"integ-multi",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"multi-1",startTime:MIDROLL_TIME,duration:12,assetList:[{uri:AD_ASSET,duration:6},{uri:AD_ASSET,duration:6}]}])});_context920.n=1;return poll(function(){var _a3,_b;return((_b=(_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:_context920.n=2;return resolveValueProvider(player.currentTrackAds.adBreaks[0].ads);case 2:ads=_context920.v;expect(ads.length).toBe(2);_context920.n=3;return playThenSeek(MIDROLL_TIME+1);case 3:_t129=expect;_context920.n=4;return poll(function(){return player.currentAd!=null},{timeout:30});case 4:_t129(_context920.v).withContext("player.currentAd != null").toBeTrue();player.skipAd();_t130=expect;_context920.n=5;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 5:_t130(_context920.v).withContext("player.currentAdBreak != null").toBeTrue();expect(player.currentAd).not.toBeNull();player.skipAd();_t131=expect;_context920.n=6;return poll(function(){return player.currentAdBreak==null},{timeout:30});case 6:_t131(_context920.v).withContext("player.currentAdBreak == null").toBeTrue();_t132=expect;_context920.n=7;return poll(function(){return player.currentAd==null},{timeout:30});case 7:_t132(_context920.v).withContext("player.currentAd == null").toBeTrue();case 8:return _context920.a(2)}},_callee920)})));it("surfaces the X-ASSET-LIST skip window on the ad break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee921(){var player,skip;return _regenerator().w(function(_context921){while(1)switch(_context921.n){case 0:player=suite.player;player.load({type:"hls",uri:"integ-skip",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"skip-1",startTime:MIDROLL_TIME,duration:MIDROLL_DURATION,assetList:[{uri:AD_ASSET,duration:6}],skipControl:{offset:3,duration:5}}])});_context921.n=1;return poll(function(){var _a3,_b;return((_b=(_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:_context921.n=2;return resolveValueProvider(player.currentTrackAds.adBreaks[0].skipControl);case 2:skip=_context921.v;expect(skip).toEqual({offset:3,duration:5});case 3:return _context921.a(2)}},_callee921)})));it("parks content loaded and paused after a postroll finishes (no stuck loading)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee922(){var _a3,player,contentDuration,_t133,_t134,_t135,_t136,_t137;return _regenerator().w(function(_context922){while(1)switch(_context922.n){case 0:player=suite.player;player.load({type:"hls",uri:"integ-postroll",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"postroll-1",startTime:0,duration:6,assetUri:AD_ASSET,cue:"POST"}])});_context922.n=1;return poll(function(){var _a4,_b;return((_b=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:_context922.n=2;return player.play()["catch"](noop);case 2:expect(player.currentAdBreak).withContext("postroll not active during content").toBeNull();contentDuration=player.duration;_context922.n=3;return player.seekTo(Math.max(0,contentDuration-1.5),1)["catch"](function(){return void 0});case 3:_t133=expect;_context922.n=4;return poll(function(){return player.currentAd!=null},{timeout:40});case 4:_t133(_context922.v).withContext("player.currentAd != null").toBeTrue();expect((_a3=player.currentAdBreak)==null?void 0:_a3.placement).toBe("postroll");_context922.n=5;return poll(function(){return!player.paused},{timeout:8});case 5:player.skipAd();_t134=expect;_context922.n=6;return poll(function(){return player.currentAd==null},{timeout:20});case 6:_t134(_context922.v).withContext("player.currentAd == null").toBeTrue();_t135=expect;_context922.n=7;return poll(function(){var _a4;return((_a4=player.activeTrack)==null?void 0:_a4.uri)==="integ-postroll"},{timeout:20});case 7:_t135(_context922.v).withContext("content track resumed after postroll").toBeTrue();_t136=expect;_context922.n=8;return poll(function(){return player.readyState!==0}/* HAVE_NOTHING */,{timeout:20});case 8:_t136(_context922.v).withContext("player.readyState !== PlaybackReadyState.HAVE_NOTHING").toBeTrue();_t137=expect;_context922.n=9;return poll(function(){return player.paused||player.ended},{timeout:20});case 9:_t137(_context922.v).withContext("player.paused || player.ended").toBeTrue();case 10:return _context922.a(2)}},_callee922)})));it("does not replay a postroll after it finishes naturally",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee923(){var _a3,player,postrollEntries,sub,contentDuration,replayed,_t138,_t139,_t140;return _regenerator().w(function(_context923){while(1)switch(_context923.p=_context923.n){case 0:player=suite.player;postrollEntries=[];sub=player.on("adBreakEntered",function(e){if(e.adBreak.placement==="postroll"){postrollEntries.push(e.adBreak.id)}});_context923.p=1;player.load({type:"hls",uri:"integ-postroll-replay",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"postroll-1",startTime:0,duration:4,// Short ad so the break ends quickly on its own.
2309
- assetList:[{uri:AD_ASSET,duration:3}],cue:"POST"}])});_context923.n=2;return poll(function(){var _a4,_b;return((_b=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 2:_context923.n=3;return player.play()["catch"](noop);case 3:contentDuration=player.duration;_context923.n=4;return player.seekTo(Math.max(0,contentDuration-1.5),1)["catch"](function(){return void 0});case 4:_t138=expect;_context923.n=5;return poll(function(){return player.currentAd!=null},{timeout:40});case 5:_t138(_context923.v).withContext("postroll ad started").toBeTrue();expect((_a3=player.currentAdBreak)==null?void 0:_a3.placement).toBe("postroll");_t139=expect;_context923.n=6;return poll(function(){return player.currentAd==null},{timeout:40});case 6:_t139(_context923.v).withContext("postroll ad finished").toBeTrue();_t140=expect;_context923.n=7;return poll(function(){var _a4;return((_a4=player.activeTrack)==null?void 0:_a4.uri)==="integ-postroll-replay"},{timeout:20});case 7:_t140(_context923.v).withContext("content resumed after postroll").toBeTrue();_context923.n=8;return player.seekTo(Math.max(0,player.duration-1.5),1)["catch"](function(){return void 0});case 8:_context923.n=9;return player.play()["catch"](noop);case 9:_context923.n=10;return poll(function(){return postrollEntries.length>1},{timeout:20});case 10:replayed=_context923.v;expect(replayed).withContext("postroll replayed").toBeFalse();expect(player.currentAdBreak).toBeNull();expect(postrollEntries).toEqual(["postroll-1"]);case 11:_context923.p=11;sub();return _context923.f(11);case 12:return _context923.a(2)}},_callee923,null,[[1,,11,12]])})));it("disposes the ad track when new content is loaded mid-ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee924(){var player,_t141,_t142;return _regenerator().w(function(_context924){while(1)switch(_context924.n){case 0:_context924.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context924.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t141=expect;_context924.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t141(_context924.v).withContext("player.currentAd != null").toBeTrue();player.load({type:"hls",uri:CONTENT_ASSET});expect(player.currentAd).toBeNull();expect(player.currentAdBreak).toBeNull();_context924.n=4;return player.play();case 4:_t142=expect;_context924.n=5;return poll(function(){var _a3;return((_a3=player.activeTrack)==null?void 0:_a3.uri)===CONTENT_ASSET},{timeout:15});case 5:_t142(_context924.v).toBeTrue();case 6:return _context924.a(2)}},_callee924)})));it("plays a reused-id ad after loading a different track (via load)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee925(){var _a3,_b,_c,player,_t143,_t144,_t145,_t146;return _regenerator().w(function(_context925){while(1)switch(_context925.n){case 0:player=suite.player;player.load({type:"hls",uri:"track-a",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"1",startTime:MIDROLL_TIME,duration:6,assetUri:AD_ASSET}])});_context925.n=1;return nextEventAsPromise(player,"currentTrackAdsChange",{timeout:15});case 1:expect((_b=(_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0).withContext("adBreaks length").toBeGreaterThan(0);_context925.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t143=expect;_context925.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t143(_context925.v).withContext("player.currentAd != null").toBeTrue();player.skipAd();_t144=expect;_context925.n=4;return poll(function(){return player.currentAd==null},{timeout:30});case 4:_t144(_context925.v).withContext("player.currentAd == null").toBeTrue();player.load({type:"hls",uri:"track-b",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"1",startTime:MIDROLL_TIME,duration:6,assetUri:AD_ASSET}])});_t145=expect;_context925.n=5;return poll(function(){var _a4,_b2;return((_b2=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b2:0)>0},{timeout:15});case 5:_t145(_context925.v).withContext("(player.currentTrackAds?.adBreaks.length ?? 0) > 0").toBeTrue();_context925.n=6;return playThenSeek(MIDROLL_TIME+1);case 6:_t146=expect;_context925.n=7;return poll(function(){return player.currentAd!=null},{timeout:30});case 7:_t146(_context925.v).withContext("player.currentAd != null").toBeTrue();expect((_c=player.currentAdBreak)==null?void 0:_c.id).toBe("1");case 8:return _context925.a(2)}},_callee925)})));it("plays a reused-id ad after advancing the queue (via next)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee926(){var _a3,player,_t147,_t148,_t149,_t150,_t151;return _regenerator().w(function(_context926){while(1)switch(_context926.n){case 0:player=suite.player;player.load({type:"hls",uri:"queue-a",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"1",startTime:MIDROLL_TIME,duration:6,assetUri:AD_ASSET}])},{type:"hls",uri:"queue-b",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"1",startTime:MIDROLL_TIME,duration:6,assetUri:AD_ASSET}])});_context926.n=1;return poll(function(){var _a4,_b;return((_b=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:_context926.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t147=expect;_context926.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t147(_context926.v).withContext("player.currentAd != null").toBeTrue();player.skipAd();_t148=expect;_context926.n=4;return poll(function(){return player.currentAd==null},{timeout:30});case 4:_t148(_context926.v).withContext("player.currentAd == null").toBeTrue();player.next();_t149=expect;_context926.n=5;return poll(function(){var _a4;return((_a4=player.activeTrack)==null?void 0:_a4.uri)==="queue-b"},{timeout:15});case 5:_t149(_context926.v).toBeTrue();_t150=expect;_context926.n=6;return poll(function(){var _a4,_b;return((_b=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 6:_t150(_context926.v).withContext("(player.currentTrackAds?.adBreaks.length ?? 0) > 0").toBeTrue();expect(player.currentAdBreak).toBeNull();_context926.n=7;return playThenSeek(MIDROLL_TIME+1);case 7:_t151=expect;_context926.n=8;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 8:_t151(_context926.v).withContext("player.currentAdBreak != null").toBeTrue();expect((_a3=player.currentAdBreak)==null?void 0:_a3.id).toBe("1");case 9:return _context926.a(2)}},_callee926)})));it("recovers content playback when a hard reset fires after an ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee927(){var player,_t152,_t153,_t154,_t155;return _regenerator().w(function(_context927){while(1)switch(_context927.n){case 0:_context927.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context927.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t152=expect;_context927.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t152(_context927.v).withContext("player.currentAd != null").toBeTrue();player.skipAd();_t153=expect;_context927.n=4;return poll(function(){return player.currentAd==null},{timeout:30});case 4:_t153(_context927.v).withContext("player.currentAd == null").toBeTrue();_t154=expect;_context927.n=5;return poll(function(){return!player.paused&&player.currentTime>0},{timeout:20});case 5:_t154(_context927.v).toBeTrue();player.reset(/* hard */true);expect(player.currentAdBreak).toBeNull();expect(player.currentAd).toBeNull();_t155=expect;_context927.n=6;return poll(function(){return!player.paused&&player.currentTime>0},{timeout:30});case 6:_t155(_context927.v).toBeTrue();case 7:return _context927.a(2)}},_callee927)})));it("does not leave a stuck caption track after an ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee928(){var player,track2,showingWithCues,_t156,_t157,_t158,_t159;return _regenerator().w(function(_context928){while(1)switch(_context928.n){case 0:player=suite.player;_context928.n=1;return loadAndAwaitAdBreaks();case 1:_context928.n=2;return poll(function(){return player.textTracks.length>0},{timeout:15});case 2:track2=player.textTracks[0];player.configure({text:{enabled:"on",selection:{id:track2.id}}});showingWithCues=function showingWithCues(){var dom=mediaRef.value.textTracks;return Array.from({length:dom.length},function(_,i){return dom[i]}).filter(function(t){var _a3,_b;return t.mode==="showing"&&((_b=(_a3=t.cues)==null?void 0:_a3.length)!=null?_b:0)>0})};_t156=expect;_context928.n=3;return poll(function(){return showingWithCues().length>0},{timeout:15});case 3:_t156(_context928.v).withContext("showingWithCues().length > 0").toBeTrue();_context928.n=4;return playThenSeek(MIDROLL_TIME+1);case 4:_t157=expect;_context928.n=5;return poll(function(){return player.currentAd!=null},{timeout:30});case 5:_t157(_context928.v).withContext("player.currentAd != null").toBeTrue();player.skipAd();_t158=expect;_context928.n=6;return poll(function(){return player.currentAd==null},{timeout:30});case 6:_t158(_context928.v).withContext("player.currentAd == null").toBeTrue();_t159=expect;_context928.n=7;return poll(function(){return showingWithCues().length>0},{timeout:20});case 7:_t159(_context928.v).withContext("showingWithCues().length > 0").toBeTrue();expect(showingWithCues().length).toBe(1);case 8:return _context928.a(2)}},_callee928)})))});describe("hls ad interstitials integ (ad failure recovery)",function(){var suite=createVinylSuite({adController:{adLoadTimeout:3}},{timeout:60,failOnError:false});beforeEach(function(){if(!supportsMse())pending("MSE not supported")});it("recovers to content when a preroll ad never loads",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee933(){var player,enteredPlacements,sub,adErrored,contentPlaying,midrollEntered,_t161;return _regenerator().w(function(_context933){while(1)switch(_context933.p=_context933.n){case 0:player=suite.player;enteredPlacements=[];sub=player.on("adBreakEntered",function(e){return enteredPlacements.push(e.adBreak.placement)});_context933.p=1;adErrored=nextEventAsPromise(player,"adError",{timeout:30});contentPlaying=nextEventAsPromise(player,"playing",{timeout:40});midrollEntered=nextEventAsPromise(player,"adBreakEntered",{filter:function filter(e){return e.adBreak.placement==="midroll"},timeout:40});player.load({type:"hls",uri:"integ-adfail",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"preroll-fail",startTime:0,duration:6,assetUri:"this-ad-does-not-exist.m3u8",cue:"PRE"},// A playable midroll firing proves the resume gate cleared.
2310
- {id:"mid-ok",startTime:3,duration:6,assetUri:AD_ASSET}])});_context933.n=2;return player.play()["catch"](function(){return void 0});case 2:_context933.n=3;return adErrored;case 3:expect(player.currentAd).withContext("failed ad cleared").toBeNull();_context933.n=4;return contentPlaying;case 4:expect(player.currentAdBreak).withContext("break completed, resume gate not stuck").toBeNull();_t161=expect;_context933.n=5;return poll(function(){return player.currentTime>0},{timeout:20});case 5:_t161(_context933.v).withContext("content is playing, not stuck").toBeTrue();_context933.n=6;return midrollEntered;case 6:expect(enteredPlacements).toEqual(["preroll","midroll"]);case 7:_context933.p=7;sub();return _context933.f(7);case 8:return _context933.a(2)}},_callee933,null,[[1,,7,8]])})))});// test/integ/track/hls/hls.test.ts
2311
- describe("hls integ",function(){var playlist=[{type:"hls",uri:vinylTestAssets.hls.live_static_video_60s_2s_mpegts},{type:"hls",uri:vinylTestAssets.hls.live_static_video_audio_60s_4s_mpegts},{type:"hls",uri:vinylTestAssets.hls.live_static_aac_60s_mpegts},{type:"hls",uri:vinylTestAssets.hls.live_static_aac_opus_flac_60s}];var suite=createVinylSuite({},{timeout:180});beforeEach(function(){if(!supportsMse())pending("MSE not supported")});it("plays",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee934(){return _regenerator().w(function(_context934){while(1)switch(_context934.n){case 0:_context934.n=1;return expectPlaylistPlays(suite.player,playlist);case 1:return _context934.a(2)}},_callee934)})))});// test/integ/track/hls/preferredAudioLanguage.test.ts
2312
- describe("preferredAudioLanguage HLS integ",function(){var ASSET=vinylTestAssets.hls.vinyl_ad_breaks_av__single_uri_pre_mid_post;var suite=createVinylSuite({},{timeout:180,failOnError:false});beforeEach(function(){if(!supportsMse())pending("MSE not supported")});function audioLangs(player){var _a3;return((_a3=player.qualities)!=null?_a3:[]).filter(function(q){return q.contentType==="audio"}).map(function(q){return q.lang})}function audioIsOnly(player,lang){var langs=audioLangs(player);return langs.length>0&&langs.every(function(l){return l!=null&&l.toLowerCase().startsWith(lang)})}function seekTolerant(_x134){return _seekTolerant2.apply(this,arguments)}function _seekTolerant2(){_seekTolerant2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee938(time){var _t167;return _regenerator().w(function(_context938){while(1)switch(_context938.p=_context938.n){case 0:_context938.p=0;_context938.n=1;return suite.player.seekTo(time,0.5);case 1:_context938.n=3;break;case 2:_context938.p=2;_t167=_context938.v;case 3:return _context938.a(2)}},_callee938,null,[[0,2]])}));return _seekTolerant2.apply(this,arguments)}function loadAndPlay(_x135,_x136){return _loadAndPlay.apply(this,arguments)}function _loadAndPlay(){_loadAndPlay=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee939(preferredAudioLanguage,lang){var player,_t168,_t169;return _regenerator().w(function(_context939){while(1)switch(_context939.n){case 0:player=suite.player;player.configure({audio:{selection:{language:preferredAudioLanguage}}});player.load({type:"hls",uri:ASSET});_context939.n=1;return player.play()["catch"](function(){return void 0});case 1:_t168=expect;_context939.n=2;return poll(function(){var _a3,_b;return((_b=(_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0)>0},{timeout:30});case 2:_t168(_context939.v).withContext("ad breaks discovered").toBeTrue();_t169=expect;_context939.n=3;return poll(function(){return audioIsOnly(player,lang)},{timeout:30});case 3:_t169(_context939.v).withContext("content audio filtered to '".concat(lang,"'")).toBeTrue();case 4:return _context939.a(2)}},_callee939)}));return _loadAndPlay.apply(this,arguments)}function midrollStart(player){var _a3;var midroll=(_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.find(function(b){return b.placement==="midroll"});return midroll.startTime}it("plays the preferred language for both content and ad audio",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee935(){var player,_t162,_t163;return _regenerator().w(function(_context935){while(1)switch(_context935.n){case 0:player=suite.player;_context935.n=1;return loadAndPlay("ja","ja");case 1:_context935.n=2;return seekTolerant(midrollStart(player)+1);case 2:_t162=expect;_context935.n=3;return poll(function(){return player.currentAd!=null},{timeout:40});case 3:_t162(_context935.v).withContext("ad playing").toBeTrue();_t163=expect;_context935.n=4;return poll(function(){return audioIsOnly(player,"ja")},{timeout:30});case 4:_t163(_context935.v).withContext("ad audio filtered to 'ja'").toBeTrue();case 5:return _context935.a(2)}},_callee935)})));it("immediately reloads and switches language when the preference changes",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee936(){var player,resumeBefore,_t164,_t165,_t166;return _regenerator().w(function(_context936){while(1)switch(_context936.n){case 0:player=suite.player;_context936.n=1;return loadAndPlay("ja","ja");case 1:_t164=expect;_context936.n=2;return poll(function(){return player.currentTime>1},{timeout:30});case 2:_t164(_context936.v).withContext("content advanced").toBeTrue();resumeBefore=player.currentTime;player.configure({audio:{selection:{language:"de"}}});_t165=expect;_context936.n=3;return poll(function(){return audioIsOnly(player,"de")},{timeout:30});case 3:_t165(_context936.v).withContext("content audio switched to 'de'").toBeTrue();_t166=expect;_context936.n=4;return poll(function(){return!player.paused&&player.currentTime>=resumeBefore},{timeout:40});case 4:_t166(_context936.v).withContext("resumed playing at the prior playhead").toBeTrue();case 5:return _context936.a(2)}},_callee936)})));it("accepts an ordered array preference, using a later entry when earlier ones are absent",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee937(){var player;return _regenerator().w(function(_context937){while(1)switch(_context937.n){case 0:player=suite.player;_context937.n=1;return loadAndPlay(["ko","de"],"de");case 1:expect(audioIsOnly(player,"de")).withContext("content audio resolved to 'de' from the array").toBeTrue();case 2:return _context937.a(2)}},_callee937)})))});// test/integ/track/maxResolution.test.ts
2313
- describe("max resolution integ",function(){var suite=createVinylSuite();it("applies a lowered max resolution to the playing quality without waiting for the buffer to drain",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee940(){var _a3,player,startedHigh,cappedPromptly;return _regenerator().w(function(_context940){while(1)switch(_context940.n){case 0:player=suite.player;player.configure({abr:__spreadProps(__spreadValues({},player.options.abr),{strategy:"highest"/* HIGHEST */})});player.load({type:"hls",uri:vinylTestAssets.hls.vinyl_ad_breaks_av});_context940.n=1;return player.play();case 1:_context940.n=2;return poll(function(){var _a4,_b;return((_b=(_a4=player.getPlaybackQuality("video"))==null?void 0:_a4.height)!=null?_b:0)>360},{timeout:30});case 2:startedHigh=_context940.v;expect(startedHigh).withContext("started playing above 360p").toBeTrue();player.configure({abr:__spreadProps(__spreadValues({},player.options.abr),{strategy:"best"/* BEST */,maxHeight:360})});_context940.n=3;return poll(function(){var _a4,_b;return((_b=(_a4=player.getPlaybackQuality("video"))==null?void 0:_a4.height)!=null?_b:Infinity)<=360},{timeout:10});case 3:cappedPromptly=_context940.v;expect(cappedPromptly).withContext("playing quality dropped to <=360p promptly").toBeTrue();expect((_a3=player.getPlaybackQuality("video"))==null?void 0:_a3.height).toBeLessThanOrEqual(360);case 4:return _context940.a(2)}},_callee940)})))});// test/integ/track/progressive.test.ts
2314
- describe("progressive integ",function(){var suite=createVinylSuite();it("plays",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee941(){var player;return _regenerator().w(function(_context941){while(1)switch(_context941.n){case 0:player=suite.player;player.load({type:"src",uri:vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps});_context941.n=1;return player.play();case 1:_context941.n=2;return onDuration(player);case 2:_context941.n=3;return expectTrackPlaysUntil(player,player.currentTime+3);case 3:return _context941.a(2)}},_callee941)})));it("provides the extra property from load config for active track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee942(){var _a3,player,firstActivated,secondActivated,track2;return _regenerator().w(function(_context942){while(1)switch(_context942.n){case 0:player=suite.player;firstActivated=nextEventAsPromise(player,"trackActivated",{timeout:30,timeoutMessage:"trackActivated timed out in {time}s"});player.load({type:"src",uri:vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps,config:{extra:1}});player.preload({type:"src",uri:vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps,config:{extra:2}});_context942.n=1;return firstActivated;case 1:expect((_a3=player.activeTrack)==null?void 0:_a3.extra).toBe(1);secondActivated=nextEventAsPromise(player,"trackActivated",{timeout:30,timeoutMessage:"trackActivated timed out in {time}s"});player.load({type:"src",uri:vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps,config:{extra:2}});_context942.n=2;return secondActivated;case 2:track2=player.activeTrack;expect(track2==null?void 0:track2.extra).toBe(2);player.unload();expect(track2==null?void 0:track2.extra).toBeNull();case 3:return _context942.a(2)}},_callee942)})))});// test/integ/track/textTracks.test.ts
2315
- describe("text track integ",function(){var dashPlaylist=[{type:"dash",uri:vinylTestAssets.dash.live_static_video_audio_60s_2s_segmentTemplate}];var hlsPlaylist=[{type:"hls",uri:vinylTestAssets.hls.live_static_video_audio_60s_2s}];var suite=createVinylSuite({},{timeout:180});beforeEach(function(){if(!supportsMse())pending("MSE not supported")});function loadAndAwaitTextTracks(_x137){return _loadAndAwaitTextTracks.apply(this,arguments)}function _loadAndAwaitTextTracks(){_loadAndAwaitTextTracks=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee948(playlist){var _suite$player2;var player,deadline;return _regenerator().w(function(_context949){while(1)switch(_context949.n){case 0:(_suite$player2=suite.player).load.apply(_suite$player2,_toConsumableArray(playlist));player=suite.player;deadline=Date.now()+1e4;case 1:if(!(player.textTracks.length===0&&Date.now()<deadline)){_context949.n=3;break}_context949.n=2;return new Promise(function(r){return setTimeout(r,50)});case 2:_context949.n=1;break;case 3:return _context949.a(2)}},_callee948)}));return _loadAndAwaitTextTracks.apply(this,arguments)}function selectTextById(id){suite.player.configure({text:{enabled:"on",selection:{id:id}}})}it("DASH discovers sidecar text tracks",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee943(){var tracks,langs;return _regenerator().w(function(_context943){while(1)switch(_context943.n){case 0:_context943.n=1;return loadAndAwaitTextTracks(dashPlaylist);case 1:tracks=suite.player.textTracks;expect(tracks.length).toBeGreaterThan(0);langs=tracks.map(function(t){return t.language});expect(langs).toContain("en");case 2:return _context943.a(2)}},_callee943)})));it("DASH activates a text track and exposes cues",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee944(){var _a3,tracks,target,deadline,found,_loop23;return _regenerator().w(function(_context945){while(1)switch(_context945.n){case 0:_context945.n=1;return loadAndAwaitTextTracks(dashPlaylist);case 1:tracks=suite.player.textTracks;if(tracks.length===0)pending("no text tracks discovered");target=(_a3=tracks.find(function(t){return t.language==="en"}))!=null?_a3:tracks[0];selectTextById(target.id);deadline=Date.now()+1e4;found=false;_loop23=/*#__PURE__*/_regenerator().m(function _loop23(){var dom;return _regenerator().w(function(_context944){while(1)switch(_context944.n){case 0:dom=mediaRef.value.textTracks;found=Array.from({length:dom.length},function(_,i){return dom[i]}).some(function(t){var _a4,_b;return t.label===target.label&&((_b=(_a4=t.cues)==null?void 0:_a4.length)!=null?_b:0)>0});if(found){_context944.n=1;break}_context944.n=1;return new Promise(function(r){return setTimeout(r,50)});case 1:return _context944.a(2)}},_loop23)});case 2:if(!(!found&&Date.now()<deadline)){_context945.n=4;break}return _context945.d(_regeneratorValues(_loop23()),3);case 3:_context945.n=2;break;case 4:expect(found).withContext("No cues found on the active text track (".concat(target.label,")")).toBeTrue();case 5:return _context945.a(2)}},_callee944)})));it("HLS discovers sidecar text tracks",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee945(){return _regenerator().w(function(_context946){while(1)switch(_context946.n){case 0:_context946.n=1;return loadAndAwaitTextTracks(hlsPlaylist);case 1:expect(suite.player.textTracks.length).toBeGreaterThan(0);case 2:return _context946.a(2)}},_callee945)})));it("clearing the active text track resets the active selection",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee946(){var tracks;return _regenerator().w(function(_context947){while(1)switch(_context947.n){case 0:_context947.n=1;return loadAndAwaitTextTracks(dashPlaylist);case 1:tracks=suite.player.textTracks;if(tracks.length===0)pending("no text tracks discovered");selectTextById(tracks[0].id);expect(suite.player.activeTextTrack).not.toBeNull();suite.player.configure({text:{enabled:"off"}});expect(suite.player.activeTextTrack).toBeNull();case 2:return _context947.a(2)}},_callee946)})));function awaitCuesShowing(){return _awaitCuesShowing.apply(this,arguments)}function _awaitCuesShowing(){_awaitCuesShowing=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee949(){var deadline;return _regenerator().w(function(_context950){while(1)switch(_context950.n){case 0:deadline=Date.now()+1e4;case 1:if(!(Date.now()<deadline)){_context950.n=4;break}if(!(showingWithCues()>0)){_context950.n=2;break}return _context950.a(2,true);case 2:_context950.n=3;return new Promise(function(r){return setTimeout(r,50)});case 3:_context950.n=1;break;case 4:return _context950.a(2,false)}},_callee949)}));return _awaitCuesShowing.apply(this,arguments)}function showingWithCues(){var _a3,_b;var dom=mediaRef.value.textTracks;var n=0;for(var i=0;i<dom.length;i++){if(dom[i].mode==="showing"&&((_b=(_a3=dom[i].cues)==null?void 0:_a3.length)!=null?_b:0)>0)n++}return n}it("cycling languages never leaves more than one caption track showing",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee947(){var tracks,_i50,_arr1,track2;return _regenerator().w(function(_context948){while(1)switch(_context948.n){case 0:_context948.n=1;return loadAndAwaitTextTracks(dashPlaylist);case 1:tracks=suite.player.textTracks;if(tracks.length<2)pending("need at least two text tracks");_i50=0,_arr1=[].concat(_toConsumableArray(tracks),_toConsumableArray(tracks));case 2:if(!(_i50<_arr1.length)){_context948.n=5;break}track2=_arr1[_i50];selectTextById(track2.id);_context948.n=3;return awaitCuesShowing();case 3:expect(showingWithCues()).withContext("more than one caption track rendering after selecting ".concat(track2.language)).toBeLessThanOrEqual(1);case 4:_i50++;_context948.n=2;break;case 5:return _context948.a(2)}},_callee947)})))});// test/integ/track/TrackController.test.ts
2316
- describe("trackController integ",function(){function createLoadOptionsList(count){var loadOptions=[];for(var i=0;i<count;i++){loadOptions.push({type:"src",uri:"".concat(vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps,"?track=").concat(createShortUid(),"_").concat(i)})}return loadOptions}describe("load",function(){var suite=createVinylSuite({trackController:{preloadCapacity:1,trackPrefetchCount:3}});it("prefetches trackPrefetchCount tracks ahead",function(){var tracks=createLoadOptionsList(7);var player=suite.player;function expectCached(indices){for(var i=0;i<6;i++){var expected=indices.includes(i);expect(player.isTrackCached(tracks[i].uri)).withContext("track ".concat(i)).toBe(expected)}}player.load.apply(player,_toConsumableArray(tracks));expectCached([0,1,2,3]);player.next();expectCached([0,1,2,3,4]);player.next();expectCached([1,2,3,4,5]);player.next();expectCached([2,3,4,5,6]);player.next();expectCached([2,3,4,5,6])});it("moves to the next track on ended",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee950(){var _a3,_b,_c,count,tracks,duration,player,firstActivated,i,nextTrackChange,nextQueueEnded;return _regenerator().w(function(_context951){while(1)switch(_context951.n){case 0:count=3;tracks=createLoadOptionsList(count);duration=60;player=suite.player;firstActivated=nextEventAsPromise(player,"trackActivated",{timeout:30,timeoutMessage:"trackActivated timed out in {time}s"});player.load.apply(player,_toConsumableArray(tracks));_context951.n=1;return firstActivated;case 1:expect((_a3=player.activeTrack)==null?void 0:_a3.uri).toEqual(tracks[0].uri);_context951.n=2;return player.play();case 2:i=0;case 3:if(!(i<count-1)){_context951.n=7;break}nextTrackChange=nextEventAsPromise(player,"trackActivated",{timeout:30,timeoutMessage:"trackActivated timed out in {time}s"});_context951.n=4;return player.seekTo(duration);case 4:_context951.n=5;return nextTrackChange;case 5:expect((_b=player.activeTrack)==null?void 0:_b.uri).toEqual(tracks[i+1].uri);case 6:i++;_context951.n=3;break;case 7:nextQueueEnded=nextEventAsPromise(player,"queueEnded",{timeout:30,timeoutMessage:"queueEnded timed out in 10s"});_context951.n=8;return player.seekTo(duration);case 8:_context951.n=9;return nextQueueEnded;case 9:expect((_c=player.activeTrack)==null?void 0:_c.uri).toEqual(tracks[count-1].uri);case 10:return _context951.a(2)}},_callee950)})))})})})();
2302
+ }];var _loop21=function _loop21(){var _requestOrderFailures=requestOrderFailures[i],label=_requestOrderFailures.label,contentLengthRange=_requestOrderFailures.contentLengthRange;it("recovers next onLine for ".concat(label," errors"),/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee884(){var nextError,playPromise,nextReset;return _regenerator().w(function(_context884){while(1)switch(_context884.n){case 0:requestGate=function requestGate(_,init){var _a3;var headers=normalizeHeadersInit((_a3=init==null?void 0:init.headers)!=null?_a3:{});var rangeHeader=headers.Range;if(!rangeHeader)return!!contentLengthRange;if(!contentLengthRange)return true;var _rangeHeader$slice$sp=rangeHeader.slice(6).split("-").map(Number),_rangeHeader$slice$sp2=_slicedToArray(_rangeHeader$slice$sp,2),start=_rangeHeader$slice$sp2[0],end=_rangeHeader$slice$sp2[1];var contentLength=end-start+1;return contentLength<contentLengthRange[0]||contentLength>contentLengthRange[1]};nextError=errorSpy.next(30);loadDash();playPromise=player.play();_context884.n=1;return nextError;case 1:requestGate=function requestGate(){return true};nextReset=resetSpy.next(1);mockNetworkState.dispatch("online",mockEvent("online"));_context884.n=2;return nextReset;case 2:_context884.n=3;return playPromise;case 3:_context884.n=4;return expectTrackPlaysUntil(player,playbackTime);case 4:return _context884.a(2)}},_callee884)})))};for(var i=0;i<requestOrderFailures.length;i++){_loop21()}describe("when encrypted",function(){beforeEach(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee882(){return _regenerator().w(function(_context882){while(1)switch(_context882.n){case 0:_context882.n=1;return pendingIfWidevineNotSupported(player);case 1:return _context882.a(2)}},_callee882)})));it("recovers from failed license requests",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee883(){var nextError,licenseAttempt,playPromise,nextReset;return _regenerator().w(function(_context883){while(1)switch(_context883.n){case 0:nextError=errorSpy.next(30);licenseAttempt=0;requestGate=function requestGate(input){if(typeof input==="string"&&input==="https://cwip-shaka-proxy.appspot.com/no_auth"){return licenseAttempt++>0}return true};player.load({type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase_widevine});playPromise=player.play();_context883.n=1;return nextError;case 1:nextReset=resetSpy.next(1);mockNetworkState.dispatch("online",mockEvent("online"));_context883.n=2;return nextReset;case 2:_context883.n=3;return playPromise;case 3:_context883.n=4;return expectTrackPlaysUntil(player,playbackTime);case 4:return _context883.a(2)}},_callee883)})))})})});// test/integ/playback/seeking.test.ts
2303
+ describe("seeking integ",function(){var suite=createVinylSuite({drm:{keySystems:_defineProperty({},"com.widevine.alpha"/* WIDEVINE */,{licenseServer:{url:"https://cwip-shaka-proxy.appspot.com/no_auth"}})}});var player;var trackSuites=[{description:"dash with segmentBase",needsWidevine:false,track:{type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase}},{description:"dash drm video with segmentTemplate",needsWidevine:true,track:{type:"dash",uri:vinylTestAssets.dash.live_static_video_audio_60s_2s_segmentTemplate_widevine_cl10}}];function addWhenSeekingRapidlyTests(){describe("when seeking rapidly",function(){it("the last seek should be honored",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee885(){var promises,FINAL,TOLERANCE,finalPromise;return _regenerator().w(function(_context885){while(1)switch(_context885.n){case 0:promises=[];promises.push(player.seekTo(12));promises.push(player.seekTo(15));promises.push(player.seekTo(15.1));promises.push(player.seekTo(30));promises.push(player.seekTo(30.5));promises.push(player.seekTo(5));promises.push(player.seekTo(25));FINAL=50;TOLERANCE=1;finalPromise=player.seekTo(FINAL);_context885.n=1;return Promise.all(promises);case 1:_context885.n=2;return finalPromise;case 2:expect(player.currentTime).toBeCloseToWithin(FINAL,TOLERANCE);if(player.paused){_context885.n=3;break}_context885.n=3;return assertFrequency();case 3:return _context885.a(2)}},_callee885)})))})}beforeEach(function(){player=suite.player});var _loop22=function _loop22(){var trackSuite=_trackSuites[_i49];describe(trackSuite.description,function(){beforeEach(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee886(){var _t96;return _regenerator().w(function(_context886){while(1)switch(_context886.p=_context886.n){case 0:if(!trackSuite.needsWidevine){_context886.n=2;break}_context886.n=1;return pendingIfWidevineNotSupported(player);case 1:if(!_context886.v){_context886.n=2;break}return _context886.a(2);case 2:_context886.p=2;player.load(trackSuite.track);_context886.n=6;break;case 3:_context886.p=3;_t96=_context886.v;if(!(_t96 instanceof MediaUnsupportedError)){_context886.n=4;break}pending("Track type not supported");_context886.n=5;break;case 4:throw _t96;case 5:return _context886.a(2);case 6:_context886.n=7;return player.play();case 7:return _context886.a(2)}},_callee886,null,[[2,3]])})));describe("when playing",function(){it("can seek to a time",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee887(){return _regenerator().w(function(_context887){while(1)switch(_context887.n){case 0:expect(player.paused).withContext("paused").toBeFalse();expect(player.playing).withContext("playing").toBeTrue();_context887.n=1;return expectTrackCanSeekTo(player,10);case 1:_context887.n=2;return expectTrackCanSeekTo(player,20);case 2:_context887.n=3;return expectTrackCanSeekTo(player,5);case 3:_context887.n=4;return expectTrackCanSeekTo(player,0);case 4:return _context887.a(2)}},_callee887)})));it("clamps when seeking to beyond duration",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee888(){return _regenerator().w(function(_context888){while(1)switch(_context888.n){case 0:_context888.n=1;return expectTrackCanSeekTo(player,999);case 1:return _context888.a(2)}},_callee888)})));addWhenSeekingRapidlyTests()});describe("when paused",function(){beforeEach(function(){player.pause()});it("can seek to a time",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee889(){return _regenerator().w(function(_context889){while(1)switch(_context889.n){case 0:_context889.n=1;return expectTrackCanSeekTo(player,12);case 1:_context889.n=2;return expectTrackCanSeekTo(player,25);case 2:_context889.n=3;return expectTrackCanSeekTo(player,7);case 3:_context889.n=4;return expectTrackCanSeekTo(player,0);case 4:return _context889.a(2)}},_callee889)})));it("clamps when seeking to beyond duration",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee890(){return _regenerator().w(function(_context890){while(1)switch(_context890.n){case 0:_context890.n=1;return expectTrackCanSeekTo(player,999);case 1:return _context890.a(2)}},_callee890)})));addWhenSeekingRapidlyTests()});describe("when track is segmented",function(){beforeEach(function(){if(trackSuite.track.type!=="dash")pending("not segmented")});it("can seek close to end and start of segment boundaries",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee891(){return _regenerator().w(function(_context891){while(1)switch(_context891.n){case 0:_context891.n=1;return expectTrackCanSeekTo(player,39.9);case 1:_context891.n=2;return expectTrackCanSeekTo(player,59.99);case 2:_context891.n=3;return expectTrackCanSeekTo(player,55);case 3:_context891.n=4;return expectTrackCanSeekTo(player,51);case 4:_context891.n=5;return expectTrackCanSeekTo(player,49);case 5:_context891.n=6;return expectTrackCanSeekTo(player,30.01);case 6:_context891.n=7;return expectTrackCanSeekTo(player,9.999);case 7:_context891.n=8;return expectTrackCanSeekTo(player,42);case 8:_context891.n=9;return expectTrackCanSeekTo(player,39.995);case 9:_context891.n=10;return expectTrackCanSeekTo(player,50.5);case 10:return _context891.a(2)}},_callee891)})));it("no-ops seeks when time is close to currentTime",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee892(){return _regenerator().w(function(_context892){while(1)switch(_context892.n){case 0:_context892.n=1;return expectTrackCanSeekTo(player,39.9);case 1:_context892.n=2;return expectTrackCanSeekTo(player,40.1);case 2:_context892.n=3;return expectTrackCanSeekTo(player,40);case 3:return _context892.a(2)}},_callee892)})))});describe("after track ends",function(){it("can seek back to beginning",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee893(){var nextEnded;return _regenerator().w(function(_context893){while(1)switch(_context893.n){case 0:nextEnded=nextEventAsPromise(player,"ended");_context893.n=1;return expectTrackCanSeekTo(player,999);case 1:_context893.n=2;return nextEnded;case 2:_context893.n=3;return expectTrackCanSeekTo(player,0);case 3:_context893.n=4;return expectTrackCanSeekTo(player,5);case 4:return _context893.a(2)}},_callee893)})));it("can continue seeking",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee894(){var nextEnded;return _regenerator().w(function(_context894){while(1)switch(_context894.n){case 0:nextEnded=nextEventAsPromise(player,"ended");_context894.n=1;return expectTrackCanSeekTo(player,999);case 1:_context894.n=2;return nextEnded;case 2:_context894.n=3;return expectTrackCanSeekTo(player,0);case 3:_context894.n=4;return expectTrackCanSeekTo(player,5);case 4:_context894.n=5;return expectTrackCanSeekTo(player,15);case 5:_context894.n=6;return expectTrackCanSeekTo(player,35);case 6:_context894.n=7;return expectTrackCanSeekTo(player,999);case 7:_context894.n=8;return nextEnded;case 8:return _context894.a(2)}},_callee894)})))})})};for(var _i49=0,_trackSuites=trackSuites;_i49<_trackSuites.length;_i49++){_loop22()}});// test/integ/track/allowedContentTypes.test.ts
2304
+ describe("allowedContentTypes switching integ",function(){var dashPlaylist=[{type:"dash",uri:vinylTestAssets.dash.live_static_video_audio_60s_2s_segmentTemplate}];var hlsPlaylist=[{type:"hls",uri:vinylTestAssets.hls.live_static_video_audio_60s_2s}];var suite=createVinylSuite({},{timeout:180});beforeEach(function(){if(!supportsMse())pending("MSE not supported")});function reconfigureAllowed(_x129){return _reconfigureAllowed.apply(this,arguments)}function _reconfigureAllowed(){_reconfigureAllowed=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee898(allowedContentTypes){var player,wantsVideo,_t97;return _regenerator().w(function(_context898){while(1)switch(_context898.n){case 0:player=suite.player;wantsVideo=allowedContentTypes==null||allowedContentTypes.includes("video");player.configure({allowedContentTypes:allowedContentTypes});_t97=expect;_context898.n=1;return poll(function(){return player.contentTypes.has("video")===wantsVideo},{timeout:30});case 1:_t97(_context898.v).withContext("content types reflect allowedContentTypes").toBeTrue();case 2:return _context898.a(2)}},_callee898)}));return _reconfigureAllowed.apply(this,arguments)}function playThenSwitch(_x130){return _playThenSwitch.apply(this,arguments)}function _playThenSwitch(){_playThenSwitch=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee899(playlist){var player,resumeBefore,resumeBeforeRestore;return _regenerator().w(function(_context899){while(1)switch(_context899.n){case 0:player=suite.player;player.load.apply(player,_toConsumableArray(playlist));_context899.n=1;return player.play();case 1:_context899.n=2;return onDuration(player);case 2:_context899.n=3;return expectTrackPlaysUntil(player,3);case 3:expect(player.contentTypes.has("video")).withContext("starts with video").toBeTrue();expect(player.contentTypes.has("audio")).withContext("starts with audio").toBeTrue();resumeBefore=player.currentTime;_context899.n=4;return reconfigureAllowed(["audio"]);case 4:_context899.n=5;return expectTrackPlaysUntil(player,resumeBefore);case 5:expect(player.contentTypes.has("video")).withContext("video dropped after switch to audio-only").toBeFalse();expect(player.contentTypes.has("audio")).withContext("audio retained after switch to audio-only").toBeTrue();resumeBeforeRestore=player.currentTime;_context899.n=6;return reconfigureAllowed(null);case 6:_context899.n=7;return expectTrackPlaysUntil(player,resumeBeforeRestore);case 7:expect(player.contentTypes.has("video")).withContext("video restored after clearing the allow list").toBeTrue();case 8:return _context899.a(2)}},_callee899)}));return _playThenSwitch.apply(this,arguments)}it("DASH reloads the track when switching content types",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee895(){return _regenerator().w(function(_context895){while(1)switch(_context895.n){case 0:_context895.n=1;return playThenSwitch(dashPlaylist);case 1:return _context895.a(2)}},_callee895)})));it("HLS reloads the track when switching content types",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee896(){return _regenerator().w(function(_context896){while(1)switch(_context896.n){case 0:_context896.n=1;return playThenSwitch(hlsPlaylist);case 1:return _context896.a(2)}},_callee896)})));it("DASH applies allowedContentTypes set before load",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee897(){var player;return _regenerator().w(function(_context897){while(1)switch(_context897.n){case 0:player=suite.player;player.configure({allowedContentTypes:["audio"]});player.load.apply(player,dashPlaylist);_context897.n=1;return player.play();case 1:_context897.n=2;return onDuration(player);case 2:_context897.n=3;return expectTrackPlaysUntil(player,3);case 3:expect(player.contentTypes.has("video")).withContext("video excluded when audio-only configured up front").toBeFalse();expect(player.contentTypes.has("audio")).withContext("audio present").toBeTrue();case 4:return _context897.a(2)}},_callee897)})))});// test/integ/track/dash/liveStaticSegmentBase.test.ts
2305
+ describe("dash with segmentBase integ",function(){var playlist=[{type:"dash",uri:vinylTestAssets.dash.live_static_aac_opus_flac_60s_segmentBase}];var suite=createVinylSuite();beforeEach(function(){if(!supportsMse())pending("MSE not supported")});it("plays",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee900(){return _regenerator().w(function(_context900){while(1)switch(_context900.n){case 0:_context900.n=1;return expectPlaylistPlays(suite.player,playlist);case 1:return _context900.a(2)}},_callee900)})))});// test/integ/track/dash/liveStaticSegmentTemplate.test.ts
2306
+ describe("dash video with segmentTemplate integ",function(){var playlist=[{type:"dash",uri:vinylTestAssets.dash.live_static_video_audio_60s_2s_segmentTemplate}];var suite=createVinylSuite();beforeEach(function(){if(!supportsMse())pending("MSE not supported")});it("plays",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee901(){return _regenerator().w(function(_context901){while(1)switch(_context901.n){case 0:_context901.n=1;return expectPlaylistPlays(suite.player,playlist);case 1:return _context901.a(2)}},_callee901)})))});// test/integ/track/dash/Uhd.test.ts
2307
+ describe("uhd integ",function(){var ForceUhdCapabilities=/*#__PURE__*/function(_CapabilitiesImpl){function ForceUhdCapabilities(){_classCallCheck(this,ForceUhdCapabilities);return _callSuper(this,ForceUhdCapabilities,arguments)}_inherits(ForceUhdCapabilities,_CapabilitiesImpl);return _createClass(ForceUhdCapabilities,[{key:"sampleRate",get:function get(){if(hasBrowser("Chromium"/* CHROMIUM */)){return Number.MAX_VALUE}else{return _superPropGet(ForceUhdCapabilities,"sampleRate",this,1)}}}])}(CapabilitiesImpl);var suite=new VinylSuite(function(){return createVinylPlayer({media:mediaRef.value},{capabilities:function capabilities(deps){return new ForceUhdCapabilities(deps)}})});suite.init();var playlist=[{type:"dash",uri:"https://assets.dev.vinyl.music.amazon.dev/dash/world___bpm85/manifest.mpd"}];beforeEach(function(){if(!suite.player.capabilities.canPlayTypeMse("flac")){pending("flac not supported")}});it("plays",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee902(){var _a3,player;return _regenerator().w(function(_context902){while(1)switch(_context902.n){case 0:player=suite.player;player.load.apply(player,playlist);_context902.n=1;return player.play();case 1:if(hasBrowser("Chromium"/* CHROMIUM */)){expect((_a3=player.getPlaybackQuality("audio"))==null?void 0:_a3.audioSamplingRate).toBe([192e3,192e3])}_context902.n=2;return _sleep(25);case 2:expect(player.currentTime).toBeGreaterThan(20);_context902.n=3;return player.seekTo(player.duration-3);case 3:_context902.n=4;return onEnded(player);case 4:expect(player.currentTime).withContext("currentTime ends near duration").toBeCloseToWithin(player.duration,3);case 5:return _context902.a(2)}},_callee902)})))});// test/integ/track/hls/adInterstitials.test.ts
2308
+ var ANCHOR_ISO="2024-01-01T00:00:00.000Z";var ANCHOR_MS=Date.parse(ANCHOR_ISO);var CONTENT_ASSET=vinylTestAssets.hls.live_static_video_audio_60s_4s;var AD_ASSET=vinylTestAssets.hls.live_static_video_audio_60s_2s;function injectingManifestProvider(mainUrl,interstitials){return/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee904(){var mainText,mainPlaylist,cache;return _regenerator().w(function(_context904){while(1)switch(_context904.n){case 0:_context904.n=1;return fetch(mainUrl);case 1:_context904.n=2;return _context904.v.text();case 2:mainText=_context904.v;mainPlaylist=parseMainPlaylist(mainText);cache=/* @__PURE__ */new Map;return _context904.a(2,{mainPlaylist:mainPlaylist,baseUrl:mainUrl,getMediaPlaylist:function(){var _getMediaPlaylist=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee903(uri){var cached,url,text,injected,parsed;return _regenerator().w(function(_context903){while(1)switch(_context903.n){case 0:cached=cache.get(uri);if(!cached){_context903.n=1;break}return _context903.a(2,cached);case 1:url=resolveUrl(uri,mainUrl);_context903.n=2;return fetch(url);case 2:_context903.n=3;return _context903.v.text();case 3:text=_context903.v;injected=injectInterstitials(text,interstitials);parsed=parseMediaPlaylist(injected);cache.set(uri,parsed);return _context903.a(2,parsed)}},_callee903)}));function getMediaPlaylist(_x131){return _getMediaPlaylist.apply(this,arguments)}return getMediaPlaylist}()})}},_callee904)}))}function injectInterstitials(text,interstitials){var dateRanges=interstitials.map(function(it2){var startDate=new Date(ANCHOR_MS+it2.startTime*1e3).toISOString();var asset;if(it2.assetList){var json=JSON.stringify(__spreadValues({ASSETS:it2.assetList.map(function(a){return{URI:a.uri,DURATION:a.duration}})},it2.skipControl&&{"SKIP-CONTROL":__spreadValues({OFFSET:it2.skipControl.offset},it2.skipControl.duration!=null&&{DURATION:it2.skipControl.duration})}));var dataUrl="data:application/json;base64,"+btoa(json);asset="X-ASSET-LIST=\"".concat(dataUrl,"\"")}else{asset="X-ASSET-URI=\"".concat(it2.assetUri,"\"")}var cue=it2.cue?",CUE=\"".concat(it2.cue,"\""):"";var resumeOffset=it2.resumeOffset==null?"":",X-RESUME-OFFSET=".concat(it2.resumeOffset);var playoutLimit=it2.playoutLimit==null?"":",X-PLAYOUT-LIMIT=".concat(it2.playoutLimit);return"#EXT-X-DATERANGE:ID=\"".concat(it2.id,"\",CLASS=\"com.apple.hls.interstitial\",START-DATE=\"").concat(startDate,"\",DURATION=").concat(it2.duration,",").concat(asset).concat(cue).concat(resumeOffset).concat(playoutLimit)});var lines=text.split(/\r?\n/);var out=[];var anchored=false;var _iterator119=_createForOfIteratorHelper(lines),_step119;try{for(_iterator119.s();!(_step119=_iterator119.n()).done;){var line=_step119.value;if(!anchored&&line.startsWith("#EXTINF")){out.push("#EXT-X-PROGRAM-DATE-TIME:".concat(ANCHOR_ISO));anchored=true}out.push(line)}}catch(err){_iterator119.e(err)}finally{_iterator119.f()}out.splice.apply(out,[1,0].concat(_toConsumableArray(dateRanges)));return out.join("\n")}describe("hls ad interstitials integ",function(){var MIDROLL_TIME=20;var MIDROLL_DURATION=6;var AD_ID="integ-midroll-1";function makePlaylist(){return[{type:"hls",uri:"integ-interstitial",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:AD_ID,startTime:MIDROLL_TIME,duration:MIDROLL_DURATION,assetUri:AD_ASSET}])}]}var suite=createVinylSuite({},{timeout:180,failOnError:false});beforeEach(function(){if(!supportsMse())pending("MSE not supported")});function seekTolerant(_x132){return _seekTolerant.apply(this,arguments)}function _seekTolerant(){_seekTolerant=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee933(time){var _t160;return _regenerator().w(function(_context933){while(1)switch(_context933.p=_context933.n){case 0:_context933.p=0;_context933.n=1;return suite.player.seekTo(time,0.5);case 1:_context933.n=3;break;case 2:_context933.p=2;_t160=_context933.v;case 3:return _context933.a(2)}},_callee933,null,[[0,2]])}));return _seekTolerant.apply(this,arguments)}function playThenSeek(_x133){return _playThenSeek.apply(this,arguments)}function _playThenSeek(){_playThenSeek=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee934(time){return _regenerator().w(function(_context934){while(1)switch(_context934.n){case 0:_context934.n=1;return suite.player.play()["catch"](function(){return void 0});case 1:_context934.n=2;return seekTolerant(time);case 2:return _context934.a(2)}},_callee934)}));return _playThenSeek.apply(this,arguments)}function loadAndAwaitAdBreaks(){return _loadAndAwaitAdBreaks.apply(this,arguments)}function _loadAndAwaitAdBreaks(){_loadAndAwaitAdBreaks=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee935(){var _suite$player;var playlist,_args935=arguments;return _regenerator().w(function(_context935){while(1)switch(_context935.n){case 0:playlist=_args935.length>0&&_args935[0]!==undefined?_args935[0]:makePlaylist();(_suite$player=suite.player).load.apply(_suite$player,_toConsumableArray(playlist));_context935.n=1;return poll(function(){var _a3,_b;return((_b=(_a3=suite.player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:return _context935.a(2)}},_callee935)}));return _loadAndAwaitAdBreaks.apply(this,arguments)}it("discovers the injected interstitial as an ad break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee905(){var breaks,ads;return _regenerator().w(function(_context905){while(1)switch(_context905.n){case 0:_context905.n=1;return loadAndAwaitAdBreaks();case 1:breaks=suite.player.currentTrackAds.adBreaks;expect(breaks.length).toBe(1);expect(breaks[0].id).toBe(AD_ID);expect(breaks[0].startTime).toBeCloseTo(MIDROLL_TIME,1);expect(breaks[0].duration).toBe(MIDROLL_DURATION);expect(breaks[0].placement).toBe("midroll");_context905.n=2;return resolveValueProvider(breaks[0].ads);case 2:ads=_context905.v;expect(ads[0].uri).toBe(AD_ASSET);case 3:return _context905.a(2)}},_callee905)})));it("ad breaks have strongly typed fields (no metadata, no assetListUrl)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee906(){var adBreak;return _regenerator().w(function(_context906){while(1)switch(_context906.n){case 0:_context906.n=1;return loadAndAwaitAdBreaks();case 1:adBreak=suite.player.currentTrackAds.adBreaks[0];expect("metadata"in adBreak).toBeFalse();expect("assetListUrl"in adBreak).toBeFalse();expect(_typeof(adBreak.ads)).toBe("function");case 2:return _context906.a(2)}},_callee906)})));it("ad events come from the player-level controller (not per-track)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee907(){var player,spy,sub;return _regenerator().w(function(_context907){while(1)switch(_context907.n){case 0:player=suite.player;spy=jasmine.createSpy("currentTrackAdsChange");sub=player.on("currentTrackAdsChange",spy);player.load.apply(player,_toConsumableArray(makePlaylist()));_context907.n=1;return poll(function(){return spy.calls.count()>0&&spy.calls.mostRecent().args[0].current!=null},{timeout:15});case 1:sub();expect(spy.calls.mostRecent().args[0].current.adBreaks.length).toBe(1);case 2:return _context907.a(2)}},_callee907)})));it("emits adBreakEntered/adBreakCompleted as the playhead crosses into and out of the break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee908(){var player,entered,exited,enteredSub,exitedSub,_t98,_t99;return _regenerator().w(function(_context908){while(1)switch(_context908.p=_context908.n){case 0:_context908.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;entered=[];exited=[];enteredSub=player.on("adBreakEntered",function(e){return entered.push(e.adBreak.id)});exitedSub=player.on("adBreakCompleted",function(e){return exited.push(e.adBreak.id)});_context908.p=2;_context908.n=3;return playThenSeek(MIDROLL_TIME-1);case 3:_t98=expect;_context908.n=4;return poll(function(){return entered.includes(AD_ID)},{timeout:30});case 4:_t98(_context908.v).withContext("entered.includes(AD_ID)").toBeTrue();player.skipAd();_t99=expect;_context908.n=5;return poll(function(){return exited.includes(AD_ID)},{timeout:30});case 5:_t99(_context908.v).withContext("exited.includes(AD_ID)").toBeTrue();case 6:_context908.p=6;enteredSub();exitedSub();return _context908.f(6);case 7:return _context908.a(2)}},_callee908,null,[[2,,6,7]])})));it("reports the active ad break while the playhead is inside it",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee909(){var _a3,player,_t100;return _regenerator().w(function(_context909){while(1)switch(_context909.n){case 0:_context909.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context909.n=2;return playThenSeek(MIDROLL_TIME+MIDROLL_DURATION/2);case 2:_t100=expect;_context909.n=3;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 3:_t100(_context909.v).withContext("player.currentAdBreak != null").toBeTrue();expect((_a3=player.currentAdBreak)==null?void 0:_a3.id).toBe(AD_ID);case 4:return _context909.a(2)}},_callee909)})));it("skipAd clears the active ad break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee910(){var player,_t101;return _regenerator().w(function(_context910){while(1)switch(_context910.n){case 0:_context910.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context910.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t101=expect;_context910.n=3;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 3:_t101(_context910.v).withContext("player.currentAdBreak != null").toBeTrue();player.skipAd();expect(player.currentAdBreak).toBeNull();case 4:return _context910.a(2)}},_callee910)})));it("skipAdBreak clears the active ad break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee911(){var player,_t102;return _regenerator().w(function(_context911){while(1)switch(_context911.n){case 0:_context911.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context911.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t102=expect;_context911.n=3;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 3:_t102(_context911.v).withContext("player.currentAdBreak != null").toBeTrue();player.skipAdBreak();expect(player.currentAdBreak).toBeNull();case 4:return _context911.a(2)}},_callee911)})));it("exposes seekRange once the timeline resolves",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee912(){var player,_t103;return _regenerator().w(function(_context912){while(1)switch(_context912.n){case 0:_context912.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_t103=expect;_context912.n=2;return poll(function(){return player.seekRange!=null},{timeout:15});case 2:_t103(_context912.v).withContext("player.seekRange != null").toBeTrue();expect(player.seekRange.start).toBeGreaterThanOrEqual(0);expect(player.seekRange.end).toBeGreaterThan(0);case 3:return _context912.a(2)}},_callee912)})));it("plays the ad track as the current track over the content",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee913(){var _a3,player,_t104;return _regenerator().w(function(_context913){while(1)switch(_context913.n){case 0:_context913.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context913.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t104=expect;_context913.n=3;return poll(function(){var _a4;return((_a4=player.activeTrack)==null?void 0:_a4.uri)===AD_ASSET},{timeout:30});case 3:_t104(_context913.v).withContext("player.activeTrack?.uri === AD_ASSET").toBeTrue();expect(player.activeTrack.uri).toBe(AD_ASSET);expect(player.currentAd).not.toBeNull();expect((_a3=player.currentAdBreak)==null?void 0:_a3.id).toBe(AD_ID);case 4:return _context913.a(2)}},_callee913)})));it("lets an application attribute ended events to ads vs content",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee914(){var player,endedDuringAd,sub,_t105,_t106,_t107;return _regenerator().w(function(_context914){while(1)switch(_context914.p=_context914.n){case 0:player=suite.player;player.load({type:"hls",uri:"integ-ended-attribution",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"multi",startTime:MIDROLL_TIME,duration:12,assetList:[{uri:AD_ASSET,duration:6},{uri:AD_ASSET,duration:6}]}])});_context914.n=1;return poll(function(){var _a3,_b;return((_b=(_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:endedDuringAd=[];sub=player.on("ended",function(){endedDuringAd.push(player.currentAdBreak!=null)});_context914.p=2;_context914.n=3;return playThenSeek(MIDROLL_TIME+1);case 3:_t105=expect;_context914.n=4;return poll(function(){return player.currentAd!=null},{timeout:30});case 4:_t105(_context914.v).withContext("player.currentAd != null").toBeTrue();expect(player.currentAdBreak).not.toBeNull();player.skipAd();_t106=expect;_context914.n=5;return poll(function(){return player.currentAd!=null},{timeout:30});case 5:_t106(_context914.v).withContext("player.currentAd != null").toBeTrue();expect(player.currentAdBreak).not.toBeNull();player.skipAd();_t107=expect;_context914.n=6;return poll(function(){return player.currentAdBreak==null},{timeout:30});case 6:_t107(_context914.v).withContext("player.currentAdBreak == null").toBeTrue();expect(endedDuringAd.every(function(wasAd){return wasAd})).toBeTrue();case 7:_context914.p=7;sub();return _context914.f(7);case 8:return _context914.a(2)}},_callee914,null,[[2,,7,8]])})));it("resumes content playback after the ad break ends",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee915(){var player,_t108,_t109,_t110,_t111;return _regenerator().w(function(_context915){while(1)switch(_context915.n){case 0:_context915.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context915.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t108=expect;_context915.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t108(_context915.v).withContext("player.currentAd != null").toBeTrue();_t109=expect;_context915.n=4;return poll(function(){return player.currentTime>0},{timeout:20});case 4:_t109(_context915.v).withContext("player.currentTime > 0").toBeTrue();player.skipAd();_t110=expect;_context915.n=5;return poll(function(){return player.currentAd==null},{timeout:30});case 5:_t110(_context915.v).withContext("player.currentAd == null").toBeTrue();expect(player.currentAdBreak).toBeNull();_t111=expect;_context915.n=6;return poll(function(){var _a3;return((_a3=player.activeTrack)==null?void 0:_a3.uri)==="integ-interstitial"&&!player.paused},{timeout:20});case 6:_t111(_context915.v).withContext("content track resumed and playing").toBeTrue();case 7:return _context915.a(2)}},_callee915)})));it("resumes content playback when the ad ends naturally",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee916(){var player,adDuration,_t112,_t113,_t114,_t115;return _regenerator().w(function(_context916){while(1)switch(_context916.n){case 0:_context916.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context916.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t112=expect;_context916.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t112(_context916.v).withContext("player.currentAd != null").toBeTrue();_t113=expect;_context916.n=4;return poll(function(){return player.currentTime>0},{timeout:20});case 4:_t113(_context916.v).withContext("player.currentTime > 0").toBeTrue();adDuration=player.duration;_context916.n=5;return player.seekTo(Math.max(0,adDuration-1),1)["catch"](function(){return void 0});case 5:_t114=expect;_context916.n=6;return poll(function(){return player.currentAd==null},{timeout:40});case 6:_t114(_context916.v).withContext("player.currentAd == null").toBeTrue();expect(player.currentAdBreak).toBeNull();_t115=expect;_context916.n=7;return poll(function(){var _a3;return((_a3=player.activeTrack)==null?void 0:_a3.uri)==="integ-interstitial"&&!player.paused&&player.currentTime>0},{timeout:20});case 7:_t115(_context916.v).withContext("content track resumed and playing").toBeTrue();case 8:return _context916.a(2)}},_callee916)})));function loadMidroll(){return _loadMidroll.apply(this,arguments)}function _loadMidroll(){_loadMidroll=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee936(){var extra,_args936=arguments;return _regenerator().w(function(_context936){while(1)switch(_context936.n){case 0:extra=_args936.length>0&&_args936[0]!==undefined?_args936[0]:{};suite.player.load({type:"hls",uri:"integ-interstitial",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[__spreadValues({id:AD_ID,startTime:MIDROLL_TIME,duration:MIDROLL_DURATION,assetUri:AD_ASSET},extra)])});_context936.n=1;return poll(function(){var _a3,_b;return((_b=(_a3=suite.player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:return _context936.a(2)}},_callee936)}));return _loadMidroll.apply(this,arguments)}it("resumes content at the X-RESUME-OFFSET position after a midroll",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee917(){var player,_t116,_t117,_t118;return _regenerator().w(function(_context917){while(1)switch(_context917.n){case 0:player=suite.player;_context917.n=1;return loadMidroll({resumeOffset:10});case 1:_context917.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t116=expect;_context917.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t116(_context917.v).withContext("ad playing").toBeTrue();_t117=expect;_context917.n=4;return poll(function(){return player.currentTime>0},{timeout:20});case 4:_t117(_context917.v).withContext("ad advanced").toBeTrue();player.skipAd();_t118=expect;_context917.n=5;return poll(function(){var _a3;return((_a3=player.activeTrack)==null?void 0:_a3.uri)==="integ-interstitial"&&!player.paused&&player.currentTime>=MIDROLL_TIME+10-1},{timeout:20});case 5:_t118(_context917.v).withContext("content resumed at ~start+offset").toBeTrue();case 6:return _context917.a(2)}},_callee917)})));it("replays a non-ONCE midroll after seeking back across it",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee918(){var player,_t119,_t120,_t121;return _regenerator().w(function(_context918){while(1)switch(_context918.n){case 0:player=suite.player;_context918.n=1;return loadMidroll();case 1:_context918.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t119=expect;_context918.n=3;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 3:_t119(_context918.v).withContext("entered on the first crossing").toBeTrue();player.skipAd();_t120=expect;_context918.n=4;return poll(function(){var _a3;return player.currentAdBreak==null&&((_a3=player.activeTrack)==null?void 0:_a3.uri)==="integ-interstitial"&&player.currentTime>=MIDROLL_TIME},{timeout:20});case 4:_t120(_context918.v).withContext("content resumed past the break start").toBeTrue();_context918.n=5;return seekTolerant(MIDROLL_TIME-5);case 5:_context918.n=6;return player.play()["catch"](function(){return void 0});case 6:_t121=expect;_context918.n=7;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 7:_t121(_context918.v).withContext("non-ONCE break re-entered on the second crossing").toBeTrue();case 8:return _context918.a(2)}},_callee918)})));it("does not replay a CUE=ONCE midroll after seeking back across it",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee919(){var player,reentered,sub,_t122,_t123,_t124;return _regenerator().w(function(_context919){while(1)switch(_context919.p=_context919.n){case 0:player=suite.player;_context919.n=1;return loadMidroll({cue:"ONCE"});case 1:_context919.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t122=expect;_context919.n=3;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 3:_t122(_context919.v).withContext("entered on the first crossing").toBeTrue();player.skipAd();_t123=expect;_context919.n=4;return poll(function(){var _a3;return player.currentAdBreak==null&&((_a3=player.activeTrack)==null?void 0:_a3.uri)==="integ-interstitial"},{timeout:20});case 4:_t123(_context919.v).withContext("content resumed").toBeTrue();reentered=[];sub=player.on("adBreakEntered",function(e){return reentered.push(e.adBreak.id)});_context919.p=5;_context919.n=6;return seekTolerant(MIDROLL_TIME-5);case 6:_context919.n=7;return player.play()["catch"](function(){return void 0});case 7:_t124=expect;_context919.n=8;return poll(function(){var _a3;return player.currentAdBreak==null&&((_a3=player.activeTrack)==null?void 0:_a3.uri)==="integ-interstitial"&&player.currentTime>=MIDROLL_TIME+1},{timeout:30});case 8:_t124(_context919.v).withContext("crossed the ONCE break start without re-entering").toBeTrue();expect(reentered).toEqual([]);case 9:_context919.p=9;sub();return _context919.f(9);case 10:return _context919.a(2)}},_callee919,null,[[5,,9,10]])})));it("plays a preroll before content, then resumes content",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee920(){var _a3,player,_t125,_t126,_t127;return _regenerator().w(function(_context920){while(1)switch(_context920.n){case 0:player=suite.player;player.load({type:"hls",uri:"integ-preroll",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"preroll-1",startTime:0,duration:5,assetUri:AD_ASSET,cue:"PRE"}])});_context920.n=1;return poll(function(){var _a4,_b;return((_b=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:_context920.n=2;return player.play();case 2:_t125=expect;_context920.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t125(_context920.v).withContext("player.currentAd != null").toBeTrue();expect((_a3=player.currentAdBreak)==null?void 0:_a3.placement).toBe("preroll");player.skipAd();_t126=expect;_context920.n=4;return poll(function(){return player.currentAd==null},{timeout:30});case 4:_t126(_context920.v).withContext("player.currentAd == null").toBeTrue();_t127=expect;_context920.n=5;return poll(function(){return!player.paused&&player.currentTime>=0},{timeout:20});case 5:_t127(_context920.v).toBeTrue();case 6:return _context920.a(2)}},_callee920)})));it("activates a midroll during natural forward playback (no seek)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee921(){var _a3,player,_t128;return _regenerator().w(function(_context921){while(1)switch(_context921.n){case 0:player=suite.player;player.load({type:"hls",uri:"integ-natural-mid",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"mid",startTime:3,duration:MIDROLL_DURATION,assetUri:AD_ASSET}])});_context921.n=1;return poll(function(){var _a4,_b;return((_b=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:_context921.n=2;return player.play()["catch"](noop);case 2:_t128=expect;_context921.n=3;return poll(function(){var _a4;return((_a4=player.currentAdBreak)==null?void 0:_a4.id)==="mid"},{timeout:40});case 3:_t128(_context921.v).withContext("midroll activated on natural crossing").toBeTrue();expect((_a3=player.currentAdBreak)==null?void 0:_a3.placement).toBe("midroll");case 4:return _context921.a(2)}},_callee921)})));it("plays multiple ads in a break sequentially (X-ASSET-LIST)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee922(){var player,ads,_t129,_t130,_t131,_t132;return _regenerator().w(function(_context922){while(1)switch(_context922.n){case 0:player=suite.player;player.load({type:"hls",uri:"integ-multi",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"multi-1",startTime:MIDROLL_TIME,duration:12,assetList:[{uri:AD_ASSET,duration:6},{uri:AD_ASSET,duration:6}]}])});_context922.n=1;return poll(function(){var _a3,_b;return((_b=(_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:_context922.n=2;return resolveValueProvider(player.currentTrackAds.adBreaks[0].ads);case 2:ads=_context922.v;expect(ads.length).toBe(2);_context922.n=3;return playThenSeek(MIDROLL_TIME+1);case 3:_t129=expect;_context922.n=4;return poll(function(){return player.currentAd!=null},{timeout:30});case 4:_t129(_context922.v).withContext("player.currentAd != null").toBeTrue();player.skipAd();_t130=expect;_context922.n=5;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 5:_t130(_context922.v).withContext("player.currentAdBreak != null").toBeTrue();expect(player.currentAd).not.toBeNull();player.skipAd();_t131=expect;_context922.n=6;return poll(function(){return player.currentAdBreak==null},{timeout:30});case 6:_t131(_context922.v).withContext("player.currentAdBreak == null").toBeTrue();_t132=expect;_context922.n=7;return poll(function(){return player.currentAd==null},{timeout:30});case 7:_t132(_context922.v).withContext("player.currentAd == null").toBeTrue();case 8:return _context922.a(2)}},_callee922)})));it("surfaces the X-ASSET-LIST skip window on the ad break",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee923(){var player,skip;return _regenerator().w(function(_context923){while(1)switch(_context923.n){case 0:player=suite.player;player.load({type:"hls",uri:"integ-skip",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"skip-1",startTime:MIDROLL_TIME,duration:MIDROLL_DURATION,assetList:[{uri:AD_ASSET,duration:6}],skipControl:{offset:3,duration:5}}])});_context923.n=1;return poll(function(){var _a3,_b;return((_b=(_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:_context923.n=2;return resolveValueProvider(player.currentTrackAds.adBreaks[0].skipControl);case 2:skip=_context923.v;expect(skip).toEqual({offset:3,duration:5});case 3:return _context923.a(2)}},_callee923)})));it("parks content loaded and paused after a postroll finishes (no stuck loading)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee924(){var _a3,player,contentDuration,_t133,_t134,_t135,_t136,_t137;return _regenerator().w(function(_context924){while(1)switch(_context924.n){case 0:player=suite.player;player.load({type:"hls",uri:"integ-postroll",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"postroll-1",startTime:0,duration:6,assetUri:AD_ASSET,cue:"POST"}])});_context924.n=1;return poll(function(){var _a4,_b;return((_b=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:_context924.n=2;return player.play()["catch"](noop);case 2:expect(player.currentAdBreak).withContext("postroll not active during content").toBeNull();contentDuration=player.duration;_context924.n=3;return player.seekTo(Math.max(0,contentDuration-1.5),1)["catch"](function(){return void 0});case 3:_t133=expect;_context924.n=4;return poll(function(){return player.currentAd!=null},{timeout:40});case 4:_t133(_context924.v).withContext("player.currentAd != null").toBeTrue();expect((_a3=player.currentAdBreak)==null?void 0:_a3.placement).toBe("postroll");_context924.n=5;return poll(function(){return!player.paused},{timeout:8});case 5:player.skipAd();_t134=expect;_context924.n=6;return poll(function(){return player.currentAd==null},{timeout:20});case 6:_t134(_context924.v).withContext("player.currentAd == null").toBeTrue();_t135=expect;_context924.n=7;return poll(function(){var _a4;return((_a4=player.activeTrack)==null?void 0:_a4.uri)==="integ-postroll"},{timeout:20});case 7:_t135(_context924.v).withContext("content track resumed after postroll").toBeTrue();_t136=expect;_context924.n=8;return poll(function(){return player.readyState!==0}/* HAVE_NOTHING */,{timeout:20});case 8:_t136(_context924.v).withContext("player.readyState !== PlaybackReadyState.HAVE_NOTHING").toBeTrue();_t137=expect;_context924.n=9;return poll(function(){return player.paused||player.ended},{timeout:20});case 9:_t137(_context924.v).withContext("player.paused || player.ended").toBeTrue();case 10:return _context924.a(2)}},_callee924)})));var EMPTY_BREAKS_ASSET=vinylTestAssets.hls.vinyl_ad_breaks_av__empty_breaks_pre_mid_post;it("ends the track after an empty postroll (no ads) instead of hanging",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee925(){var player,trackEnded,queueEnded;return _regenerator().w(function(_context925){while(1)switch(_context925.n){case 0:player=suite.player;player.load({type:"hls",uri:EMPTY_BREAKS_ASSET});_context925.n=1;return poll(function(){var _a3,_b;return((_b=(_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:trackEnded=nextEventAsPromise(player,"trackEnded",{filter:function filter(e){return e.track.uri===EMPTY_BREAKS_ASSET},timeout:40,timeoutMessage:"trackEnded not received for the empty postroll"});queueEnded=nextEventAsPromise(player,"queueEnded",{timeout:40,timeoutMessage:"queueEnded not received after the empty postroll"});_context925.n=2;return player.play()["catch"](noop);case 2:_context925.n=3;return player.seekTo(Math.max(0,player.duration-1.5),1)["catch"](function(){return void 0});case 3:_context925.n=4;return trackEnded;case 4:_context925.n=5;return queueEnded;case 5:expect(player.currentAd).withContext("no ad played for the empty break").toBeNull();case 6:return _context925.a(2)}},_callee925)})));it("advances to the next track after an empty postroll (no ads)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee926(){var _a3,player,nextAsset,firstTrackEnded,nextActivated;return _regenerator().w(function(_context926){while(1)switch(_context926.n){case 0:player=suite.player;nextAsset=vinylTestAssets.hls.live_static_video_audio_60s_4s;player.load({type:"hls",uri:EMPTY_BREAKS_ASSET},{type:"hls",uri:nextAsset});_context926.n=1;return poll(function(){var _a4,_b;return((_b=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:firstTrackEnded=nextEventAsPromise(player,"trackEnded",{filter:function filter(e){return e.track.uri===EMPTY_BREAKS_ASSET},timeout:40,timeoutMessage:"trackEnded not received for the first track"});nextActivated=nextEventAsPromise(player,"trackActivated",{filter:function filter(e){return e.track.uri===nextAsset},timeout:40,timeoutMessage:"the next queued track was not activated"});_context926.n=2;return player.play()["catch"](noop);case 2:_context926.n=3;return player.seekTo(Math.max(0,player.duration-1.5),1)["catch"](function(){return void 0});case 3:_context926.n=4;return firstTrackEnded;case 4:_context926.n=5;return nextActivated;case 5:expect((_a3=player.activeTrack)==null?void 0:_a3.uri).withContext("advanced to the next queued track").toBe(nextAsset);expect(player.currentAd).withContext("no ad played for the empty break").toBeNull();case 6:return _context926.a(2)}},_callee926)})));it("does not replay a postroll after it finishes naturally",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee927(){var _a3,player,postrollEntries,sub,contentDuration,replayed,_t138,_t139,_t140;return _regenerator().w(function(_context927){while(1)switch(_context927.p=_context927.n){case 0:player=suite.player;postrollEntries=[];sub=player.on("adBreakEntered",function(e){if(e.adBreak.placement==="postroll"){postrollEntries.push(e.adBreak.id)}});_context927.p=1;player.load({type:"hls",uri:"integ-postroll-replay",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"postroll-1",startTime:0,duration:4,// Short ad so the break ends quickly on its own.
2309
+ assetList:[{uri:AD_ASSET,duration:3}],cue:"POST"}])});_context927.n=2;return poll(function(){var _a4,_b;return((_b=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 2:_context927.n=3;return player.play()["catch"](noop);case 3:contentDuration=player.duration;_context927.n=4;return player.seekTo(Math.max(0,contentDuration-1.5),1)["catch"](function(){return void 0});case 4:_t138=expect;_context927.n=5;return poll(function(){return player.currentAd!=null},{timeout:40});case 5:_t138(_context927.v).withContext("postroll ad started").toBeTrue();expect((_a3=player.currentAdBreak)==null?void 0:_a3.placement).toBe("postroll");_t139=expect;_context927.n=6;return poll(function(){return player.currentAd==null},{timeout:40});case 6:_t139(_context927.v).withContext("postroll ad finished").toBeTrue();_t140=expect;_context927.n=7;return poll(function(){var _a4;return((_a4=player.activeTrack)==null?void 0:_a4.uri)==="integ-postroll-replay"},{timeout:20});case 7:_t140(_context927.v).withContext("content resumed after postroll").toBeTrue();_context927.n=8;return player.seekTo(Math.max(0,player.duration-1.5),1)["catch"](function(){return void 0});case 8:_context927.n=9;return player.play()["catch"](noop);case 9:_context927.n=10;return poll(function(){return postrollEntries.length>1},{timeout:20});case 10:replayed=_context927.v;expect(replayed).withContext("postroll replayed").toBeFalse();expect(player.currentAdBreak).toBeNull();expect(postrollEntries).toEqual(["postroll-1"]);case 11:_context927.p=11;sub();return _context927.f(11);case 12:return _context927.a(2)}},_callee927,null,[[1,,11,12]])})));it("disposes the ad track when new content is loaded mid-ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee928(){var player,_t141,_t142;return _regenerator().w(function(_context928){while(1)switch(_context928.n){case 0:_context928.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context928.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t141=expect;_context928.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t141(_context928.v).withContext("player.currentAd != null").toBeTrue();player.load({type:"hls",uri:CONTENT_ASSET});expect(player.currentAd).toBeNull();expect(player.currentAdBreak).toBeNull();_context928.n=4;return player.play();case 4:_t142=expect;_context928.n=5;return poll(function(){var _a3;return((_a3=player.activeTrack)==null?void 0:_a3.uri)===CONTENT_ASSET},{timeout:15});case 5:_t142(_context928.v).toBeTrue();case 6:return _context928.a(2)}},_callee928)})));it("plays a reused-id ad after loading a different track (via load)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee929(){var _a3,_b,_c,player,_t143,_t144,_t145,_t146;return _regenerator().w(function(_context929){while(1)switch(_context929.n){case 0:player=suite.player;player.load({type:"hls",uri:"track-a",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"1",startTime:MIDROLL_TIME,duration:6,assetUri:AD_ASSET}])});_context929.n=1;return nextEventAsPromise(player,"currentTrackAdsChange",{timeout:15});case 1:expect((_b=(_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0).withContext("adBreaks length").toBeGreaterThan(0);_context929.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t143=expect;_context929.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t143(_context929.v).withContext("player.currentAd != null").toBeTrue();player.skipAd();_t144=expect;_context929.n=4;return poll(function(){return player.currentAd==null},{timeout:30});case 4:_t144(_context929.v).withContext("player.currentAd == null").toBeTrue();player.load({type:"hls",uri:"track-b",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"1",startTime:MIDROLL_TIME,duration:6,assetUri:AD_ASSET}])});_t145=expect;_context929.n=5;return poll(function(){var _a4,_b2;return((_b2=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b2:0)>0},{timeout:15});case 5:_t145(_context929.v).withContext("(player.currentTrackAds?.adBreaks.length ?? 0) > 0").toBeTrue();_context929.n=6;return playThenSeek(MIDROLL_TIME+1);case 6:_t146=expect;_context929.n=7;return poll(function(){return player.currentAd!=null},{timeout:30});case 7:_t146(_context929.v).withContext("player.currentAd != null").toBeTrue();expect((_c=player.currentAdBreak)==null?void 0:_c.id).toBe("1");case 8:return _context929.a(2)}},_callee929)})));it("plays a reused-id ad after advancing the queue (via next)",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee930(){var _a3,player,_t147,_t148,_t149,_t150,_t151;return _regenerator().w(function(_context930){while(1)switch(_context930.n){case 0:player=suite.player;player.load({type:"hls",uri:"queue-a",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"1",startTime:MIDROLL_TIME,duration:6,assetUri:AD_ASSET}])},{type:"hls",uri:"queue-b",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"1",startTime:MIDROLL_TIME,duration:6,assetUri:AD_ASSET}])});_context930.n=1;return poll(function(){var _a4,_b;return((_b=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 1:_context930.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t147=expect;_context930.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t147(_context930.v).withContext("player.currentAd != null").toBeTrue();player.skipAd();_t148=expect;_context930.n=4;return poll(function(){return player.currentAd==null},{timeout:30});case 4:_t148(_context930.v).withContext("player.currentAd == null").toBeTrue();player.next();_t149=expect;_context930.n=5;return poll(function(){var _a4;return((_a4=player.activeTrack)==null?void 0:_a4.uri)==="queue-b"},{timeout:15});case 5:_t149(_context930.v).toBeTrue();_t150=expect;_context930.n=6;return poll(function(){var _a4,_b;return((_b=(_a4=player.currentTrackAds)==null?void 0:_a4.adBreaks.length)!=null?_b:0)>0},{timeout:15});case 6:_t150(_context930.v).withContext("(player.currentTrackAds?.adBreaks.length ?? 0) > 0").toBeTrue();expect(player.currentAdBreak).toBeNull();_context930.n=7;return playThenSeek(MIDROLL_TIME+1);case 7:_t151=expect;_context930.n=8;return poll(function(){return player.currentAdBreak!=null},{timeout:30});case 8:_t151(_context930.v).withContext("player.currentAdBreak != null").toBeTrue();expect((_a3=player.currentAdBreak)==null?void 0:_a3.id).toBe("1");case 9:return _context930.a(2)}},_callee930)})));it("recovers content playback when a hard reset fires after an ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee931(){var player,_t152,_t153,_t154,_t155;return _regenerator().w(function(_context931){while(1)switch(_context931.n){case 0:_context931.n=1;return loadAndAwaitAdBreaks();case 1:player=suite.player;_context931.n=2;return playThenSeek(MIDROLL_TIME+1);case 2:_t152=expect;_context931.n=3;return poll(function(){return player.currentAd!=null},{timeout:30});case 3:_t152(_context931.v).withContext("player.currentAd != null").toBeTrue();player.skipAd();_t153=expect;_context931.n=4;return poll(function(){return player.currentAd==null},{timeout:30});case 4:_t153(_context931.v).withContext("player.currentAd == null").toBeTrue();_t154=expect;_context931.n=5;return poll(function(){return!player.paused&&player.currentTime>0},{timeout:20});case 5:_t154(_context931.v).toBeTrue();player.reset(/* hard */true);expect(player.currentAdBreak).toBeNull();expect(player.currentAd).toBeNull();_t155=expect;_context931.n=6;return poll(function(){return!player.paused&&player.currentTime>0},{timeout:30});case 6:_t155(_context931.v).toBeTrue();case 7:return _context931.a(2)}},_callee931)})));it("does not leave a stuck caption track after an ad",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee932(){var player,track2,showingWithCues,_t156,_t157,_t158,_t159;return _regenerator().w(function(_context932){while(1)switch(_context932.n){case 0:player=suite.player;_context932.n=1;return loadAndAwaitAdBreaks();case 1:_context932.n=2;return poll(function(){return player.textTracks.length>0},{timeout:15});case 2:track2=player.textTracks[0];player.configure({text:{enabled:"on",selection:{id:track2.id}}});showingWithCues=function showingWithCues(){var dom=mediaRef.value.textTracks;return Array.from({length:dom.length},function(_,i){return dom[i]}).filter(function(t){var _a3,_b;return t.mode==="showing"&&((_b=(_a3=t.cues)==null?void 0:_a3.length)!=null?_b:0)>0})};_t156=expect;_context932.n=3;return poll(function(){return showingWithCues().length>0},{timeout:15});case 3:_t156(_context932.v).withContext("showingWithCues().length > 0").toBeTrue();_context932.n=4;return playThenSeek(MIDROLL_TIME+1);case 4:_t157=expect;_context932.n=5;return poll(function(){return player.currentAd!=null},{timeout:30});case 5:_t157(_context932.v).withContext("player.currentAd != null").toBeTrue();player.skipAd();_t158=expect;_context932.n=6;return poll(function(){return player.currentAd==null},{timeout:30});case 6:_t158(_context932.v).withContext("player.currentAd == null").toBeTrue();_t159=expect;_context932.n=7;return poll(function(){return showingWithCues().length>0},{timeout:20});case 7:_t159(_context932.v).withContext("showingWithCues().length > 0").toBeTrue();expect(showingWithCues().length).toBe(1);case 8:return _context932.a(2)}},_callee932)})))});describe("hls ad interstitials integ (ad failure recovery)",function(){var suite=createVinylSuite({adController:{adLoadTimeout:3}},{timeout:60,failOnError:false});beforeEach(function(){if(!supportsMse())pending("MSE not supported")});it("recovers to content when a preroll ad never loads",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee937(){var player,enteredPlacements,sub,adErrored,contentPlaying,midrollEntered,_t161;return _regenerator().w(function(_context937){while(1)switch(_context937.p=_context937.n){case 0:player=suite.player;enteredPlacements=[];sub=player.on("adBreakEntered",function(e){return enteredPlacements.push(e.adBreak.placement)});_context937.p=1;adErrored=nextEventAsPromise(player,"adError",{timeout:30});contentPlaying=nextEventAsPromise(player,"playing",{timeout:40});midrollEntered=nextEventAsPromise(player,"adBreakEntered",{filter:function filter(e){return e.adBreak.placement==="midroll"},timeout:40});player.load({type:"hls",uri:"integ-adfail",manifestProvider:injectingManifestProvider(CONTENT_ASSET,[{id:"preroll-fail",startTime:0,duration:6,assetUri:"this-ad-does-not-exist.m3u8",cue:"PRE"},// A playable midroll firing proves the resume gate cleared.
2310
+ {id:"mid-ok",startTime:3,duration:6,assetUri:AD_ASSET}])});_context937.n=2;return player.play()["catch"](function(){return void 0});case 2:_context937.n=3;return adErrored;case 3:expect(player.currentAd).withContext("failed ad cleared").toBeNull();_context937.n=4;return contentPlaying;case 4:expect(player.currentAdBreak).withContext("break completed, resume gate not stuck").toBeNull();_t161=expect;_context937.n=5;return poll(function(){return player.currentTime>0},{timeout:20});case 5:_t161(_context937.v).withContext("content is playing, not stuck").toBeTrue();_context937.n=6;return midrollEntered;case 6:expect(enteredPlacements).toEqual(["preroll","midroll"]);case 7:_context937.p=7;sub();return _context937.f(7);case 8:return _context937.a(2)}},_callee937,null,[[1,,7,8]])})))});// test/integ/track/hls/hls.test.ts
2311
+ describe("hls integ",function(){var playlist=[{type:"hls",uri:vinylTestAssets.hls.live_static_video_60s_2s_mpegts},{type:"hls",uri:vinylTestAssets.hls.live_static_video_audio_60s_4s_mpegts},{type:"hls",uri:vinylTestAssets.hls.live_static_aac_60s_mpegts},{type:"hls",uri:vinylTestAssets.hls.live_static_aac_opus_flac_60s}];var suite=createVinylSuite({},{timeout:180});beforeEach(function(){if(!supportsMse())pending("MSE not supported")});it("plays",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee938(){return _regenerator().w(function(_context938){while(1)switch(_context938.n){case 0:_context938.n=1;return expectPlaylistPlays(suite.player,playlist);case 1:return _context938.a(2)}},_callee938)})))});// test/integ/track/hls/preferredAudioLanguage.test.ts
2312
+ describe("preferredAudioLanguage HLS integ",function(){var ASSET=vinylTestAssets.hls.vinyl_ad_breaks_av__single_uri_pre_mid_post;var suite=createVinylSuite({},{timeout:180,failOnError:false});beforeEach(function(){if(!supportsMse())pending("MSE not supported")});function audioLangs(player){var _a3;return((_a3=player.qualities)!=null?_a3:[]).filter(function(q){return q.contentType==="audio"}).map(function(q){return q.lang})}function audioIsOnly(player,lang){var langs=audioLangs(player);return langs.length>0&&langs.every(function(l){return l!=null&&l.toLowerCase().startsWith(lang)})}function seekTolerant(_x134){return _seekTolerant2.apply(this,arguments)}function _seekTolerant2(){_seekTolerant2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee942(time){var _t167;return _regenerator().w(function(_context942){while(1)switch(_context942.p=_context942.n){case 0:_context942.p=0;_context942.n=1;return suite.player.seekTo(time,0.5);case 1:_context942.n=3;break;case 2:_context942.p=2;_t167=_context942.v;case 3:return _context942.a(2)}},_callee942,null,[[0,2]])}));return _seekTolerant2.apply(this,arguments)}function loadAndPlay(_x135,_x136){return _loadAndPlay.apply(this,arguments)}function _loadAndPlay(){_loadAndPlay=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee943(preferredAudioLanguage,lang){var player,_t168,_t169;return _regenerator().w(function(_context943){while(1)switch(_context943.n){case 0:player=suite.player;player.configure({audio:{selection:{language:preferredAudioLanguage}}});player.load({type:"hls",uri:ASSET});_context943.n=1;return player.play()["catch"](function(){return void 0});case 1:_t168=expect;_context943.n=2;return poll(function(){var _a3,_b;return((_b=(_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.length)!=null?_b:0)>0},{timeout:30});case 2:_t168(_context943.v).withContext("ad breaks discovered").toBeTrue();_t169=expect;_context943.n=3;return poll(function(){return audioIsOnly(player,lang)},{timeout:30});case 3:_t169(_context943.v).withContext("content audio filtered to '".concat(lang,"'")).toBeTrue();case 4:return _context943.a(2)}},_callee943)}));return _loadAndPlay.apply(this,arguments)}function midrollStart(player){var _a3;var midroll=(_a3=player.currentTrackAds)==null?void 0:_a3.adBreaks.find(function(b){return b.placement==="midroll"});return midroll.startTime}it("plays the preferred language for both content and ad audio",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee939(){var player,_t162,_t163;return _regenerator().w(function(_context939){while(1)switch(_context939.n){case 0:player=suite.player;_context939.n=1;return loadAndPlay("ja","ja");case 1:_context939.n=2;return seekTolerant(midrollStart(player)+1);case 2:_t162=expect;_context939.n=3;return poll(function(){return player.currentAd!=null},{timeout:40});case 3:_t162(_context939.v).withContext("ad playing").toBeTrue();_t163=expect;_context939.n=4;return poll(function(){return audioIsOnly(player,"ja")},{timeout:30});case 4:_t163(_context939.v).withContext("ad audio filtered to 'ja'").toBeTrue();case 5:return _context939.a(2)}},_callee939)})));it("immediately reloads and switches language when the preference changes",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee940(){var player,resumeBefore,_t164,_t165,_t166;return _regenerator().w(function(_context940){while(1)switch(_context940.n){case 0:player=suite.player;_context940.n=1;return loadAndPlay("ja","ja");case 1:_t164=expect;_context940.n=2;return poll(function(){return player.currentTime>1},{timeout:30});case 2:_t164(_context940.v).withContext("content advanced").toBeTrue();resumeBefore=player.currentTime;player.configure({audio:{selection:{language:"de"}}});_t165=expect;_context940.n=3;return poll(function(){return audioIsOnly(player,"de")},{timeout:30});case 3:_t165(_context940.v).withContext("content audio switched to 'de'").toBeTrue();_t166=expect;_context940.n=4;return poll(function(){return!player.paused&&player.currentTime>=resumeBefore},{timeout:40});case 4:_t166(_context940.v).withContext("resumed playing at the prior playhead").toBeTrue();case 5:return _context940.a(2)}},_callee940)})));it("accepts an ordered array preference, using a later entry when earlier ones are absent",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee941(){var player;return _regenerator().w(function(_context941){while(1)switch(_context941.n){case 0:player=suite.player;_context941.n=1;return loadAndPlay(["ko","de"],"de");case 1:expect(audioIsOnly(player,"de")).withContext("content audio resolved to 'de' from the array").toBeTrue();case 2:return _context941.a(2)}},_callee941)})))});// test/integ/track/maxResolution.test.ts
2313
+ describe("max resolution integ",function(){var suite=createVinylSuite();it("applies a lowered max resolution to the playing quality without waiting for the buffer to drain",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee944(){var _a3,player,startedHigh,cappedPromptly;return _regenerator().w(function(_context944){while(1)switch(_context944.n){case 0:player=suite.player;player.configure({abr:__spreadProps(__spreadValues({},player.options.abr),{strategy:"highest"/* HIGHEST */})});player.load({type:"hls",uri:vinylTestAssets.hls.vinyl_ad_breaks_av});_context944.n=1;return player.play();case 1:_context944.n=2;return poll(function(){var _a4,_b;return((_b=(_a4=player.getPlaybackQuality("video"))==null?void 0:_a4.height)!=null?_b:0)>360},{timeout:30});case 2:startedHigh=_context944.v;expect(startedHigh).withContext("started playing above 360p").toBeTrue();player.configure({abr:__spreadProps(__spreadValues({},player.options.abr),{strategy:"best"/* BEST */,maxHeight:360})});_context944.n=3;return poll(function(){var _a4,_b;return((_b=(_a4=player.getPlaybackQuality("video"))==null?void 0:_a4.height)!=null?_b:Infinity)<=360},{timeout:10});case 3:cappedPromptly=_context944.v;expect(cappedPromptly).withContext("playing quality dropped to <=360p promptly").toBeTrue();expect((_a3=player.getPlaybackQuality("video"))==null?void 0:_a3.height).toBeLessThanOrEqual(360);case 4:return _context944.a(2)}},_callee944)})))});// test/integ/track/progressive.test.ts
2314
+ describe("progressive integ",function(){var suite=createVinylSuite();it("plays",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee945(){var player;return _regenerator().w(function(_context945){while(1)switch(_context945.n){case 0:player=suite.player;player.load({type:"src",uri:vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps});_context945.n=1;return player.play();case 1:_context945.n=2;return onDuration(player);case 2:_context945.n=3;return expectTrackPlaysUntil(player,player.currentTime+3);case 3:return _context945.a(2)}},_callee945)})));it("provides the extra property from load config for active track",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee946(){var _a3,player,firstActivated,secondActivated,track2;return _regenerator().w(function(_context946){while(1)switch(_context946.n){case 0:player=suite.player;firstActivated=nextEventAsPromise(player,"trackActivated",{timeout:30,timeoutMessage:"trackActivated timed out in {time}s"});player.load({type:"src",uri:vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps,config:{extra:1}});player.preload({type:"src",uri:vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps,config:{extra:2}});_context946.n=1;return firstActivated;case 1:expect((_a3=player.activeTrack)==null?void 0:_a3.extra).toBe(1);secondActivated=nextEventAsPromise(player,"trackActivated",{timeout:30,timeoutMessage:"trackActivated timed out in {time}s"});player.load({type:"src",uri:vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps,config:{extra:2}});_context946.n=2;return secondActivated;case 2:track2=player.activeTrack;expect(track2==null?void 0:track2.extra).toBe(2);player.unload();expect(track2==null?void 0:track2.extra).toBeNull();case 3:return _context946.a(2)}},_callee946)})))});// test/integ/track/textTracks.test.ts
2315
+ describe("text track integ",function(){var dashPlaylist=[{type:"dash",uri:vinylTestAssets.dash.live_static_video_audio_60s_2s_segmentTemplate}];var hlsPlaylist=[{type:"hls",uri:vinylTestAssets.hls.live_static_video_audio_60s_2s}];var suite=createVinylSuite({},{timeout:180});beforeEach(function(){if(!supportsMse())pending("MSE not supported")});function loadAndAwaitTextTracks(_x137){return _loadAndAwaitTextTracks.apply(this,arguments)}function _loadAndAwaitTextTracks(){_loadAndAwaitTextTracks=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee952(playlist){var _suite$player2;var player,deadline;return _regenerator().w(function(_context953){while(1)switch(_context953.n){case 0:(_suite$player2=suite.player).load.apply(_suite$player2,_toConsumableArray(playlist));player=suite.player;deadline=Date.now()+1e4;case 1:if(!(player.textTracks.length===0&&Date.now()<deadline)){_context953.n=3;break}_context953.n=2;return new Promise(function(r){return setTimeout(r,50)});case 2:_context953.n=1;break;case 3:return _context953.a(2)}},_callee952)}));return _loadAndAwaitTextTracks.apply(this,arguments)}function selectTextById(id){suite.player.configure({text:{enabled:"on",selection:{id:id}}})}it("DASH discovers sidecar text tracks",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee947(){var tracks,langs;return _regenerator().w(function(_context947){while(1)switch(_context947.n){case 0:_context947.n=1;return loadAndAwaitTextTracks(dashPlaylist);case 1:tracks=suite.player.textTracks;expect(tracks.length).toBeGreaterThan(0);langs=tracks.map(function(t){return t.language});expect(langs).toContain("en");case 2:return _context947.a(2)}},_callee947)})));it("DASH activates a text track and exposes cues",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee948(){var _a3,tracks,target,deadline,found,_loop23;return _regenerator().w(function(_context949){while(1)switch(_context949.n){case 0:_context949.n=1;return loadAndAwaitTextTracks(dashPlaylist);case 1:tracks=suite.player.textTracks;if(tracks.length===0)pending("no text tracks discovered");target=(_a3=tracks.find(function(t){return t.language==="en"}))!=null?_a3:tracks[0];selectTextById(target.id);deadline=Date.now()+1e4;found=false;_loop23=/*#__PURE__*/_regenerator().m(function _loop23(){var dom;return _regenerator().w(function(_context948){while(1)switch(_context948.n){case 0:dom=mediaRef.value.textTracks;found=Array.from({length:dom.length},function(_,i){return dom[i]}).some(function(t){var _a4,_b;return t.label===target.label&&((_b=(_a4=t.cues)==null?void 0:_a4.length)!=null?_b:0)>0});if(found){_context948.n=1;break}_context948.n=1;return new Promise(function(r){return setTimeout(r,50)});case 1:return _context948.a(2)}},_loop23)});case 2:if(!(!found&&Date.now()<deadline)){_context949.n=4;break}return _context949.d(_regeneratorValues(_loop23()),3);case 3:_context949.n=2;break;case 4:expect(found).withContext("No cues found on the active text track (".concat(target.label,")")).toBeTrue();case 5:return _context949.a(2)}},_callee948)})));it("HLS discovers sidecar text tracks",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee949(){return _regenerator().w(function(_context950){while(1)switch(_context950.n){case 0:_context950.n=1;return loadAndAwaitTextTracks(hlsPlaylist);case 1:expect(suite.player.textTracks.length).toBeGreaterThan(0);case 2:return _context950.a(2)}},_callee949)})));it("clearing the active text track resets the active selection",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee950(){var tracks;return _regenerator().w(function(_context951){while(1)switch(_context951.n){case 0:_context951.n=1;return loadAndAwaitTextTracks(dashPlaylist);case 1:tracks=suite.player.textTracks;if(tracks.length===0)pending("no text tracks discovered");selectTextById(tracks[0].id);expect(suite.player.activeTextTrack).not.toBeNull();suite.player.configure({text:{enabled:"off"}});expect(suite.player.activeTextTrack).toBeNull();case 2:return _context951.a(2)}},_callee950)})));function awaitCuesShowing(){return _awaitCuesShowing.apply(this,arguments)}function _awaitCuesShowing(){_awaitCuesShowing=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee953(){var deadline;return _regenerator().w(function(_context954){while(1)switch(_context954.n){case 0:deadline=Date.now()+1e4;case 1:if(!(Date.now()<deadline)){_context954.n=4;break}if(!(showingWithCues()>0)){_context954.n=2;break}return _context954.a(2,true);case 2:_context954.n=3;return new Promise(function(r){return setTimeout(r,50)});case 3:_context954.n=1;break;case 4:return _context954.a(2,false)}},_callee953)}));return _awaitCuesShowing.apply(this,arguments)}function showingWithCues(){var _a3,_b;var dom=mediaRef.value.textTracks;var n=0;for(var i=0;i<dom.length;i++){if(dom[i].mode==="showing"&&((_b=(_a3=dom[i].cues)==null?void 0:_a3.length)!=null?_b:0)>0)n++}return n}it("cycling languages never leaves more than one caption track showing",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee951(){var tracks,_i50,_arr1,track2;return _regenerator().w(function(_context952){while(1)switch(_context952.n){case 0:_context952.n=1;return loadAndAwaitTextTracks(dashPlaylist);case 1:tracks=suite.player.textTracks;if(tracks.length<2)pending("need at least two text tracks");_i50=0,_arr1=[].concat(_toConsumableArray(tracks),_toConsumableArray(tracks));case 2:if(!(_i50<_arr1.length)){_context952.n=5;break}track2=_arr1[_i50];selectTextById(track2.id);_context952.n=3;return awaitCuesShowing();case 3:expect(showingWithCues()).withContext("more than one caption track rendering after selecting ".concat(track2.language)).toBeLessThanOrEqual(1);case 4:_i50++;_context952.n=2;break;case 5:return _context952.a(2)}},_callee951)})))});// test/integ/track/TrackController.test.ts
2316
+ describe("trackController integ",function(){function createLoadOptionsList(count){var loadOptions=[];for(var i=0;i<count;i++){loadOptions.push({type:"src",uri:"".concat(vinylTestAssets.prog.libmp3lame_60s_2ch_16bit_44100Hz_48kbps,"?track=").concat(createShortUid(),"_").concat(i)})}return loadOptions}describe("load",function(){var suite=createVinylSuite({trackController:{preloadCapacity:1,trackPrefetchCount:3}});it("prefetches trackPrefetchCount tracks ahead",function(){var tracks=createLoadOptionsList(7);var player=suite.player;function expectCached(indices){for(var i=0;i<6;i++){var expected=indices.includes(i);expect(player.isTrackCached(tracks[i].uri)).withContext("track ".concat(i)).toBe(expected)}}player.load.apply(player,_toConsumableArray(tracks));expectCached([0,1,2,3]);player.next();expectCached([0,1,2,3,4]);player.next();expectCached([1,2,3,4,5]);player.next();expectCached([2,3,4,5,6]);player.next();expectCached([2,3,4,5,6])});it("moves to the next track on ended",/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee954(){var _a3,_b,_c,count,tracks,duration,player,firstActivated,i,nextTrackChange,nextQueueEnded;return _regenerator().w(function(_context955){while(1)switch(_context955.n){case 0:count=3;tracks=createLoadOptionsList(count);duration=60;player=suite.player;firstActivated=nextEventAsPromise(player,"trackActivated",{timeout:30,timeoutMessage:"trackActivated timed out in {time}s"});player.load.apply(player,_toConsumableArray(tracks));_context955.n=1;return firstActivated;case 1:expect((_a3=player.activeTrack)==null?void 0:_a3.uri).toEqual(tracks[0].uri);_context955.n=2;return player.play();case 2:i=0;case 3:if(!(i<count-1)){_context955.n=7;break}nextTrackChange=nextEventAsPromise(player,"trackActivated",{timeout:30,timeoutMessage:"trackActivated timed out in {time}s"});_context955.n=4;return player.seekTo(duration);case 4:_context955.n=5;return nextTrackChange;case 5:expect((_b=player.activeTrack)==null?void 0:_b.uri).toEqual(tracks[i+1].uri);case 6:i++;_context955.n=3;break;case 7:nextQueueEnded=nextEventAsPromise(player,"queueEnded",{timeout:30,timeoutMessage:"queueEnded timed out in 10s"});_context955.n=8;return player.seekTo(duration);case 8:_context955.n=9;return nextQueueEnded;case 9:expect((_c=player.activeTrack)==null?void 0:_c.uri).toEqual(tracks[count-1].uri);case 10:return _context955.a(2)}},_callee954)})))})})})();