@skax/hls-parse 0.0.1-beta.5 → 0.0.1-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -28,6 +28,10 @@ pnpm install @skax/hls-parse
28
28
  yarn add @skax/hls-parse
29
29
  ```
30
30
 
31
+ ## Demo
32
+
33
+ [https://freeshineit.github.io/hls-parse/media/](https://freeshineit.github.io/hls-parse/media/)
34
+
31
35
  ## Quick Start
32
36
 
33
37
  ```typescript
package/dist/index.esm.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*
2
- * @skax/hls-parse v0.0.1-beta.5
3
- * Copyright (c) 2026-05-25 ShineShao <xiaoshaoqq@gmail.com>
2
+ * @skax/hls-parse v0.0.1-beta.7
3
+ * Copyright (c) 2026-05-27 ShineShao <xiaoshaoqq@gmail.com>
4
4
  * Released under the MIT License.
5
5
  */
6
- function _array_like_to_array$1(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _construct(Parent,args,Class){return _construct=_is_native_reflect_construct()?Reflect.construct:function(Parent,args,Class){var a=[null];a.push.apply(a,args);var instance=new(Function.bind.apply(Parent,a));return Class&&_set_prototype_of(instance,Class.prototype),instance},_construct.apply(null,arguments)}function _get_prototype_of(o){return _get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},_get_prototype_of(o)}function _set_prototype_of(o,p){return _set_prototype_of=Object.setPrototypeOf||function(o,p){return o.__proto__=p,o},_set_prototype_of(o,p)}function _wrap_native_super(Class){var _cache="function"==typeof Map?new Map:void 0;return _wrap_native_super=function(Class){if(null===Class||(fn=Class,-1===Function.toString.call(fn).indexOf("[native code]")))return Class;var fn;if("function"!=typeof Class)throw new TypeError("Super expression must either be null or a function");if(void 0!==_cache){if(_cache.has(Class))return _cache.get(Class);_cache.set(Class,Wrapper)}function Wrapper(){return _construct(Class,arguments,_get_prototype_of(this).constructor)}return Wrapper.prototype=Object.create(Class.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),_set_prototype_of(Wrapper,Class)},_wrap_native_super(Class)}function _is_native_reflect_construct(){try{var result=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(_){}return(_is_native_reflect_construct=function(){return!!result})()}function _create_for_of_iterator_helper_loose$1(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=function(o,minLen){if(o){if("string"==typeof o)return _array_like_to_array$1(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array$1(o,minLen):void 0}}(o))||allowArrayLike){it&&(o=it);var i=0;return function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var InvalidPlaylistError=function(Error1){function InvalidPlaylistError(message){var _this;return(_this=Error1.call(this,message)||this).name="InvalidPlaylistError",_this}return function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function");subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:!0,configurable:!0}}),superClass&&_set_prototype_of(subClass,superClass)}(InvalidPlaylistError,Error1),InvalidPlaylistError}(_wrap_native_super(Error));function trim(str,char){if(void 0!==str){for(var start=0,end=str.length-1;start<=end&&str[start]===char;)start++;for(;end>=start&&str[end]===char;)end--;return str.slice(start,end+1)}}function splitAt(str,delimiter){var index=str.indexOf(delimiter);return-1===index?[str,""]:[str.slice(0,index),str.slice(index+1)]}function toNumber(str){return Number(str)}function hexToByteSequence(hex){var h=hex;(h.startsWith("0x")||h.startsWith("0X"))&&(h=h.slice(2)),h.length%2!=0&&(h="0"+h);for(var bytes=new Uint8Array(h.length/2),i=0;i<bytes.length;i++)bytes[i]=parseInt(h.slice(2*i,2*i+2),16);return bytes}function camelify(str){return str.toLowerCase().replace(/[-_](.)/g,function(_,c){return c.toUpperCase()})}function resolveUrl(base,relative){if(!base)return relative;if(/^[a-zA-Z][a-zA-Z0-9+\-.]*:/.test(relative))return relative;try{var baseUrl=new URL(base);return relative.startsWith("//")?baseUrl.protocol+relative:new URL(relative,baseUrl).href}catch(unused){if(relative.startsWith("/")){var match=base.match(/^[a-zA-Z][a-zA-Z0-9+\-.]*:\/\/[^/]+/);if(match)return match[0]+relative}for(var _step,result=[],_iterator=_create_for_of_iterator_helper_loose$1((base.replace(/\/[^/]*$/,"/")+relative).split("/"));!(_step=_iterator()).done;){var part=_step.value;".."===part?result.pop():"."!==part&&result.push(part)}return result.join("/")}}var constants=Object.freeze({__proto__:null,EXTINF:"EXTINF",EXTM3U:"EXTM3U",EXT_OATCLS_SCTE35:"EXT-OATCLS-SCTE35",EXT_X_ASSET:"EXT-X-ASSET",EXT_X_BITRATE:"EXT-X-BITRATE",EXT_X_BYTERANGE:"EXT-X-BYTERANGE",EXT_X_CONTENT_STEERING:"EXT-X-CONTENT-STEERING",EXT_X_CUE:"EXT-X-CUE",EXT_X_CUE_IN:"EXT-X-CUE-IN",EXT_X_CUE_OUT:"EXT-X-CUE-OUT",EXT_X_CUE_OUT_CONT:"EXT-X-CUE-OUT-CONT",EXT_X_DATERANGE:"EXT-X-DATERANGE",EXT_X_DEFINE:"EXT-X-DEFINE",EXT_X_DISCONTINUITY:"EXT-X-DISCONTINUITY",EXT_X_DISCONTINUITY_SEQUENCE:"EXT-X-DISCONTINUITY-SEQUENCE",EXT_X_ENDLIST:"EXT-X-ENDLIST",EXT_X_GAP:"EXT-X-GAP",EXT_X_INDEPENDENT_SEGMENTS:"EXT-X-INDEPENDENT-SEGMENTS",EXT_X_I_FRAMES_ONLY:"EXT-X-I-FRAMES-ONLY",EXT_X_I_FRAME_STREAM_INF:"EXT-X-I-FRAME-STREAM-INF",EXT_X_KEY:"EXT-X-KEY",EXT_X_MAP:"EXT-X-MAP",EXT_X_MEDIA:"EXT-X-MEDIA",EXT_X_MEDIA_SEQUENCE:"EXT-X-MEDIA-SEQUENCE",EXT_X_PART:"EXT-X-PART",EXT_X_PART_INF:"EXT-X-PART-INF",EXT_X_PLAYLIST_TYPE:"EXT-X-PLAYLIST-TYPE",EXT_X_PREFETCH:"EXT-X-PREFETCH",EXT_X_PREFETCH_DISCONTINUITY:"EXT-X-PREFETCH-DISCONTINUITY",EXT_X_PRELOAD_HINT:"EXT-X-PRELOAD-HINT",EXT_X_PROGRAM_DATE_TIME:"EXT-X-PROGRAM-DATE-TIME",EXT_X_RENDITION_REPORT:"EXT-X-RENDITION-REPORT",EXT_X_SCTE35:"EXT-X-SCTE35",EXT_X_SERVER_CONTROL:"EXT-X-SERVER-CONTROL",EXT_X_SESSION_DATA:"EXT-X-SESSION-DATA",EXT_X_SESSION_KEY:"EXT-X-SESSION-KEY",EXT_X_SKIP:"EXT-X-SKIP",EXT_X_START:"EXT-X-START",EXT_X_STREAM_INF:"EXT-X-STREAM-INF",EXT_X_TARGETDURATION:"EXT-X-TARGETDURATION",EXT_X_VERSION:"EXT-X-VERSION"});function _array_like_to_array(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _type_of(obj){return obj&&"undefined"!=typeof Symbol&&obj.constructor===Symbol?"symbol":typeof obj}function _create_for_of_iterator_helper_loose(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=function(o,minLen){if(o){if("string"==typeof o)return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array(o,minLen):void 0}}(o))||allowArrayLike){it&&(o=it);var i=0;return function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function parseEXTINF(param){var pair=splitAt(param,",");return{duration:toNumber(pair[0]),title:pair[1]?decodeURIComponent(encodeURIComponent(pair[1])):void 0}}function parseBYTERANGE(param){var pair=splitAt(param,"@");return{length:toNumber(pair[0]),offset:pair[1]?toNumber(pair[1]):-1}}function parseResolution(str){var pair=splitAt(str,"x");return{width:toNumber(pair[0]),height:toNumber(pair[1])}}function parseAllowedCpc(str){for(var _step,allowedCpcList=[],_iterator=_create_for_of_iterator_helper_loose(str.split(","));!(_step=_iterator()).done;){var _utils_splitAt=splitAt(_step.value,":"),format=_utils_splitAt[0],cpcText=_utils_splitAt[1];format&&cpcText&&allowedCpcList.push({format:format,cpcList:cpcText.split("/")})}return allowedCpcList}function parseIV(str){var iv=hexToByteSequence(str);return iv.length,iv}function parseUserAttribute(str){return str.startsWith('"')?trim(str,'"'):str.startsWith("0x")||str.startsWith("0X")?hexToByteSequence(str):toNumber(str)}function setCompatibleVersionOfKey(params,attributes){attributes.IV&&params.compatibleVersion<2&&(params.compatibleVersion=2),(attributes.KEYFORMAT||attributes.KEYFORMATVERSIONS)&&params.compatibleVersion<5&&(params.compatibleVersion=5)}function parseAttributeList(param){for(var _step,attributes={},_iterator=_create_for_of_iterator_helper_loose(function(str){for(var result=[],current="",inQuotes=!1,i=0;i<str.length;i++){var char=str[i];'"'===char?(inQuotes=!inQuotes,current+=char):","!==char||inQuotes?current+=char:(result.push(current),current="")}return current&&result.push(current),result}(param));!(_step=_iterator()).done;){var _utils_splitAt=splitAt(_step.value,"="),key=_utils_splitAt[0],value=_utils_splitAt[1],val=trim(value,'"');switch(key){case"URI":attributes[key]=val;break;case"START-DATE":case"END-DATE":attributes[key]=new Date(val);break;case"IV":attributes[key]=parseIV(val);break;case"BYTERANGE":attributes[key]=parseBYTERANGE(val);break;case"RESOLUTION":attributes[key]=parseResolution(val);break;case"ALLOWED-CPC":attributes[key]=parseAllowedCpc(val);break;case"END-ON-NEXT":case"DEFAULT":case"AUTOSELECT":case"FORCED":case"PRECISE":case"CAN-BLOCK-RELOAD":case"INDEPENDENT":case"GAP":attributes[key]="YES"===val;break;case"DURATION":case"PLANNED-DURATION":case"BANDWIDTH":case"AVERAGE-BANDWIDTH":case"FRAME-RATE":case"TIME-OFFSET":case"CAN-SKIP-UNTIL":case"HOLD-BACK":case"PART-HOLD-BACK":case"PART-TARGET":case"BYTERANGE-START":case"BYTERANGE-LENGTH":case"LAST-MSN":case"LAST-PART":case"SKIPPED-SEGMENTS":case"SCORE":case"PROGRAM-ID":attributes[key]=toNumber(val);break;default:key.startsWith("SCTE35-")?attributes[key]=hexToByteSequence(val):key.startsWith("X-")?attributes[key]=parseUserAttribute(value):attributes[key]=val}}return attributes}function parseTag(line,params){var _splitTag=function(line){var index=line.indexOf(":");return-1===index?[line.slice(1).trim(),null]:[line.slice(1,index).trim(),line.slice(index+1).trim()]}(line),name=_splitTag[0],param=_splitTag[1],category=function(tagName){switch(tagName){case"EXTM3U":case"EXT-X-VERSION":case"EXT-X-CONTENT-STEERING":return"Basic";case"EXTINF":case"EXT-X-BYTERANGE":case"EXT-X-DISCONTINUITY":case"EXT-X-PREFETCH-DISCONTINUITY":case"EXT-X-KEY":case"EXT-X-MAP":case"EXT-X-PROGRAM-DATE-TIME":case"EXT-X-DATERANGE":case"EXT-X-CUE-OUT":case"EXT-X-CUE-IN":case"EXT-X-CUE-OUT-CONT":case"EXT-X-CUE":case"EXT-OATCLS-SCTE35":case"EXT-X-ASSET":case"EXT-X-SCTE35":case"EXT-X-PART":case"EXT-X-PRELOAD-HINT":case"EXT-X-GAP":return"Segment";case"EXT-X-BITRATE":case"EXT-X-TARGETDURATION":case"EXT-X-MEDIA-SEQUENCE":case"EXT-X-DISCONTINUITY-SEQUENCE":case"EXT-X-ENDLIST":case"EXT-X-PLAYLIST-TYPE":case"EXT-X-I-FRAMES-ONLY":case"EXT-X-SERVER-CONTROL":case"EXT-X-PART-INF":case"EXT-X-PREFETCH":case"EXT-X-RENDITION-REPORT":case"EXT-X-SKIP":return"MediaPlaylist";case"EXT-X-MEDIA":case"EXT-X-STREAM-INF":case"EXT-X-I-FRAME-STREAM-INF":case"EXT-X-SESSION-DATA":case"EXT-X-SESSION-KEY":return"MasterPlaylist";case"EXT-X-INDEPENDENT-SEGMENTS":case"EXT-X-START":case"EXT-X-DEFINE":return"MediaorMasterPlaylist";default:return"Unknown"}}(name);if(function(category,params){if("Segment"===category||"MediaPlaylist"===category)return void 0===params.isMasterPlaylist?void(params.isMasterPlaylist=!1):void params.isMasterPlaylist;if("MasterPlaylist"===category){if(void 0===params.isMasterPlaylist)return void(params.isMasterPlaylist=!0);params.isMasterPlaylist}}(category,params),"Unknown"===category)return null;"MediaPlaylist"===category&&"EXT-X-RENDITION-REPORT"!==name&&"EXT-X-PREFETCH"!==name&&(params.hash[name],params.hash[name]=!0);var _parseTagParam=function(name,param){if(null===param)return[null,null];switch(name){case"EXTM3U":case"EXT-X-DISCONTINUITY":case"EXT-X-ENDLIST":case"EXT-X-I-FRAMES-ONLY":case"EXT-X-INDEPENDENT-SEGMENTS":case"EXT-X-CUE-IN":case"EXT-X-GAP":return[null,null];case"EXT-X-VERSION":case"EXT-X-TARGETDURATION":case"EXT-X-MEDIA-SEQUENCE":case"EXT-X-DISCONTINUITY-SEQUENCE":case"EXT-X-BITRATE":return[toNumber(param),null];case"EXT-X-CUE-OUT":return Number.isNaN(Number(param))?[null,parseAttributeList(param)]:[toNumber(param),null];case"EXT-X-KEY":case"EXT-X-MAP":case"EXT-X-DATERANGE":case"EXT-X-MEDIA":case"EXT-X-STREAM-INF":case"EXT-X-I-FRAME-STREAM-INF":case"EXT-X-SESSION-DATA":case"EXT-X-SESSION-KEY":case"EXT-X-START":case"EXT-X-SERVER-CONTROL":case"EXT-X-PART-INF":case"EXT-X-PART":case"EXT-X-PRELOAD-HINT":case"EXT-X-RENDITION-REPORT":case"EXT-X-SKIP":case"EXT-X-DEFINE":case"EXT-X-CONTENT-STEERING":return[null,parseAttributeList(param)];case"EXTINF":return[parseEXTINF(param),null];case"EXT-X-BYTERANGE":return[parseBYTERANGE(param),null];case"EXT-X-PROGRAM-DATE-TIME":return[new Date(param),null];default:return[param,null]}}(name,param);return{name:name,category:category,value:_parseTagParam[0],attributes:_parseTagParam[1]||{}}}function parseVariant(variantAttrs,uri,iFrameOnly,params,mediaGroups){for(var variant={uri:uri,bandwidth:variantAttrs.BANDWIDTH,averageBandwidth:variantAttrs["AVERAGE-BANDWIDTH"],score:variantAttrs.SCORE,codecs:variantAttrs.CODECS,resolution:variantAttrs.RESOLUTION,frameRate:variantAttrs["FRAME-RATE"],hdcpLevel:variantAttrs["HDCP-LEVEL"],allowedCpc:variantAttrs["ALLOWED-CPC"],videoRange:variantAttrs["VIDEO-RANGE"],stableVariantId:variantAttrs["STABLE-VARIANT-ID"],pathwayId:variantAttrs["PATHWAY-ID"]||variantAttrs["STABLE-PATHWAY-ID"],programId:variantAttrs["PROGRAM-ID"],isIFrameOnly:iFrameOnly},_i=0,_iter=["AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS"];_i<_iter.length;_i++){var type=_iter[_i],attrsGroupId=variantAttrs[type];if(attrsGroupId){var typeMap=mediaGroups.get(type);if(typeMap){var renditions=typeMap.get(attrsGroupId);if(renditions)for(var _step,_iterator=_create_for_of_iterator_helper_loose(renditions);!(_step=_iterator()).done;){addRenditionToList(variant,_step.value,type)}}}}return function(attrs,variant,params){for(var _loop=function(_i,_iter){var type=_iter[_i];if("CLOSED-CAPTIONS"===type&&"NONE"===attrs[type])params.isClosedCaptionsNone=!0,variant.closedCaptions=[];else if(attrs[type]){var key=camelify(type),renditions=variant[key]||[];renditions.length>0&&renditions.some(function(item){return item.groupId===attrs[type]})}},_i=0,_iter=["AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS"];_i<_iter.length;_i++)_loop(_i,_iter)}(variantAttrs,variant,params),variant}function addRenditionToList(variant,rendition,type){var key=camelify(type),renditions=variant[key];renditions||(renditions=[],variant[key]=renditions),renditions.push(rendition)}function parseMasterPlaylist(lines,params){for(var _step,_loop=function(){var _step_value=_step.value,index=_step_value[0],line=_step_value[1];if("string"==typeof line)return"continue";var name=line.name,value=line.value,attributes=line.attributes;if("EXT-X-VERSION"===name)playlist.version=value;else if("EXT-X-CONTENT-STEERING"===name)playlist.contentSteering={serverUri:attributes["SERVER-URI"],pathwayId:attributes["PATHWAY-ID"]};else if("EXT-X-STREAM-INF"===name){var uriLine=lines[index+1];"string"!=typeof uriLine||uriLine.startsWith("#");var variant=parseVariant(attributes,uriLine,!1,params,mediaGroups);"number"==typeof variant.score&&(variantIsScored=!0,variant.score),playlist.variants.push(variant)}else if("EXT-X-I-FRAME-STREAM-INF"===name){var variant1=parseVariant(attributes,attributes.URI,!0,params,mediaGroups);playlist.variants.push(variant1)}else if("EXT-X-SESSION-DATA"===name){var sessionData={id:attributes["DATA-ID"],value:attributes.VALUE,uri:attributes.URI,language:attributes.LANGUAGE};playlist.sessionDataList.some(function(item){return item.id===sessionData.id&&item.language===sessionData.language}),playlist.sessionDataList.push(sessionData)}else if("EXT-X-SESSION-KEY"===name){attributes.METHOD;var sessionKey={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS};playlist.sessionKeyList.some(function(item){return function(key1,key2){if(key1.method!==key2.method)return!1;if(key1.uri!==key2.uri)return!1;if(key1.iv){if(!key2.iv)return!1;if(key1.iv.byteLength!==key2.iv.byteLength)return!1;for(var i=0;i<key1.iv.byteLength;i++)if(key1.iv[i]!==key2.iv[i])return!1}else if(key2.iv)return!1;return key1.format===key2.format&&key1.formatVersion===key2.formatVersion}(item,sessionKey)}),setCompatibleVersionOfKey(params,attributes),playlist.sessionKeyList.push(sessionKey)}else"EXT-X-INDEPENDENT-SEGMENTS"===name?(playlist.independentSegments,playlist.independentSegments=!0):"EXT-X-START"===name?(playlist.start,attributes["TIME-OFFSET"],playlist.start={offset:attributes["TIME-OFFSET"],precise:attributes.PRECISE||!1}):"EXT-X-DEFINE"===name&&(playlist.defines||(playlist.defines=[]),playlist.defines.push(attributes))},playlist={isMasterPlaylist:!0,variants:[],sessionDataList:[],sessionKeyList:[]},mediaGroups=function(lines){for(var _step,_loop=function(){var attrs,line=_step.value;if("object"===(void 0===line?"undefined":_type_of(line))&&"EXT-X-MEDIA"===line.name){var rendition={type:(attrs=line.attributes).TYPE,uri:attrs.URI,groupId:attrs["GROUP-ID"],language:attrs.LANGUAGE,assocLanguage:attrs["ASSOC-LANGUAGE"],name:attrs.NAME,isDefault:attrs.DEFAULT,autoselect:attrs.AUTOSELECT,forced:attrs.FORCED,instreamId:attrs["INSTREAM-ID"],characteristics:attrs.CHARACTERISTICS,channels:attrs.CHANNELS,pathwayId:attrs["PATHWAY-ID"]},type=rendition.type,groupId=rendition.groupId,typeMap=index.get(type);typeMap||(typeMap=new Map,index.set(type,typeMap));var group=typeMap.get(groupId);group||(group=[],typeMap.set(groupId,group)),group.some(function(r){return r.name===rendition.name}),rendition.isDefault&&group.some(function(r){return r.isDefault}),group.push(rendition)}},index=new Map,_iterator=_create_for_of_iterator_helper_loose(lines);!(_step=_iterator()).done;)_loop();return index}(lines),variantIsScored=!1,_iterator=_create_for_of_iterator_helper_loose(lines.entries());!(_step=_iterator()).done;)_loop();if(variantIsScored)for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(playlist.variants);!(_step1=_iterator1()).done;){_step1.value.score}if(params.isClosedCaptionsNone)for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(playlist.variants);!(_step2=_iterator2()).done;){var cc=_step2.value.closedCaptions;cc&&cc.length}return playlist}function parseDateRange(attributes){for(var _step,attrs={},_iterator=_create_for_of_iterator_helper_loose(Object.keys(attributes));!(_step=_iterator()).done;){var key=_step.value;(key.startsWith("SCTE35-")||key.startsWith("X-"))&&(attrs[key]=attributes[key])}return{id:attributes.ID,classId:attributes.CLASS,start:attributes["START-DATE"],cue:attributes.CUE,end:attributes["END-DATE"],duration:attributes.DURATION,plannedDuration:attributes["PLANNED-DURATION"],endOnNext:attributes["END-ON-NEXT"],attributes:attrs}}function parseSegment(lines,uri,start,end,mediaSequenceNumber,discontinuitySequence,params){for(var segment={uri:uri,mediaSequenceNumber:mediaSequenceNumber,discontinuitySequence:discontinuitySequence,markers:[],parts:[]},partHint=!1,i=start;i<=end;i++)if("string"!=typeof lines[i]){var _lines_i=lines[i],name=_lines_i.name,value=_lines_i.value,attributes=_lines_i.attributes;if("EXTINF"===name)!Number.isInteger(value.duration)&&params.compatibleVersion<3&&(params.compatibleVersion=3),Math.round(value.duration),params.targetDuration,segment.duration=value.duration,segment.title=value.title;else if("EXT-X-BYTERANGE"===name)params.compatibleVersion<4&&(params.compatibleVersion=4),segment.byterange=value;else if("EXT-X-DISCONTINUITY"===name)segment.parts&&segment.parts.length,segment.discontinuity=!0;else if("EXT-X-GAP"===name)params.compatibleVersion<8&&(params.compatibleVersion=8),segment.gap=!0;else if("EXT-X-KEY"===name)segment.parts&&segment.parts.length,setCompatibleVersionOfKey(params,attributes),segment.key={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS};else if("EXT-X-MAP"===name)segment.parts&&segment.parts.length,params.compatibleVersion<5&&(params.compatibleVersion=5),params.hasMap=!0,segment.map={uri:attributes.URI,byterange:attributes.BYTERANGE};else if("EXT-X-PROGRAM-DATE-TIME"===name)segment.programDateTime=value;else if("EXT-X-DATERANGE"===name)segment.dateRange=parseDateRange(attributes);else if("EXT-X-CUE-OUT"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"OUT",duration:attributes&&attributes.DURATION||value});else if("EXT-X-CUE-IN"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"IN"});else if("EXT-X-CUE-OUT-CONT"===name||"EXT-X-CUE"===name||"EXT-OATCLS-SCTE35"===name||"EXT-X-ASSET"===name||"EXT-X-SCTE35"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"RAW",tagName:name,value:value});else if("EXT-X-PRELOAD-HINT"!==name||attributes.TYPE)if("EXT-X-PRELOAD-HINT"===name&&"PART"===attributes.TYPE&&partHint);else if("EXT-X-PART"!==name&&"EXT-X-PRELOAD-HINT"!==name||attributes.URI){if("EXT-X-PRELOAD-HINT"===name&&"MAP"===attributes.TYPE)params.hasMap=!0,segment.map={hint:!0,uri:attributes.URI,byterange:{length:attributes["BYTERANGE-LENGTH"],offset:attributes["BYTERANGE-START"]||0}};else if("EXT-X-PART"===name||"EXT-X-PRELOAD-HINT"===name&&"PART"===attributes.TYPE){"EXT-X-PART"===name&&attributes.DURATION,"EXT-X-PRELOAD-HINT"===name&&(partHint=!0),segment.parts||(segment.parts=[]);var partialSegment={hint:"EXT-X-PRELOAD-HINT"===name,uri:attributes.URI,byterange:"EXT-X-PART"===name?attributes.BYTERANGE:{length:attributes["BYTERANGE-LENGTH"],offset:attributes["BYTERANGE-START"]||0},duration:attributes.DURATION,independent:attributes.INDEPENDENT,gap:attributes.GAP};segment.gap,segment.parts.push(partialSegment)}}else;else;}return segment}function parsePrefetchSegment(lines,uri,start,end,mediaSequenceNumber,discontinuitySequence,params){for(var segment={uri:uri,mediaSequenceNumber:mediaSequenceNumber,discontinuitySequence:discontinuitySequence},i=start;i<=end;i++)if("string"!=typeof lines[i]){var _lines_i=lines[i],name=_lines_i.name,attributes=_lines_i.attributes;"EXTINF"===name||"EXT-X-DISCONTINUITY"===name||("EXT-X-PREFETCH-DISCONTINUITY"===name?segment.discontinuity=!0:"EXT-X-KEY"===name&&(setCompatibleVersionOfKey(params,attributes),segment.key={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS}))}return segment}function addSegment(playlist,segment,discontinuitySequence,currentKey,currentMap){var _segment_key,_segment_map,discontinuity=segment.discontinuity,key=segment.key,map=segment.map,byterange=segment.byterange,uri=segment.uri;if(discontinuity&&(segment.discontinuitySequence=discontinuitySequence+1),key||(segment.key=currentKey),map||(segment.map=currentMap),byterange&&-1===byterange.offset){var segments=playlist.segments;if(segments.length>0){var prevSegment=segments[segments.length-1];prevSegment.byterange&&prevSegment.uri===uri&&(byterange.offset=prevSegment.byterange.offset+prevSegment.byterange.length)}}return playlist.segments.push(segment),[segment.discontinuitySequence,null!=(_segment_key=segment.key)?_segment_key:null,null!=(_segment_map=segment.map)?_segment_map:null]}function parseMediaPlaylist(lines,params){for(var _step,playlist={isMasterPlaylist:!1,segments:[],prefetchSegments:[],renditionReports:[],dateRanges:[]},segmentStart=-1,mediaSequence=0,discontinuitySequence=0,currentKey=null,currentMap=null,containsParts=!1,_iterator=_create_for_of_iterator_helper_loose(lines.entries());!(_step=_iterator()).done;){var _step_value=_step.value,index=_step_value[0],line=_step_value[1];if("string"!=typeof line){var name=line.name,value=line.value,attributes=line.attributes,category=line.category;if("EXT-X-DATERANGE"===name){var dateRange=parseDateRange(attributes);playlist.dateRanges.push(dateRange)}if("Segment"!==category)if("EXT-X-VERSION"===name)void 0===playlist.version&&(playlist.version=value);else if("EXT-X-TARGETDURATION"===name)playlist.targetDuration=params.targetDuration=value;else if("EXT-X-MEDIA-SEQUENCE"===name)playlist.segments.length,playlist.mediaSequenceBase=value,mediaSequence=value;else if("EXT-X-BITRATE"===name)playlist.bitrate=value;else if("EXT-X-DISCONTINUITY-SEQUENCE"===name)playlist.segments.length,playlist.discontinuitySequenceBase=value,discontinuitySequence=value;else if("EXT-X-ENDLIST"===name)playlist.endlist=!0;else if("EXT-X-PLAYLIST-TYPE"===name)playlist.playlistType=value;else if("EXT-X-I-FRAMES-ONLY"===name)params.compatibleVersion<4&&(params.compatibleVersion=4),playlist.isIFrame=!0;else if("EXT-X-INDEPENDENT-SEGMENTS"===name)playlist.independentSegments,playlist.independentSegments=!0;else if("EXT-X-START"===name)playlist.start,attributes["TIME-OFFSET"],playlist.start={offset:attributes["TIME-OFFSET"],precise:attributes.PRECISE||!1};else if("EXT-X-SERVER-CONTROL"===name)attributes["CAN-BLOCK-RELOAD"],playlist.lowLatencyCompatibility={canBlockReload:attributes["CAN-BLOCK-RELOAD"],canSkipUntil:attributes["CAN-SKIP-UNTIL"],holdBack:attributes["HOLD-BACK"],partHoldBack:attributes["PART-HOLD-BACK"]};else if("EXT-X-PART-INF"===name)attributes["PART-TARGET"],playlist.partTargetDuration=attributes["PART-TARGET"];else if("EXT-X-RENDITION-REPORT"===name)attributes.URI,/^[a-z]+:/i.test(attributes.URI),playlist.renditionReports.push({uri:attributes.URI,lastMSN:attributes["LAST-MSN"],lastPart:attributes["LAST-PART"]});else if("EXT-X-SKIP"===name)attributes["SKIPPED-SEGMENTS"],params.compatibleVersion<9&&(params.compatibleVersion=9),playlist.skip=attributes["SKIPPED-SEGMENTS"],mediaSequence+=playlist.skip;else if("EXT-X-PREFETCH"===name){var segment1=parsePrefetchSegment(lines,value,-1===segmentStart?index:segmentStart,index-1,mediaSequence++,discontinuitySequence,params);segment1.discontinuity&&(segment1.discontinuitySequence++,discontinuitySequence=segment1.discontinuitySequence),segment1.key||(segment1.key=currentKey),playlist.prefetchSegments.push(segment1),segmentStart=-1}else"EXT-X-DEFINE"===name&&(playlist.defines||(playlist.defines=[]),playlist.defines.push(attributes));else-1===segmentStart&&(segmentStart=index)}else{playlist.targetDuration;var segment=parseSegment(lines,line,segmentStart,index-1,mediaSequence++,discontinuitySequence,params),_addSegment=addSegment(playlist,segment,discontinuitySequence,currentKey,currentMap);discontinuitySequence=_addSegment[0],currentKey=_addSegment[1],currentMap=_addSegment[2],!containsParts&&segment.parts&&segment.parts.length>0&&(containsParts=!0),segmentStart=-1}}if(-1!==segmentStart){var _parts_,segment2=parseSegment(lines,"",segmentStart,lines.length-1,mediaSequence++,discontinuitySequence,params),parts=segment2.parts;parts&&parts.length>0&&!playlist.endlist&&(null==(_parts_=parts[parts.length-1])||_parts_.hint),addSegment(playlist,segment2,discontinuitySequence,currentKey,currentMap),!containsParts&&segment2.parts&&segment2.parts.length>0&&(containsParts=!0)}return function(segments){for(var earliestDates=new Map,rangeList=new Map,i=segments.length-1;i>=0;i--){var _segments_i=segments[i];_segments_i.programDateTime;var dateRange=_segments_i.dateRange;if(dateRange&&dateRange.start){dateRange.endOnNext&&(dateRange.end||dateRange.duration);var start=dateRange.start.getTime(),duration=dateRange.duration||0;dateRange.end&&dateRange.duration&&dateRange.end.getTime(),dateRange.endOnNext&&dateRange.classId&&(dateRange.end=earliestDates.get(dateRange.classId)),earliestDates.set(dateRange.classId,dateRange.start);var end=dateRange.end?dateRange.end.getTime():start+1e3*duration;if(dateRange.classId){var range=rangeList.get(dateRange.classId);if(range){for(var _step,_iterator=_create_for_of_iterator_helper_loose(range);!(_step=_iterator()).done;){var entry=_step.value;entry.start<=start&&entry.end>start||entry.start>=start&&entry.start}range.push({start:start,end:end})}else rangeList.set(dateRange.classId,[{start:start,end:end}])}}}}(playlist.segments),playlist.lowLatencyCompatibility&&function(playlist,containsParts){var lowLatencyCompatibility=playlist.lowLatencyCompatibility;if(playlist.targetDuration,playlist.partTargetDuration,lowLatencyCompatibility&&(lowLatencyCompatibility.canSkipUntil,lowLatencyCompatibility.holdBack,lowLatencyCompatibility.partHoldBack,containsParts)){for(var _step,_iterator=_create_for_of_iterator_helper_loose(playlist.segments.entries());!(_step=_iterator()).done;){var _step_value=_step.value,parts=(_step_value[0],_step_value[1].parts);if(parts&&0!==parts.length){playlist.segments.length;for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(parts.entries());!(_step1=_iterator1()).done;){var _step_value1=_step1.value;void 0!==(_step_value1[0],_step_value1[1].duration)&&parts.length}}}for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(playlist.renditionReports);!(_step2=_iterator2()).done;){var report=_step2.value,lastSegment=playlist.segments[playlist.segments.length-1];void 0===report.lastMSN&&lastSegment&&(report.lastMSN=lastSegment.mediaSequenceNumber),(void 0===report.lastPart||null===report.lastPart)&&lastSegment&&lastSegment.parts&&lastSegment.parts.length>0&&(report.lastPart=lastSegment.parts.length-1)}}}(playlist,containsParts),playlist}function parser(text,options){var params={isMasterPlaylist:void 0,hasMap:!1,targetDuration:0,compatibleVersion:1,isClosedCaptionsNone:!1,hash:{}},lines=function(text,params){var lines=[],normalized=text;65279===normalized.charCodeAt(0)&&(normalized=normalized.slice(1));for(var _step,_iterator=_create_for_of_iterator_helper_loose(normalized.split(/\r?\n/));!(_step=_iterator()).done;){var line=_step.value.trim();if(line)if(line.startsWith("#")){if(line.startsWith("#EXT")){var tag=parseTag(line,params);tag&&lines.push(tag)}}else lines.push(line)}return 0===lines.length||"object"!==_type_of(lines[0])||lines[0].name,lines}(text,params),playlist=function(lines,params){var playlist;return params.isMasterPlaylist?playlist=parseMasterPlaylist(lines,params):!(playlist=parseMediaPlaylist(lines,params)).isMasterPlaylist&&!playlist.isIFrame&&params.hasMap&&params.compatibleVersion<6&&(params.compatibleVersion=6),params.compatibleVersion>1&&void 0!==playlist.version&&null!==playlist.version&&playlist.version<params.compatibleVersion&&params.compatibleVersion,playlist}(lines,params);return playlist.source=text,(null==options?void 0:options.uri)&&function(playlist,baseUri){if(playlist.isMasterPlaylist){for(var _step,master=playlist,_iterator=_create_for_of_iterator_helper_loose(master.variants);!(_step=_iterator()).done;){var variant=_step.value;variant.uri=resolveUrl(baseUri,variant.uri);for(var _i=0,_iter=["audio","video","subtitles","closedCaptions"];_i<_iter.length;_i++){var renditions=variant[_iter[_i]];if(renditions)for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(renditions);!(_step1=_iterator1()).done;){var r=_step1.value;r.uri&&(r.uri=resolveUrl(baseUri,r.uri))}}}for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(master.sessionDataList);!(_step2=_iterator2()).done;){var sd=_step2.value;sd.uri&&(sd.uri=resolveUrl(baseUri,sd.uri))}for(var _step3,_iterator3=_create_for_of_iterator_helper_loose(master.sessionKeyList);!(_step3=_iterator3()).done;){var sk=_step3.value;sk.uri&&(sk.uri=resolveUrl(baseUri,sk.uri))}var steering=master.contentSteering;steering&&(steering.serverUri=resolveUrl(baseUri,steering.serverUri))}else{for(var _step4,mp=playlist,_iterator4=_create_for_of_iterator_helper_loose(mp.segments);!(_step4=_iterator4()).done;){var segment=_step4.value;if(segment.uri=resolveUrl(baseUri,segment.uri),segment.key&&segment.key.uri&&(segment.key.uri=resolveUrl(baseUri,segment.key.uri)),segment.map&&segment.map.uri&&(segment.map.uri=resolveUrl(baseUri,segment.map.uri)),segment.parts)for(var _step5,_iterator5=_create_for_of_iterator_helper_loose(segment.parts);!(_step5=_iterator5()).done;){var part=_step5.value;part.uri=resolveUrl(baseUri,part.uri)}}for(var _step6,_iterator6=_create_for_of_iterator_helper_loose(mp.prefetchSegments);!(_step6=_iterator6()).done;){var prefetch=_step6.value;prefetch.uri=resolveUrl(baseUri,prefetch.uri),prefetch.key&&prefetch.key.uri&&(prefetch.key.uri=resolveUrl(baseUri,prefetch.key.uri))}for(var _step7,_iterator7=_create_for_of_iterator_helper_loose(mp.renditionReports);!(_step7=_iterator7()).done;){var report=_step7.value;report.uri=resolveUrl(baseUri,report.uri)}}}(playlist,options.uri),playlist}function isMasterPlaylist(pl){return!0===pl.isMasterPlaylist}function isMediaPlaylist(pl){return!1===pl.isMasterPlaylist}export{InvalidPlaylistError,constants as TAGS,parser as default,isMasterPlaylist,isMediaPlaylist,parser,resolveUrl};
6
+ function _array_like_to_array$1(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _construct(Parent,args,Class){return _construct=_is_native_reflect_construct()?Reflect.construct:function(Parent,args,Class){var a=[null];a.push.apply(a,args);var instance=new(Function.bind.apply(Parent,a));return Class&&_set_prototype_of(instance,Class.prototype),instance},_construct.apply(null,arguments)}function _get_prototype_of(o){return _get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},_get_prototype_of(o)}function _set_prototype_of(o,p){return _set_prototype_of=Object.setPrototypeOf||function(o,p){return o.__proto__=p,o},_set_prototype_of(o,p)}function _wrap_native_super(Class){var _cache="function"==typeof Map?new Map:void 0;return _wrap_native_super=function(Class){if(null===Class||(fn=Class,-1===Function.toString.call(fn).indexOf("[native code]")))return Class;var fn;if("function"!=typeof Class)throw new TypeError("Super expression must either be null or a function");if(void 0!==_cache){if(_cache.has(Class))return _cache.get(Class);_cache.set(Class,Wrapper)}function Wrapper(){return _construct(Class,arguments,_get_prototype_of(this).constructor)}return Wrapper.prototype=Object.create(Class.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),_set_prototype_of(Wrapper,Class)},_wrap_native_super(Class)}function _is_native_reflect_construct(){try{var result=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(_){}return(_is_native_reflect_construct=function(){return!!result})()}function _create_for_of_iterator_helper_loose$1(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=function(o,minLen){if(o){if("string"==typeof o)return _array_like_to_array$1(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array$1(o,minLen):void 0}}(o))||allowArrayLike){it&&(o=it);var i=0;return function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var InvalidPlaylistError=function(Error1){function InvalidPlaylistError(message){var _this;return(_this=Error1.call(this,message)||this).name="InvalidPlaylistError",_this}return function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function");subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:!0,configurable:!0}}),superClass&&_set_prototype_of(subClass,superClass)}(InvalidPlaylistError,Error1),InvalidPlaylistError}(_wrap_native_super(Error));function trim(str,char){if(void 0!==str){for(var start=0,end=str.length-1;start<=end&&str[start]===char;)start++;for(;end>=start&&str[end]===char;)end--;return str.slice(start,end+1)}}function splitAt(str,delimiter){var index=str.indexOf(delimiter);return-1===index?[str,""]:[str.slice(0,index),str.slice(index+1)]}function toNumber(str){return Number(str)}function hexToByteSequence(hex){var h=hex;(h.startsWith("0x")||h.startsWith("0X"))&&(h=h.slice(2)),h.length%2!=0&&(h="0"+h);for(var bytes=new Uint8Array(h.length/2),i=0;i<bytes.length;i++)bytes[i]=parseInt(h.slice(2*i,2*i+2),16);return bytes}function camelify(str){return str.toLowerCase().replace(/[-_](.)/g,function(_,c){return c.toUpperCase()})}function resolveUrl(base,relative){if(!base)return relative;if(/^[a-zA-Z][a-zA-Z0-9+\-.]*:/.test(relative))return relative;try{var baseUrl=new URL(base);return relative.startsWith("//")?baseUrl.protocol+relative:new URL(relative,baseUrl).href}catch(unused){if(relative.startsWith("/")){var match=base.match(/^[a-zA-Z][a-zA-Z0-9+\-.]*:\/\/[^/]+/);if(match)return match[0]+relative}for(var _step,result=[],_iterator=_create_for_of_iterator_helper_loose$1((base.replace(/\/[^/]*$/,"/")+relative).split("/"));!(_step=_iterator()).done;){var part=_step.value;".."===part?result.pop():"."!==part&&result.push(part)}return result.join("/")}}var constants=Object.freeze({__proto__:null,EXTINF:"EXTINF",EXTM3U:"EXTM3U",EXT_OATCLS_SCTE35:"EXT-OATCLS-SCTE35",EXT_X_ASSET:"EXT-X-ASSET",EXT_X_BITRATE:"EXT-X-BITRATE",EXT_X_BYTERANGE:"EXT-X-BYTERANGE",EXT_X_CONTENT_STEERING:"EXT-X-CONTENT-STEERING",EXT_X_CUE:"EXT-X-CUE",EXT_X_CUE_IN:"EXT-X-CUE-IN",EXT_X_CUE_OUT:"EXT-X-CUE-OUT",EXT_X_CUE_OUT_CONT:"EXT-X-CUE-OUT-CONT",EXT_X_DATERANGE:"EXT-X-DATERANGE",EXT_X_DEFINE:"EXT-X-DEFINE",EXT_X_DISCONTINUITY:"EXT-X-DISCONTINUITY",EXT_X_DISCONTINUITY_SEQUENCE:"EXT-X-DISCONTINUITY-SEQUENCE",EXT_X_ENDLIST:"EXT-X-ENDLIST",EXT_X_GAP:"EXT-X-GAP",EXT_X_INDEPENDENT_SEGMENTS:"EXT-X-INDEPENDENT-SEGMENTS",EXT_X_I_FRAMES_ONLY:"EXT-X-I-FRAMES-ONLY",EXT_X_I_FRAME_STREAM_INF:"EXT-X-I-FRAME-STREAM-INF",EXT_X_KEY:"EXT-X-KEY",EXT_X_MAP:"EXT-X-MAP",EXT_X_MEDIA:"EXT-X-MEDIA",EXT_X_MEDIA_SEQUENCE:"EXT-X-MEDIA-SEQUENCE",EXT_X_PART:"EXT-X-PART",EXT_X_PART_INF:"EXT-X-PART-INF",EXT_X_PLAYLIST_TYPE:"EXT-X-PLAYLIST-TYPE",EXT_X_PREFETCH:"EXT-X-PREFETCH",EXT_X_PREFETCH_DISCONTINUITY:"EXT-X-PREFETCH-DISCONTINUITY",EXT_X_PRELOAD_HINT:"EXT-X-PRELOAD-HINT",EXT_X_PROGRAM_DATE_TIME:"EXT-X-PROGRAM-DATE-TIME",EXT_X_RENDITION_REPORT:"EXT-X-RENDITION-REPORT",EXT_X_SCTE35:"EXT-X-SCTE35",EXT_X_SERVER_CONTROL:"EXT-X-SERVER-CONTROL",EXT_X_SESSION_DATA:"EXT-X-SESSION-DATA",EXT_X_SESSION_KEY:"EXT-X-SESSION-KEY",EXT_X_SKIP:"EXT-X-SKIP",EXT_X_START:"EXT-X-START",EXT_X_STREAM_INF:"EXT-X-STREAM-INF",EXT_X_TARGETDURATION:"EXT-X-TARGETDURATION",EXT_X_VERSION:"EXT-X-VERSION"});function _array_like_to_array(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _type_of(obj){return obj&&"undefined"!=typeof Symbol&&obj.constructor===Symbol?"symbol":typeof obj}function _create_for_of_iterator_helper_loose(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=function(o,minLen){if(o){if("string"==typeof o)return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array(o,minLen):void 0}}(o))||allowArrayLike){it&&(o=it);var i=0;return function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function parseEXTINF(param){var pair=splitAt(param,",");return{duration:toNumber(pair[0]),title:pair[1]?decodeURIComponent(encodeURIComponent(pair[1])):void 0}}function parseBYTERANGE(param){var pair=splitAt(param,"@");return{length:toNumber(pair[0]),offset:pair[1]?toNumber(pair[1]):-1}}function parseResolution(str){var pair=splitAt(str,"x");return{width:toNumber(pair[0]),height:toNumber(pair[1])}}function parseAllowedCpc(str){for(var _step,allowedCpcList=[],_iterator=_create_for_of_iterator_helper_loose(str.split(","));!(_step=_iterator()).done;){var _utils_splitAt=splitAt(_step.value,":"),format=_utils_splitAt[0],cpcText=_utils_splitAt[1];format&&cpcText&&allowedCpcList.push({format:format,cpcList:cpcText.split("/")})}return allowedCpcList}function parseIV(str){var iv=hexToByteSequence(str);return iv.length,iv}function parseUserAttribute(str){return str.startsWith('"')?trim(str,'"'):str.startsWith("0x")||str.startsWith("0X")?hexToByteSequence(str):toNumber(str)}function setCompatibleVersionOfKey(params,attributes){attributes.IV&&params.compatibleVersion<2&&(params.compatibleVersion=2),(attributes.KEYFORMAT||attributes.KEYFORMATVERSIONS)&&params.compatibleVersion<5&&(params.compatibleVersion=5)}function parseAttributeList(param){for(var _step,attributes={},_iterator=_create_for_of_iterator_helper_loose(function(str){for(var result=[],current="",inQuotes=!1,i=0;i<str.length;i++){var char=str[i];'"'===char?(inQuotes=!inQuotes,current+=char):","!==char||inQuotes?current+=char:(result.push(current),current="")}return current&&result.push(current),result}(param));!(_step=_iterator()).done;){var _utils_splitAt=splitAt(_step.value,"="),key=_utils_splitAt[0],value=_utils_splitAt[1],val=trim(value,'"');switch(key){case"URI":attributes[key]=val;break;case"START-DATE":case"END-DATE":attributes[key]=new Date(val);break;case"IV":attributes[key]=parseIV(val);break;case"BYTERANGE":attributes[key]=parseBYTERANGE(val);break;case"RESOLUTION":attributes[key]=parseResolution(val);break;case"ALLOWED-CPC":attributes[key]=parseAllowedCpc(val);break;case"END-ON-NEXT":case"DEFAULT":case"AUTOSELECT":case"FORCED":case"PRECISE":case"CAN-BLOCK-RELOAD":case"INDEPENDENT":case"GAP":attributes[key]="YES"===val;break;case"DURATION":case"PLANNED-DURATION":case"BANDWIDTH":case"AVERAGE-BANDWIDTH":case"FRAME-RATE":case"TIME-OFFSET":case"CAN-SKIP-UNTIL":case"HOLD-BACK":case"PART-HOLD-BACK":case"PART-TARGET":case"BYTERANGE-START":case"BYTERANGE-LENGTH":case"LAST-MSN":case"LAST-PART":case"SKIPPED-SEGMENTS":case"SCORE":case"PROGRAM-ID":attributes[key]=toNumber(val);break;default:key.startsWith("SCTE35-")?attributes[key]=hexToByteSequence(val):key.startsWith("X-")?attributes[key]=parseUserAttribute(value):attributes[key]=val}}return attributes}function parseTag(line,params){var _splitTag=function(line){var index=line.indexOf(":");return-1===index?[line.slice(1).trim(),null]:[line.slice(1,index).trim(),line.slice(index+1).trim()]}(line),name=_splitTag[0],param=_splitTag[1],category=function(tagName){switch(tagName){case"EXTM3U":case"EXT-X-VERSION":case"EXT-X-CONTENT-STEERING":return"Basic";case"EXTINF":case"EXT-X-BYTERANGE":case"EXT-X-DISCONTINUITY":case"EXT-X-PREFETCH-DISCONTINUITY":case"EXT-X-KEY":case"EXT-X-MAP":case"EXT-X-PROGRAM-DATE-TIME":case"EXT-X-DATERANGE":case"EXT-X-CUE-OUT":case"EXT-X-CUE-IN":case"EXT-X-CUE-OUT-CONT":case"EXT-X-CUE":case"EXT-OATCLS-SCTE35":case"EXT-X-ASSET":case"EXT-X-SCTE35":case"EXT-X-PART":case"EXT-X-PRELOAD-HINT":case"EXT-X-GAP":return"Segment";case"EXT-X-BITRATE":case"EXT-X-TARGETDURATION":case"EXT-X-MEDIA-SEQUENCE":case"EXT-X-DISCONTINUITY-SEQUENCE":case"EXT-X-ENDLIST":case"EXT-X-PLAYLIST-TYPE":case"EXT-X-I-FRAMES-ONLY":case"EXT-X-SERVER-CONTROL":case"EXT-X-PART-INF":case"EXT-X-PREFETCH":case"EXT-X-RENDITION-REPORT":case"EXT-X-SKIP":return"MediaPlaylist";case"EXT-X-MEDIA":case"EXT-X-STREAM-INF":case"EXT-X-I-FRAME-STREAM-INF":case"EXT-X-SESSION-DATA":case"EXT-X-SESSION-KEY":return"MasterPlaylist";case"EXT-X-INDEPENDENT-SEGMENTS":case"EXT-X-START":case"EXT-X-DEFINE":return"MediaorMasterPlaylist";default:return"Unknown"}}(name);if(function(category,params){if("Segment"===category||"MediaPlaylist"===category)return void 0===params.isMasterPlaylist?void(params.isMasterPlaylist=!1):void params.isMasterPlaylist;if("MasterPlaylist"===category){if(void 0===params.isMasterPlaylist)return void(params.isMasterPlaylist=!0);params.isMasterPlaylist}}(category,params),"Unknown"===category)return null;"MediaPlaylist"===category&&"EXT-X-RENDITION-REPORT"!==name&&"EXT-X-PREFETCH"!==name&&(params.hash[name],params.hash[name]=!0);var _parseTagParam=function(name,param){if(null===param)return[null,null];switch(name){case"EXTM3U":case"EXT-X-DISCONTINUITY":case"EXT-X-ENDLIST":case"EXT-X-I-FRAMES-ONLY":case"EXT-X-INDEPENDENT-SEGMENTS":case"EXT-X-CUE-IN":case"EXT-X-GAP":return[null,null];case"EXT-X-VERSION":case"EXT-X-TARGETDURATION":case"EXT-X-MEDIA-SEQUENCE":case"EXT-X-DISCONTINUITY-SEQUENCE":case"EXT-X-BITRATE":return[toNumber(param),null];case"EXT-X-CUE-OUT":return Number.isNaN(Number(param))?[null,parseAttributeList(param)]:[toNumber(param),null];case"EXT-X-KEY":case"EXT-X-MAP":case"EXT-X-DATERANGE":case"EXT-X-MEDIA":case"EXT-X-STREAM-INF":case"EXT-X-I-FRAME-STREAM-INF":case"EXT-X-SESSION-DATA":case"EXT-X-SESSION-KEY":case"EXT-X-START":case"EXT-X-SERVER-CONTROL":case"EXT-X-PART-INF":case"EXT-X-PART":case"EXT-X-PRELOAD-HINT":case"EXT-X-RENDITION-REPORT":case"EXT-X-SKIP":case"EXT-X-DEFINE":case"EXT-X-CONTENT-STEERING":return[null,parseAttributeList(param)];case"EXTINF":return[parseEXTINF(param),null];case"EXT-X-BYTERANGE":return[parseBYTERANGE(param),null];default:return[param,null]}}(name,param);return{name:name,category:category,value:_parseTagParam[0],attributes:_parseTagParam[1]||{}}}function parseVariant(variantAttrs,uri,iFrameOnly,params,mediaGroups){for(var variant={uri:uri,bandwidth:variantAttrs.BANDWIDTH,averageBandwidth:variantAttrs["AVERAGE-BANDWIDTH"],score:variantAttrs.SCORE,codecs:variantAttrs.CODECS,resolution:variantAttrs.RESOLUTION,frameRate:variantAttrs["FRAME-RATE"],hdcpLevel:variantAttrs["HDCP-LEVEL"],allowedCpc:variantAttrs["ALLOWED-CPC"],videoRange:variantAttrs["VIDEO-RANGE"],stableVariantId:variantAttrs["STABLE-VARIANT-ID"],pathwayId:variantAttrs["PATHWAY-ID"]||variantAttrs["STABLE-PATHWAY-ID"],programId:variantAttrs["PROGRAM-ID"],isIFrameOnly:iFrameOnly},_i=0,_iter=["AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS"];_i<_iter.length;_i++){var type=_iter[_i],attrsGroupId=variantAttrs[type];if(attrsGroupId){var typeMap=mediaGroups.get(type);if(typeMap){var renditions=typeMap.get(attrsGroupId);if(renditions)for(var _step,_iterator=_create_for_of_iterator_helper_loose(renditions);!(_step=_iterator()).done;){addRenditionToList(variant,_step.value,type)}}}}return function(attrs,variant,params){for(var _loop=function(_i,_iter){var type=_iter[_i];if("CLOSED-CAPTIONS"===type&&"NONE"===attrs[type])params.isClosedCaptionsNone=!0,variant.closedCaptions=[];else if(attrs[type]){var key=camelify(type),renditions=variant[key]||[];renditions.length>0&&renditions.some(function(item){return item.groupId===attrs[type]})}},_i=0,_iter=["AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS"];_i<_iter.length;_i++)_loop(_i,_iter)}(variantAttrs,variant,params),variant}function addRenditionToList(variant,rendition,type){var key=camelify(type),renditions=variant[key];renditions||(renditions=[],variant[key]=renditions),renditions.push(rendition)}function parseMasterPlaylist(lines,params){for(var _step,_loop=function(){var _step_value=_step.value,index=_step_value[0],line=_step_value[1];if("string"==typeof line)return"continue";var name=line.name,value=line.value,attributes=line.attributes;if("EXT-X-VERSION"===name)playlist.version=value;else if("EXT-X-CONTENT-STEERING"===name)playlist.contentSteering={serverUri:attributes["SERVER-URI"],pathwayId:attributes["PATHWAY-ID"]};else if("EXT-X-STREAM-INF"===name){var uriLine=lines[index+1];"string"!=typeof uriLine||uriLine.startsWith("#");var variant=parseVariant(attributes,uriLine,!1,params,mediaGroups);"number"==typeof variant.score&&(variantIsScored=!0,variant.score),playlist.variants.push(variant)}else if("EXT-X-I-FRAME-STREAM-INF"===name){var variant1=parseVariant(attributes,attributes.URI,!0,params,mediaGroups);playlist.variants.push(variant1)}else if("EXT-X-SESSION-DATA"===name){var sessionData={id:attributes["DATA-ID"],value:attributes.VALUE,uri:attributes.URI,language:attributes.LANGUAGE};playlist.sessionDataList.some(function(item){return item.id===sessionData.id&&item.language===sessionData.language}),playlist.sessionDataList.push(sessionData)}else if("EXT-X-SESSION-KEY"===name){attributes.METHOD;var sessionKey={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS};playlist.sessionKeyList.some(function(item){return function(key1,key2){if(key1.method!==key2.method)return!1;if(key1.uri!==key2.uri)return!1;if(key1.iv){if(!key2.iv)return!1;if(key1.iv.byteLength!==key2.iv.byteLength)return!1;for(var i=0;i<key1.iv.byteLength;i++)if(key1.iv[i]!==key2.iv[i])return!1}else if(key2.iv)return!1;return key1.format===key2.format&&key1.formatVersion===key2.formatVersion}(item,sessionKey)}),setCompatibleVersionOfKey(params,attributes),playlist.sessionKeyList.push(sessionKey)}else"EXT-X-INDEPENDENT-SEGMENTS"===name?(playlist.independentSegments,playlist.independentSegments=!0):"EXT-X-START"===name?(playlist.start,attributes["TIME-OFFSET"],playlist.start={offset:attributes["TIME-OFFSET"],precise:attributes.PRECISE||!1}):"EXT-X-DEFINE"===name&&(playlist.defines||(playlist.defines=[]),playlist.defines.push(attributes))},playlist={isMasterPlaylist:!0,variants:[],sessionDataList:[],sessionKeyList:[]},mediaGroups=function(lines){for(var _step,_loop=function(){var attrs,line=_step.value;if("object"===(void 0===line?"undefined":_type_of(line))&&"EXT-X-MEDIA"===line.name){var rendition={type:(attrs=line.attributes).TYPE,uri:attrs.URI,groupId:attrs["GROUP-ID"],language:attrs.LANGUAGE,assocLanguage:attrs["ASSOC-LANGUAGE"],name:attrs.NAME,isDefault:attrs.DEFAULT,autoselect:attrs.AUTOSELECT,forced:attrs.FORCED,instreamId:attrs["INSTREAM-ID"],characteristics:attrs.CHARACTERISTICS,channels:attrs.CHANNELS,pathwayId:attrs["PATHWAY-ID"]},type=rendition.type,groupId=rendition.groupId,typeMap=index.get(type);typeMap||(typeMap=new Map,index.set(type,typeMap));var group=typeMap.get(groupId);group||(group=[],typeMap.set(groupId,group)),group.some(function(r){return r.name===rendition.name}),rendition.isDefault&&group.some(function(r){return r.isDefault}),group.push(rendition)}},index=new Map,_iterator=_create_for_of_iterator_helper_loose(lines);!(_step=_iterator()).done;)_loop();return index}(lines),variantIsScored=!1,_iterator=_create_for_of_iterator_helper_loose(lines.entries());!(_step=_iterator()).done;)_loop();if(variantIsScored)for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(playlist.variants);!(_step1=_iterator1()).done;){_step1.value.score}if(params.isClosedCaptionsNone)for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(playlist.variants);!(_step2=_iterator2()).done;){var cc=_step2.value.closedCaptions;cc&&cc.length}return playlist}function parseDateRange(attributes){for(var _step,attrs={},_iterator=_create_for_of_iterator_helper_loose(Object.keys(attributes));!(_step=_iterator()).done;){var key=_step.value;(key.startsWith("SCTE35-")||key.startsWith("X-"))&&(attrs[key]=attributes[key])}return{id:attributes.ID,classId:attributes.CLASS,start:attributes["START-DATE"],cue:attributes.CUE,end:attributes["END-DATE"],duration:attributes.DURATION,plannedDuration:attributes["PLANNED-DURATION"],endOnNext:attributes["END-ON-NEXT"],attributes:attrs}}function parseSegment(lines,uri,start,end,mediaSequenceNumber,discontinuitySequence,params){for(var segment={uri:uri,mediaSequenceNumber:mediaSequenceNumber,discontinuitySequence:discontinuitySequence,markers:[],parts:[]},partHint=!1,i=start;i<=end;i++)if("string"!=typeof lines[i]){var _lines_i=lines[i],name=_lines_i.name,value=_lines_i.value,attributes=_lines_i.attributes;if("EXTINF"===name)!Number.isInteger(value.duration)&&params.compatibleVersion<3&&(params.compatibleVersion=3),Math.round(value.duration),params.targetDuration,segment.duration=value.duration,segment.title=value.title;else if("EXT-X-BYTERANGE"===name)params.compatibleVersion<4&&(params.compatibleVersion=4),segment.byterange=value;else if("EXT-X-DISCONTINUITY"===name)segment.parts&&segment.parts.length,segment.discontinuity=!0;else if("EXT-X-GAP"===name)params.compatibleVersion<8&&(params.compatibleVersion=8),segment.gap=!0;else if("EXT-X-KEY"===name)segment.parts&&segment.parts.length,setCompatibleVersionOfKey(params,attributes),segment.key={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS};else if("EXT-X-MAP"===name)segment.parts&&segment.parts.length,params.compatibleVersion<5&&(params.compatibleVersion=5),params.hasMap=!0,segment.map={uri:attributes.URI,byterange:attributes.BYTERANGE};else if("EXT-X-PROGRAM-DATE-TIME"===name)segment.programDateTime=value;else if("EXT-X-DATERANGE"===name)segment.dateRange=parseDateRange(attributes);else if("EXT-X-CUE-OUT"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"OUT",duration:attributes&&attributes.DURATION||value});else if("EXT-X-CUE-IN"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"IN"});else if("EXT-X-CUE-OUT-CONT"===name||"EXT-X-CUE"===name||"EXT-OATCLS-SCTE35"===name||"EXT-X-ASSET"===name||"EXT-X-SCTE35"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"RAW",tagName:name,value:value});else if("EXT-X-PRELOAD-HINT"!==name||attributes.TYPE)if("EXT-X-PRELOAD-HINT"===name&&"PART"===attributes.TYPE&&partHint);else if("EXT-X-PART"!==name&&"EXT-X-PRELOAD-HINT"!==name||attributes.URI){if("EXT-X-PRELOAD-HINT"===name&&"MAP"===attributes.TYPE)params.hasMap=!0,segment.map={hint:!0,uri:attributes.URI,byterange:{length:attributes["BYTERANGE-LENGTH"],offset:attributes["BYTERANGE-START"]||0}};else if("EXT-X-PART"===name||"EXT-X-PRELOAD-HINT"===name&&"PART"===attributes.TYPE){"EXT-X-PART"===name&&attributes.DURATION,"EXT-X-PRELOAD-HINT"===name&&(partHint=!0),segment.parts||(segment.parts=[]);var partialSegment={hint:"EXT-X-PRELOAD-HINT"===name,uri:attributes.URI,byterange:"EXT-X-PART"===name?attributes.BYTERANGE:{length:attributes["BYTERANGE-LENGTH"],offset:attributes["BYTERANGE-START"]||0},duration:attributes.DURATION,independent:attributes.INDEPENDENT,gap:attributes.GAP};segment.gap,segment.parts.push(partialSegment)}}else;else;}return segment}function parsePrefetchSegment(lines,uri,start,end,mediaSequenceNumber,discontinuitySequence,params){for(var segment={uri:uri,mediaSequenceNumber:mediaSequenceNumber,discontinuitySequence:discontinuitySequence},i=start;i<=end;i++)if("string"!=typeof lines[i]){var _lines_i=lines[i],name=_lines_i.name,attributes=_lines_i.attributes;"EXTINF"===name||"EXT-X-DISCONTINUITY"===name||("EXT-X-PREFETCH-DISCONTINUITY"===name?segment.discontinuity=!0:"EXT-X-KEY"===name&&(setCompatibleVersionOfKey(params,attributes),segment.key={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS}))}return segment}function addSegment(playlist,segment,discontinuitySequence,currentKey,currentMap){var _segment_key,_segment_map,discontinuity=segment.discontinuity,key=segment.key,map=segment.map,byterange=segment.byterange,uri=segment.uri;if(discontinuity&&(segment.discontinuitySequence=discontinuitySequence+1),key||(segment.key=currentKey),map||(segment.map=currentMap),byterange&&-1===byterange.offset){var segments=playlist.segments;if(segments.length>0){var prevSegment=segments[segments.length-1];prevSegment.byterange&&prevSegment.uri===uri&&(byterange.offset=prevSegment.byterange.offset+prevSegment.byterange.length)}}return playlist.segments.push(segment),[segment.discontinuitySequence,null!=(_segment_key=segment.key)?_segment_key:null,null!=(_segment_map=segment.map)?_segment_map:null]}function parseMediaPlaylist(lines,params){for(var _step,playlist={isMasterPlaylist:!1,segments:[],prefetchSegments:[],renditionReports:[],dateRanges:[]},segmentStart=-1,mediaSequence=0,discontinuitySequence=0,currentKey=null,currentMap=null,containsParts=!1,_iterator=_create_for_of_iterator_helper_loose(lines.entries());!(_step=_iterator()).done;){var _step_value=_step.value,index=_step_value[0],line=_step_value[1];if("string"!=typeof line){var name=line.name,value=line.value,attributes=line.attributes,category=line.category;if("EXT-X-DATERANGE"===name){var dateRange=parseDateRange(attributes);playlist.dateRanges.push(dateRange)}if("Segment"!==category)if("EXT-X-VERSION"===name)void 0===playlist.version&&(playlist.version=value);else if("EXT-X-TARGETDURATION"===name)playlist.targetDuration=params.targetDuration=value;else if("EXT-X-MEDIA-SEQUENCE"===name)playlist.segments.length,playlist.mediaSequenceBase=value,mediaSequence=value;else if("EXT-X-BITRATE"===name)playlist.bitrate=value;else if("EXT-X-DISCONTINUITY-SEQUENCE"===name)playlist.segments.length,playlist.discontinuitySequenceBase=value,discontinuitySequence=value;else if("EXT-X-ENDLIST"===name)playlist.endlist=!0;else if("EXT-X-PLAYLIST-TYPE"===name)playlist.playlistType=value;else if("EXT-X-I-FRAMES-ONLY"===name)params.compatibleVersion<4&&(params.compatibleVersion=4),playlist.isIFrame=!0;else if("EXT-X-INDEPENDENT-SEGMENTS"===name)playlist.independentSegments,playlist.independentSegments=!0;else if("EXT-X-START"===name)playlist.start,attributes["TIME-OFFSET"],playlist.start={offset:attributes["TIME-OFFSET"],precise:attributes.PRECISE||!1};else if("EXT-X-SERVER-CONTROL"===name)attributes["CAN-BLOCK-RELOAD"],playlist.lowLatencyCompatibility={canBlockReload:attributes["CAN-BLOCK-RELOAD"],canSkipUntil:attributes["CAN-SKIP-UNTIL"],holdBack:attributes["HOLD-BACK"],partHoldBack:attributes["PART-HOLD-BACK"]};else if("EXT-X-PART-INF"===name)attributes["PART-TARGET"],playlist.partTargetDuration=attributes["PART-TARGET"];else if("EXT-X-RENDITION-REPORT"===name)attributes.URI,/^[a-z]+:/i.test(attributes.URI),playlist.renditionReports.push({uri:attributes.URI,lastMSN:attributes["LAST-MSN"],lastPart:attributes["LAST-PART"]});else if("EXT-X-SKIP"===name)attributes["SKIPPED-SEGMENTS"],params.compatibleVersion<9&&(params.compatibleVersion=9),playlist.skip=attributes["SKIPPED-SEGMENTS"],mediaSequence+=playlist.skip;else if("EXT-X-PREFETCH"===name){var segment1=parsePrefetchSegment(lines,value,-1===segmentStart?index:segmentStart,index-1,mediaSequence++,discontinuitySequence,params);segment1.discontinuity&&(segment1.discontinuitySequence++,discontinuitySequence=segment1.discontinuitySequence),segment1.key||(segment1.key=currentKey),playlist.prefetchSegments.push(segment1),segmentStart=-1}else"EXT-X-DEFINE"===name&&(playlist.defines||(playlist.defines=[]),playlist.defines.push(attributes));else-1===segmentStart&&(segmentStart=index)}else{playlist.targetDuration;var segment=parseSegment(lines,line,segmentStart,index-1,mediaSequence++,discontinuitySequence,params),_addSegment=addSegment(playlist,segment,discontinuitySequence,currentKey,currentMap);discontinuitySequence=_addSegment[0],currentKey=_addSegment[1],currentMap=_addSegment[2],!containsParts&&segment.parts&&segment.parts.length>0&&(containsParts=!0),segmentStart=-1}}if(-1!==segmentStart){var _parts_,segment2=parseSegment(lines,"",segmentStart,lines.length-1,mediaSequence++,discontinuitySequence,params),parts=segment2.parts;parts&&parts.length>0&&!playlist.endlist&&(null==(_parts_=parts[parts.length-1])||_parts_.hint),addSegment(playlist,segment2,discontinuitySequence,currentKey,currentMap),!containsParts&&segment2.parts&&segment2.parts.length>0&&(containsParts=!0)}return function(segments){for(var earliestDates=new Map,rangeList=new Map,i=segments.length-1;i>=0;i--){var _segments_i=segments[i];_segments_i.programDateTime;var dateRange=_segments_i.dateRange;if(dateRange&&dateRange.start){dateRange.endOnNext&&(dateRange.end||dateRange.duration);var start=dateRange.start.getTime(),duration=dateRange.duration||0;dateRange.end&&dateRange.duration&&dateRange.end.getTime(),dateRange.endOnNext&&dateRange.classId&&(dateRange.end=earliestDates.get(dateRange.classId)),earliestDates.set(dateRange.classId,dateRange.start);var end=dateRange.end?dateRange.end.getTime():start+1e3*duration;if(dateRange.classId){var range=rangeList.get(dateRange.classId);if(range){for(var _step,_iterator=_create_for_of_iterator_helper_loose(range);!(_step=_iterator()).done;){var entry=_step.value;entry.start<=start&&entry.end>start||entry.start>=start&&entry.start}range.push({start:start,end:end})}else rangeList.set(dateRange.classId,[{start:start,end:end}])}}}}(playlist.segments),playlist.lowLatencyCompatibility&&function(playlist,containsParts){var lowLatencyCompatibility=playlist.lowLatencyCompatibility;if(playlist.targetDuration,playlist.partTargetDuration,lowLatencyCompatibility&&(lowLatencyCompatibility.canSkipUntil,lowLatencyCompatibility.holdBack,lowLatencyCompatibility.partHoldBack,containsParts)){for(var _step,_iterator=_create_for_of_iterator_helper_loose(playlist.segments.entries());!(_step=_iterator()).done;){var _step_value=_step.value,parts=(_step_value[0],_step_value[1].parts);if(parts&&0!==parts.length){playlist.segments.length;for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(parts.entries());!(_step1=_iterator1()).done;){var _step_value1=_step1.value;void 0!==(_step_value1[0],_step_value1[1].duration)&&parts.length}}}for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(playlist.renditionReports);!(_step2=_iterator2()).done;){var report=_step2.value,lastSegment=playlist.segments[playlist.segments.length-1];void 0===report.lastMSN&&lastSegment&&(report.lastMSN=lastSegment.mediaSequenceNumber),(void 0===report.lastPart||null===report.lastPart)&&lastSegment&&lastSegment.parts&&lastSegment.parts.length>0&&(report.lastPart=lastSegment.parts.length-1)}}}(playlist,containsParts),playlist}function parser(text,options){var params={isMasterPlaylist:void 0,hasMap:!1,targetDuration:0,compatibleVersion:1,isClosedCaptionsNone:!1,hash:{}},lines=function(text,params){var lines=[],normalized=text;65279===normalized.charCodeAt(0)&&(normalized=normalized.slice(1));for(var _step,_iterator=_create_for_of_iterator_helper_loose(normalized.split(/\r?\n/));!(_step=_iterator()).done;){var line=_step.value.trim();if(line)if(line.startsWith("#")){if(line.startsWith("#EXT")){var tag=parseTag(line,params);tag&&lines.push(tag)}}else lines.push(line)}return 0===lines.length||"object"!==_type_of(lines[0])||lines[0].name,lines}(text,params),playlist=function(lines,params){var playlist;return params.isMasterPlaylist?playlist=parseMasterPlaylist(lines,params):!(playlist=parseMediaPlaylist(lines,params)).isMasterPlaylist&&!playlist.isIFrame&&params.hasMap&&params.compatibleVersion<6&&(params.compatibleVersion=6),params.compatibleVersion>1&&void 0!==playlist.version&&null!==playlist.version&&playlist.version<params.compatibleVersion&&params.compatibleVersion,playlist}(lines,params);return playlist.source=text,(null==options?void 0:options.uri)&&function(playlist,baseUri){if(playlist.isMasterPlaylist){for(var _step,master=playlist,_iterator=_create_for_of_iterator_helper_loose(master.variants);!(_step=_iterator()).done;){var variant=_step.value;variant.uri=resolveUrl(baseUri,variant.uri);for(var _i=0,_iter=["audio","video","subtitles","closedCaptions"];_i<_iter.length;_i++){var renditions=variant[_iter[_i]];if(renditions)for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(renditions);!(_step1=_iterator1()).done;){var r=_step1.value;r.uri&&(r.uri=resolveUrl(baseUri,r.uri))}}}for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(master.sessionDataList);!(_step2=_iterator2()).done;){var sd=_step2.value;sd.uri&&(sd.uri=resolveUrl(baseUri,sd.uri))}for(var _step3,_iterator3=_create_for_of_iterator_helper_loose(master.sessionKeyList);!(_step3=_iterator3()).done;){var sk=_step3.value;sk.uri&&(sk.uri=resolveUrl(baseUri,sk.uri))}var steering=master.contentSteering;steering&&(steering.serverUri=resolveUrl(baseUri,steering.serverUri))}else{for(var _step4,mp=playlist,_iterator4=_create_for_of_iterator_helper_loose(mp.segments);!(_step4=_iterator4()).done;){var segment=_step4.value;if(segment.uri=resolveUrl(baseUri,segment.uri),segment.key&&segment.key.uri&&(segment.key.uri=resolveUrl(baseUri,segment.key.uri)),segment.map&&segment.map.uri&&(segment.map.uri=resolveUrl(baseUri,segment.map.uri)),segment.parts)for(var _step5,_iterator5=_create_for_of_iterator_helper_loose(segment.parts);!(_step5=_iterator5()).done;){var part=_step5.value;part.uri=resolveUrl(baseUri,part.uri)}}for(var _step6,_iterator6=_create_for_of_iterator_helper_loose(mp.prefetchSegments);!(_step6=_iterator6()).done;){var prefetch=_step6.value;prefetch.uri=resolveUrl(baseUri,prefetch.uri),prefetch.key&&prefetch.key.uri&&(prefetch.key.uri=resolveUrl(baseUri,prefetch.key.uri))}for(var _step7,_iterator7=_create_for_of_iterator_helper_loose(mp.renditionReports);!(_step7=_iterator7()).done;){var report=_step7.value;report.uri=resolveUrl(baseUri,report.uri)}}}(playlist,options.uri),playlist}function isMasterPlaylist(pl){return!0===pl.isMasterPlaylist}function isMediaPlaylist(pl){return!1===pl.isMasterPlaylist}export{InvalidPlaylistError,constants as TAGS,parser as default,isMasterPlaylist,isMediaPlaylist,parser,resolveUrl};
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*
2
- * @skax/hls-parse v0.0.1-beta.5
3
- * Copyright (c) 2026-05-25 ShineShao <xiaoshaoqq@gmail.com>
2
+ * @skax/hls-parse v0.0.1-beta.7
3
+ * Copyright (c) 2026-05-27 ShineShao <xiaoshaoqq@gmail.com>
4
4
  * Released under the MIT License.
5
5
  */
6
- "use strict";function _array_like_to_array$1(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _construct(Parent,args,Class){return _construct=_is_native_reflect_construct()?Reflect.construct:function(Parent,args,Class){var a=[null];a.push.apply(a,args);var instance=new(Function.bind.apply(Parent,a));return Class&&_set_prototype_of(instance,Class.prototype),instance},_construct.apply(null,arguments)}function _get_prototype_of(o){return _get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},_get_prototype_of(o)}function _set_prototype_of(o,p){return _set_prototype_of=Object.setPrototypeOf||function(o,p){return o.__proto__=p,o},_set_prototype_of(o,p)}function _wrap_native_super(Class){var _cache="function"==typeof Map?new Map:void 0;return _wrap_native_super=function(Class){if(null===Class||(fn=Class,-1===Function.toString.call(fn).indexOf("[native code]")))return Class;var fn;if("function"!=typeof Class)throw new TypeError("Super expression must either be null or a function");if(void 0!==_cache){if(_cache.has(Class))return _cache.get(Class);_cache.set(Class,Wrapper)}function Wrapper(){return _construct(Class,arguments,_get_prototype_of(this).constructor)}return Wrapper.prototype=Object.create(Class.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),_set_prototype_of(Wrapper,Class)},_wrap_native_super(Class)}function _is_native_reflect_construct(){try{var result=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(_){}return(_is_native_reflect_construct=function(){return!!result})()}function _create_for_of_iterator_helper_loose$1(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=function(o,minLen){if(o){if("string"==typeof o)return _array_like_to_array$1(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array$1(o,minLen):void 0}}(o))||allowArrayLike){it&&(o=it);var i=0;return function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}Object.defineProperty(exports,"__esModule",{value:!0});var InvalidPlaylistError=function(Error1){function InvalidPlaylistError(message){var _this;return(_this=Error1.call(this,message)||this).name="InvalidPlaylistError",_this}return function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function");subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:!0,configurable:!0}}),superClass&&_set_prototype_of(subClass,superClass)}(InvalidPlaylistError,Error1),InvalidPlaylistError}(_wrap_native_super(Error));function trim(str,char){if(void 0!==str){for(var start=0,end=str.length-1;start<=end&&str[start]===char;)start++;for(;end>=start&&str[end]===char;)end--;return str.slice(start,end+1)}}function splitAt(str,delimiter){var index=str.indexOf(delimiter);return-1===index?[str,""]:[str.slice(0,index),str.slice(index+1)]}function toNumber(str){return Number(str)}function hexToByteSequence(hex){var h=hex;(h.startsWith("0x")||h.startsWith("0X"))&&(h=h.slice(2)),h.length%2!=0&&(h="0"+h);for(var bytes=new Uint8Array(h.length/2),i=0;i<bytes.length;i++)bytes[i]=parseInt(h.slice(2*i,2*i+2),16);return bytes}function camelify(str){return str.toLowerCase().replace(/[-_](.)/g,function(_,c){return c.toUpperCase()})}function resolveUrl(base,relative){if(!base)return relative;if(/^[a-zA-Z][a-zA-Z0-9+\-.]*:/.test(relative))return relative;try{var baseUrl=new URL(base);return relative.startsWith("//")?baseUrl.protocol+relative:new URL(relative,baseUrl).href}catch(unused){if(relative.startsWith("/")){var match=base.match(/^[a-zA-Z][a-zA-Z0-9+\-.]*:\/\/[^/]+/);if(match)return match[0]+relative}for(var _step,result=[],_iterator=_create_for_of_iterator_helper_loose$1((base.replace(/\/[^/]*$/,"/")+relative).split("/"));!(_step=_iterator()).done;){var part=_step.value;".."===part?result.pop():"."!==part&&result.push(part)}return result.join("/")}}var constants=Object.freeze({__proto__:null,EXTINF:"EXTINF",EXTM3U:"EXTM3U",EXT_OATCLS_SCTE35:"EXT-OATCLS-SCTE35",EXT_X_ASSET:"EXT-X-ASSET",EXT_X_BITRATE:"EXT-X-BITRATE",EXT_X_BYTERANGE:"EXT-X-BYTERANGE",EXT_X_CONTENT_STEERING:"EXT-X-CONTENT-STEERING",EXT_X_CUE:"EXT-X-CUE",EXT_X_CUE_IN:"EXT-X-CUE-IN",EXT_X_CUE_OUT:"EXT-X-CUE-OUT",EXT_X_CUE_OUT_CONT:"EXT-X-CUE-OUT-CONT",EXT_X_DATERANGE:"EXT-X-DATERANGE",EXT_X_DEFINE:"EXT-X-DEFINE",EXT_X_DISCONTINUITY:"EXT-X-DISCONTINUITY",EXT_X_DISCONTINUITY_SEQUENCE:"EXT-X-DISCONTINUITY-SEQUENCE",EXT_X_ENDLIST:"EXT-X-ENDLIST",EXT_X_GAP:"EXT-X-GAP",EXT_X_INDEPENDENT_SEGMENTS:"EXT-X-INDEPENDENT-SEGMENTS",EXT_X_I_FRAMES_ONLY:"EXT-X-I-FRAMES-ONLY",EXT_X_I_FRAME_STREAM_INF:"EXT-X-I-FRAME-STREAM-INF",EXT_X_KEY:"EXT-X-KEY",EXT_X_MAP:"EXT-X-MAP",EXT_X_MEDIA:"EXT-X-MEDIA",EXT_X_MEDIA_SEQUENCE:"EXT-X-MEDIA-SEQUENCE",EXT_X_PART:"EXT-X-PART",EXT_X_PART_INF:"EXT-X-PART-INF",EXT_X_PLAYLIST_TYPE:"EXT-X-PLAYLIST-TYPE",EXT_X_PREFETCH:"EXT-X-PREFETCH",EXT_X_PREFETCH_DISCONTINUITY:"EXT-X-PREFETCH-DISCONTINUITY",EXT_X_PRELOAD_HINT:"EXT-X-PRELOAD-HINT",EXT_X_PROGRAM_DATE_TIME:"EXT-X-PROGRAM-DATE-TIME",EXT_X_RENDITION_REPORT:"EXT-X-RENDITION-REPORT",EXT_X_SCTE35:"EXT-X-SCTE35",EXT_X_SERVER_CONTROL:"EXT-X-SERVER-CONTROL",EXT_X_SESSION_DATA:"EXT-X-SESSION-DATA",EXT_X_SESSION_KEY:"EXT-X-SESSION-KEY",EXT_X_SKIP:"EXT-X-SKIP",EXT_X_START:"EXT-X-START",EXT_X_STREAM_INF:"EXT-X-STREAM-INF",EXT_X_TARGETDURATION:"EXT-X-TARGETDURATION",EXT_X_VERSION:"EXT-X-VERSION"});function _array_like_to_array(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _type_of(obj){return obj&&"undefined"!=typeof Symbol&&obj.constructor===Symbol?"symbol":typeof obj}function _create_for_of_iterator_helper_loose(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=function(o,minLen){if(o){if("string"==typeof o)return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array(o,minLen):void 0}}(o))||allowArrayLike){it&&(o=it);var i=0;return function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function parseEXTINF(param){var pair=splitAt(param,",");return{duration:toNumber(pair[0]),title:pair[1]?decodeURIComponent(encodeURIComponent(pair[1])):void 0}}function parseBYTERANGE(param){var pair=splitAt(param,"@");return{length:toNumber(pair[0]),offset:pair[1]?toNumber(pair[1]):-1}}function parseResolution(str){var pair=splitAt(str,"x");return{width:toNumber(pair[0]),height:toNumber(pair[1])}}function parseAllowedCpc(str){for(var _step,allowedCpcList=[],_iterator=_create_for_of_iterator_helper_loose(str.split(","));!(_step=_iterator()).done;){var _utils_splitAt=splitAt(_step.value,":"),format=_utils_splitAt[0],cpcText=_utils_splitAt[1];format&&cpcText&&allowedCpcList.push({format:format,cpcList:cpcText.split("/")})}return allowedCpcList}function parseIV(str){var iv=hexToByteSequence(str);return iv.length,iv}function parseUserAttribute(str){return str.startsWith('"')?trim(str,'"'):str.startsWith("0x")||str.startsWith("0X")?hexToByteSequence(str):toNumber(str)}function setCompatibleVersionOfKey(params,attributes){attributes.IV&&params.compatibleVersion<2&&(params.compatibleVersion=2),(attributes.KEYFORMAT||attributes.KEYFORMATVERSIONS)&&params.compatibleVersion<5&&(params.compatibleVersion=5)}function parseAttributeList(param){for(var _step,attributes={},_iterator=_create_for_of_iterator_helper_loose(function(str){for(var result=[],current="",inQuotes=!1,i=0;i<str.length;i++){var char=str[i];'"'===char?(inQuotes=!inQuotes,current+=char):","!==char||inQuotes?current+=char:(result.push(current),current="")}return current&&result.push(current),result}(param));!(_step=_iterator()).done;){var _utils_splitAt=splitAt(_step.value,"="),key=_utils_splitAt[0],value=_utils_splitAt[1],val=trim(value,'"');switch(key){case"URI":attributes[key]=val;break;case"START-DATE":case"END-DATE":attributes[key]=new Date(val);break;case"IV":attributes[key]=parseIV(val);break;case"BYTERANGE":attributes[key]=parseBYTERANGE(val);break;case"RESOLUTION":attributes[key]=parseResolution(val);break;case"ALLOWED-CPC":attributes[key]=parseAllowedCpc(val);break;case"END-ON-NEXT":case"DEFAULT":case"AUTOSELECT":case"FORCED":case"PRECISE":case"CAN-BLOCK-RELOAD":case"INDEPENDENT":case"GAP":attributes[key]="YES"===val;break;case"DURATION":case"PLANNED-DURATION":case"BANDWIDTH":case"AVERAGE-BANDWIDTH":case"FRAME-RATE":case"TIME-OFFSET":case"CAN-SKIP-UNTIL":case"HOLD-BACK":case"PART-HOLD-BACK":case"PART-TARGET":case"BYTERANGE-START":case"BYTERANGE-LENGTH":case"LAST-MSN":case"LAST-PART":case"SKIPPED-SEGMENTS":case"SCORE":case"PROGRAM-ID":attributes[key]=toNumber(val);break;default:key.startsWith("SCTE35-")?attributes[key]=hexToByteSequence(val):key.startsWith("X-")?attributes[key]=parseUserAttribute(value):attributes[key]=val}}return attributes}function parseTag(line,params){var _splitTag=function(line){var index=line.indexOf(":");return-1===index?[line.slice(1).trim(),null]:[line.slice(1,index).trim(),line.slice(index+1).trim()]}(line),name=_splitTag[0],param=_splitTag[1],category=function(tagName){switch(tagName){case"EXTM3U":case"EXT-X-VERSION":case"EXT-X-CONTENT-STEERING":return"Basic";case"EXTINF":case"EXT-X-BYTERANGE":case"EXT-X-DISCONTINUITY":case"EXT-X-PREFETCH-DISCONTINUITY":case"EXT-X-KEY":case"EXT-X-MAP":case"EXT-X-PROGRAM-DATE-TIME":case"EXT-X-DATERANGE":case"EXT-X-CUE-OUT":case"EXT-X-CUE-IN":case"EXT-X-CUE-OUT-CONT":case"EXT-X-CUE":case"EXT-OATCLS-SCTE35":case"EXT-X-ASSET":case"EXT-X-SCTE35":case"EXT-X-PART":case"EXT-X-PRELOAD-HINT":case"EXT-X-GAP":return"Segment";case"EXT-X-BITRATE":case"EXT-X-TARGETDURATION":case"EXT-X-MEDIA-SEQUENCE":case"EXT-X-DISCONTINUITY-SEQUENCE":case"EXT-X-ENDLIST":case"EXT-X-PLAYLIST-TYPE":case"EXT-X-I-FRAMES-ONLY":case"EXT-X-SERVER-CONTROL":case"EXT-X-PART-INF":case"EXT-X-PREFETCH":case"EXT-X-RENDITION-REPORT":case"EXT-X-SKIP":return"MediaPlaylist";case"EXT-X-MEDIA":case"EXT-X-STREAM-INF":case"EXT-X-I-FRAME-STREAM-INF":case"EXT-X-SESSION-DATA":case"EXT-X-SESSION-KEY":return"MasterPlaylist";case"EXT-X-INDEPENDENT-SEGMENTS":case"EXT-X-START":case"EXT-X-DEFINE":return"MediaorMasterPlaylist";default:return"Unknown"}}(name);if(function(category,params){if("Segment"===category||"MediaPlaylist"===category)return void 0===params.isMasterPlaylist?void(params.isMasterPlaylist=!1):void params.isMasterPlaylist;if("MasterPlaylist"===category){if(void 0===params.isMasterPlaylist)return void(params.isMasterPlaylist=!0);params.isMasterPlaylist}}(category,params),"Unknown"===category)return null;"MediaPlaylist"===category&&"EXT-X-RENDITION-REPORT"!==name&&"EXT-X-PREFETCH"!==name&&(params.hash[name],params.hash[name]=!0);var _parseTagParam=function(name,param){if(null===param)return[null,null];switch(name){case"EXTM3U":case"EXT-X-DISCONTINUITY":case"EXT-X-ENDLIST":case"EXT-X-I-FRAMES-ONLY":case"EXT-X-INDEPENDENT-SEGMENTS":case"EXT-X-CUE-IN":case"EXT-X-GAP":return[null,null];case"EXT-X-VERSION":case"EXT-X-TARGETDURATION":case"EXT-X-MEDIA-SEQUENCE":case"EXT-X-DISCONTINUITY-SEQUENCE":case"EXT-X-BITRATE":return[toNumber(param),null];case"EXT-X-CUE-OUT":return Number.isNaN(Number(param))?[null,parseAttributeList(param)]:[toNumber(param),null];case"EXT-X-KEY":case"EXT-X-MAP":case"EXT-X-DATERANGE":case"EXT-X-MEDIA":case"EXT-X-STREAM-INF":case"EXT-X-I-FRAME-STREAM-INF":case"EXT-X-SESSION-DATA":case"EXT-X-SESSION-KEY":case"EXT-X-START":case"EXT-X-SERVER-CONTROL":case"EXT-X-PART-INF":case"EXT-X-PART":case"EXT-X-PRELOAD-HINT":case"EXT-X-RENDITION-REPORT":case"EXT-X-SKIP":case"EXT-X-DEFINE":case"EXT-X-CONTENT-STEERING":return[null,parseAttributeList(param)];case"EXTINF":return[parseEXTINF(param),null];case"EXT-X-BYTERANGE":return[parseBYTERANGE(param),null];case"EXT-X-PROGRAM-DATE-TIME":return[new Date(param),null];default:return[param,null]}}(name,param);return{name:name,category:category,value:_parseTagParam[0],attributes:_parseTagParam[1]||{}}}function parseVariant(variantAttrs,uri,iFrameOnly,params,mediaGroups){for(var variant={uri:uri,bandwidth:variantAttrs.BANDWIDTH,averageBandwidth:variantAttrs["AVERAGE-BANDWIDTH"],score:variantAttrs.SCORE,codecs:variantAttrs.CODECS,resolution:variantAttrs.RESOLUTION,frameRate:variantAttrs["FRAME-RATE"],hdcpLevel:variantAttrs["HDCP-LEVEL"],allowedCpc:variantAttrs["ALLOWED-CPC"],videoRange:variantAttrs["VIDEO-RANGE"],stableVariantId:variantAttrs["STABLE-VARIANT-ID"],pathwayId:variantAttrs["PATHWAY-ID"]||variantAttrs["STABLE-PATHWAY-ID"],programId:variantAttrs["PROGRAM-ID"],isIFrameOnly:iFrameOnly},_i=0,_iter=["AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS"];_i<_iter.length;_i++){var type=_iter[_i],attrsGroupId=variantAttrs[type];if(attrsGroupId){var typeMap=mediaGroups.get(type);if(typeMap){var renditions=typeMap.get(attrsGroupId);if(renditions)for(var _step,_iterator=_create_for_of_iterator_helper_loose(renditions);!(_step=_iterator()).done;){addRenditionToList(variant,_step.value,type)}}}}return function(attrs,variant,params){for(var _loop=function(_i,_iter){var type=_iter[_i];if("CLOSED-CAPTIONS"===type&&"NONE"===attrs[type])params.isClosedCaptionsNone=!0,variant.closedCaptions=[];else if(attrs[type]){var key=camelify(type),renditions=variant[key]||[];renditions.length>0&&renditions.some(function(item){return item.groupId===attrs[type]})}},_i=0,_iter=["AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS"];_i<_iter.length;_i++)_loop(_i,_iter)}(variantAttrs,variant,params),variant}function addRenditionToList(variant,rendition,type){var key=camelify(type),renditions=variant[key];renditions||(renditions=[],variant[key]=renditions),renditions.push(rendition)}function parseMasterPlaylist(lines,params){for(var _step,_loop=function(){var _step_value=_step.value,index=_step_value[0],line=_step_value[1];if("string"==typeof line)return"continue";var name=line.name,value=line.value,attributes=line.attributes;if("EXT-X-VERSION"===name)playlist.version=value;else if("EXT-X-CONTENT-STEERING"===name)playlist.contentSteering={serverUri:attributes["SERVER-URI"],pathwayId:attributes["PATHWAY-ID"]};else if("EXT-X-STREAM-INF"===name){var uriLine=lines[index+1];"string"!=typeof uriLine||uriLine.startsWith("#");var variant=parseVariant(attributes,uriLine,!1,params,mediaGroups);"number"==typeof variant.score&&(variantIsScored=!0,variant.score),playlist.variants.push(variant)}else if("EXT-X-I-FRAME-STREAM-INF"===name){var variant1=parseVariant(attributes,attributes.URI,!0,params,mediaGroups);playlist.variants.push(variant1)}else if("EXT-X-SESSION-DATA"===name){var sessionData={id:attributes["DATA-ID"],value:attributes.VALUE,uri:attributes.URI,language:attributes.LANGUAGE};playlist.sessionDataList.some(function(item){return item.id===sessionData.id&&item.language===sessionData.language}),playlist.sessionDataList.push(sessionData)}else if("EXT-X-SESSION-KEY"===name){attributes.METHOD;var sessionKey={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS};playlist.sessionKeyList.some(function(item){return function(key1,key2){if(key1.method!==key2.method)return!1;if(key1.uri!==key2.uri)return!1;if(key1.iv){if(!key2.iv)return!1;if(key1.iv.byteLength!==key2.iv.byteLength)return!1;for(var i=0;i<key1.iv.byteLength;i++)if(key1.iv[i]!==key2.iv[i])return!1}else if(key2.iv)return!1;return key1.format===key2.format&&key1.formatVersion===key2.formatVersion}(item,sessionKey)}),setCompatibleVersionOfKey(params,attributes),playlist.sessionKeyList.push(sessionKey)}else"EXT-X-INDEPENDENT-SEGMENTS"===name?(playlist.independentSegments,playlist.independentSegments=!0):"EXT-X-START"===name?(playlist.start,attributes["TIME-OFFSET"],playlist.start={offset:attributes["TIME-OFFSET"],precise:attributes.PRECISE||!1}):"EXT-X-DEFINE"===name&&(playlist.defines||(playlist.defines=[]),playlist.defines.push(attributes))},playlist={isMasterPlaylist:!0,variants:[],sessionDataList:[],sessionKeyList:[]},mediaGroups=function(lines){for(var _step,_loop=function(){var attrs,line=_step.value;if("object"===(void 0===line?"undefined":_type_of(line))&&"EXT-X-MEDIA"===line.name){var rendition={type:(attrs=line.attributes).TYPE,uri:attrs.URI,groupId:attrs["GROUP-ID"],language:attrs.LANGUAGE,assocLanguage:attrs["ASSOC-LANGUAGE"],name:attrs.NAME,isDefault:attrs.DEFAULT,autoselect:attrs.AUTOSELECT,forced:attrs.FORCED,instreamId:attrs["INSTREAM-ID"],characteristics:attrs.CHARACTERISTICS,channels:attrs.CHANNELS,pathwayId:attrs["PATHWAY-ID"]},type=rendition.type,groupId=rendition.groupId,typeMap=index.get(type);typeMap||(typeMap=new Map,index.set(type,typeMap));var group=typeMap.get(groupId);group||(group=[],typeMap.set(groupId,group)),group.some(function(r){return r.name===rendition.name}),rendition.isDefault&&group.some(function(r){return r.isDefault}),group.push(rendition)}},index=new Map,_iterator=_create_for_of_iterator_helper_loose(lines);!(_step=_iterator()).done;)_loop();return index}(lines),variantIsScored=!1,_iterator=_create_for_of_iterator_helper_loose(lines.entries());!(_step=_iterator()).done;)_loop();if(variantIsScored)for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(playlist.variants);!(_step1=_iterator1()).done;){_step1.value.score}if(params.isClosedCaptionsNone)for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(playlist.variants);!(_step2=_iterator2()).done;){var cc=_step2.value.closedCaptions;cc&&cc.length}return playlist}function parseDateRange(attributes){for(var _step,attrs={},_iterator=_create_for_of_iterator_helper_loose(Object.keys(attributes));!(_step=_iterator()).done;){var key=_step.value;(key.startsWith("SCTE35-")||key.startsWith("X-"))&&(attrs[key]=attributes[key])}return{id:attributes.ID,classId:attributes.CLASS,start:attributes["START-DATE"],cue:attributes.CUE,end:attributes["END-DATE"],duration:attributes.DURATION,plannedDuration:attributes["PLANNED-DURATION"],endOnNext:attributes["END-ON-NEXT"],attributes:attrs}}function parseSegment(lines,uri,start,end,mediaSequenceNumber,discontinuitySequence,params){for(var segment={uri:uri,mediaSequenceNumber:mediaSequenceNumber,discontinuitySequence:discontinuitySequence,markers:[],parts:[]},partHint=!1,i=start;i<=end;i++)if("string"!=typeof lines[i]){var _lines_i=lines[i],name=_lines_i.name,value=_lines_i.value,attributes=_lines_i.attributes;if("EXTINF"===name)!Number.isInteger(value.duration)&&params.compatibleVersion<3&&(params.compatibleVersion=3),Math.round(value.duration),params.targetDuration,segment.duration=value.duration,segment.title=value.title;else if("EXT-X-BYTERANGE"===name)params.compatibleVersion<4&&(params.compatibleVersion=4),segment.byterange=value;else if("EXT-X-DISCONTINUITY"===name)segment.parts&&segment.parts.length,segment.discontinuity=!0;else if("EXT-X-GAP"===name)params.compatibleVersion<8&&(params.compatibleVersion=8),segment.gap=!0;else if("EXT-X-KEY"===name)segment.parts&&segment.parts.length,setCompatibleVersionOfKey(params,attributes),segment.key={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS};else if("EXT-X-MAP"===name)segment.parts&&segment.parts.length,params.compatibleVersion<5&&(params.compatibleVersion=5),params.hasMap=!0,segment.map={uri:attributes.URI,byterange:attributes.BYTERANGE};else if("EXT-X-PROGRAM-DATE-TIME"===name)segment.programDateTime=value;else if("EXT-X-DATERANGE"===name)segment.dateRange=parseDateRange(attributes);else if("EXT-X-CUE-OUT"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"OUT",duration:attributes&&attributes.DURATION||value});else if("EXT-X-CUE-IN"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"IN"});else if("EXT-X-CUE-OUT-CONT"===name||"EXT-X-CUE"===name||"EXT-OATCLS-SCTE35"===name||"EXT-X-ASSET"===name||"EXT-X-SCTE35"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"RAW",tagName:name,value:value});else if("EXT-X-PRELOAD-HINT"!==name||attributes.TYPE)if("EXT-X-PRELOAD-HINT"===name&&"PART"===attributes.TYPE&&partHint);else if("EXT-X-PART"!==name&&"EXT-X-PRELOAD-HINT"!==name||attributes.URI){if("EXT-X-PRELOAD-HINT"===name&&"MAP"===attributes.TYPE)params.hasMap=!0,segment.map={hint:!0,uri:attributes.URI,byterange:{length:attributes["BYTERANGE-LENGTH"],offset:attributes["BYTERANGE-START"]||0}};else if("EXT-X-PART"===name||"EXT-X-PRELOAD-HINT"===name&&"PART"===attributes.TYPE){"EXT-X-PART"===name&&attributes.DURATION,"EXT-X-PRELOAD-HINT"===name&&(partHint=!0),segment.parts||(segment.parts=[]);var partialSegment={hint:"EXT-X-PRELOAD-HINT"===name,uri:attributes.URI,byterange:"EXT-X-PART"===name?attributes.BYTERANGE:{length:attributes["BYTERANGE-LENGTH"],offset:attributes["BYTERANGE-START"]||0},duration:attributes.DURATION,independent:attributes.INDEPENDENT,gap:attributes.GAP};segment.gap,segment.parts.push(partialSegment)}}else;else;}return segment}function parsePrefetchSegment(lines,uri,start,end,mediaSequenceNumber,discontinuitySequence,params){for(var segment={uri:uri,mediaSequenceNumber:mediaSequenceNumber,discontinuitySequence:discontinuitySequence},i=start;i<=end;i++)if("string"!=typeof lines[i]){var _lines_i=lines[i],name=_lines_i.name,attributes=_lines_i.attributes;"EXTINF"===name||"EXT-X-DISCONTINUITY"===name||("EXT-X-PREFETCH-DISCONTINUITY"===name?segment.discontinuity=!0:"EXT-X-KEY"===name&&(setCompatibleVersionOfKey(params,attributes),segment.key={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS}))}return segment}function addSegment(playlist,segment,discontinuitySequence,currentKey,currentMap){var _segment_key,_segment_map,discontinuity=segment.discontinuity,key=segment.key,map=segment.map,byterange=segment.byterange,uri=segment.uri;if(discontinuity&&(segment.discontinuitySequence=discontinuitySequence+1),key||(segment.key=currentKey),map||(segment.map=currentMap),byterange&&-1===byterange.offset){var segments=playlist.segments;if(segments.length>0){var prevSegment=segments[segments.length-1];prevSegment.byterange&&prevSegment.uri===uri&&(byterange.offset=prevSegment.byterange.offset+prevSegment.byterange.length)}}return playlist.segments.push(segment),[segment.discontinuitySequence,null!=(_segment_key=segment.key)?_segment_key:null,null!=(_segment_map=segment.map)?_segment_map:null]}function parseMediaPlaylist(lines,params){for(var _step,playlist={isMasterPlaylist:!1,segments:[],prefetchSegments:[],renditionReports:[],dateRanges:[]},segmentStart=-1,mediaSequence=0,discontinuitySequence=0,currentKey=null,currentMap=null,containsParts=!1,_iterator=_create_for_of_iterator_helper_loose(lines.entries());!(_step=_iterator()).done;){var _step_value=_step.value,index=_step_value[0],line=_step_value[1];if("string"!=typeof line){var name=line.name,value=line.value,attributes=line.attributes,category=line.category;if("EXT-X-DATERANGE"===name){var dateRange=parseDateRange(attributes);playlist.dateRanges.push(dateRange)}if("Segment"!==category)if("EXT-X-VERSION"===name)void 0===playlist.version&&(playlist.version=value);else if("EXT-X-TARGETDURATION"===name)playlist.targetDuration=params.targetDuration=value;else if("EXT-X-MEDIA-SEQUENCE"===name)playlist.segments.length,playlist.mediaSequenceBase=value,mediaSequence=value;else if("EXT-X-BITRATE"===name)playlist.bitrate=value;else if("EXT-X-DISCONTINUITY-SEQUENCE"===name)playlist.segments.length,playlist.discontinuitySequenceBase=value,discontinuitySequence=value;else if("EXT-X-ENDLIST"===name)playlist.endlist=!0;else if("EXT-X-PLAYLIST-TYPE"===name)playlist.playlistType=value;else if("EXT-X-I-FRAMES-ONLY"===name)params.compatibleVersion<4&&(params.compatibleVersion=4),playlist.isIFrame=!0;else if("EXT-X-INDEPENDENT-SEGMENTS"===name)playlist.independentSegments,playlist.independentSegments=!0;else if("EXT-X-START"===name)playlist.start,attributes["TIME-OFFSET"],playlist.start={offset:attributes["TIME-OFFSET"],precise:attributes.PRECISE||!1};else if("EXT-X-SERVER-CONTROL"===name)attributes["CAN-BLOCK-RELOAD"],playlist.lowLatencyCompatibility={canBlockReload:attributes["CAN-BLOCK-RELOAD"],canSkipUntil:attributes["CAN-SKIP-UNTIL"],holdBack:attributes["HOLD-BACK"],partHoldBack:attributes["PART-HOLD-BACK"]};else if("EXT-X-PART-INF"===name)attributes["PART-TARGET"],playlist.partTargetDuration=attributes["PART-TARGET"];else if("EXT-X-RENDITION-REPORT"===name)attributes.URI,/^[a-z]+:/i.test(attributes.URI),playlist.renditionReports.push({uri:attributes.URI,lastMSN:attributes["LAST-MSN"],lastPart:attributes["LAST-PART"]});else if("EXT-X-SKIP"===name)attributes["SKIPPED-SEGMENTS"],params.compatibleVersion<9&&(params.compatibleVersion=9),playlist.skip=attributes["SKIPPED-SEGMENTS"],mediaSequence+=playlist.skip;else if("EXT-X-PREFETCH"===name){var segment1=parsePrefetchSegment(lines,value,-1===segmentStart?index:segmentStart,index-1,mediaSequence++,discontinuitySequence,params);segment1.discontinuity&&(segment1.discontinuitySequence++,discontinuitySequence=segment1.discontinuitySequence),segment1.key||(segment1.key=currentKey),playlist.prefetchSegments.push(segment1),segmentStart=-1}else"EXT-X-DEFINE"===name&&(playlist.defines||(playlist.defines=[]),playlist.defines.push(attributes));else-1===segmentStart&&(segmentStart=index)}else{playlist.targetDuration;var segment=parseSegment(lines,line,segmentStart,index-1,mediaSequence++,discontinuitySequence,params),_addSegment=addSegment(playlist,segment,discontinuitySequence,currentKey,currentMap);discontinuitySequence=_addSegment[0],currentKey=_addSegment[1],currentMap=_addSegment[2],!containsParts&&segment.parts&&segment.parts.length>0&&(containsParts=!0),segmentStart=-1}}if(-1!==segmentStart){var _parts_,segment2=parseSegment(lines,"",segmentStart,lines.length-1,mediaSequence++,discontinuitySequence,params),parts=segment2.parts;parts&&parts.length>0&&!playlist.endlist&&(null==(_parts_=parts[parts.length-1])||_parts_.hint),addSegment(playlist,segment2,discontinuitySequence,currentKey,currentMap),!containsParts&&segment2.parts&&segment2.parts.length>0&&(containsParts=!0)}return function(segments){for(var earliestDates=new Map,rangeList=new Map,i=segments.length-1;i>=0;i--){var _segments_i=segments[i];_segments_i.programDateTime;var dateRange=_segments_i.dateRange;if(dateRange&&dateRange.start){dateRange.endOnNext&&(dateRange.end||dateRange.duration);var start=dateRange.start.getTime(),duration=dateRange.duration||0;dateRange.end&&dateRange.duration&&dateRange.end.getTime(),dateRange.endOnNext&&dateRange.classId&&(dateRange.end=earliestDates.get(dateRange.classId)),earliestDates.set(dateRange.classId,dateRange.start);var end=dateRange.end?dateRange.end.getTime():start+1e3*duration;if(dateRange.classId){var range=rangeList.get(dateRange.classId);if(range){for(var _step,_iterator=_create_for_of_iterator_helper_loose(range);!(_step=_iterator()).done;){var entry=_step.value;entry.start<=start&&entry.end>start||entry.start>=start&&entry.start}range.push({start:start,end:end})}else rangeList.set(dateRange.classId,[{start:start,end:end}])}}}}(playlist.segments),playlist.lowLatencyCompatibility&&function(playlist,containsParts){var lowLatencyCompatibility=playlist.lowLatencyCompatibility;if(playlist.targetDuration,playlist.partTargetDuration,lowLatencyCompatibility&&(lowLatencyCompatibility.canSkipUntil,lowLatencyCompatibility.holdBack,lowLatencyCompatibility.partHoldBack,containsParts)){for(var _step,_iterator=_create_for_of_iterator_helper_loose(playlist.segments.entries());!(_step=_iterator()).done;){var _step_value=_step.value,parts=(_step_value[0],_step_value[1].parts);if(parts&&0!==parts.length){playlist.segments.length;for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(parts.entries());!(_step1=_iterator1()).done;){var _step_value1=_step1.value;void 0!==(_step_value1[0],_step_value1[1].duration)&&parts.length}}}for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(playlist.renditionReports);!(_step2=_iterator2()).done;){var report=_step2.value,lastSegment=playlist.segments[playlist.segments.length-1];void 0===report.lastMSN&&lastSegment&&(report.lastMSN=lastSegment.mediaSequenceNumber),(void 0===report.lastPart||null===report.lastPart)&&lastSegment&&lastSegment.parts&&lastSegment.parts.length>0&&(report.lastPart=lastSegment.parts.length-1)}}}(playlist,containsParts),playlist}function parser(text,options){var params={isMasterPlaylist:void 0,hasMap:!1,targetDuration:0,compatibleVersion:1,isClosedCaptionsNone:!1,hash:{}},lines=function(text,params){var lines=[],normalized=text;65279===normalized.charCodeAt(0)&&(normalized=normalized.slice(1));for(var _step,_iterator=_create_for_of_iterator_helper_loose(normalized.split(/\r?\n/));!(_step=_iterator()).done;){var line=_step.value.trim();if(line)if(line.startsWith("#")){if(line.startsWith("#EXT")){var tag=parseTag(line,params);tag&&lines.push(tag)}}else lines.push(line)}return 0===lines.length||"object"!==_type_of(lines[0])||lines[0].name,lines}(text,params),playlist=function(lines,params){var playlist;return params.isMasterPlaylist?playlist=parseMasterPlaylist(lines,params):!(playlist=parseMediaPlaylist(lines,params)).isMasterPlaylist&&!playlist.isIFrame&&params.hasMap&&params.compatibleVersion<6&&(params.compatibleVersion=6),params.compatibleVersion>1&&void 0!==playlist.version&&null!==playlist.version&&playlist.version<params.compatibleVersion&&params.compatibleVersion,playlist}(lines,params);return playlist.source=text,(null==options?void 0:options.uri)&&function(playlist,baseUri){if(playlist.isMasterPlaylist){for(var _step,master=playlist,_iterator=_create_for_of_iterator_helper_loose(master.variants);!(_step=_iterator()).done;){var variant=_step.value;variant.uri=resolveUrl(baseUri,variant.uri);for(var _i=0,_iter=["audio","video","subtitles","closedCaptions"];_i<_iter.length;_i++){var renditions=variant[_iter[_i]];if(renditions)for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(renditions);!(_step1=_iterator1()).done;){var r=_step1.value;r.uri&&(r.uri=resolveUrl(baseUri,r.uri))}}}for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(master.sessionDataList);!(_step2=_iterator2()).done;){var sd=_step2.value;sd.uri&&(sd.uri=resolveUrl(baseUri,sd.uri))}for(var _step3,_iterator3=_create_for_of_iterator_helper_loose(master.sessionKeyList);!(_step3=_iterator3()).done;){var sk=_step3.value;sk.uri&&(sk.uri=resolveUrl(baseUri,sk.uri))}var steering=master.contentSteering;steering&&(steering.serverUri=resolveUrl(baseUri,steering.serverUri))}else{for(var _step4,mp=playlist,_iterator4=_create_for_of_iterator_helper_loose(mp.segments);!(_step4=_iterator4()).done;){var segment=_step4.value;if(segment.uri=resolveUrl(baseUri,segment.uri),segment.key&&segment.key.uri&&(segment.key.uri=resolveUrl(baseUri,segment.key.uri)),segment.map&&segment.map.uri&&(segment.map.uri=resolveUrl(baseUri,segment.map.uri)),segment.parts)for(var _step5,_iterator5=_create_for_of_iterator_helper_loose(segment.parts);!(_step5=_iterator5()).done;){var part=_step5.value;part.uri=resolveUrl(baseUri,part.uri)}}for(var _step6,_iterator6=_create_for_of_iterator_helper_loose(mp.prefetchSegments);!(_step6=_iterator6()).done;){var prefetch=_step6.value;prefetch.uri=resolveUrl(baseUri,prefetch.uri),prefetch.key&&prefetch.key.uri&&(prefetch.key.uri=resolveUrl(baseUri,prefetch.key.uri))}for(var _step7,_iterator7=_create_for_of_iterator_helper_loose(mp.renditionReports);!(_step7=_iterator7()).done;){var report=_step7.value;report.uri=resolveUrl(baseUri,report.uri)}}}(playlist,options.uri),playlist}exports.InvalidPlaylistError=InvalidPlaylistError,exports.TAGS=constants,exports.default=parser,exports.isMasterPlaylist=function(pl){return!0===pl.isMasterPlaylist},exports.isMediaPlaylist=function(pl){return!1===pl.isMasterPlaylist},exports.parser=parser,exports.resolveUrl=resolveUrl;
6
+ "use strict";function _array_like_to_array$1(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _construct(Parent,args,Class){return _construct=_is_native_reflect_construct()?Reflect.construct:function(Parent,args,Class){var a=[null];a.push.apply(a,args);var instance=new(Function.bind.apply(Parent,a));return Class&&_set_prototype_of(instance,Class.prototype),instance},_construct.apply(null,arguments)}function _get_prototype_of(o){return _get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},_get_prototype_of(o)}function _set_prototype_of(o,p){return _set_prototype_of=Object.setPrototypeOf||function(o,p){return o.__proto__=p,o},_set_prototype_of(o,p)}function _wrap_native_super(Class){var _cache="function"==typeof Map?new Map:void 0;return _wrap_native_super=function(Class){if(null===Class||(fn=Class,-1===Function.toString.call(fn).indexOf("[native code]")))return Class;var fn;if("function"!=typeof Class)throw new TypeError("Super expression must either be null or a function");if(void 0!==_cache){if(_cache.has(Class))return _cache.get(Class);_cache.set(Class,Wrapper)}function Wrapper(){return _construct(Class,arguments,_get_prototype_of(this).constructor)}return Wrapper.prototype=Object.create(Class.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),_set_prototype_of(Wrapper,Class)},_wrap_native_super(Class)}function _is_native_reflect_construct(){try{var result=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(_){}return(_is_native_reflect_construct=function(){return!!result})()}function _create_for_of_iterator_helper_loose$1(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=function(o,minLen){if(o){if("string"==typeof o)return _array_like_to_array$1(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array$1(o,minLen):void 0}}(o))||allowArrayLike){it&&(o=it);var i=0;return function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}Object.defineProperty(exports,"__esModule",{value:!0});var InvalidPlaylistError=function(Error1){function InvalidPlaylistError(message){var _this;return(_this=Error1.call(this,message)||this).name="InvalidPlaylistError",_this}return function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function");subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:!0,configurable:!0}}),superClass&&_set_prototype_of(subClass,superClass)}(InvalidPlaylistError,Error1),InvalidPlaylistError}(_wrap_native_super(Error));function trim(str,char){if(void 0!==str){for(var start=0,end=str.length-1;start<=end&&str[start]===char;)start++;for(;end>=start&&str[end]===char;)end--;return str.slice(start,end+1)}}function splitAt(str,delimiter){var index=str.indexOf(delimiter);return-1===index?[str,""]:[str.slice(0,index),str.slice(index+1)]}function toNumber(str){return Number(str)}function hexToByteSequence(hex){var h=hex;(h.startsWith("0x")||h.startsWith("0X"))&&(h=h.slice(2)),h.length%2!=0&&(h="0"+h);for(var bytes=new Uint8Array(h.length/2),i=0;i<bytes.length;i++)bytes[i]=parseInt(h.slice(2*i,2*i+2),16);return bytes}function camelify(str){return str.toLowerCase().replace(/[-_](.)/g,function(_,c){return c.toUpperCase()})}function resolveUrl(base,relative){if(!base)return relative;if(/^[a-zA-Z][a-zA-Z0-9+\-.]*:/.test(relative))return relative;try{var baseUrl=new URL(base);return relative.startsWith("//")?baseUrl.protocol+relative:new URL(relative,baseUrl).href}catch(unused){if(relative.startsWith("/")){var match=base.match(/^[a-zA-Z][a-zA-Z0-9+\-.]*:\/\/[^/]+/);if(match)return match[0]+relative}for(var _step,result=[],_iterator=_create_for_of_iterator_helper_loose$1((base.replace(/\/[^/]*$/,"/")+relative).split("/"));!(_step=_iterator()).done;){var part=_step.value;".."===part?result.pop():"."!==part&&result.push(part)}return result.join("/")}}var constants=Object.freeze({__proto__:null,EXTINF:"EXTINF",EXTM3U:"EXTM3U",EXT_OATCLS_SCTE35:"EXT-OATCLS-SCTE35",EXT_X_ASSET:"EXT-X-ASSET",EXT_X_BITRATE:"EXT-X-BITRATE",EXT_X_BYTERANGE:"EXT-X-BYTERANGE",EXT_X_CONTENT_STEERING:"EXT-X-CONTENT-STEERING",EXT_X_CUE:"EXT-X-CUE",EXT_X_CUE_IN:"EXT-X-CUE-IN",EXT_X_CUE_OUT:"EXT-X-CUE-OUT",EXT_X_CUE_OUT_CONT:"EXT-X-CUE-OUT-CONT",EXT_X_DATERANGE:"EXT-X-DATERANGE",EXT_X_DEFINE:"EXT-X-DEFINE",EXT_X_DISCONTINUITY:"EXT-X-DISCONTINUITY",EXT_X_DISCONTINUITY_SEQUENCE:"EXT-X-DISCONTINUITY-SEQUENCE",EXT_X_ENDLIST:"EXT-X-ENDLIST",EXT_X_GAP:"EXT-X-GAP",EXT_X_INDEPENDENT_SEGMENTS:"EXT-X-INDEPENDENT-SEGMENTS",EXT_X_I_FRAMES_ONLY:"EXT-X-I-FRAMES-ONLY",EXT_X_I_FRAME_STREAM_INF:"EXT-X-I-FRAME-STREAM-INF",EXT_X_KEY:"EXT-X-KEY",EXT_X_MAP:"EXT-X-MAP",EXT_X_MEDIA:"EXT-X-MEDIA",EXT_X_MEDIA_SEQUENCE:"EXT-X-MEDIA-SEQUENCE",EXT_X_PART:"EXT-X-PART",EXT_X_PART_INF:"EXT-X-PART-INF",EXT_X_PLAYLIST_TYPE:"EXT-X-PLAYLIST-TYPE",EXT_X_PREFETCH:"EXT-X-PREFETCH",EXT_X_PREFETCH_DISCONTINUITY:"EXT-X-PREFETCH-DISCONTINUITY",EXT_X_PRELOAD_HINT:"EXT-X-PRELOAD-HINT",EXT_X_PROGRAM_DATE_TIME:"EXT-X-PROGRAM-DATE-TIME",EXT_X_RENDITION_REPORT:"EXT-X-RENDITION-REPORT",EXT_X_SCTE35:"EXT-X-SCTE35",EXT_X_SERVER_CONTROL:"EXT-X-SERVER-CONTROL",EXT_X_SESSION_DATA:"EXT-X-SESSION-DATA",EXT_X_SESSION_KEY:"EXT-X-SESSION-KEY",EXT_X_SKIP:"EXT-X-SKIP",EXT_X_START:"EXT-X-START",EXT_X_STREAM_INF:"EXT-X-STREAM-INF",EXT_X_TARGETDURATION:"EXT-X-TARGETDURATION",EXT_X_VERSION:"EXT-X-VERSION"});function _array_like_to_array(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _type_of(obj){return obj&&"undefined"!=typeof Symbol&&obj.constructor===Symbol?"symbol":typeof obj}function _create_for_of_iterator_helper_loose(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=function(o,minLen){if(o){if("string"==typeof o)return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array(o,minLen):void 0}}(o))||allowArrayLike){it&&(o=it);var i=0;return function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function parseEXTINF(param){var pair=splitAt(param,",");return{duration:toNumber(pair[0]),title:pair[1]?decodeURIComponent(encodeURIComponent(pair[1])):void 0}}function parseBYTERANGE(param){var pair=splitAt(param,"@");return{length:toNumber(pair[0]),offset:pair[1]?toNumber(pair[1]):-1}}function parseResolution(str){var pair=splitAt(str,"x");return{width:toNumber(pair[0]),height:toNumber(pair[1])}}function parseAllowedCpc(str){for(var _step,allowedCpcList=[],_iterator=_create_for_of_iterator_helper_loose(str.split(","));!(_step=_iterator()).done;){var _utils_splitAt=splitAt(_step.value,":"),format=_utils_splitAt[0],cpcText=_utils_splitAt[1];format&&cpcText&&allowedCpcList.push({format:format,cpcList:cpcText.split("/")})}return allowedCpcList}function parseIV(str){var iv=hexToByteSequence(str);return iv.length,iv}function parseUserAttribute(str){return str.startsWith('"')?trim(str,'"'):str.startsWith("0x")||str.startsWith("0X")?hexToByteSequence(str):toNumber(str)}function setCompatibleVersionOfKey(params,attributes){attributes.IV&&params.compatibleVersion<2&&(params.compatibleVersion=2),(attributes.KEYFORMAT||attributes.KEYFORMATVERSIONS)&&params.compatibleVersion<5&&(params.compatibleVersion=5)}function parseAttributeList(param){for(var _step,attributes={},_iterator=_create_for_of_iterator_helper_loose(function(str){for(var result=[],current="",inQuotes=!1,i=0;i<str.length;i++){var char=str[i];'"'===char?(inQuotes=!inQuotes,current+=char):","!==char||inQuotes?current+=char:(result.push(current),current="")}return current&&result.push(current),result}(param));!(_step=_iterator()).done;){var _utils_splitAt=splitAt(_step.value,"="),key=_utils_splitAt[0],value=_utils_splitAt[1],val=trim(value,'"');switch(key){case"URI":attributes[key]=val;break;case"START-DATE":case"END-DATE":attributes[key]=new Date(val);break;case"IV":attributes[key]=parseIV(val);break;case"BYTERANGE":attributes[key]=parseBYTERANGE(val);break;case"RESOLUTION":attributes[key]=parseResolution(val);break;case"ALLOWED-CPC":attributes[key]=parseAllowedCpc(val);break;case"END-ON-NEXT":case"DEFAULT":case"AUTOSELECT":case"FORCED":case"PRECISE":case"CAN-BLOCK-RELOAD":case"INDEPENDENT":case"GAP":attributes[key]="YES"===val;break;case"DURATION":case"PLANNED-DURATION":case"BANDWIDTH":case"AVERAGE-BANDWIDTH":case"FRAME-RATE":case"TIME-OFFSET":case"CAN-SKIP-UNTIL":case"HOLD-BACK":case"PART-HOLD-BACK":case"PART-TARGET":case"BYTERANGE-START":case"BYTERANGE-LENGTH":case"LAST-MSN":case"LAST-PART":case"SKIPPED-SEGMENTS":case"SCORE":case"PROGRAM-ID":attributes[key]=toNumber(val);break;default:key.startsWith("SCTE35-")?attributes[key]=hexToByteSequence(val):key.startsWith("X-")?attributes[key]=parseUserAttribute(value):attributes[key]=val}}return attributes}function parseTag(line,params){var _splitTag=function(line){var index=line.indexOf(":");return-1===index?[line.slice(1).trim(),null]:[line.slice(1,index).trim(),line.slice(index+1).trim()]}(line),name=_splitTag[0],param=_splitTag[1],category=function(tagName){switch(tagName){case"EXTM3U":case"EXT-X-VERSION":case"EXT-X-CONTENT-STEERING":return"Basic";case"EXTINF":case"EXT-X-BYTERANGE":case"EXT-X-DISCONTINUITY":case"EXT-X-PREFETCH-DISCONTINUITY":case"EXT-X-KEY":case"EXT-X-MAP":case"EXT-X-PROGRAM-DATE-TIME":case"EXT-X-DATERANGE":case"EXT-X-CUE-OUT":case"EXT-X-CUE-IN":case"EXT-X-CUE-OUT-CONT":case"EXT-X-CUE":case"EXT-OATCLS-SCTE35":case"EXT-X-ASSET":case"EXT-X-SCTE35":case"EXT-X-PART":case"EXT-X-PRELOAD-HINT":case"EXT-X-GAP":return"Segment";case"EXT-X-BITRATE":case"EXT-X-TARGETDURATION":case"EXT-X-MEDIA-SEQUENCE":case"EXT-X-DISCONTINUITY-SEQUENCE":case"EXT-X-ENDLIST":case"EXT-X-PLAYLIST-TYPE":case"EXT-X-I-FRAMES-ONLY":case"EXT-X-SERVER-CONTROL":case"EXT-X-PART-INF":case"EXT-X-PREFETCH":case"EXT-X-RENDITION-REPORT":case"EXT-X-SKIP":return"MediaPlaylist";case"EXT-X-MEDIA":case"EXT-X-STREAM-INF":case"EXT-X-I-FRAME-STREAM-INF":case"EXT-X-SESSION-DATA":case"EXT-X-SESSION-KEY":return"MasterPlaylist";case"EXT-X-INDEPENDENT-SEGMENTS":case"EXT-X-START":case"EXT-X-DEFINE":return"MediaorMasterPlaylist";default:return"Unknown"}}(name);if(function(category,params){if("Segment"===category||"MediaPlaylist"===category)return void 0===params.isMasterPlaylist?void(params.isMasterPlaylist=!1):void params.isMasterPlaylist;if("MasterPlaylist"===category){if(void 0===params.isMasterPlaylist)return void(params.isMasterPlaylist=!0);params.isMasterPlaylist}}(category,params),"Unknown"===category)return null;"MediaPlaylist"===category&&"EXT-X-RENDITION-REPORT"!==name&&"EXT-X-PREFETCH"!==name&&(params.hash[name],params.hash[name]=!0);var _parseTagParam=function(name,param){if(null===param)return[null,null];switch(name){case"EXTM3U":case"EXT-X-DISCONTINUITY":case"EXT-X-ENDLIST":case"EXT-X-I-FRAMES-ONLY":case"EXT-X-INDEPENDENT-SEGMENTS":case"EXT-X-CUE-IN":case"EXT-X-GAP":return[null,null];case"EXT-X-VERSION":case"EXT-X-TARGETDURATION":case"EXT-X-MEDIA-SEQUENCE":case"EXT-X-DISCONTINUITY-SEQUENCE":case"EXT-X-BITRATE":return[toNumber(param),null];case"EXT-X-CUE-OUT":return Number.isNaN(Number(param))?[null,parseAttributeList(param)]:[toNumber(param),null];case"EXT-X-KEY":case"EXT-X-MAP":case"EXT-X-DATERANGE":case"EXT-X-MEDIA":case"EXT-X-STREAM-INF":case"EXT-X-I-FRAME-STREAM-INF":case"EXT-X-SESSION-DATA":case"EXT-X-SESSION-KEY":case"EXT-X-START":case"EXT-X-SERVER-CONTROL":case"EXT-X-PART-INF":case"EXT-X-PART":case"EXT-X-PRELOAD-HINT":case"EXT-X-RENDITION-REPORT":case"EXT-X-SKIP":case"EXT-X-DEFINE":case"EXT-X-CONTENT-STEERING":return[null,parseAttributeList(param)];case"EXTINF":return[parseEXTINF(param),null];case"EXT-X-BYTERANGE":return[parseBYTERANGE(param),null];default:return[param,null]}}(name,param);return{name:name,category:category,value:_parseTagParam[0],attributes:_parseTagParam[1]||{}}}function parseVariant(variantAttrs,uri,iFrameOnly,params,mediaGroups){for(var variant={uri:uri,bandwidth:variantAttrs.BANDWIDTH,averageBandwidth:variantAttrs["AVERAGE-BANDWIDTH"],score:variantAttrs.SCORE,codecs:variantAttrs.CODECS,resolution:variantAttrs.RESOLUTION,frameRate:variantAttrs["FRAME-RATE"],hdcpLevel:variantAttrs["HDCP-LEVEL"],allowedCpc:variantAttrs["ALLOWED-CPC"],videoRange:variantAttrs["VIDEO-RANGE"],stableVariantId:variantAttrs["STABLE-VARIANT-ID"],pathwayId:variantAttrs["PATHWAY-ID"]||variantAttrs["STABLE-PATHWAY-ID"],programId:variantAttrs["PROGRAM-ID"],isIFrameOnly:iFrameOnly},_i=0,_iter=["AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS"];_i<_iter.length;_i++){var type=_iter[_i],attrsGroupId=variantAttrs[type];if(attrsGroupId){var typeMap=mediaGroups.get(type);if(typeMap){var renditions=typeMap.get(attrsGroupId);if(renditions)for(var _step,_iterator=_create_for_of_iterator_helper_loose(renditions);!(_step=_iterator()).done;){addRenditionToList(variant,_step.value,type)}}}}return function(attrs,variant,params){for(var _loop=function(_i,_iter){var type=_iter[_i];if("CLOSED-CAPTIONS"===type&&"NONE"===attrs[type])params.isClosedCaptionsNone=!0,variant.closedCaptions=[];else if(attrs[type]){var key=camelify(type),renditions=variant[key]||[];renditions.length>0&&renditions.some(function(item){return item.groupId===attrs[type]})}},_i=0,_iter=["AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS"];_i<_iter.length;_i++)_loop(_i,_iter)}(variantAttrs,variant,params),variant}function addRenditionToList(variant,rendition,type){var key=camelify(type),renditions=variant[key];renditions||(renditions=[],variant[key]=renditions),renditions.push(rendition)}function parseMasterPlaylist(lines,params){for(var _step,_loop=function(){var _step_value=_step.value,index=_step_value[0],line=_step_value[1];if("string"==typeof line)return"continue";var name=line.name,value=line.value,attributes=line.attributes;if("EXT-X-VERSION"===name)playlist.version=value;else if("EXT-X-CONTENT-STEERING"===name)playlist.contentSteering={serverUri:attributes["SERVER-URI"],pathwayId:attributes["PATHWAY-ID"]};else if("EXT-X-STREAM-INF"===name){var uriLine=lines[index+1];"string"!=typeof uriLine||uriLine.startsWith("#");var variant=parseVariant(attributes,uriLine,!1,params,mediaGroups);"number"==typeof variant.score&&(variantIsScored=!0,variant.score),playlist.variants.push(variant)}else if("EXT-X-I-FRAME-STREAM-INF"===name){var variant1=parseVariant(attributes,attributes.URI,!0,params,mediaGroups);playlist.variants.push(variant1)}else if("EXT-X-SESSION-DATA"===name){var sessionData={id:attributes["DATA-ID"],value:attributes.VALUE,uri:attributes.URI,language:attributes.LANGUAGE};playlist.sessionDataList.some(function(item){return item.id===sessionData.id&&item.language===sessionData.language}),playlist.sessionDataList.push(sessionData)}else if("EXT-X-SESSION-KEY"===name){attributes.METHOD;var sessionKey={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS};playlist.sessionKeyList.some(function(item){return function(key1,key2){if(key1.method!==key2.method)return!1;if(key1.uri!==key2.uri)return!1;if(key1.iv){if(!key2.iv)return!1;if(key1.iv.byteLength!==key2.iv.byteLength)return!1;for(var i=0;i<key1.iv.byteLength;i++)if(key1.iv[i]!==key2.iv[i])return!1}else if(key2.iv)return!1;return key1.format===key2.format&&key1.formatVersion===key2.formatVersion}(item,sessionKey)}),setCompatibleVersionOfKey(params,attributes),playlist.sessionKeyList.push(sessionKey)}else"EXT-X-INDEPENDENT-SEGMENTS"===name?(playlist.independentSegments,playlist.independentSegments=!0):"EXT-X-START"===name?(playlist.start,attributes["TIME-OFFSET"],playlist.start={offset:attributes["TIME-OFFSET"],precise:attributes.PRECISE||!1}):"EXT-X-DEFINE"===name&&(playlist.defines||(playlist.defines=[]),playlist.defines.push(attributes))},playlist={isMasterPlaylist:!0,variants:[],sessionDataList:[],sessionKeyList:[]},mediaGroups=function(lines){for(var _step,_loop=function(){var attrs,line=_step.value;if("object"===(void 0===line?"undefined":_type_of(line))&&"EXT-X-MEDIA"===line.name){var rendition={type:(attrs=line.attributes).TYPE,uri:attrs.URI,groupId:attrs["GROUP-ID"],language:attrs.LANGUAGE,assocLanguage:attrs["ASSOC-LANGUAGE"],name:attrs.NAME,isDefault:attrs.DEFAULT,autoselect:attrs.AUTOSELECT,forced:attrs.FORCED,instreamId:attrs["INSTREAM-ID"],characteristics:attrs.CHARACTERISTICS,channels:attrs.CHANNELS,pathwayId:attrs["PATHWAY-ID"]},type=rendition.type,groupId=rendition.groupId,typeMap=index.get(type);typeMap||(typeMap=new Map,index.set(type,typeMap));var group=typeMap.get(groupId);group||(group=[],typeMap.set(groupId,group)),group.some(function(r){return r.name===rendition.name}),rendition.isDefault&&group.some(function(r){return r.isDefault}),group.push(rendition)}},index=new Map,_iterator=_create_for_of_iterator_helper_loose(lines);!(_step=_iterator()).done;)_loop();return index}(lines),variantIsScored=!1,_iterator=_create_for_of_iterator_helper_loose(lines.entries());!(_step=_iterator()).done;)_loop();if(variantIsScored)for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(playlist.variants);!(_step1=_iterator1()).done;){_step1.value.score}if(params.isClosedCaptionsNone)for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(playlist.variants);!(_step2=_iterator2()).done;){var cc=_step2.value.closedCaptions;cc&&cc.length}return playlist}function parseDateRange(attributes){for(var _step,attrs={},_iterator=_create_for_of_iterator_helper_loose(Object.keys(attributes));!(_step=_iterator()).done;){var key=_step.value;(key.startsWith("SCTE35-")||key.startsWith("X-"))&&(attrs[key]=attributes[key])}return{id:attributes.ID,classId:attributes.CLASS,start:attributes["START-DATE"],cue:attributes.CUE,end:attributes["END-DATE"],duration:attributes.DURATION,plannedDuration:attributes["PLANNED-DURATION"],endOnNext:attributes["END-ON-NEXT"],attributes:attrs}}function parseSegment(lines,uri,start,end,mediaSequenceNumber,discontinuitySequence,params){for(var segment={uri:uri,mediaSequenceNumber:mediaSequenceNumber,discontinuitySequence:discontinuitySequence,markers:[],parts:[]},partHint=!1,i=start;i<=end;i++)if("string"!=typeof lines[i]){var _lines_i=lines[i],name=_lines_i.name,value=_lines_i.value,attributes=_lines_i.attributes;if("EXTINF"===name)!Number.isInteger(value.duration)&&params.compatibleVersion<3&&(params.compatibleVersion=3),Math.round(value.duration),params.targetDuration,segment.duration=value.duration,segment.title=value.title;else if("EXT-X-BYTERANGE"===name)params.compatibleVersion<4&&(params.compatibleVersion=4),segment.byterange=value;else if("EXT-X-DISCONTINUITY"===name)segment.parts&&segment.parts.length,segment.discontinuity=!0;else if("EXT-X-GAP"===name)params.compatibleVersion<8&&(params.compatibleVersion=8),segment.gap=!0;else if("EXT-X-KEY"===name)segment.parts&&segment.parts.length,setCompatibleVersionOfKey(params,attributes),segment.key={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS};else if("EXT-X-MAP"===name)segment.parts&&segment.parts.length,params.compatibleVersion<5&&(params.compatibleVersion=5),params.hasMap=!0,segment.map={uri:attributes.URI,byterange:attributes.BYTERANGE};else if("EXT-X-PROGRAM-DATE-TIME"===name)segment.programDateTime=value;else if("EXT-X-DATERANGE"===name)segment.dateRange=parseDateRange(attributes);else if("EXT-X-CUE-OUT"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"OUT",duration:attributes&&attributes.DURATION||value});else if("EXT-X-CUE-IN"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"IN"});else if("EXT-X-CUE-OUT-CONT"===name||"EXT-X-CUE"===name||"EXT-OATCLS-SCTE35"===name||"EXT-X-ASSET"===name||"EXT-X-SCTE35"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"RAW",tagName:name,value:value});else if("EXT-X-PRELOAD-HINT"!==name||attributes.TYPE)if("EXT-X-PRELOAD-HINT"===name&&"PART"===attributes.TYPE&&partHint);else if("EXT-X-PART"!==name&&"EXT-X-PRELOAD-HINT"!==name||attributes.URI){if("EXT-X-PRELOAD-HINT"===name&&"MAP"===attributes.TYPE)params.hasMap=!0,segment.map={hint:!0,uri:attributes.URI,byterange:{length:attributes["BYTERANGE-LENGTH"],offset:attributes["BYTERANGE-START"]||0}};else if("EXT-X-PART"===name||"EXT-X-PRELOAD-HINT"===name&&"PART"===attributes.TYPE){"EXT-X-PART"===name&&attributes.DURATION,"EXT-X-PRELOAD-HINT"===name&&(partHint=!0),segment.parts||(segment.parts=[]);var partialSegment={hint:"EXT-X-PRELOAD-HINT"===name,uri:attributes.URI,byterange:"EXT-X-PART"===name?attributes.BYTERANGE:{length:attributes["BYTERANGE-LENGTH"],offset:attributes["BYTERANGE-START"]||0},duration:attributes.DURATION,independent:attributes.INDEPENDENT,gap:attributes.GAP};segment.gap,segment.parts.push(partialSegment)}}else;else;}return segment}function parsePrefetchSegment(lines,uri,start,end,mediaSequenceNumber,discontinuitySequence,params){for(var segment={uri:uri,mediaSequenceNumber:mediaSequenceNumber,discontinuitySequence:discontinuitySequence},i=start;i<=end;i++)if("string"!=typeof lines[i]){var _lines_i=lines[i],name=_lines_i.name,attributes=_lines_i.attributes;"EXTINF"===name||"EXT-X-DISCONTINUITY"===name||("EXT-X-PREFETCH-DISCONTINUITY"===name?segment.discontinuity=!0:"EXT-X-KEY"===name&&(setCompatibleVersionOfKey(params,attributes),segment.key={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS}))}return segment}function addSegment(playlist,segment,discontinuitySequence,currentKey,currentMap){var _segment_key,_segment_map,discontinuity=segment.discontinuity,key=segment.key,map=segment.map,byterange=segment.byterange,uri=segment.uri;if(discontinuity&&(segment.discontinuitySequence=discontinuitySequence+1),key||(segment.key=currentKey),map||(segment.map=currentMap),byterange&&-1===byterange.offset){var segments=playlist.segments;if(segments.length>0){var prevSegment=segments[segments.length-1];prevSegment.byterange&&prevSegment.uri===uri&&(byterange.offset=prevSegment.byterange.offset+prevSegment.byterange.length)}}return playlist.segments.push(segment),[segment.discontinuitySequence,null!=(_segment_key=segment.key)?_segment_key:null,null!=(_segment_map=segment.map)?_segment_map:null]}function parseMediaPlaylist(lines,params){for(var _step,playlist={isMasterPlaylist:!1,segments:[],prefetchSegments:[],renditionReports:[],dateRanges:[]},segmentStart=-1,mediaSequence=0,discontinuitySequence=0,currentKey=null,currentMap=null,containsParts=!1,_iterator=_create_for_of_iterator_helper_loose(lines.entries());!(_step=_iterator()).done;){var _step_value=_step.value,index=_step_value[0],line=_step_value[1];if("string"!=typeof line){var name=line.name,value=line.value,attributes=line.attributes,category=line.category;if("EXT-X-DATERANGE"===name){var dateRange=parseDateRange(attributes);playlist.dateRanges.push(dateRange)}if("Segment"!==category)if("EXT-X-VERSION"===name)void 0===playlist.version&&(playlist.version=value);else if("EXT-X-TARGETDURATION"===name)playlist.targetDuration=params.targetDuration=value;else if("EXT-X-MEDIA-SEQUENCE"===name)playlist.segments.length,playlist.mediaSequenceBase=value,mediaSequence=value;else if("EXT-X-BITRATE"===name)playlist.bitrate=value;else if("EXT-X-DISCONTINUITY-SEQUENCE"===name)playlist.segments.length,playlist.discontinuitySequenceBase=value,discontinuitySequence=value;else if("EXT-X-ENDLIST"===name)playlist.endlist=!0;else if("EXT-X-PLAYLIST-TYPE"===name)playlist.playlistType=value;else if("EXT-X-I-FRAMES-ONLY"===name)params.compatibleVersion<4&&(params.compatibleVersion=4),playlist.isIFrame=!0;else if("EXT-X-INDEPENDENT-SEGMENTS"===name)playlist.independentSegments,playlist.independentSegments=!0;else if("EXT-X-START"===name)playlist.start,attributes["TIME-OFFSET"],playlist.start={offset:attributes["TIME-OFFSET"],precise:attributes.PRECISE||!1};else if("EXT-X-SERVER-CONTROL"===name)attributes["CAN-BLOCK-RELOAD"],playlist.lowLatencyCompatibility={canBlockReload:attributes["CAN-BLOCK-RELOAD"],canSkipUntil:attributes["CAN-SKIP-UNTIL"],holdBack:attributes["HOLD-BACK"],partHoldBack:attributes["PART-HOLD-BACK"]};else if("EXT-X-PART-INF"===name)attributes["PART-TARGET"],playlist.partTargetDuration=attributes["PART-TARGET"];else if("EXT-X-RENDITION-REPORT"===name)attributes.URI,/^[a-z]+:/i.test(attributes.URI),playlist.renditionReports.push({uri:attributes.URI,lastMSN:attributes["LAST-MSN"],lastPart:attributes["LAST-PART"]});else if("EXT-X-SKIP"===name)attributes["SKIPPED-SEGMENTS"],params.compatibleVersion<9&&(params.compatibleVersion=9),playlist.skip=attributes["SKIPPED-SEGMENTS"],mediaSequence+=playlist.skip;else if("EXT-X-PREFETCH"===name){var segment1=parsePrefetchSegment(lines,value,-1===segmentStart?index:segmentStart,index-1,mediaSequence++,discontinuitySequence,params);segment1.discontinuity&&(segment1.discontinuitySequence++,discontinuitySequence=segment1.discontinuitySequence),segment1.key||(segment1.key=currentKey),playlist.prefetchSegments.push(segment1),segmentStart=-1}else"EXT-X-DEFINE"===name&&(playlist.defines||(playlist.defines=[]),playlist.defines.push(attributes));else-1===segmentStart&&(segmentStart=index)}else{playlist.targetDuration;var segment=parseSegment(lines,line,segmentStart,index-1,mediaSequence++,discontinuitySequence,params),_addSegment=addSegment(playlist,segment,discontinuitySequence,currentKey,currentMap);discontinuitySequence=_addSegment[0],currentKey=_addSegment[1],currentMap=_addSegment[2],!containsParts&&segment.parts&&segment.parts.length>0&&(containsParts=!0),segmentStart=-1}}if(-1!==segmentStart){var _parts_,segment2=parseSegment(lines,"",segmentStart,lines.length-1,mediaSequence++,discontinuitySequence,params),parts=segment2.parts;parts&&parts.length>0&&!playlist.endlist&&(null==(_parts_=parts[parts.length-1])||_parts_.hint),addSegment(playlist,segment2,discontinuitySequence,currentKey,currentMap),!containsParts&&segment2.parts&&segment2.parts.length>0&&(containsParts=!0)}return function(segments){for(var earliestDates=new Map,rangeList=new Map,i=segments.length-1;i>=0;i--){var _segments_i=segments[i];_segments_i.programDateTime;var dateRange=_segments_i.dateRange;if(dateRange&&dateRange.start){dateRange.endOnNext&&(dateRange.end||dateRange.duration);var start=dateRange.start.getTime(),duration=dateRange.duration||0;dateRange.end&&dateRange.duration&&dateRange.end.getTime(),dateRange.endOnNext&&dateRange.classId&&(dateRange.end=earliestDates.get(dateRange.classId)),earliestDates.set(dateRange.classId,dateRange.start);var end=dateRange.end?dateRange.end.getTime():start+1e3*duration;if(dateRange.classId){var range=rangeList.get(dateRange.classId);if(range){for(var _step,_iterator=_create_for_of_iterator_helper_loose(range);!(_step=_iterator()).done;){var entry=_step.value;entry.start<=start&&entry.end>start||entry.start>=start&&entry.start}range.push({start:start,end:end})}else rangeList.set(dateRange.classId,[{start:start,end:end}])}}}}(playlist.segments),playlist.lowLatencyCompatibility&&function(playlist,containsParts){var lowLatencyCompatibility=playlist.lowLatencyCompatibility;if(playlist.targetDuration,playlist.partTargetDuration,lowLatencyCompatibility&&(lowLatencyCompatibility.canSkipUntil,lowLatencyCompatibility.holdBack,lowLatencyCompatibility.partHoldBack,containsParts)){for(var _step,_iterator=_create_for_of_iterator_helper_loose(playlist.segments.entries());!(_step=_iterator()).done;){var _step_value=_step.value,parts=(_step_value[0],_step_value[1].parts);if(parts&&0!==parts.length){playlist.segments.length;for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(parts.entries());!(_step1=_iterator1()).done;){var _step_value1=_step1.value;void 0!==(_step_value1[0],_step_value1[1].duration)&&parts.length}}}for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(playlist.renditionReports);!(_step2=_iterator2()).done;){var report=_step2.value,lastSegment=playlist.segments[playlist.segments.length-1];void 0===report.lastMSN&&lastSegment&&(report.lastMSN=lastSegment.mediaSequenceNumber),(void 0===report.lastPart||null===report.lastPart)&&lastSegment&&lastSegment.parts&&lastSegment.parts.length>0&&(report.lastPart=lastSegment.parts.length-1)}}}(playlist,containsParts),playlist}function parser(text,options){var params={isMasterPlaylist:void 0,hasMap:!1,targetDuration:0,compatibleVersion:1,isClosedCaptionsNone:!1,hash:{}},lines=function(text,params){var lines=[],normalized=text;65279===normalized.charCodeAt(0)&&(normalized=normalized.slice(1));for(var _step,_iterator=_create_for_of_iterator_helper_loose(normalized.split(/\r?\n/));!(_step=_iterator()).done;){var line=_step.value.trim();if(line)if(line.startsWith("#")){if(line.startsWith("#EXT")){var tag=parseTag(line,params);tag&&lines.push(tag)}}else lines.push(line)}return 0===lines.length||"object"!==_type_of(lines[0])||lines[0].name,lines}(text,params),playlist=function(lines,params){var playlist;return params.isMasterPlaylist?playlist=parseMasterPlaylist(lines,params):!(playlist=parseMediaPlaylist(lines,params)).isMasterPlaylist&&!playlist.isIFrame&&params.hasMap&&params.compatibleVersion<6&&(params.compatibleVersion=6),params.compatibleVersion>1&&void 0!==playlist.version&&null!==playlist.version&&playlist.version<params.compatibleVersion&&params.compatibleVersion,playlist}(lines,params);return playlist.source=text,(null==options?void 0:options.uri)&&function(playlist,baseUri){if(playlist.isMasterPlaylist){for(var _step,master=playlist,_iterator=_create_for_of_iterator_helper_loose(master.variants);!(_step=_iterator()).done;){var variant=_step.value;variant.uri=resolveUrl(baseUri,variant.uri);for(var _i=0,_iter=["audio","video","subtitles","closedCaptions"];_i<_iter.length;_i++){var renditions=variant[_iter[_i]];if(renditions)for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(renditions);!(_step1=_iterator1()).done;){var r=_step1.value;r.uri&&(r.uri=resolveUrl(baseUri,r.uri))}}}for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(master.sessionDataList);!(_step2=_iterator2()).done;){var sd=_step2.value;sd.uri&&(sd.uri=resolveUrl(baseUri,sd.uri))}for(var _step3,_iterator3=_create_for_of_iterator_helper_loose(master.sessionKeyList);!(_step3=_iterator3()).done;){var sk=_step3.value;sk.uri&&(sk.uri=resolveUrl(baseUri,sk.uri))}var steering=master.contentSteering;steering&&(steering.serverUri=resolveUrl(baseUri,steering.serverUri))}else{for(var _step4,mp=playlist,_iterator4=_create_for_of_iterator_helper_loose(mp.segments);!(_step4=_iterator4()).done;){var segment=_step4.value;if(segment.uri=resolveUrl(baseUri,segment.uri),segment.key&&segment.key.uri&&(segment.key.uri=resolveUrl(baseUri,segment.key.uri)),segment.map&&segment.map.uri&&(segment.map.uri=resolveUrl(baseUri,segment.map.uri)),segment.parts)for(var _step5,_iterator5=_create_for_of_iterator_helper_loose(segment.parts);!(_step5=_iterator5()).done;){var part=_step5.value;part.uri=resolveUrl(baseUri,part.uri)}}for(var _step6,_iterator6=_create_for_of_iterator_helper_loose(mp.prefetchSegments);!(_step6=_iterator6()).done;){var prefetch=_step6.value;prefetch.uri=resolveUrl(baseUri,prefetch.uri),prefetch.key&&prefetch.key.uri&&(prefetch.key.uri=resolveUrl(baseUri,prefetch.key.uri))}for(var _step7,_iterator7=_create_for_of_iterator_helper_loose(mp.renditionReports);!(_step7=_iterator7()).done;){var report=_step7.value;report.uri=resolveUrl(baseUri,report.uri)}}}(playlist,options.uri),playlist}exports.InvalidPlaylistError=InvalidPlaylistError,exports.TAGS=constants,exports.default=parser,exports.isMasterPlaylist=function(pl){return!0===pl.isMasterPlaylist},exports.isMediaPlaylist=function(pl){return!1===pl.isMasterPlaylist},exports.parser=parser,exports.resolveUrl=resolveUrl;
package/dist/index.umd.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*
2
- * @skax/hls-parse v0.0.1-beta.5
3
- * Copyright (c) 2026-05-25 ShineShao <xiaoshaoqq@gmail.com>
2
+ * @skax/hls-parse v0.0.1-beta.7
3
+ * Copyright (c) 2026-05-27 ShineShao <xiaoshaoqq@gmail.com>
4
4
  * Released under the MIT License.
5
5
  */
6
- !function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):(global="undefined"!=typeof globalThis?globalThis:global||self).HlsParse=factory()}(this,function(){"use strict";function _array_like_to_array$1(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _construct(Parent,args,Class){return _construct=_is_native_reflect_construct()?Reflect.construct:function(Parent,args,Class){var a=[null];a.push.apply(a,args);var instance=new(Function.bind.apply(Parent,a));return Class&&_set_prototype_of(instance,Class.prototype),instance},_construct.apply(null,arguments)}function _get_prototype_of(o){return _get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},_get_prototype_of(o)}function _set_prototype_of(o,p){return _set_prototype_of=Object.setPrototypeOf||function(o,p){return o.__proto__=p,o},_set_prototype_of(o,p)}function _wrap_native_super(Class){var _cache="function"==typeof Map?new Map:void 0;return _wrap_native_super=function(Class){if(null===Class||(fn=Class,-1===Function.toString.call(fn).indexOf("[native code]")))return Class;var fn;if("function"!=typeof Class)throw new TypeError("Super expression must either be null or a function");if(void 0!==_cache){if(_cache.has(Class))return _cache.get(Class);_cache.set(Class,Wrapper)}function Wrapper(){return _construct(Class,arguments,_get_prototype_of(this).constructor)}return Wrapper.prototype=Object.create(Class.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),_set_prototype_of(Wrapper,Class)},_wrap_native_super(Class)}function _is_native_reflect_construct(){try{var result=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(_){}return(_is_native_reflect_construct=function(){return!!result})()}function _create_for_of_iterator_helper_loose$1(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=function(o,minLen){if(o){if("string"==typeof o)return _array_like_to_array$1(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array$1(o,minLen):void 0}}(o))||allowArrayLike){it&&(o=it);var i=0;return function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var InvalidPlaylistError=function(Error1){function InvalidPlaylistError(message){var _this;return(_this=Error1.call(this,message)||this).name="InvalidPlaylistError",_this}return function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function");subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:!0,configurable:!0}}),superClass&&_set_prototype_of(subClass,superClass)}(InvalidPlaylistError,Error1),InvalidPlaylistError}(_wrap_native_super(Error));function trim(str,char){if(void 0!==str){for(var start=0,end=str.length-1;start<=end&&str[start]===char;)start++;for(;end>=start&&str[end]===char;)end--;return str.slice(start,end+1)}}function splitAt(str,delimiter){var index=str.indexOf(delimiter);return-1===index?[str,""]:[str.slice(0,index),str.slice(index+1)]}function toNumber(str){return Number(str)}function hexToByteSequence(hex){var h=hex;(h.startsWith("0x")||h.startsWith("0X"))&&(h=h.slice(2)),h.length%2!=0&&(h="0"+h);for(var bytes=new Uint8Array(h.length/2),i=0;i<bytes.length;i++)bytes[i]=parseInt(h.slice(2*i,2*i+2),16);return bytes}function camelify(str){return str.toLowerCase().replace(/[-_](.)/g,function(_,c){return c.toUpperCase()})}function resolveUrl(base,relative){if(!base)return relative;if(/^[a-zA-Z][a-zA-Z0-9+\-.]*:/.test(relative))return relative;try{var baseUrl=new URL(base);return relative.startsWith("//")?baseUrl.protocol+relative:new URL(relative,baseUrl).href}catch(unused){if(relative.startsWith("/")){var match=base.match(/^[a-zA-Z][a-zA-Z0-9+\-.]*:\/\/[^/]+/);if(match)return match[0]+relative}for(var _step,result=[],_iterator=_create_for_of_iterator_helper_loose$1((base.replace(/\/[^/]*$/,"/")+relative).split("/"));!(_step=_iterator()).done;){var part=_step.value;".."===part?result.pop():"."!==part&&result.push(part)}return result.join("/")}}function _array_like_to_array(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _type_of(obj){return obj&&"undefined"!=typeof Symbol&&obj.constructor===Symbol?"symbol":typeof obj}function _create_for_of_iterator_helper_loose(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=function(o,minLen){if(o){if("string"==typeof o)return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array(o,minLen):void 0}}(o))||allowArrayLike){it&&(o=it);var i=0;return function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function parseEXTINF(param){var pair=splitAt(param,",");return{duration:toNumber(pair[0]),title:pair[1]?decodeURIComponent(encodeURIComponent(pair[1])):void 0}}function parseBYTERANGE(param){var pair=splitAt(param,"@");return{length:toNumber(pair[0]),offset:pair[1]?toNumber(pair[1]):-1}}function parseResolution(str){var pair=splitAt(str,"x");return{width:toNumber(pair[0]),height:toNumber(pair[1])}}function parseAllowedCpc(str){for(var _step,allowedCpcList=[],_iterator=_create_for_of_iterator_helper_loose(str.split(","));!(_step=_iterator()).done;){var _utils_splitAt=splitAt(_step.value,":"),format=_utils_splitAt[0],cpcText=_utils_splitAt[1];format&&cpcText&&allowedCpcList.push({format:format,cpcList:cpcText.split("/")})}return allowedCpcList}function parseIV(str){var iv=hexToByteSequence(str);return iv.length,iv}function parseUserAttribute(str){return str.startsWith('"')?trim(str,'"'):str.startsWith("0x")||str.startsWith("0X")?hexToByteSequence(str):toNumber(str)}function setCompatibleVersionOfKey(params,attributes){attributes.IV&&params.compatibleVersion<2&&(params.compatibleVersion=2),(attributes.KEYFORMAT||attributes.KEYFORMATVERSIONS)&&params.compatibleVersion<5&&(params.compatibleVersion=5)}function parseAttributeList(param){for(var _step,attributes={},_iterator=_create_for_of_iterator_helper_loose(function(str){for(var result=[],current="",inQuotes=!1,i=0;i<str.length;i++){var char=str[i];'"'===char?(inQuotes=!inQuotes,current+=char):","!==char||inQuotes?current+=char:(result.push(current),current="")}return current&&result.push(current),result}(param));!(_step=_iterator()).done;){var _utils_splitAt=splitAt(_step.value,"="),key=_utils_splitAt[0],value=_utils_splitAt[1],val=trim(value,'"');switch(key){case"URI":attributes[key]=val;break;case"START-DATE":case"END-DATE":attributes[key]=new Date(val);break;case"IV":attributes[key]=parseIV(val);break;case"BYTERANGE":attributes[key]=parseBYTERANGE(val);break;case"RESOLUTION":attributes[key]=parseResolution(val);break;case"ALLOWED-CPC":attributes[key]=parseAllowedCpc(val);break;case"END-ON-NEXT":case"DEFAULT":case"AUTOSELECT":case"FORCED":case"PRECISE":case"CAN-BLOCK-RELOAD":case"INDEPENDENT":case"GAP":attributes[key]="YES"===val;break;case"DURATION":case"PLANNED-DURATION":case"BANDWIDTH":case"AVERAGE-BANDWIDTH":case"FRAME-RATE":case"TIME-OFFSET":case"CAN-SKIP-UNTIL":case"HOLD-BACK":case"PART-HOLD-BACK":case"PART-TARGET":case"BYTERANGE-START":case"BYTERANGE-LENGTH":case"LAST-MSN":case"LAST-PART":case"SKIPPED-SEGMENTS":case"SCORE":case"PROGRAM-ID":attributes[key]=toNumber(val);break;default:key.startsWith("SCTE35-")?attributes[key]=hexToByteSequence(val):key.startsWith("X-")?attributes[key]=parseUserAttribute(value):attributes[key]=val}}return attributes}function parseTag(line,params){var _splitTag=function(line){var index=line.indexOf(":");return-1===index?[line.slice(1).trim(),null]:[line.slice(1,index).trim(),line.slice(index+1).trim()]}(line),name=_splitTag[0],param=_splitTag[1],category=function(tagName){switch(tagName){case"EXTM3U":case"EXT-X-VERSION":case"EXT-X-CONTENT-STEERING":return"Basic";case"EXTINF":case"EXT-X-BYTERANGE":case"EXT-X-DISCONTINUITY":case"EXT-X-PREFETCH-DISCONTINUITY":case"EXT-X-KEY":case"EXT-X-MAP":case"EXT-X-PROGRAM-DATE-TIME":case"EXT-X-DATERANGE":case"EXT-X-CUE-OUT":case"EXT-X-CUE-IN":case"EXT-X-CUE-OUT-CONT":case"EXT-X-CUE":case"EXT-OATCLS-SCTE35":case"EXT-X-ASSET":case"EXT-X-SCTE35":case"EXT-X-PART":case"EXT-X-PRELOAD-HINT":case"EXT-X-GAP":return"Segment";case"EXT-X-BITRATE":case"EXT-X-TARGETDURATION":case"EXT-X-MEDIA-SEQUENCE":case"EXT-X-DISCONTINUITY-SEQUENCE":case"EXT-X-ENDLIST":case"EXT-X-PLAYLIST-TYPE":case"EXT-X-I-FRAMES-ONLY":case"EXT-X-SERVER-CONTROL":case"EXT-X-PART-INF":case"EXT-X-PREFETCH":case"EXT-X-RENDITION-REPORT":case"EXT-X-SKIP":return"MediaPlaylist";case"EXT-X-MEDIA":case"EXT-X-STREAM-INF":case"EXT-X-I-FRAME-STREAM-INF":case"EXT-X-SESSION-DATA":case"EXT-X-SESSION-KEY":return"MasterPlaylist";case"EXT-X-INDEPENDENT-SEGMENTS":case"EXT-X-START":case"EXT-X-DEFINE":return"MediaorMasterPlaylist";default:return"Unknown"}}(name);if(function(category,params){if("Segment"===category||"MediaPlaylist"===category)return void 0===params.isMasterPlaylist?void(params.isMasterPlaylist=!1):void params.isMasterPlaylist;if("MasterPlaylist"===category){if(void 0===params.isMasterPlaylist)return void(params.isMasterPlaylist=!0);params.isMasterPlaylist}}(category,params),"Unknown"===category)return null;"MediaPlaylist"===category&&"EXT-X-RENDITION-REPORT"!==name&&"EXT-X-PREFETCH"!==name&&(params.hash[name],params.hash[name]=!0);var _parseTagParam=function(name,param){if(null===param)return[null,null];switch(name){case"EXTM3U":case"EXT-X-DISCONTINUITY":case"EXT-X-ENDLIST":case"EXT-X-I-FRAMES-ONLY":case"EXT-X-INDEPENDENT-SEGMENTS":case"EXT-X-CUE-IN":case"EXT-X-GAP":return[null,null];case"EXT-X-VERSION":case"EXT-X-TARGETDURATION":case"EXT-X-MEDIA-SEQUENCE":case"EXT-X-DISCONTINUITY-SEQUENCE":case"EXT-X-BITRATE":return[toNumber(param),null];case"EXT-X-CUE-OUT":return Number.isNaN(Number(param))?[null,parseAttributeList(param)]:[toNumber(param),null];case"EXT-X-KEY":case"EXT-X-MAP":case"EXT-X-DATERANGE":case"EXT-X-MEDIA":case"EXT-X-STREAM-INF":case"EXT-X-I-FRAME-STREAM-INF":case"EXT-X-SESSION-DATA":case"EXT-X-SESSION-KEY":case"EXT-X-START":case"EXT-X-SERVER-CONTROL":case"EXT-X-PART-INF":case"EXT-X-PART":case"EXT-X-PRELOAD-HINT":case"EXT-X-RENDITION-REPORT":case"EXT-X-SKIP":case"EXT-X-DEFINE":case"EXT-X-CONTENT-STEERING":return[null,parseAttributeList(param)];case"EXTINF":return[parseEXTINF(param),null];case"EXT-X-BYTERANGE":return[parseBYTERANGE(param),null];case"EXT-X-PROGRAM-DATE-TIME":return[new Date(param),null];default:return[param,null]}}(name,param);return{name:name,category:category,value:_parseTagParam[0],attributes:_parseTagParam[1]||{}}}function parseVariant(variantAttrs,uri,iFrameOnly,params,mediaGroups){for(var variant={uri:uri,bandwidth:variantAttrs.BANDWIDTH,averageBandwidth:variantAttrs["AVERAGE-BANDWIDTH"],score:variantAttrs.SCORE,codecs:variantAttrs.CODECS,resolution:variantAttrs.RESOLUTION,frameRate:variantAttrs["FRAME-RATE"],hdcpLevel:variantAttrs["HDCP-LEVEL"],allowedCpc:variantAttrs["ALLOWED-CPC"],videoRange:variantAttrs["VIDEO-RANGE"],stableVariantId:variantAttrs["STABLE-VARIANT-ID"],pathwayId:variantAttrs["PATHWAY-ID"]||variantAttrs["STABLE-PATHWAY-ID"],programId:variantAttrs["PROGRAM-ID"],isIFrameOnly:iFrameOnly},_i=0,_iter=["AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS"];_i<_iter.length;_i++){var type=_iter[_i],attrsGroupId=variantAttrs[type];if(attrsGroupId){var typeMap=mediaGroups.get(type);if(typeMap){var renditions=typeMap.get(attrsGroupId);if(renditions)for(var _step,_iterator=_create_for_of_iterator_helper_loose(renditions);!(_step=_iterator()).done;){addRenditionToList(variant,_step.value,type)}}}}return function(attrs,variant,params){for(var _loop=function(_i,_iter){var type=_iter[_i];if("CLOSED-CAPTIONS"===type&&"NONE"===attrs[type])params.isClosedCaptionsNone=!0,variant.closedCaptions=[];else if(attrs[type]){var key=camelify(type),renditions=variant[key]||[];renditions.length>0&&renditions.some(function(item){return item.groupId===attrs[type]})}},_i=0,_iter=["AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS"];_i<_iter.length;_i++)_loop(_i,_iter)}(variantAttrs,variant,params),variant}function addRenditionToList(variant,rendition,type){var key=camelify(type),renditions=variant[key];renditions||(renditions=[],variant[key]=renditions),renditions.push(rendition)}function parseMasterPlaylist(lines,params){for(var _step,_loop=function(){var _step_value=_step.value,index=_step_value[0],line=_step_value[1];if("string"==typeof line)return"continue";var name=line.name,value=line.value,attributes=line.attributes;if("EXT-X-VERSION"===name)playlist.version=value;else if("EXT-X-CONTENT-STEERING"===name)playlist.contentSteering={serverUri:attributes["SERVER-URI"],pathwayId:attributes["PATHWAY-ID"]};else if("EXT-X-STREAM-INF"===name){var uriLine=lines[index+1];"string"!=typeof uriLine||uriLine.startsWith("#");var variant=parseVariant(attributes,uriLine,!1,params,mediaGroups);"number"==typeof variant.score&&(variantIsScored=!0,variant.score),playlist.variants.push(variant)}else if("EXT-X-I-FRAME-STREAM-INF"===name){var variant1=parseVariant(attributes,attributes.URI,!0,params,mediaGroups);playlist.variants.push(variant1)}else if("EXT-X-SESSION-DATA"===name){var sessionData={id:attributes["DATA-ID"],value:attributes.VALUE,uri:attributes.URI,language:attributes.LANGUAGE};playlist.sessionDataList.some(function(item){return item.id===sessionData.id&&item.language===sessionData.language}),playlist.sessionDataList.push(sessionData)}else if("EXT-X-SESSION-KEY"===name){attributes.METHOD;var sessionKey={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS};playlist.sessionKeyList.some(function(item){return function(key1,key2){if(key1.method!==key2.method)return!1;if(key1.uri!==key2.uri)return!1;if(key1.iv){if(!key2.iv)return!1;if(key1.iv.byteLength!==key2.iv.byteLength)return!1;for(var i=0;i<key1.iv.byteLength;i++)if(key1.iv[i]!==key2.iv[i])return!1}else if(key2.iv)return!1;return key1.format===key2.format&&key1.formatVersion===key2.formatVersion}(item,sessionKey)}),setCompatibleVersionOfKey(params,attributes),playlist.sessionKeyList.push(sessionKey)}else"EXT-X-INDEPENDENT-SEGMENTS"===name?(playlist.independentSegments,playlist.independentSegments=!0):"EXT-X-START"===name?(playlist.start,attributes["TIME-OFFSET"],playlist.start={offset:attributes["TIME-OFFSET"],precise:attributes.PRECISE||!1}):"EXT-X-DEFINE"===name&&(playlist.defines||(playlist.defines=[]),playlist.defines.push(attributes))},playlist={isMasterPlaylist:!0,variants:[],sessionDataList:[],sessionKeyList:[]},mediaGroups=function(lines){for(var _step,_loop=function(){var attrs,line=_step.value;if("object"===(void 0===line?"undefined":_type_of(line))&&"EXT-X-MEDIA"===line.name){var rendition={type:(attrs=line.attributes).TYPE,uri:attrs.URI,groupId:attrs["GROUP-ID"],language:attrs.LANGUAGE,assocLanguage:attrs["ASSOC-LANGUAGE"],name:attrs.NAME,isDefault:attrs.DEFAULT,autoselect:attrs.AUTOSELECT,forced:attrs.FORCED,instreamId:attrs["INSTREAM-ID"],characteristics:attrs.CHARACTERISTICS,channels:attrs.CHANNELS,pathwayId:attrs["PATHWAY-ID"]},type=rendition.type,groupId=rendition.groupId,typeMap=index.get(type);typeMap||(typeMap=new Map,index.set(type,typeMap));var group=typeMap.get(groupId);group||(group=[],typeMap.set(groupId,group)),group.some(function(r){return r.name===rendition.name}),rendition.isDefault&&group.some(function(r){return r.isDefault}),group.push(rendition)}},index=new Map,_iterator=_create_for_of_iterator_helper_loose(lines);!(_step=_iterator()).done;)_loop();return index}(lines),variantIsScored=!1,_iterator=_create_for_of_iterator_helper_loose(lines.entries());!(_step=_iterator()).done;)_loop();if(variantIsScored)for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(playlist.variants);!(_step1=_iterator1()).done;){_step1.value.score}if(params.isClosedCaptionsNone)for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(playlist.variants);!(_step2=_iterator2()).done;){var cc=_step2.value.closedCaptions;cc&&cc.length}return playlist}function parseDateRange(attributes){for(var _step,attrs={},_iterator=_create_for_of_iterator_helper_loose(Object.keys(attributes));!(_step=_iterator()).done;){var key=_step.value;(key.startsWith("SCTE35-")||key.startsWith("X-"))&&(attrs[key]=attributes[key])}return{id:attributes.ID,classId:attributes.CLASS,start:attributes["START-DATE"],cue:attributes.CUE,end:attributes["END-DATE"],duration:attributes.DURATION,plannedDuration:attributes["PLANNED-DURATION"],endOnNext:attributes["END-ON-NEXT"],attributes:attrs}}function parseSegment(lines,uri,start,end,mediaSequenceNumber,discontinuitySequence,params){for(var segment={uri:uri,mediaSequenceNumber:mediaSequenceNumber,discontinuitySequence:discontinuitySequence,markers:[],parts:[]},partHint=!1,i=start;i<=end;i++)if("string"!=typeof lines[i]){var _lines_i=lines[i],name=_lines_i.name,value=_lines_i.value,attributes=_lines_i.attributes;if("EXTINF"===name)!Number.isInteger(value.duration)&&params.compatibleVersion<3&&(params.compatibleVersion=3),Math.round(value.duration),params.targetDuration,segment.duration=value.duration,segment.title=value.title;else if("EXT-X-BYTERANGE"===name)params.compatibleVersion<4&&(params.compatibleVersion=4),segment.byterange=value;else if("EXT-X-DISCONTINUITY"===name)segment.parts&&segment.parts.length,segment.discontinuity=!0;else if("EXT-X-GAP"===name)params.compatibleVersion<8&&(params.compatibleVersion=8),segment.gap=!0;else if("EXT-X-KEY"===name)segment.parts&&segment.parts.length,setCompatibleVersionOfKey(params,attributes),segment.key={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS};else if("EXT-X-MAP"===name)segment.parts&&segment.parts.length,params.compatibleVersion<5&&(params.compatibleVersion=5),params.hasMap=!0,segment.map={uri:attributes.URI,byterange:attributes.BYTERANGE};else if("EXT-X-PROGRAM-DATE-TIME"===name)segment.programDateTime=value;else if("EXT-X-DATERANGE"===name)segment.dateRange=parseDateRange(attributes);else if("EXT-X-CUE-OUT"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"OUT",duration:attributes&&attributes.DURATION||value});else if("EXT-X-CUE-IN"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"IN"});else if("EXT-X-CUE-OUT-CONT"===name||"EXT-X-CUE"===name||"EXT-OATCLS-SCTE35"===name||"EXT-X-ASSET"===name||"EXT-X-SCTE35"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"RAW",tagName:name,value:value});else if("EXT-X-PRELOAD-HINT"!==name||attributes.TYPE)if("EXT-X-PRELOAD-HINT"===name&&"PART"===attributes.TYPE&&partHint);else if("EXT-X-PART"!==name&&"EXT-X-PRELOAD-HINT"!==name||attributes.URI){if("EXT-X-PRELOAD-HINT"===name&&"MAP"===attributes.TYPE)params.hasMap=!0,segment.map={hint:!0,uri:attributes.URI,byterange:{length:attributes["BYTERANGE-LENGTH"],offset:attributes["BYTERANGE-START"]||0}};else if("EXT-X-PART"===name||"EXT-X-PRELOAD-HINT"===name&&"PART"===attributes.TYPE){"EXT-X-PART"===name&&attributes.DURATION,"EXT-X-PRELOAD-HINT"===name&&(partHint=!0),segment.parts||(segment.parts=[]);var partialSegment={hint:"EXT-X-PRELOAD-HINT"===name,uri:attributes.URI,byterange:"EXT-X-PART"===name?attributes.BYTERANGE:{length:attributes["BYTERANGE-LENGTH"],offset:attributes["BYTERANGE-START"]||0},duration:attributes.DURATION,independent:attributes.INDEPENDENT,gap:attributes.GAP};segment.gap,segment.parts.push(partialSegment)}}else;else;}return segment}function parsePrefetchSegment(lines,uri,start,end,mediaSequenceNumber,discontinuitySequence,params){for(var segment={uri:uri,mediaSequenceNumber:mediaSequenceNumber,discontinuitySequence:discontinuitySequence},i=start;i<=end;i++)if("string"!=typeof lines[i]){var _lines_i=lines[i],name=_lines_i.name,attributes=_lines_i.attributes;"EXTINF"===name||"EXT-X-DISCONTINUITY"===name||("EXT-X-PREFETCH-DISCONTINUITY"===name?segment.discontinuity=!0:"EXT-X-KEY"===name&&(setCompatibleVersionOfKey(params,attributes),segment.key={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS}))}return segment}function addSegment(playlist,segment,discontinuitySequence,currentKey,currentMap){var _segment_key,_segment_map,discontinuity=segment.discontinuity,key=segment.key,map=segment.map,byterange=segment.byterange,uri=segment.uri;if(discontinuity&&(segment.discontinuitySequence=discontinuitySequence+1),key||(segment.key=currentKey),map||(segment.map=currentMap),byterange&&-1===byterange.offset){var segments=playlist.segments;if(segments.length>0){var prevSegment=segments[segments.length-1];prevSegment.byterange&&prevSegment.uri===uri&&(byterange.offset=prevSegment.byterange.offset+prevSegment.byterange.length)}}return playlist.segments.push(segment),[segment.discontinuitySequence,null!=(_segment_key=segment.key)?_segment_key:null,null!=(_segment_map=segment.map)?_segment_map:null]}function parseMediaPlaylist(lines,params){for(var _step,playlist={isMasterPlaylist:!1,segments:[],prefetchSegments:[],renditionReports:[],dateRanges:[]},segmentStart=-1,mediaSequence=0,discontinuitySequence=0,currentKey=null,currentMap=null,containsParts=!1,_iterator=_create_for_of_iterator_helper_loose(lines.entries());!(_step=_iterator()).done;){var _step_value=_step.value,index=_step_value[0],line=_step_value[1];if("string"!=typeof line){var name=line.name,value=line.value,attributes=line.attributes,category=line.category;if("EXT-X-DATERANGE"===name){var dateRange=parseDateRange(attributes);playlist.dateRanges.push(dateRange)}if("Segment"!==category)if("EXT-X-VERSION"===name)void 0===playlist.version&&(playlist.version=value);else if("EXT-X-TARGETDURATION"===name)playlist.targetDuration=params.targetDuration=value;else if("EXT-X-MEDIA-SEQUENCE"===name)playlist.segments.length,playlist.mediaSequenceBase=value,mediaSequence=value;else if("EXT-X-BITRATE"===name)playlist.bitrate=value;else if("EXT-X-DISCONTINUITY-SEQUENCE"===name)playlist.segments.length,playlist.discontinuitySequenceBase=value,discontinuitySequence=value;else if("EXT-X-ENDLIST"===name)playlist.endlist=!0;else if("EXT-X-PLAYLIST-TYPE"===name)playlist.playlistType=value;else if("EXT-X-I-FRAMES-ONLY"===name)params.compatibleVersion<4&&(params.compatibleVersion=4),playlist.isIFrame=!0;else if("EXT-X-INDEPENDENT-SEGMENTS"===name)playlist.independentSegments,playlist.independentSegments=!0;else if("EXT-X-START"===name)playlist.start,attributes["TIME-OFFSET"],playlist.start={offset:attributes["TIME-OFFSET"],precise:attributes.PRECISE||!1};else if("EXT-X-SERVER-CONTROL"===name)attributes["CAN-BLOCK-RELOAD"],playlist.lowLatencyCompatibility={canBlockReload:attributes["CAN-BLOCK-RELOAD"],canSkipUntil:attributes["CAN-SKIP-UNTIL"],holdBack:attributes["HOLD-BACK"],partHoldBack:attributes["PART-HOLD-BACK"]};else if("EXT-X-PART-INF"===name)attributes["PART-TARGET"],playlist.partTargetDuration=attributes["PART-TARGET"];else if("EXT-X-RENDITION-REPORT"===name)attributes.URI,/^[a-z]+:/i.test(attributes.URI),playlist.renditionReports.push({uri:attributes.URI,lastMSN:attributes["LAST-MSN"],lastPart:attributes["LAST-PART"]});else if("EXT-X-SKIP"===name)attributes["SKIPPED-SEGMENTS"],params.compatibleVersion<9&&(params.compatibleVersion=9),playlist.skip=attributes["SKIPPED-SEGMENTS"],mediaSequence+=playlist.skip;else if("EXT-X-PREFETCH"===name){var segment1=parsePrefetchSegment(lines,value,-1===segmentStart?index:segmentStart,index-1,mediaSequence++,discontinuitySequence,params);segment1.discontinuity&&(segment1.discontinuitySequence++,discontinuitySequence=segment1.discontinuitySequence),segment1.key||(segment1.key=currentKey),playlist.prefetchSegments.push(segment1),segmentStart=-1}else"EXT-X-DEFINE"===name&&(playlist.defines||(playlist.defines=[]),playlist.defines.push(attributes));else-1===segmentStart&&(segmentStart=index)}else{playlist.targetDuration;var segment=parseSegment(lines,line,segmentStart,index-1,mediaSequence++,discontinuitySequence,params),_addSegment=addSegment(playlist,segment,discontinuitySequence,currentKey,currentMap);discontinuitySequence=_addSegment[0],currentKey=_addSegment[1],currentMap=_addSegment[2],!containsParts&&segment.parts&&segment.parts.length>0&&(containsParts=!0),segmentStart=-1}}if(-1!==segmentStart){var _parts_,segment2=parseSegment(lines,"",segmentStart,lines.length-1,mediaSequence++,discontinuitySequence,params),parts=segment2.parts;parts&&parts.length>0&&!playlist.endlist&&(null==(_parts_=parts[parts.length-1])||_parts_.hint),addSegment(playlist,segment2,discontinuitySequence,currentKey,currentMap),!containsParts&&segment2.parts&&segment2.parts.length>0&&(containsParts=!0)}return function(segments){for(var earliestDates=new Map,rangeList=new Map,i=segments.length-1;i>=0;i--){var _segments_i=segments[i];_segments_i.programDateTime;var dateRange=_segments_i.dateRange;if(dateRange&&dateRange.start){dateRange.endOnNext&&(dateRange.end||dateRange.duration);var start=dateRange.start.getTime(),duration=dateRange.duration||0;dateRange.end&&dateRange.duration&&dateRange.end.getTime(),dateRange.endOnNext&&dateRange.classId&&(dateRange.end=earliestDates.get(dateRange.classId)),earliestDates.set(dateRange.classId,dateRange.start);var end=dateRange.end?dateRange.end.getTime():start+1e3*duration;if(dateRange.classId){var range=rangeList.get(dateRange.classId);if(range){for(var _step,_iterator=_create_for_of_iterator_helper_loose(range);!(_step=_iterator()).done;){var entry=_step.value;entry.start<=start&&entry.end>start||entry.start>=start&&entry.start}range.push({start:start,end:end})}else rangeList.set(dateRange.classId,[{start:start,end:end}])}}}}(playlist.segments),playlist.lowLatencyCompatibility&&function(playlist,containsParts){var lowLatencyCompatibility=playlist.lowLatencyCompatibility;if(playlist.targetDuration,playlist.partTargetDuration,lowLatencyCompatibility&&(lowLatencyCompatibility.canSkipUntil,lowLatencyCompatibility.holdBack,lowLatencyCompatibility.partHoldBack,containsParts)){for(var _step,_iterator=_create_for_of_iterator_helper_loose(playlist.segments.entries());!(_step=_iterator()).done;){var _step_value=_step.value,parts=(_step_value[0],_step_value[1].parts);if(parts&&0!==parts.length){playlist.segments.length;for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(parts.entries());!(_step1=_iterator1()).done;){var _step_value1=_step1.value;void 0!==(_step_value1[0],_step_value1[1].duration)&&parts.length}}}for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(playlist.renditionReports);!(_step2=_iterator2()).done;){var report=_step2.value,lastSegment=playlist.segments[playlist.segments.length-1];void 0===report.lastMSN&&lastSegment&&(report.lastMSN=lastSegment.mediaSequenceNumber),(void 0===report.lastPart||null===report.lastPart)&&lastSegment&&lastSegment.parts&&lastSegment.parts.length>0&&(report.lastPart=lastSegment.parts.length-1)}}}(playlist,containsParts),playlist}return{parser:function(text,options){var params={isMasterPlaylist:void 0,hasMap:!1,targetDuration:0,compatibleVersion:1,isClosedCaptionsNone:!1,hash:{}},playlist=function(lines,params){var playlist;return params.isMasterPlaylist?playlist=parseMasterPlaylist(lines,params):!(playlist=parseMediaPlaylist(lines,params)).isMasterPlaylist&&!playlist.isIFrame&&params.hasMap&&params.compatibleVersion<6&&(params.compatibleVersion=6),params.compatibleVersion>1&&void 0!==playlist.version&&null!==playlist.version&&playlist.version<params.compatibleVersion&&params.compatibleVersion,playlist}(function(text,params){var lines=[],normalized=text;65279===normalized.charCodeAt(0)&&(normalized=normalized.slice(1));for(var _step,_iterator=_create_for_of_iterator_helper_loose(normalized.split(/\r?\n/));!(_step=_iterator()).done;){var line=_step.value.trim();if(line)if(line.startsWith("#")){if(line.startsWith("#EXT")){var tag=parseTag(line,params);tag&&lines.push(tag)}}else lines.push(line)}return 0===lines.length||"object"!==_type_of(lines[0])||lines[0].name,lines}(text,params),params);return playlist.source=text,(null==options?void 0:options.uri)&&function(playlist,baseUri){if(playlist.isMasterPlaylist){for(var _step,master=playlist,_iterator=_create_for_of_iterator_helper_loose(master.variants);!(_step=_iterator()).done;){var variant=_step.value;variant.uri=resolveUrl(baseUri,variant.uri);for(var _i=0,_iter=["audio","video","subtitles","closedCaptions"];_i<_iter.length;_i++){var renditions=variant[_iter[_i]];if(renditions)for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(renditions);!(_step1=_iterator1()).done;){var r=_step1.value;r.uri&&(r.uri=resolveUrl(baseUri,r.uri))}}}for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(master.sessionDataList);!(_step2=_iterator2()).done;){var sd=_step2.value;sd.uri&&(sd.uri=resolveUrl(baseUri,sd.uri))}for(var _step3,_iterator3=_create_for_of_iterator_helper_loose(master.sessionKeyList);!(_step3=_iterator3()).done;){var sk=_step3.value;sk.uri&&(sk.uri=resolveUrl(baseUri,sk.uri))}var steering=master.contentSteering;steering&&(steering.serverUri=resolveUrl(baseUri,steering.serverUri))}else{for(var _step4,mp=playlist,_iterator4=_create_for_of_iterator_helper_loose(mp.segments);!(_step4=_iterator4()).done;){var segment=_step4.value;if(segment.uri=resolveUrl(baseUri,segment.uri),segment.key&&segment.key.uri&&(segment.key.uri=resolveUrl(baseUri,segment.key.uri)),segment.map&&segment.map.uri&&(segment.map.uri=resolveUrl(baseUri,segment.map.uri)),segment.parts)for(var _step5,_iterator5=_create_for_of_iterator_helper_loose(segment.parts);!(_step5=_iterator5()).done;){var part=_step5.value;part.uri=resolveUrl(baseUri,part.uri)}}for(var _step6,_iterator6=_create_for_of_iterator_helper_loose(mp.prefetchSegments);!(_step6=_iterator6()).done;){var prefetch=_step6.value;prefetch.uri=resolveUrl(baseUri,prefetch.uri),prefetch.key&&prefetch.key.uri&&(prefetch.key.uri=resolveUrl(baseUri,prefetch.key.uri))}for(var _step7,_iterator7=_create_for_of_iterator_helper_loose(mp.renditionReports);!(_step7=_iterator7()).done;){var report=_step7.value;report.uri=resolveUrl(baseUri,report.uri)}}}(playlist,options.uri),playlist},resolveUrl:resolveUrl,InvalidPlaylistError:InvalidPlaylistError}});
6
+ !function(global,factory){"object"==typeof exports&&"undefined"!=typeof module?module.exports=factory():"function"==typeof define&&define.amd?define(factory):(global="undefined"!=typeof globalThis?globalThis:global||self).HlsParse=factory()}(this,function(){"use strict";function _array_like_to_array$1(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _construct(Parent,args,Class){return _construct=_is_native_reflect_construct()?Reflect.construct:function(Parent,args,Class){var a=[null];a.push.apply(a,args);var instance=new(Function.bind.apply(Parent,a));return Class&&_set_prototype_of(instance,Class.prototype),instance},_construct.apply(null,arguments)}function _get_prototype_of(o){return _get_prototype_of=Object.setPrototypeOf?Object.getPrototypeOf:function(o){return o.__proto__||Object.getPrototypeOf(o)},_get_prototype_of(o)}function _set_prototype_of(o,p){return _set_prototype_of=Object.setPrototypeOf||function(o,p){return o.__proto__=p,o},_set_prototype_of(o,p)}function _wrap_native_super(Class){var _cache="function"==typeof Map?new Map:void 0;return _wrap_native_super=function(Class){if(null===Class||(fn=Class,-1===Function.toString.call(fn).indexOf("[native code]")))return Class;var fn;if("function"!=typeof Class)throw new TypeError("Super expression must either be null or a function");if(void 0!==_cache){if(_cache.has(Class))return _cache.get(Class);_cache.set(Class,Wrapper)}function Wrapper(){return _construct(Class,arguments,_get_prototype_of(this).constructor)}return Wrapper.prototype=Object.create(Class.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),_set_prototype_of(Wrapper,Class)},_wrap_native_super(Class)}function _is_native_reflect_construct(){try{var result=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(_){}return(_is_native_reflect_construct=function(){return!!result})()}function _create_for_of_iterator_helper_loose$1(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=function(o,minLen){if(o){if("string"==typeof o)return _array_like_to_array$1(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array$1(o,minLen):void 0}}(o))||allowArrayLike){it&&(o=it);var i=0;return function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var InvalidPlaylistError=function(Error1){function InvalidPlaylistError(message){var _this;return(_this=Error1.call(this,message)||this).name="InvalidPlaylistError",_this}return function(subClass,superClass){if("function"!=typeof superClass&&null!==superClass)throw new TypeError("Super expression must either be null or a function");subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:!0,configurable:!0}}),superClass&&_set_prototype_of(subClass,superClass)}(InvalidPlaylistError,Error1),InvalidPlaylistError}(_wrap_native_super(Error));function trim(str,char){if(void 0!==str){for(var start=0,end=str.length-1;start<=end&&str[start]===char;)start++;for(;end>=start&&str[end]===char;)end--;return str.slice(start,end+1)}}function splitAt(str,delimiter){var index=str.indexOf(delimiter);return-1===index?[str,""]:[str.slice(0,index),str.slice(index+1)]}function toNumber(str){return Number(str)}function hexToByteSequence(hex){var h=hex;(h.startsWith("0x")||h.startsWith("0X"))&&(h=h.slice(2)),h.length%2!=0&&(h="0"+h);for(var bytes=new Uint8Array(h.length/2),i=0;i<bytes.length;i++)bytes[i]=parseInt(h.slice(2*i,2*i+2),16);return bytes}function camelify(str){return str.toLowerCase().replace(/[-_](.)/g,function(_,c){return c.toUpperCase()})}function resolveUrl(base,relative){if(!base)return relative;if(/^[a-zA-Z][a-zA-Z0-9+\-.]*:/.test(relative))return relative;try{var baseUrl=new URL(base);return relative.startsWith("//")?baseUrl.protocol+relative:new URL(relative,baseUrl).href}catch(unused){if(relative.startsWith("/")){var match=base.match(/^[a-zA-Z][a-zA-Z0-9+\-.]*:\/\/[^/]+/);if(match)return match[0]+relative}for(var _step,result=[],_iterator=_create_for_of_iterator_helper_loose$1((base.replace(/\/[^/]*$/,"/")+relative).split("/"));!(_step=_iterator()).done;){var part=_step.value;".."===part?result.pop():"."!==part&&result.push(part)}return result.join("/")}}function _array_like_to_array(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i<len;i++)arr2[i]=arr[i];return arr2}function _type_of(obj){return obj&&"undefined"!=typeof Symbol&&obj.constructor===Symbol?"symbol":typeof obj}function _create_for_of_iterator_helper_loose(o,allowArrayLike){var it="undefined"!=typeof Symbol&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=function(o,minLen){if(o){if("string"==typeof o)return _array_like_to_array(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);return"Object"===n&&o.constructor&&(n=o.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_array_like_to_array(o,minLen):void 0}}(o))||allowArrayLike){it&&(o=it);var i=0;return function(){return i>=o.length?{done:!0}:{done:!1,value:o[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function parseEXTINF(param){var pair=splitAt(param,",");return{duration:toNumber(pair[0]),title:pair[1]?decodeURIComponent(encodeURIComponent(pair[1])):void 0}}function parseBYTERANGE(param){var pair=splitAt(param,"@");return{length:toNumber(pair[0]),offset:pair[1]?toNumber(pair[1]):-1}}function parseResolution(str){var pair=splitAt(str,"x");return{width:toNumber(pair[0]),height:toNumber(pair[1])}}function parseAllowedCpc(str){for(var _step,allowedCpcList=[],_iterator=_create_for_of_iterator_helper_loose(str.split(","));!(_step=_iterator()).done;){var _utils_splitAt=splitAt(_step.value,":"),format=_utils_splitAt[0],cpcText=_utils_splitAt[1];format&&cpcText&&allowedCpcList.push({format:format,cpcList:cpcText.split("/")})}return allowedCpcList}function parseIV(str){var iv=hexToByteSequence(str);return iv.length,iv}function parseUserAttribute(str){return str.startsWith('"')?trim(str,'"'):str.startsWith("0x")||str.startsWith("0X")?hexToByteSequence(str):toNumber(str)}function setCompatibleVersionOfKey(params,attributes){attributes.IV&&params.compatibleVersion<2&&(params.compatibleVersion=2),(attributes.KEYFORMAT||attributes.KEYFORMATVERSIONS)&&params.compatibleVersion<5&&(params.compatibleVersion=5)}function parseAttributeList(param){for(var _step,attributes={},_iterator=_create_for_of_iterator_helper_loose(function(str){for(var result=[],current="",inQuotes=!1,i=0;i<str.length;i++){var char=str[i];'"'===char?(inQuotes=!inQuotes,current+=char):","!==char||inQuotes?current+=char:(result.push(current),current="")}return current&&result.push(current),result}(param));!(_step=_iterator()).done;){var _utils_splitAt=splitAt(_step.value,"="),key=_utils_splitAt[0],value=_utils_splitAt[1],val=trim(value,'"');switch(key){case"URI":attributes[key]=val;break;case"START-DATE":case"END-DATE":attributes[key]=new Date(val);break;case"IV":attributes[key]=parseIV(val);break;case"BYTERANGE":attributes[key]=parseBYTERANGE(val);break;case"RESOLUTION":attributes[key]=parseResolution(val);break;case"ALLOWED-CPC":attributes[key]=parseAllowedCpc(val);break;case"END-ON-NEXT":case"DEFAULT":case"AUTOSELECT":case"FORCED":case"PRECISE":case"CAN-BLOCK-RELOAD":case"INDEPENDENT":case"GAP":attributes[key]="YES"===val;break;case"DURATION":case"PLANNED-DURATION":case"BANDWIDTH":case"AVERAGE-BANDWIDTH":case"FRAME-RATE":case"TIME-OFFSET":case"CAN-SKIP-UNTIL":case"HOLD-BACK":case"PART-HOLD-BACK":case"PART-TARGET":case"BYTERANGE-START":case"BYTERANGE-LENGTH":case"LAST-MSN":case"LAST-PART":case"SKIPPED-SEGMENTS":case"SCORE":case"PROGRAM-ID":attributes[key]=toNumber(val);break;default:key.startsWith("SCTE35-")?attributes[key]=hexToByteSequence(val):key.startsWith("X-")?attributes[key]=parseUserAttribute(value):attributes[key]=val}}return attributes}function parseTag(line,params){var _splitTag=function(line){var index=line.indexOf(":");return-1===index?[line.slice(1).trim(),null]:[line.slice(1,index).trim(),line.slice(index+1).trim()]}(line),name=_splitTag[0],param=_splitTag[1],category=function(tagName){switch(tagName){case"EXTM3U":case"EXT-X-VERSION":case"EXT-X-CONTENT-STEERING":return"Basic";case"EXTINF":case"EXT-X-BYTERANGE":case"EXT-X-DISCONTINUITY":case"EXT-X-PREFETCH-DISCONTINUITY":case"EXT-X-KEY":case"EXT-X-MAP":case"EXT-X-PROGRAM-DATE-TIME":case"EXT-X-DATERANGE":case"EXT-X-CUE-OUT":case"EXT-X-CUE-IN":case"EXT-X-CUE-OUT-CONT":case"EXT-X-CUE":case"EXT-OATCLS-SCTE35":case"EXT-X-ASSET":case"EXT-X-SCTE35":case"EXT-X-PART":case"EXT-X-PRELOAD-HINT":case"EXT-X-GAP":return"Segment";case"EXT-X-BITRATE":case"EXT-X-TARGETDURATION":case"EXT-X-MEDIA-SEQUENCE":case"EXT-X-DISCONTINUITY-SEQUENCE":case"EXT-X-ENDLIST":case"EXT-X-PLAYLIST-TYPE":case"EXT-X-I-FRAMES-ONLY":case"EXT-X-SERVER-CONTROL":case"EXT-X-PART-INF":case"EXT-X-PREFETCH":case"EXT-X-RENDITION-REPORT":case"EXT-X-SKIP":return"MediaPlaylist";case"EXT-X-MEDIA":case"EXT-X-STREAM-INF":case"EXT-X-I-FRAME-STREAM-INF":case"EXT-X-SESSION-DATA":case"EXT-X-SESSION-KEY":return"MasterPlaylist";case"EXT-X-INDEPENDENT-SEGMENTS":case"EXT-X-START":case"EXT-X-DEFINE":return"MediaorMasterPlaylist";default:return"Unknown"}}(name);if(function(category,params){if("Segment"===category||"MediaPlaylist"===category)return void 0===params.isMasterPlaylist?void(params.isMasterPlaylist=!1):void params.isMasterPlaylist;if("MasterPlaylist"===category){if(void 0===params.isMasterPlaylist)return void(params.isMasterPlaylist=!0);params.isMasterPlaylist}}(category,params),"Unknown"===category)return null;"MediaPlaylist"===category&&"EXT-X-RENDITION-REPORT"!==name&&"EXT-X-PREFETCH"!==name&&(params.hash[name],params.hash[name]=!0);var _parseTagParam=function(name,param){if(null===param)return[null,null];switch(name){case"EXTM3U":case"EXT-X-DISCONTINUITY":case"EXT-X-ENDLIST":case"EXT-X-I-FRAMES-ONLY":case"EXT-X-INDEPENDENT-SEGMENTS":case"EXT-X-CUE-IN":case"EXT-X-GAP":return[null,null];case"EXT-X-VERSION":case"EXT-X-TARGETDURATION":case"EXT-X-MEDIA-SEQUENCE":case"EXT-X-DISCONTINUITY-SEQUENCE":case"EXT-X-BITRATE":return[toNumber(param),null];case"EXT-X-CUE-OUT":return Number.isNaN(Number(param))?[null,parseAttributeList(param)]:[toNumber(param),null];case"EXT-X-KEY":case"EXT-X-MAP":case"EXT-X-DATERANGE":case"EXT-X-MEDIA":case"EXT-X-STREAM-INF":case"EXT-X-I-FRAME-STREAM-INF":case"EXT-X-SESSION-DATA":case"EXT-X-SESSION-KEY":case"EXT-X-START":case"EXT-X-SERVER-CONTROL":case"EXT-X-PART-INF":case"EXT-X-PART":case"EXT-X-PRELOAD-HINT":case"EXT-X-RENDITION-REPORT":case"EXT-X-SKIP":case"EXT-X-DEFINE":case"EXT-X-CONTENT-STEERING":return[null,parseAttributeList(param)];case"EXTINF":return[parseEXTINF(param),null];case"EXT-X-BYTERANGE":return[parseBYTERANGE(param),null];default:return[param,null]}}(name,param);return{name:name,category:category,value:_parseTagParam[0],attributes:_parseTagParam[1]||{}}}function parseVariant(variantAttrs,uri,iFrameOnly,params,mediaGroups){for(var variant={uri:uri,bandwidth:variantAttrs.BANDWIDTH,averageBandwidth:variantAttrs["AVERAGE-BANDWIDTH"],score:variantAttrs.SCORE,codecs:variantAttrs.CODECS,resolution:variantAttrs.RESOLUTION,frameRate:variantAttrs["FRAME-RATE"],hdcpLevel:variantAttrs["HDCP-LEVEL"],allowedCpc:variantAttrs["ALLOWED-CPC"],videoRange:variantAttrs["VIDEO-RANGE"],stableVariantId:variantAttrs["STABLE-VARIANT-ID"],pathwayId:variantAttrs["PATHWAY-ID"]||variantAttrs["STABLE-PATHWAY-ID"],programId:variantAttrs["PROGRAM-ID"],isIFrameOnly:iFrameOnly},_i=0,_iter=["AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS"];_i<_iter.length;_i++){var type=_iter[_i],attrsGroupId=variantAttrs[type];if(attrsGroupId){var typeMap=mediaGroups.get(type);if(typeMap){var renditions=typeMap.get(attrsGroupId);if(renditions)for(var _step,_iterator=_create_for_of_iterator_helper_loose(renditions);!(_step=_iterator()).done;){addRenditionToList(variant,_step.value,type)}}}}return function(attrs,variant,params){for(var _loop=function(_i,_iter){var type=_iter[_i];if("CLOSED-CAPTIONS"===type&&"NONE"===attrs[type])params.isClosedCaptionsNone=!0,variant.closedCaptions=[];else if(attrs[type]){var key=camelify(type),renditions=variant[key]||[];renditions.length>0&&renditions.some(function(item){return item.groupId===attrs[type]})}},_i=0,_iter=["AUDIO","VIDEO","SUBTITLES","CLOSED-CAPTIONS"];_i<_iter.length;_i++)_loop(_i,_iter)}(variantAttrs,variant,params),variant}function addRenditionToList(variant,rendition,type){var key=camelify(type),renditions=variant[key];renditions||(renditions=[],variant[key]=renditions),renditions.push(rendition)}function parseMasterPlaylist(lines,params){for(var _step,_loop=function(){var _step_value=_step.value,index=_step_value[0],line=_step_value[1];if("string"==typeof line)return"continue";var name=line.name,value=line.value,attributes=line.attributes;if("EXT-X-VERSION"===name)playlist.version=value;else if("EXT-X-CONTENT-STEERING"===name)playlist.contentSteering={serverUri:attributes["SERVER-URI"],pathwayId:attributes["PATHWAY-ID"]};else if("EXT-X-STREAM-INF"===name){var uriLine=lines[index+1];"string"!=typeof uriLine||uriLine.startsWith("#");var variant=parseVariant(attributes,uriLine,!1,params,mediaGroups);"number"==typeof variant.score&&(variantIsScored=!0,variant.score),playlist.variants.push(variant)}else if("EXT-X-I-FRAME-STREAM-INF"===name){var variant1=parseVariant(attributes,attributes.URI,!0,params,mediaGroups);playlist.variants.push(variant1)}else if("EXT-X-SESSION-DATA"===name){var sessionData={id:attributes["DATA-ID"],value:attributes.VALUE,uri:attributes.URI,language:attributes.LANGUAGE};playlist.sessionDataList.some(function(item){return item.id===sessionData.id&&item.language===sessionData.language}),playlist.sessionDataList.push(sessionData)}else if("EXT-X-SESSION-KEY"===name){attributes.METHOD;var sessionKey={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS};playlist.sessionKeyList.some(function(item){return function(key1,key2){if(key1.method!==key2.method)return!1;if(key1.uri!==key2.uri)return!1;if(key1.iv){if(!key2.iv)return!1;if(key1.iv.byteLength!==key2.iv.byteLength)return!1;for(var i=0;i<key1.iv.byteLength;i++)if(key1.iv[i]!==key2.iv[i])return!1}else if(key2.iv)return!1;return key1.format===key2.format&&key1.formatVersion===key2.formatVersion}(item,sessionKey)}),setCompatibleVersionOfKey(params,attributes),playlist.sessionKeyList.push(sessionKey)}else"EXT-X-INDEPENDENT-SEGMENTS"===name?(playlist.independentSegments,playlist.independentSegments=!0):"EXT-X-START"===name?(playlist.start,attributes["TIME-OFFSET"],playlist.start={offset:attributes["TIME-OFFSET"],precise:attributes.PRECISE||!1}):"EXT-X-DEFINE"===name&&(playlist.defines||(playlist.defines=[]),playlist.defines.push(attributes))},playlist={isMasterPlaylist:!0,variants:[],sessionDataList:[],sessionKeyList:[]},mediaGroups=function(lines){for(var _step,_loop=function(){var attrs,line=_step.value;if("object"===(void 0===line?"undefined":_type_of(line))&&"EXT-X-MEDIA"===line.name){var rendition={type:(attrs=line.attributes).TYPE,uri:attrs.URI,groupId:attrs["GROUP-ID"],language:attrs.LANGUAGE,assocLanguage:attrs["ASSOC-LANGUAGE"],name:attrs.NAME,isDefault:attrs.DEFAULT,autoselect:attrs.AUTOSELECT,forced:attrs.FORCED,instreamId:attrs["INSTREAM-ID"],characteristics:attrs.CHARACTERISTICS,channels:attrs.CHANNELS,pathwayId:attrs["PATHWAY-ID"]},type=rendition.type,groupId=rendition.groupId,typeMap=index.get(type);typeMap||(typeMap=new Map,index.set(type,typeMap));var group=typeMap.get(groupId);group||(group=[],typeMap.set(groupId,group)),group.some(function(r){return r.name===rendition.name}),rendition.isDefault&&group.some(function(r){return r.isDefault}),group.push(rendition)}},index=new Map,_iterator=_create_for_of_iterator_helper_loose(lines);!(_step=_iterator()).done;)_loop();return index}(lines),variantIsScored=!1,_iterator=_create_for_of_iterator_helper_loose(lines.entries());!(_step=_iterator()).done;)_loop();if(variantIsScored)for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(playlist.variants);!(_step1=_iterator1()).done;){_step1.value.score}if(params.isClosedCaptionsNone)for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(playlist.variants);!(_step2=_iterator2()).done;){var cc=_step2.value.closedCaptions;cc&&cc.length}return playlist}function parseDateRange(attributes){for(var _step,attrs={},_iterator=_create_for_of_iterator_helper_loose(Object.keys(attributes));!(_step=_iterator()).done;){var key=_step.value;(key.startsWith("SCTE35-")||key.startsWith("X-"))&&(attrs[key]=attributes[key])}return{id:attributes.ID,classId:attributes.CLASS,start:attributes["START-DATE"],cue:attributes.CUE,end:attributes["END-DATE"],duration:attributes.DURATION,plannedDuration:attributes["PLANNED-DURATION"],endOnNext:attributes["END-ON-NEXT"],attributes:attrs}}function parseSegment(lines,uri,start,end,mediaSequenceNumber,discontinuitySequence,params){for(var segment={uri:uri,mediaSequenceNumber:mediaSequenceNumber,discontinuitySequence:discontinuitySequence,markers:[],parts:[]},partHint=!1,i=start;i<=end;i++)if("string"!=typeof lines[i]){var _lines_i=lines[i],name=_lines_i.name,value=_lines_i.value,attributes=_lines_i.attributes;if("EXTINF"===name)!Number.isInteger(value.duration)&&params.compatibleVersion<3&&(params.compatibleVersion=3),Math.round(value.duration),params.targetDuration,segment.duration=value.duration,segment.title=value.title;else if("EXT-X-BYTERANGE"===name)params.compatibleVersion<4&&(params.compatibleVersion=4),segment.byterange=value;else if("EXT-X-DISCONTINUITY"===name)segment.parts&&segment.parts.length,segment.discontinuity=!0;else if("EXT-X-GAP"===name)params.compatibleVersion<8&&(params.compatibleVersion=8),segment.gap=!0;else if("EXT-X-KEY"===name)segment.parts&&segment.parts.length,setCompatibleVersionOfKey(params,attributes),segment.key={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS};else if("EXT-X-MAP"===name)segment.parts&&segment.parts.length,params.compatibleVersion<5&&(params.compatibleVersion=5),params.hasMap=!0,segment.map={uri:attributes.URI,byterange:attributes.BYTERANGE};else if("EXT-X-PROGRAM-DATE-TIME"===name)segment.programDateTime=value;else if("EXT-X-DATERANGE"===name)segment.dateRange=parseDateRange(attributes);else if("EXT-X-CUE-OUT"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"OUT",duration:attributes&&attributes.DURATION||value});else if("EXT-X-CUE-IN"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"IN"});else if("EXT-X-CUE-OUT-CONT"===name||"EXT-X-CUE"===name||"EXT-OATCLS-SCTE35"===name||"EXT-X-ASSET"===name||"EXT-X-SCTE35"===name)segment.markers||(segment.markers=[]),segment.markers.push({type:"RAW",tagName:name,value:value});else if("EXT-X-PRELOAD-HINT"!==name||attributes.TYPE)if("EXT-X-PRELOAD-HINT"===name&&"PART"===attributes.TYPE&&partHint);else if("EXT-X-PART"!==name&&"EXT-X-PRELOAD-HINT"!==name||attributes.URI){if("EXT-X-PRELOAD-HINT"===name&&"MAP"===attributes.TYPE)params.hasMap=!0,segment.map={hint:!0,uri:attributes.URI,byterange:{length:attributes["BYTERANGE-LENGTH"],offset:attributes["BYTERANGE-START"]||0}};else if("EXT-X-PART"===name||"EXT-X-PRELOAD-HINT"===name&&"PART"===attributes.TYPE){"EXT-X-PART"===name&&attributes.DURATION,"EXT-X-PRELOAD-HINT"===name&&(partHint=!0),segment.parts||(segment.parts=[]);var partialSegment={hint:"EXT-X-PRELOAD-HINT"===name,uri:attributes.URI,byterange:"EXT-X-PART"===name?attributes.BYTERANGE:{length:attributes["BYTERANGE-LENGTH"],offset:attributes["BYTERANGE-START"]||0},duration:attributes.DURATION,independent:attributes.INDEPENDENT,gap:attributes.GAP};segment.gap,segment.parts.push(partialSegment)}}else;else;}return segment}function parsePrefetchSegment(lines,uri,start,end,mediaSequenceNumber,discontinuitySequence,params){for(var segment={uri:uri,mediaSequenceNumber:mediaSequenceNumber,discontinuitySequence:discontinuitySequence},i=start;i<=end;i++)if("string"!=typeof lines[i]){var _lines_i=lines[i],name=_lines_i.name,attributes=_lines_i.attributes;"EXTINF"===name||"EXT-X-DISCONTINUITY"===name||("EXT-X-PREFETCH-DISCONTINUITY"===name?segment.discontinuity=!0:"EXT-X-KEY"===name&&(setCompatibleVersionOfKey(params,attributes),segment.key={method:attributes.METHOD,uri:attributes.URI,iv:attributes.IV,format:attributes.KEYFORMAT,formatVersion:attributes.KEYFORMATVERSIONS}))}return segment}function addSegment(playlist,segment,discontinuitySequence,currentKey,currentMap){var _segment_key,_segment_map,discontinuity=segment.discontinuity,key=segment.key,map=segment.map,byterange=segment.byterange,uri=segment.uri;if(discontinuity&&(segment.discontinuitySequence=discontinuitySequence+1),key||(segment.key=currentKey),map||(segment.map=currentMap),byterange&&-1===byterange.offset){var segments=playlist.segments;if(segments.length>0){var prevSegment=segments[segments.length-1];prevSegment.byterange&&prevSegment.uri===uri&&(byterange.offset=prevSegment.byterange.offset+prevSegment.byterange.length)}}return playlist.segments.push(segment),[segment.discontinuitySequence,null!=(_segment_key=segment.key)?_segment_key:null,null!=(_segment_map=segment.map)?_segment_map:null]}function parseMediaPlaylist(lines,params){for(var _step,playlist={isMasterPlaylist:!1,segments:[],prefetchSegments:[],renditionReports:[],dateRanges:[]},segmentStart=-1,mediaSequence=0,discontinuitySequence=0,currentKey=null,currentMap=null,containsParts=!1,_iterator=_create_for_of_iterator_helper_loose(lines.entries());!(_step=_iterator()).done;){var _step_value=_step.value,index=_step_value[0],line=_step_value[1];if("string"!=typeof line){var name=line.name,value=line.value,attributes=line.attributes,category=line.category;if("EXT-X-DATERANGE"===name){var dateRange=parseDateRange(attributes);playlist.dateRanges.push(dateRange)}if("Segment"!==category)if("EXT-X-VERSION"===name)void 0===playlist.version&&(playlist.version=value);else if("EXT-X-TARGETDURATION"===name)playlist.targetDuration=params.targetDuration=value;else if("EXT-X-MEDIA-SEQUENCE"===name)playlist.segments.length,playlist.mediaSequenceBase=value,mediaSequence=value;else if("EXT-X-BITRATE"===name)playlist.bitrate=value;else if("EXT-X-DISCONTINUITY-SEQUENCE"===name)playlist.segments.length,playlist.discontinuitySequenceBase=value,discontinuitySequence=value;else if("EXT-X-ENDLIST"===name)playlist.endlist=!0;else if("EXT-X-PLAYLIST-TYPE"===name)playlist.playlistType=value;else if("EXT-X-I-FRAMES-ONLY"===name)params.compatibleVersion<4&&(params.compatibleVersion=4),playlist.isIFrame=!0;else if("EXT-X-INDEPENDENT-SEGMENTS"===name)playlist.independentSegments,playlist.independentSegments=!0;else if("EXT-X-START"===name)playlist.start,attributes["TIME-OFFSET"],playlist.start={offset:attributes["TIME-OFFSET"],precise:attributes.PRECISE||!1};else if("EXT-X-SERVER-CONTROL"===name)attributes["CAN-BLOCK-RELOAD"],playlist.lowLatencyCompatibility={canBlockReload:attributes["CAN-BLOCK-RELOAD"],canSkipUntil:attributes["CAN-SKIP-UNTIL"],holdBack:attributes["HOLD-BACK"],partHoldBack:attributes["PART-HOLD-BACK"]};else if("EXT-X-PART-INF"===name)attributes["PART-TARGET"],playlist.partTargetDuration=attributes["PART-TARGET"];else if("EXT-X-RENDITION-REPORT"===name)attributes.URI,/^[a-z]+:/i.test(attributes.URI),playlist.renditionReports.push({uri:attributes.URI,lastMSN:attributes["LAST-MSN"],lastPart:attributes["LAST-PART"]});else if("EXT-X-SKIP"===name)attributes["SKIPPED-SEGMENTS"],params.compatibleVersion<9&&(params.compatibleVersion=9),playlist.skip=attributes["SKIPPED-SEGMENTS"],mediaSequence+=playlist.skip;else if("EXT-X-PREFETCH"===name){var segment1=parsePrefetchSegment(lines,value,-1===segmentStart?index:segmentStart,index-1,mediaSequence++,discontinuitySequence,params);segment1.discontinuity&&(segment1.discontinuitySequence++,discontinuitySequence=segment1.discontinuitySequence),segment1.key||(segment1.key=currentKey),playlist.prefetchSegments.push(segment1),segmentStart=-1}else"EXT-X-DEFINE"===name&&(playlist.defines||(playlist.defines=[]),playlist.defines.push(attributes));else-1===segmentStart&&(segmentStart=index)}else{playlist.targetDuration;var segment=parseSegment(lines,line,segmentStart,index-1,mediaSequence++,discontinuitySequence,params),_addSegment=addSegment(playlist,segment,discontinuitySequence,currentKey,currentMap);discontinuitySequence=_addSegment[0],currentKey=_addSegment[1],currentMap=_addSegment[2],!containsParts&&segment.parts&&segment.parts.length>0&&(containsParts=!0),segmentStart=-1}}if(-1!==segmentStart){var _parts_,segment2=parseSegment(lines,"",segmentStart,lines.length-1,mediaSequence++,discontinuitySequence,params),parts=segment2.parts;parts&&parts.length>0&&!playlist.endlist&&(null==(_parts_=parts[parts.length-1])||_parts_.hint),addSegment(playlist,segment2,discontinuitySequence,currentKey,currentMap),!containsParts&&segment2.parts&&segment2.parts.length>0&&(containsParts=!0)}return function(segments){for(var earliestDates=new Map,rangeList=new Map,i=segments.length-1;i>=0;i--){var _segments_i=segments[i];_segments_i.programDateTime;var dateRange=_segments_i.dateRange;if(dateRange&&dateRange.start){dateRange.endOnNext&&(dateRange.end||dateRange.duration);var start=dateRange.start.getTime(),duration=dateRange.duration||0;dateRange.end&&dateRange.duration&&dateRange.end.getTime(),dateRange.endOnNext&&dateRange.classId&&(dateRange.end=earliestDates.get(dateRange.classId)),earliestDates.set(dateRange.classId,dateRange.start);var end=dateRange.end?dateRange.end.getTime():start+1e3*duration;if(dateRange.classId){var range=rangeList.get(dateRange.classId);if(range){for(var _step,_iterator=_create_for_of_iterator_helper_loose(range);!(_step=_iterator()).done;){var entry=_step.value;entry.start<=start&&entry.end>start||entry.start>=start&&entry.start}range.push({start:start,end:end})}else rangeList.set(dateRange.classId,[{start:start,end:end}])}}}}(playlist.segments),playlist.lowLatencyCompatibility&&function(playlist,containsParts){var lowLatencyCompatibility=playlist.lowLatencyCompatibility;if(playlist.targetDuration,playlist.partTargetDuration,lowLatencyCompatibility&&(lowLatencyCompatibility.canSkipUntil,lowLatencyCompatibility.holdBack,lowLatencyCompatibility.partHoldBack,containsParts)){for(var _step,_iterator=_create_for_of_iterator_helper_loose(playlist.segments.entries());!(_step=_iterator()).done;){var _step_value=_step.value,parts=(_step_value[0],_step_value[1].parts);if(parts&&0!==parts.length){playlist.segments.length;for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(parts.entries());!(_step1=_iterator1()).done;){var _step_value1=_step1.value;void 0!==(_step_value1[0],_step_value1[1].duration)&&parts.length}}}for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(playlist.renditionReports);!(_step2=_iterator2()).done;){var report=_step2.value,lastSegment=playlist.segments[playlist.segments.length-1];void 0===report.lastMSN&&lastSegment&&(report.lastMSN=lastSegment.mediaSequenceNumber),(void 0===report.lastPart||null===report.lastPart)&&lastSegment&&lastSegment.parts&&lastSegment.parts.length>0&&(report.lastPart=lastSegment.parts.length-1)}}}(playlist,containsParts),playlist}return{parser:function(text,options){var params={isMasterPlaylist:void 0,hasMap:!1,targetDuration:0,compatibleVersion:1,isClosedCaptionsNone:!1,hash:{}},playlist=function(lines,params){var playlist;return params.isMasterPlaylist?playlist=parseMasterPlaylist(lines,params):!(playlist=parseMediaPlaylist(lines,params)).isMasterPlaylist&&!playlist.isIFrame&&params.hasMap&&params.compatibleVersion<6&&(params.compatibleVersion=6),params.compatibleVersion>1&&void 0!==playlist.version&&null!==playlist.version&&playlist.version<params.compatibleVersion&&params.compatibleVersion,playlist}(function(text,params){var lines=[],normalized=text;65279===normalized.charCodeAt(0)&&(normalized=normalized.slice(1));for(var _step,_iterator=_create_for_of_iterator_helper_loose(normalized.split(/\r?\n/));!(_step=_iterator()).done;){var line=_step.value.trim();if(line)if(line.startsWith("#")){if(line.startsWith("#EXT")){var tag=parseTag(line,params);tag&&lines.push(tag)}}else lines.push(line)}return 0===lines.length||"object"!==_type_of(lines[0])||lines[0].name,lines}(text,params),params);return playlist.source=text,(null==options?void 0:options.uri)&&function(playlist,baseUri){if(playlist.isMasterPlaylist){for(var _step,master=playlist,_iterator=_create_for_of_iterator_helper_loose(master.variants);!(_step=_iterator()).done;){var variant=_step.value;variant.uri=resolveUrl(baseUri,variant.uri);for(var _i=0,_iter=["audio","video","subtitles","closedCaptions"];_i<_iter.length;_i++){var renditions=variant[_iter[_i]];if(renditions)for(var _step1,_iterator1=_create_for_of_iterator_helper_loose(renditions);!(_step1=_iterator1()).done;){var r=_step1.value;r.uri&&(r.uri=resolveUrl(baseUri,r.uri))}}}for(var _step2,_iterator2=_create_for_of_iterator_helper_loose(master.sessionDataList);!(_step2=_iterator2()).done;){var sd=_step2.value;sd.uri&&(sd.uri=resolveUrl(baseUri,sd.uri))}for(var _step3,_iterator3=_create_for_of_iterator_helper_loose(master.sessionKeyList);!(_step3=_iterator3()).done;){var sk=_step3.value;sk.uri&&(sk.uri=resolveUrl(baseUri,sk.uri))}var steering=master.contentSteering;steering&&(steering.serverUri=resolveUrl(baseUri,steering.serverUri))}else{for(var _step4,mp=playlist,_iterator4=_create_for_of_iterator_helper_loose(mp.segments);!(_step4=_iterator4()).done;){var segment=_step4.value;if(segment.uri=resolveUrl(baseUri,segment.uri),segment.key&&segment.key.uri&&(segment.key.uri=resolveUrl(baseUri,segment.key.uri)),segment.map&&segment.map.uri&&(segment.map.uri=resolveUrl(baseUri,segment.map.uri)),segment.parts)for(var _step5,_iterator5=_create_for_of_iterator_helper_loose(segment.parts);!(_step5=_iterator5()).done;){var part=_step5.value;part.uri=resolveUrl(baseUri,part.uri)}}for(var _step6,_iterator6=_create_for_of_iterator_helper_loose(mp.prefetchSegments);!(_step6=_iterator6()).done;){var prefetch=_step6.value;prefetch.uri=resolveUrl(baseUri,prefetch.uri),prefetch.key&&prefetch.key.uri&&(prefetch.key.uri=resolveUrl(baseUri,prefetch.key.uri))}for(var _step7,_iterator7=_create_for_of_iterator_helper_loose(mp.renditionReports);!(_step7=_iterator7()).done;){var report=_step7.value;report.uri=resolveUrl(baseUri,report.uri)}}}(playlist,options.uri),playlist},resolveUrl:resolveUrl,InvalidPlaylistError:InvalidPlaylistError}});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skax/hls-parse",
3
- "version": "0.0.1-beta.5",
3
+ "version": "0.0.1-beta.7",
4
4
  "description": "A robust M3U8/HLS playlist parser supporting RFC 8216, Master playlists, Media playlists, and LL-HLS (Low-Latency HLS)",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",