2020-10-15 00:07:38 +03:00
import { c as createCommonjsModule , g as getDefaultExportFromCjs , d as document _1 , w as window _1 , a as core , b as commonjsGlobal } from '../../../common/core-02e93804.js' ;
2020-10-05 18:43:38 +03:00
2020-10-21 01:15:56 +03:00
//[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
//[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
//[5] Name ::= NameStartChar (NameChar)*
var nameStartChar = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ ; //\u10000-\uEFFFF
var nameChar = new RegExp ( "[\\-\\.0-9" + nameStartChar . source . slice ( 1 , - 1 ) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]" ) ;
var tagNamePattern = new RegExp ( '^' + nameStartChar . source + nameChar . source + '*(?:\:' + nameStartChar . source + nameChar . source + '*)?$' ) ;
//var tagNamePattern = /^[a-zA-Z_][\w\-\.]*(?:\:[a-zA-Z_][\w\-\.]*)?$/
//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')
//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE
//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE
var S _TAG = 0 ; //tag name offerring
var S _ATTR = 1 ; //attr name offerring
var S _ATTR _SPACE = 2 ; //attr name end and space offer
var S _EQ = 3 ; //=space?
var S _ATTR _NOQUOT _VALUE = 4 ; //attr value(no quot value only)
var S _ATTR _END = 5 ; //attr value end and no space(quot end)
var S _TAG _SPACE = 6 ; //(attr value end || tag end ) && (space offer)
var S _TAG _CLOSE = 7 ; //closed el<el />
function XMLReader ( ) {
}
XMLReader . prototype = {
parse : function ( source , defaultNSMap , entityMap ) {
var domBuilder = this . domBuilder ;
domBuilder . startDocument ( ) ;
_copy ( defaultNSMap , defaultNSMap = { } ) ;
parse ( source , defaultNSMap , entityMap ,
domBuilder , this . errorHandler ) ;
domBuilder . endDocument ( ) ;
}
} ;
function parse ( source , defaultNSMapCopy , entityMap , domBuilder , errorHandler ) {
function fixedFromCharCode ( code ) {
// String.prototype.fromCharCode does not supports
// > 2 bytes unicode chars directly
if ( code > 0xffff ) {
code -= 0x10000 ;
var surrogate1 = 0xd800 + ( code >> 10 )
, surrogate2 = 0xdc00 + ( code & 0x3ff ) ;
return String . fromCharCode ( surrogate1 , surrogate2 ) ;
} else {
return String . fromCharCode ( code ) ;
}
}
function entityReplacer ( a ) {
var k = a . slice ( 1 , - 1 ) ;
if ( k in entityMap ) {
return entityMap [ k ] ;
} else if ( k . charAt ( 0 ) === '#' ) {
return fixedFromCharCode ( parseInt ( k . substr ( 1 ) . replace ( 'x' , '0x' ) ) )
} else {
errorHandler . error ( 'entity not found:' + a ) ;
return a ;
}
}
function appendText ( end ) { //has some bugs
if ( end > start ) {
var xt = source . substring ( start , end ) . replace ( /&#?\w+;/g , entityReplacer ) ;
locator && position ( start ) ;
domBuilder . characters ( xt , 0 , end - start ) ;
start = end ;
}
}
function position ( p , m ) {
while ( p >= lineEnd && ( m = linePattern . exec ( source ) ) ) {
lineStart = m . index ;
lineEnd = lineStart + m [ 0 ] . length ;
locator . lineNumber ++ ;
//console.log('line++:',locator,startPos,endPos)
}
locator . columnNumber = p - lineStart + 1 ;
}
var lineStart = 0 ;
var lineEnd = 0 ;
var linePattern = /.*(?:\r\n?|\n)|.*$/g ;
var locator = domBuilder . locator ;
var parseStack = [ { currentNSMap : defaultNSMapCopy } ] ;
var closeMap = { } ;
var start = 0 ;
while ( true ) {
try {
var tagStart = source . indexOf ( '<' , start ) ;
if ( tagStart < 0 ) {
if ( ! source . substr ( start ) . match ( /^\s*$/ ) ) {
var doc = domBuilder . doc ;
var text = doc . createTextNode ( source . substr ( start ) ) ;
doc . appendChild ( text ) ;
domBuilder . currentElement = text ;
}
return ;
}
if ( tagStart > start ) {
appendText ( tagStart ) ;
}
switch ( source . charAt ( tagStart + 1 ) ) {
case '/' :
var end = source . indexOf ( '>' , tagStart + 3 ) ;
var tagName = source . substring ( tagStart + 2 , end ) ;
var config = parseStack . pop ( ) ;
if ( end < 0 ) {
tagName = source . substring ( tagStart + 2 ) . replace ( /[\s<].*/ , '' ) ;
//console.error('#@@@@@@'+tagName)
errorHandler . error ( "end tag name: " + tagName + ' is not complete:' + config . tagName ) ;
end = tagStart + 1 + tagName . length ;
} else if ( tagName . match ( /\s</ ) ) {
tagName = tagName . replace ( /[\s<].*/ , '' ) ;
errorHandler . error ( "end tag name: " + tagName + ' maybe not complete' ) ;
end = tagStart + 1 + tagName . length ;
}
//console.error(parseStack.length,parseStack)
//console.error(config);
var localNSMap = config . localNSMap ;
var endMatch = config . tagName == tagName ;
var endIgnoreCaseMach = endMatch || config . tagName && config . tagName . toLowerCase ( ) == tagName . toLowerCase ( ) ;
if ( endIgnoreCaseMach ) {
domBuilder . endElement ( config . uri , config . localName , tagName ) ;
if ( localNSMap ) {
for ( var prefix in localNSMap ) {
domBuilder . endPrefixMapping ( prefix ) ;
}
}
if ( ! endMatch ) {
errorHandler . fatalError ( "end tag name: " + tagName + ' is not match the current start tagName:' + config . tagName ) ;
}
} else {
parseStack . push ( config ) ;
}
end ++ ;
break ;
// end elment
case '?' : // <?...?>
locator && position ( tagStart ) ;
end = parseInstruction ( source , tagStart , domBuilder ) ;
break ;
case '!' : // <!doctype,<![CDATA,<!--
locator && position ( tagStart ) ;
end = parseDCC ( source , tagStart , domBuilder , errorHandler ) ;
break ;
default :
locator && position ( tagStart ) ;
var el = new ElementAttributes ( ) ;
var currentNSMap = parseStack [ parseStack . length - 1 ] . currentNSMap ;
//elStartEnd
var end = parseElementStartPart ( source , tagStart , el , currentNSMap , entityReplacer , errorHandler ) ;
var len = el . length ;
if ( ! el . closed && fixSelfClosed ( source , end , el . tagName , closeMap ) ) {
el . closed = true ;
if ( ! entityMap . nbsp ) {
errorHandler . warning ( 'unclosed xml attribute' ) ;
}
}
if ( locator && len ) {
var locator2 = copyLocator ( locator , { } ) ;
//try{//attribute position fixed
for ( var i = 0 ; i < len ; i ++ ) {
var a = el [ i ] ;
position ( a . offset ) ;
a . locator = copyLocator ( locator , { } ) ;
}
//}catch(e){console.error('@@@@@'+e)}
domBuilder . locator = locator2 ;
if ( appendElement ( el , domBuilder , currentNSMap ) ) {
parseStack . push ( el ) ;
}
domBuilder . locator = locator ;
} else {
if ( appendElement ( el , domBuilder , currentNSMap ) ) {
parseStack . push ( el ) ;
}
}
if ( el . uri === 'http://www.w3.org/1999/xhtml' && ! el . closed ) {
end = parseHtmlSpecialContent ( source , end , el . tagName , entityReplacer , domBuilder ) ;
} else {
end ++ ;
}
}
} catch ( e ) {
errorHandler . error ( 'element parse error: ' + e ) ;
//errorHandler.error('element parse error: '+e);
end = - 1 ;
//throw e;
}
if ( end > start ) {
start = end ;
} else {
//TODO: 这里有可能sax回退, 有位置错误风险
appendText ( Math . max ( tagStart , start ) + 1 ) ;
}
}
}
function copyLocator ( f , t ) {
t . lineNumber = f . lineNumber ;
t . columnNumber = f . columnNumber ;
return t ;
}
/ * *
* @ see # appendElement ( source , elStartEnd , el , selfClosed , entityReplacer , domBuilder , parseStack ) ;
* @ return end of the elementStartPart ( end of elementEndPart for selfClosed el )
* /
function parseElementStartPart ( source , start , el , currentNSMap , entityReplacer , errorHandler ) {
var attrName ;
var value ;
var p = ++ start ;
var s = S _TAG ; //status
while ( true ) {
var c = source . charAt ( p ) ;
switch ( c ) {
case '=' :
if ( s === S _ATTR ) { //attrName
attrName = source . slice ( start , p ) ;
s = S _EQ ;
} else if ( s === S _ATTR _SPACE ) {
s = S _EQ ;
} else {
//fatalError: equal must after attrName or space after attrName
throw new Error ( 'attribute equal must after attrName' ) ;
}
break ;
case '\'' :
case '"' :
if ( s === S _EQ || s === S _ATTR //|| s == S_ATTR_SPACE
) { //equal
if ( s === S _ATTR ) {
errorHandler . warning ( 'attribute value must after "="' ) ;
attrName = source . slice ( start , p ) ;
}
start = p + 1 ;
p = source . indexOf ( c , start ) ;
if ( p > 0 ) {
value = source . slice ( start , p ) . replace ( /&#?\w+;/g , entityReplacer ) ;
el . add ( attrName , value , start - 1 ) ;
s = S _ATTR _END ;
} else {
//fatalError: no end quot match
throw new Error ( 'attribute value no end \'' + c + '\' match' ) ;
}
} else if ( s == S _ATTR _NOQUOT _VALUE ) {
value = source . slice ( start , p ) . replace ( /&#?\w+;/g , entityReplacer ) ;
//console.log(attrName,value,start,p)
el . add ( attrName , value , start ) ;
//console.dir(el)
errorHandler . warning ( 'attribute "' + attrName + '" missed start quot(' + c + ')!!' ) ;
start = p + 1 ;
s = S _ATTR _END ;
} else {
//fatalError: no equal before
throw new Error ( 'attribute value must after "="' ) ;
}
break ;
case '/' :
switch ( s ) {
case S _TAG :
el . setTagName ( source . slice ( start , p ) ) ;
case S _ATTR _END :
case S _TAG _SPACE :
case S _TAG _CLOSE :
s = S _TAG _CLOSE ;
el . closed = true ;
case S _ATTR _NOQUOT _VALUE :
case S _ATTR :
case S _ATTR _SPACE :
break ;
//case S_EQ:
default :
throw new Error ( "attribute invalid close char('/')" )
}
break ;
case '' : //end document
//throw new Error('unexpected end of input')
errorHandler . error ( 'unexpected end of input' ) ;
if ( s == S _TAG ) {
el . setTagName ( source . slice ( start , p ) ) ;
}
return p ;
case '>' :
switch ( s ) {
case S _TAG :
el . setTagName ( source . slice ( start , p ) ) ;
case S _ATTR _END :
case S _TAG _SPACE :
case S _TAG _CLOSE :
break ; //normal
case S _ATTR _NOQUOT _VALUE : //Compatible state
case S _ATTR :
value = source . slice ( start , p ) ;
if ( value . slice ( - 1 ) === '/' ) {
el . closed = true ;
value = value . slice ( 0 , - 1 ) ;
}
case S _ATTR _SPACE :
if ( s === S _ATTR _SPACE ) {
value = attrName ;
}
if ( s == S _ATTR _NOQUOT _VALUE ) {
errorHandler . warning ( 'attribute "' + value + '" missed quot(")!!' ) ;
el . add ( attrName , value . replace ( /&#?\w+;/g , entityReplacer ) , start ) ;
} else {
if ( currentNSMap [ '' ] !== 'http://www.w3.org/1999/xhtml' || ! value . match ( /^(?:disabled|checked|selected)$/i ) ) {
errorHandler . warning ( 'attribute "' + value + '" missed value!! "' + value + '" instead!!' ) ;
}
el . add ( value , value , start ) ;
}
break ;
case S _EQ :
throw new Error ( 'attribute value missed!!' ) ;
}
// console.log(tagName,tagNamePattern,tagNamePattern.test(tagName))
return p ;
/*xml space '\x20' | #x9 | #xD | #xA; */
case '\u0080' :
c = ' ' ;
default :
if ( c <= ' ' ) { //space
switch ( s ) {
case S _TAG :
el . setTagName ( source . slice ( start , p ) ) ; //tagName
s = S _TAG _SPACE ;
break ;
case S _ATTR :
attrName = source . slice ( start , p ) ;
s = S _ATTR _SPACE ;
break ;
case S _ATTR _NOQUOT _VALUE :
var value = source . slice ( start , p ) . replace ( /&#?\w+;/g , entityReplacer ) ;
errorHandler . warning ( 'attribute "' + value + '" missed quot(")!!' ) ;
el . add ( attrName , value , start ) ;
case S _ATTR _END :
s = S _TAG _SPACE ;
break ;
//case S_TAG_SPACE:
//case S_EQ:
//case S_ATTR_SPACE:
// void();break;
//case S_TAG_CLOSE:
//ignore warning
}
} else { //not space
//S_TAG, S_ATTR, S_EQ, S_ATTR_NOQUOT_VALUE
//S_ATTR_SPACE, S_ATTR_END, S_TAG_SPACE, S_TAG_CLOSE
switch ( s ) {
//case S_TAG:void();break;
//case S_ATTR:void();break;
//case S_ATTR_NOQUOT_VALUE:void();break;
case S _ATTR _SPACE :
var tagName = el . tagName ;
if ( currentNSMap [ '' ] !== 'http://www.w3.org/1999/xhtml' || ! attrName . match ( /^(?:disabled|checked|selected)$/i ) ) {
errorHandler . warning ( 'attribute "' + attrName + '" missed value!! "' + attrName + '" instead2!!' ) ;
}
el . add ( attrName , attrName , start ) ;
start = p ;
s = S _ATTR ;
break ;
case S _ATTR _END :
errorHandler . warning ( 'attribute space is required"' + attrName + '"!!' ) ;
case S _TAG _SPACE :
s = S _ATTR ;
start = p ;
break ;
case S _EQ :
s = S _ATTR _NOQUOT _VALUE ;
start = p ;
break ;
case S _TAG _CLOSE :
throw new Error ( "elements closed character '/' and '>' must be connected to" ) ;
}
}
} //end outer switch
//console.log('p++',p)
p ++ ;
}
}
/ * *
* @ return true if has new namespace define
* /
function appendElement ( el , domBuilder , currentNSMap ) {
var tagName = el . tagName ;
var localNSMap = null ;
//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;
var i = el . length ;
while ( i -- ) {
var a = el [ i ] ;
var qName = a . qName ;
var value = a . value ;
var nsp = qName . indexOf ( ':' ) ;
if ( nsp > 0 ) {
var prefix = a . prefix = qName . slice ( 0 , nsp ) ;
var localName = qName . slice ( nsp + 1 ) ;
var nsPrefix = prefix === 'xmlns' && localName ;
} else {
localName = qName ;
prefix = null ;
nsPrefix = qName === 'xmlns' && '' ;
}
//can not set prefix,because prefix !== ''
a . localName = localName ;
//prefix == null for no ns prefix attribute
if ( nsPrefix !== false ) { //hack!!
if ( localNSMap == null ) {
localNSMap = { } ;
//console.log(currentNSMap,0)
_copy ( currentNSMap , currentNSMap = { } ) ;
//console.log(currentNSMap,1)
}
currentNSMap [ nsPrefix ] = localNSMap [ nsPrefix ] = value ;
a . uri = 'http://www.w3.org/2000/xmlns/' ;
domBuilder . startPrefixMapping ( nsPrefix , value ) ;
}
}
var i = el . length ;
while ( i -- ) {
a = el [ i ] ;
var prefix = a . prefix ;
if ( prefix ) { //no prefix attribute has no namespace
if ( prefix === 'xml' ) {
a . uri = 'http://www.w3.org/XML/1998/namespace' ;
} if ( prefix !== 'xmlns' ) {
a . uri = currentNSMap [ prefix || '' ] ;
//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}
}
}
}
var nsp = tagName . indexOf ( ':' ) ;
if ( nsp > 0 ) {
prefix = el . prefix = tagName . slice ( 0 , nsp ) ;
localName = el . localName = tagName . slice ( nsp + 1 ) ;
} else {
prefix = null ; //important!!
localName = el . localName = tagName ;
}
//no prefix element has default namespace
var ns = el . uri = currentNSMap [ prefix || '' ] ;
domBuilder . startElement ( ns , localName , tagName , el ) ;
//endPrefixMapping and startPrefixMapping have not any help for dom builder
//localNSMap = null
if ( el . closed ) {
domBuilder . endElement ( ns , localName , tagName ) ;
if ( localNSMap ) {
for ( prefix in localNSMap ) {
domBuilder . endPrefixMapping ( prefix ) ;
}
}
} else {
el . currentNSMap = currentNSMap ;
el . localNSMap = localNSMap ;
//parseStack.push(el);
return true ;
}
}
function parseHtmlSpecialContent ( source , elStartEnd , tagName , entityReplacer , domBuilder ) {
if ( /^(?:script|textarea)$/i . test ( tagName ) ) {
var elEndStart = source . indexOf ( '</' + tagName + '>' , elStartEnd ) ;
var text = source . substring ( elStartEnd + 1 , elEndStart ) ;
if ( /[&<]/ . test ( text ) ) {
if ( /^script$/i . test ( tagName ) ) {
//if(!/\]\]>/.test(text)){
//lexHandler.startCDATA();
domBuilder . characters ( text , 0 , text . length ) ;
//lexHandler.endCDATA();
return elEndStart ;
//}
} //}else{//text area
text = text . replace ( /&#?\w+;/g , entityReplacer ) ;
domBuilder . characters ( text , 0 , text . length ) ;
return elEndStart ;
//}
}
}
return elStartEnd + 1 ;
}
function fixSelfClosed ( source , elStartEnd , tagName , closeMap ) {
//if(tagName in closeMap){
var pos = closeMap [ tagName ] ;
if ( pos == null ) {
//console.log(tagName)
pos = source . lastIndexOf ( '</' + tagName + '>' ) ;
if ( pos < elStartEnd ) { //忘记闭合
pos = source . lastIndexOf ( '</' + tagName ) ;
}
closeMap [ tagName ] = pos ;
}
return pos < elStartEnd ;
//}
}
function _copy ( source , target ) {
for ( var n in source ) { target [ n ] = source [ n ] ; }
}
function parseDCC ( source , start , domBuilder , errorHandler ) { //sure start with '<!'
var next = source . charAt ( start + 2 ) ;
switch ( next ) {
case '-' :
if ( source . charAt ( start + 3 ) === '-' ) {
var end = source . indexOf ( '-->' , start + 4 ) ;
//append comment source.substring(4,end)//<!--
if ( end > start ) {
domBuilder . comment ( source , start + 4 , end - start - 4 ) ;
return end + 3 ;
} else {
errorHandler . error ( "Unclosed comment" ) ;
return - 1 ;
}
} else {
//error
return - 1 ;
}
default :
if ( source . substr ( start + 3 , 6 ) == 'CDATA[' ) {
var end = source . indexOf ( ']]>' , start + 9 ) ;
domBuilder . startCDATA ( ) ;
domBuilder . characters ( source , start + 9 , end - start - 9 ) ;
domBuilder . endCDATA ( ) ;
return end + 3 ;
}
//<!DOCTYPE
//startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)
var matchs = split ( source , start ) ;
var len = matchs . length ;
if ( len > 1 && /!doctype/i . test ( matchs [ 0 ] [ 0 ] ) ) {
var name = matchs [ 1 ] [ 0 ] ;
var pubid = len > 3 && /^public$/i . test ( matchs [ 2 ] [ 0 ] ) && matchs [ 3 ] [ 0 ] ;
var sysid = len > 4 && matchs [ 4 ] [ 0 ] ;
var lastMatch = matchs [ len - 1 ] ;
domBuilder . startDTD ( name , pubid && pubid . replace ( /^(['"])(.*?)\1$/ , '$2' ) ,
sysid && sysid . replace ( /^(['"])(.*?)\1$/ , '$2' ) ) ;
domBuilder . endDTD ( ) ;
return lastMatch . index + lastMatch [ 0 ] . length
}
}
return - 1 ;
}
function parseInstruction ( source , start , domBuilder ) {
var end = source . indexOf ( '?>' , start ) ;
if ( end ) {
var match = source . substring ( start , end ) . match ( /^<\?(\S*)\s*([\s\S]*?)\s*$/ ) ;
if ( match ) {
var len = match [ 0 ] . length ;
domBuilder . processingInstruction ( match [ 1 ] , match [ 2 ] ) ;
return end + 2 ;
} else { //error
return - 1 ;
}
}
return - 1 ;
}
/ * *
* @ param source
* /
function ElementAttributes ( source ) {
}
ElementAttributes . prototype = {
setTagName : function ( tagName ) {
if ( ! tagNamePattern . test ( tagName ) ) {
throw new Error ( 'invalid tagName:' + tagName )
}
this . tagName = tagName ;
} ,
add : function ( qName , value , offset ) {
if ( ! tagNamePattern . test ( qName ) ) {
throw new Error ( 'invalid attribute:' + qName )
}
this [ this . length ++ ] = { qName : qName , value : value , offset : offset } ;
} ,
length : 0 ,
getLocalName : function ( i ) { return this [ i ] . localName } ,
getLocator : function ( i ) { return this [ i ] . locator } ,
getQName : function ( i ) { return this [ i ] . qName } ,
getURI : function ( i ) { return this [ i ] . uri } ,
getValue : function ( i ) { return this [ i ] . value }
// ,getIndex:function(uri, localName)){
// if(localName){
//
// }else{
// var qName = uri
// }
// },
// getValue:function(){return this.getValue(this.getIndex.apply(this,arguments))},
// getType:function(uri,localName){}
// getType:function(i){},
} ;
function _set _proto _ ( thiz , parent ) {
thiz . _ _proto _ _ = parent ;
return thiz ;
}
if ( ! ( _set _proto _ ( { } , _set _proto _ . prototype ) instanceof _set _proto _ ) ) {
_set _proto _ = function ( thiz , parent ) {
function p ( ) { } p . prototype = parent ;
p = new p ( ) ;
for ( parent in thiz ) {
p [ parent ] = thiz [ parent ] ;
}
return p ;
} ;
}
function split ( source , start ) {
var match ;
var buf = [ ] ;
var reg = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g ;
reg . lastIndex = start ;
reg . exec ( source ) ; //skip <
while ( match = reg . exec ( source ) ) {
buf . push ( match ) ;
if ( match [ 1 ] ) return buf ;
}
}
2020-10-15 00:07:38 +03:00
var XMLReader _1 = XMLReader ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
var sax = {
XMLReader : XMLReader _1
} ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
/ *
* DOM Level 2
* Object DOMException
* @ see http : //www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html
* @ see http : //www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html
* /
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function copy ( src , dest ) {
for ( var p in src ) {
dest [ p ] = src [ p ] ;
}
}
/ * *
^ \ w + \ . prototype \ . ( [ _ \ w ] + ) \ s *= \ s * ( ( ? : . * \ { \ s * ? [ \ r \ n ] [ \ s \ S ] * ? ^ } ) | \ S . * ? ( ? = [ ; \ r \ n ] ) ) ; ?
^ \ w + \ . prototype \ . ( [ _ \ w ] + ) \ s *= \ s * ( \ S . * ? ( ? = [ ; \ r \ n ] ) ) ; ?
* /
function _extends ( Class , Super ) {
var pt = Class . prototype ;
if ( Object . create ) {
var ppt = Object . create ( Super . prototype ) ;
pt . _ _proto _ _ = ppt ;
}
if ( ! ( pt instanceof Super ) ) {
function t ( ) { } t . prototype = Super . prototype ;
t = new t ( ) ;
copy ( pt , t ) ;
Class . prototype = pt = t ;
}
if ( pt . constructor != Class ) {
if ( typeof Class != 'function' ) {
console . error ( "unknow Class:" + Class ) ;
}
pt . constructor = Class ;
}
}
var htmlns = 'http://www.w3.org/1999/xhtml' ;
// Node Types
var NodeType = { } ;
var ELEMENT _NODE = NodeType . ELEMENT _NODE = 1 ;
var ATTRIBUTE _NODE = NodeType . ATTRIBUTE _NODE = 2 ;
var TEXT _NODE = NodeType . TEXT _NODE = 3 ;
var CDATA _SECTION _NODE = NodeType . CDATA _SECTION _NODE = 4 ;
var ENTITY _REFERENCE _NODE = NodeType . ENTITY _REFERENCE _NODE = 5 ;
var ENTITY _NODE = NodeType . ENTITY _NODE = 6 ;
var PROCESSING _INSTRUCTION _NODE = NodeType . PROCESSING _INSTRUCTION _NODE = 7 ;
var COMMENT _NODE = NodeType . COMMENT _NODE = 8 ;
var DOCUMENT _NODE = NodeType . DOCUMENT _NODE = 9 ;
var DOCUMENT _TYPE _NODE = NodeType . DOCUMENT _TYPE _NODE = 10 ;
var DOCUMENT _FRAGMENT _NODE = NodeType . DOCUMENT _FRAGMENT _NODE = 11 ;
var NOTATION _NODE = NodeType . NOTATION _NODE = 12 ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
// ExceptionCode
var ExceptionCode = { } ;
var ExceptionMessage = { } ;
var INDEX _SIZE _ERR = ExceptionCode . INDEX _SIZE _ERR = ( ( ExceptionMessage [ 1 ] = "Index size error" ) , 1 ) ;
var DOMSTRING _SIZE _ERR = ExceptionCode . DOMSTRING _SIZE _ERR = ( ( ExceptionMessage [ 2 ] = "DOMString size error" ) , 2 ) ;
var HIERARCHY _REQUEST _ERR = ExceptionCode . HIERARCHY _REQUEST _ERR = ( ( ExceptionMessage [ 3 ] = "Hierarchy request error" ) , 3 ) ;
var WRONG _DOCUMENT _ERR = ExceptionCode . WRONG _DOCUMENT _ERR = ( ( ExceptionMessage [ 4 ] = "Wrong document" ) , 4 ) ;
var INVALID _CHARACTER _ERR = ExceptionCode . INVALID _CHARACTER _ERR = ( ( ExceptionMessage [ 5 ] = "Invalid character" ) , 5 ) ;
var NO _DATA _ALLOWED _ERR = ExceptionCode . NO _DATA _ALLOWED _ERR = ( ( ExceptionMessage [ 6 ] = "No data allowed" ) , 6 ) ;
var NO _MODIFICATION _ALLOWED _ERR = ExceptionCode . NO _MODIFICATION _ALLOWED _ERR = ( ( ExceptionMessage [ 7 ] = "No modification allowed" ) , 7 ) ;
var NOT _FOUND _ERR = ExceptionCode . NOT _FOUND _ERR = ( ( ExceptionMessage [ 8 ] = "Not found" ) , 8 ) ;
var NOT _SUPPORTED _ERR = ExceptionCode . NOT _SUPPORTED _ERR = ( ( ExceptionMessage [ 9 ] = "Not supported" ) , 9 ) ;
var INUSE _ATTRIBUTE _ERR = ExceptionCode . INUSE _ATTRIBUTE _ERR = ( ( ExceptionMessage [ 10 ] = "Attribute in use" ) , 10 ) ;
//level2
var INVALID _STATE _ERR = ExceptionCode . INVALID _STATE _ERR = ( ( ExceptionMessage [ 11 ] = "Invalid state" ) , 11 ) ;
var SYNTAX _ERR = ExceptionCode . SYNTAX _ERR = ( ( ExceptionMessage [ 12 ] = "Syntax error" ) , 12 ) ;
var INVALID _MODIFICATION _ERR = ExceptionCode . INVALID _MODIFICATION _ERR = ( ( ExceptionMessage [ 13 ] = "Invalid modification" ) , 13 ) ;
var NAMESPACE _ERR = ExceptionCode . NAMESPACE _ERR = ( ( ExceptionMessage [ 14 ] = "Invalid namespace" ) , 14 ) ;
var INVALID _ACCESS _ERR = ExceptionCode . INVALID _ACCESS _ERR = ( ( ExceptionMessage [ 15 ] = "Invalid access" ) , 15 ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function DOMException ( code , message ) {
if ( message instanceof Error ) {
var error = message ;
} else {
error = this ;
Error . call ( this , ExceptionMessage [ code ] ) ;
this . message = ExceptionMessage [ code ] ;
if ( Error . captureStackTrace ) Error . captureStackTrace ( this , DOMException ) ;
}
error . code = code ;
if ( message ) this . message = this . message + ": " + message ;
return error ;
} DOMException . prototype = Error . prototype ;
copy ( ExceptionCode , DOMException ) ;
/ * *
* @ see http : //www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177
* The NodeList interface provides the abstraction of an ordered collection of nodes , without defining or constraining how this collection is implemented . NodeList objects in the DOM are live .
* The items in the NodeList are accessible via an integral index , starting from 0.
* /
function NodeList ( ) {
} NodeList . prototype = {
/ * *
* The number of nodes in the list . The range of valid child node indices is 0 to length - 1 inclusive .
* @ standard level1
* /
2020-10-21 01:15:56 +03:00
length : 0 ,
2020-10-15 00:07:38 +03:00
/ * *
* Returns the indexth item in the collection . If index is greater than or equal to the number of nodes in the list , this returns null .
* @ standard level1
2020-10-21 01:15:56 +03:00
* @ param index unsigned long
2020-10-15 00:07:38 +03:00
* Index into the collection .
* @ return Node
2020-10-21 01:15:56 +03:00
* The node at the indexth position in the NodeList , or null if that is not a valid index .
2020-10-15 00:07:38 +03:00
* /
item : function ( index ) {
return this [ index ] || null ;
} ,
toString : function ( isHTML , nodeFilter ) {
for ( var buf = [ ] , i = 0 ; i < this . length ; i ++ ) {
serializeToString ( this [ i ] , buf , isHTML , nodeFilter ) ;
}
return buf . join ( '' ) ;
}
} ;
function LiveNodeList ( node , refresh ) {
this . _node = node ;
this . _refresh = refresh ;
_updateLiveList ( this ) ;
}
function _updateLiveList ( list ) {
var inc = list . _node . _inc || list . _node . ownerDocument . _inc ;
if ( list . _inc != inc ) {
var ls = list . _refresh ( list . _node ) ;
//console.log(ls.length)
_ _set _ _ ( list , 'length' , ls . length ) ;
copy ( ls , list ) ;
list . _inc = inc ;
}
}
LiveNodeList . prototype . item = function ( i ) {
_updateLiveList ( this ) ;
return this [ i ] ;
} ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
_extends ( LiveNodeList , NodeList ) ;
/ * *
2020-10-21 01:15:56 +03:00
*
2020-10-15 00:07:38 +03:00
* Objects implementing the NamedNodeMap interface are used to represent collections of nodes that can be accessed by name . Note that NamedNodeMap does not inherit from NodeList ; NamedNodeMaps are not maintained in any particular order . Objects contained in an object implementing NamedNodeMap may also be accessed by an ordinal index , but this is simply to allow convenient enumeration of the contents of a NamedNodeMap , and does not imply that the DOM specifies an order to these Nodes .
* NamedNodeMap objects in the DOM are live .
2020-10-21 01:15:56 +03:00
* used for attributes or DocumentType entities
2020-10-15 00:07:38 +03:00
* /
function NamedNodeMap ( ) {
}
function _findNodeIndex ( list , node ) {
var i = list . length ;
while ( i -- ) {
if ( list [ i ] === node ) { return i }
}
}
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function _addNamedNode ( el , list , newAttr , oldAttr ) {
if ( oldAttr ) {
list [ _findNodeIndex ( list , oldAttr ) ] = newAttr ;
} else {
list [ list . length ++ ] = newAttr ;
}
if ( el ) {
newAttr . ownerElement = el ;
var doc = el . ownerDocument ;
if ( doc ) {
oldAttr && _onRemoveAttribute ( doc , el , oldAttr ) ;
_onAddAttribute ( doc , el , newAttr ) ;
}
}
}
function _removeNamedNode ( el , list , attr ) {
//console.log('remove attr:'+attr)
var i = _findNodeIndex ( list , attr ) ;
if ( i >= 0 ) {
var lastIndex = list . length - 1 ;
while ( i < lastIndex ) {
list [ i ] = list [ ++ i ] ;
}
list . length = lastIndex ;
if ( el ) {
var doc = el . ownerDocument ;
if ( doc ) {
_onRemoveAttribute ( doc , el , attr ) ;
attr . ownerElement = null ;
}
}
} else {
throw DOMException ( NOT _FOUND _ERR , new Error ( el . tagName + '@' + attr ) )
}
}
NamedNodeMap . prototype = {
length : 0 ,
item : NodeList . prototype . item ,
getNamedItem : function ( key ) {
// if(key.indexOf(':')>0 || key == 'xmlns'){
// return null;
// }
//console.log()
var i = this . length ;
while ( i -- ) {
var attr = this [ i ] ;
//console.log(attr.nodeName,key)
if ( attr . nodeName == key ) {
return attr ;
}
}
} ,
setNamedItem : function ( attr ) {
var el = attr . ownerElement ;
if ( el && el != this . _ownerElement ) {
throw new DOMException ( INUSE _ATTRIBUTE _ERR ) ;
}
var oldAttr = this . getNamedItem ( attr . nodeName ) ;
_addNamedNode ( this . _ownerElement , this , attr , oldAttr ) ;
return oldAttr ;
} ,
/* returns Node */
setNamedItemNS : function ( attr ) { // raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR
var el = attr . ownerElement , oldAttr ;
if ( el && el != this . _ownerElement ) {
throw new DOMException ( INUSE _ATTRIBUTE _ERR ) ;
}
oldAttr = this . getNamedItemNS ( attr . namespaceURI , attr . localName ) ;
_addNamedNode ( this . _ownerElement , this , attr , oldAttr ) ;
return oldAttr ;
} ,
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
/* returns Node */
removeNamedItem : function ( key ) {
var attr = this . getNamedItem ( key ) ;
_removeNamedNode ( this . _ownerElement , this , attr ) ;
return attr ;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
} , // raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
//for level2
removeNamedItemNS : function ( namespaceURI , localName ) {
var attr = this . getNamedItemNS ( namespaceURI , localName ) ;
_removeNamedNode ( this . _ownerElement , this , attr ) ;
return attr ;
} ,
getNamedItemNS : function ( namespaceURI , localName ) {
var i = this . length ;
while ( i -- ) {
var node = this [ i ] ;
if ( node . localName == localName && node . namespaceURI == namespaceURI ) {
return node ;
}
}
return null ;
}
2020-10-05 18:43:38 +03:00
} ;
/ * *
2020-10-15 00:07:38 +03:00
* @ see http : //www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490
2020-10-05 18:43:38 +03:00
* /
2020-10-15 00:07:38 +03:00
function DOMImplementation ( /* Object */ features ) {
this . _features = { } ;
if ( features ) {
for ( var feature in features ) {
this . _features = features [ feature ] ;
}
}
}
DOMImplementation . prototype = {
hasFeature : function ( /* string */ feature , /* string */ version ) {
var versions = this . _features [ feature . toLowerCase ( ) ] ;
if ( versions && ( ! version || version in versions ) ) {
return true ;
} else {
return false ;
}
} ,
// Introduced in DOM Level 2:
createDocument : function ( namespaceURI , qualifiedName , doctype ) { // raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR,WRONG_DOCUMENT_ERR
var doc = new Document ( ) ;
doc . implementation = this ;
doc . childNodes = new NodeList ( ) ;
doc . doctype = doctype ;
if ( doctype ) {
doc . appendChild ( doctype ) ;
}
if ( qualifiedName ) {
var root = doc . createElementNS ( namespaceURI , qualifiedName ) ;
doc . appendChild ( root ) ;
}
return doc ;
} ,
// Introduced in DOM Level 2:
createDocumentType : function ( qualifiedName , publicId , systemId ) { // raises:INVALID_CHARACTER_ERR,NAMESPACE_ERR
var node = new DocumentType ( ) ;
node . name = qualifiedName ;
node . nodeName = qualifiedName ;
node . publicId = publicId ;
node . systemId = systemId ;
// Introduced in DOM Level 2:
//readonly attribute DOMString internalSubset;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
//TODO:..
// readonly attribute NamedNodeMap entities;
// readonly attribute NamedNodeMap notations;
return node ;
}
} ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
/ * *
* @ see http : //www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247
* /
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function Node ( ) {
}
Node . prototype = {
firstChild : null ,
lastChild : null ,
previousSibling : null ,
nextSibling : null ,
attributes : null ,
parentNode : null ,
childNodes : null ,
ownerDocument : null ,
nodeValue : null ,
namespaceURI : null ,
prefix : null ,
localName : null ,
// Modified in DOM Level 2:
2020-10-21 01:15:56 +03:00
insertBefore : function ( newChild , refChild ) { //raises
2020-10-15 00:07:38 +03:00
return _insertBefore ( this , newChild , refChild ) ;
} ,
2020-10-21 01:15:56 +03:00
replaceChild : function ( newChild , oldChild ) { //raises
2020-10-15 00:07:38 +03:00
this . insertBefore ( newChild , oldChild ) ;
if ( oldChild ) {
this . removeChild ( oldChild ) ;
}
} ,
removeChild : function ( oldChild ) {
return _removeChild ( this , oldChild ) ;
} ,
appendChild : function ( newChild ) {
return this . insertBefore ( newChild , null ) ;
} ,
hasChildNodes : function ( ) {
return this . firstChild != null ;
} ,
cloneNode : function ( deep ) {
return cloneNode ( this . ownerDocument || this , this , deep ) ;
} ,
// Modified in DOM Level 2:
normalize : function ( ) {
var child = this . firstChild ;
while ( child ) {
var next = child . nextSibling ;
if ( next && next . nodeType == TEXT _NODE && child . nodeType == TEXT _NODE ) {
this . removeChild ( next ) ;
child . appendData ( next . data ) ;
} else {
child . normalize ( ) ;
child = next ;
}
}
} ,
2020-10-21 01:15:56 +03:00
// Introduced in DOM Level 2:
2020-10-15 00:07:38 +03:00
isSupported : function ( feature , version ) {
return this . ownerDocument . implementation . hasFeature ( feature , version ) ;
} ,
// Introduced in DOM Level 2:
hasAttributes : function ( ) {
2020-10-21 01:15:56 +03:00
return this . attributes . length > 0 ;
2020-10-15 00:07:38 +03:00
} ,
lookupPrefix : function ( namespaceURI ) {
2020-10-21 01:15:56 +03:00
var el = this ;
while ( el ) {
var map = el . _nsMap ;
//console.dir(map)
if ( map ) {
for ( var n in map ) {
if ( map [ n ] == namespaceURI ) {
return n ;
}
}
}
el = el . nodeType == ATTRIBUTE _NODE ? el . ownerDocument : el . parentNode ;
}
return null ;
2020-10-15 00:07:38 +03:00
} ,
// Introduced in DOM Level 3:
lookupNamespaceURI : function ( prefix ) {
2020-10-21 01:15:56 +03:00
var el = this ;
while ( el ) {
var map = el . _nsMap ;
//console.dir(map)
if ( map ) {
if ( prefix in map ) {
return map [ prefix ] ;
}
}
el = el . nodeType == ATTRIBUTE _NODE ? el . ownerDocument : el . parentNode ;
}
return null ;
2020-10-15 00:07:38 +03:00
} ,
// Introduced in DOM Level 3:
isDefaultNamespace : function ( namespaceURI ) {
2020-10-21 01:15:56 +03:00
var prefix = this . lookupPrefix ( namespaceURI ) ;
return prefix == null ;
2020-10-05 18:43:38 +03:00
}
2020-10-15 00:07:38 +03:00
} ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function _xmlEncoder ( c ) {
return c == '<' && '<' ||
c == '>' && '>' ||
c == '&' && '&' ||
c == '"' && '"' ||
'&#' + c . charCodeAt ( ) + ';'
}
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
copy ( NodeType , Node ) ;
copy ( NodeType , Node . prototype ) ;
2020-10-05 18:43:38 +03:00
/ * *
2020-10-15 00:07:38 +03:00
* @ param callback return true for continue , false for break
* @ return boolean true : break visit ;
2020-10-05 18:43:38 +03:00
* /
2020-10-15 00:07:38 +03:00
function _visitNode ( node , callback ) {
if ( callback ( node ) ) {
return true ;
}
if ( node = node . firstChild ) {
do {
if ( _visitNode ( node , callback ) ) { return true }
} while ( node = node . nextSibling )
}
}
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function Document ( ) {
}
function _onAddAttribute ( doc , el , newAttr ) {
doc && doc . _inc ++ ;
var ns = newAttr . namespaceURI ;
if ( ns == 'http://www.w3.org/2000/xmlns/' ) {
//update namespace
el . _nsMap [ newAttr . prefix ? newAttr . localName : '' ] = newAttr . value ;
}
}
function _onRemoveAttribute ( doc , el , newAttr , remove ) {
doc && doc . _inc ++ ;
var ns = newAttr . namespaceURI ;
if ( ns == 'http://www.w3.org/2000/xmlns/' ) {
//update namespace
delete el . _nsMap [ newAttr . prefix ? newAttr . localName : '' ] ;
}
}
function _onUpdateChild ( doc , el , newChild ) {
if ( doc && doc . _inc ) {
doc . _inc ++ ;
//update childNodes
var cs = el . childNodes ;
if ( newChild ) {
cs [ cs . length ++ ] = newChild ;
} else {
//console.log(1)
var child = el . firstChild ;
var i = 0 ;
while ( child ) {
cs [ i ++ ] = child ;
child = child . nextSibling ;
}
cs . length = i ;
}
}
}
2020-10-05 18:43:38 +03:00
/ * *
2020-10-15 00:07:38 +03:00
* attributes ;
* children ;
2020-10-21 01:15:56 +03:00
*
2020-10-15 00:07:38 +03:00
* writeable properties :
* nodeValue , Attr : value , CharacterData : data
* prefix
2020-10-05 18:43:38 +03:00
* /
2020-10-15 00:07:38 +03:00
function _removeChild ( parentNode , child ) {
var previous = child . previousSibling ;
var next = child . nextSibling ;
if ( previous ) {
previous . nextSibling = next ;
} else {
parentNode . firstChild = next ;
}
if ( next ) {
next . previousSibling = previous ;
} else {
parentNode . lastChild = previous ;
}
_onUpdateChild ( parentNode . ownerDocument , parentNode ) ;
return child ;
}
/ * *
* preformance key ( refChild == null )
* /
function _insertBefore ( parentNode , newChild , nextChild ) {
var cp = newChild . parentNode ;
if ( cp ) {
cp . removeChild ( newChild ) ; //remove and update
}
if ( newChild . nodeType === DOCUMENT _FRAGMENT _NODE ) {
var newFirst = newChild . firstChild ;
if ( newFirst == null ) {
return newChild ;
}
var newLast = newChild . lastChild ;
} else {
newFirst = newLast = newChild ;
}
var pre = nextChild ? nextChild . previousSibling : parentNode . lastChild ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
newFirst . previousSibling = pre ;
newLast . nextSibling = nextChild ;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
if ( pre ) {
pre . nextSibling = newFirst ;
} else {
parentNode . firstChild = newFirst ;
}
if ( nextChild == null ) {
parentNode . lastChild = newLast ;
} else {
nextChild . previousSibling = newLast ;
}
do {
newFirst . parentNode = parentNode ;
} while ( newFirst !== newLast && ( newFirst = newFirst . nextSibling ) )
_onUpdateChild ( parentNode . ownerDocument || parentNode , parentNode ) ;
//console.log(parentNode.lastChild.nextSibling == null)
if ( newChild . nodeType == DOCUMENT _FRAGMENT _NODE ) {
newChild . firstChild = newChild . lastChild = null ;
}
return newChild ;
}
function _appendSingleChild ( parentNode , newChild ) {
var cp = newChild . parentNode ;
if ( cp ) {
var pre = parentNode . lastChild ;
cp . removeChild ( newChild ) ; //remove and update
var pre = parentNode . lastChild ;
}
var pre = parentNode . lastChild ;
newChild . parentNode = parentNode ;
newChild . previousSibling = pre ;
newChild . nextSibling = null ;
if ( pre ) {
pre . nextSibling = newChild ;
} else {
parentNode . firstChild = newChild ;
}
parentNode . lastChild = newChild ;
_onUpdateChild ( parentNode . ownerDocument , parentNode , newChild ) ;
return newChild ;
//console.log("__aa",parentNode.lastChild.nextSibling == null)
}
Document . prototype = {
//implementation : null,
nodeName : '#document' ,
nodeType : DOCUMENT _NODE ,
doctype : null ,
documentElement : null ,
_inc : 1 ,
2020-10-21 01:15:56 +03:00
insertBefore : function ( newChild , refChild ) { //raises
2020-10-15 00:07:38 +03:00
if ( newChild . nodeType == DOCUMENT _FRAGMENT _NODE ) {
var child = newChild . firstChild ;
while ( child ) {
var next = child . nextSibling ;
this . insertBefore ( child , refChild ) ;
child = next ;
}
return newChild ;
}
if ( this . documentElement == null && newChild . nodeType == ELEMENT _NODE ) {
this . documentElement = newChild ;
}
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
return _insertBefore ( this , newChild , refChild ) , ( newChild . ownerDocument = this ) , newChild ;
} ,
removeChild : function ( oldChild ) {
if ( this . documentElement == oldChild ) {
this . documentElement = null ;
}
return _removeChild ( this , oldChild ) ;
} ,
// Introduced in DOM Level 2:
importNode : function ( importedNode , deep ) {
return importNode ( this , importedNode , deep ) ;
} ,
// Introduced in DOM Level 2:
getElementById : function ( id ) {
var rtv = null ;
_visitNode ( this . documentElement , function ( node ) {
if ( node . nodeType == ELEMENT _NODE ) {
if ( node . getAttribute ( 'id' ) == id ) {
rtv = node ;
return true ;
}
}
} ) ;
return rtv ;
} ,
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
//document factory method:
createElement : function ( tagName ) {
var node = new Element ( ) ;
node . ownerDocument = this ;
node . nodeName = tagName ;
node . tagName = tagName ;
node . childNodes = new NodeList ( ) ;
var attrs = node . attributes = new NamedNodeMap ( ) ;
attrs . _ownerElement = node ;
return node ;
} ,
createDocumentFragment : function ( ) {
var node = new DocumentFragment ( ) ;
node . ownerDocument = this ;
node . childNodes = new NodeList ( ) ;
return node ;
} ,
createTextNode : function ( data ) {
var node = new Text ( ) ;
node . ownerDocument = this ;
node . appendData ( data ) ;
return node ;
} ,
createComment : function ( data ) {
var node = new Comment ( ) ;
node . ownerDocument = this ;
node . appendData ( data ) ;
return node ;
} ,
createCDATASection : function ( data ) {
var node = new CDATASection ( ) ;
node . ownerDocument = this ;
node . appendData ( data ) ;
return node ;
} ,
createProcessingInstruction : function ( target , data ) {
var node = new ProcessingInstruction ( ) ;
node . ownerDocument = this ;
node . tagName = node . target = target ;
node . nodeValue = node . data = data ;
return node ;
} ,
createAttribute : function ( name ) {
var node = new Attr ( ) ;
node . ownerDocument = this ;
node . name = name ;
node . nodeName = name ;
node . localName = name ;
node . specified = true ;
return node ;
} ,
createEntityReference : function ( name ) {
var node = new EntityReference ( ) ;
node . ownerDocument = this ;
node . nodeName = name ;
return node ;
} ,
// Introduced in DOM Level 2:
createElementNS : function ( namespaceURI , qualifiedName ) {
var node = new Element ( ) ;
var pl = qualifiedName . split ( ':' ) ;
var attrs = node . attributes = new NamedNodeMap ( ) ;
node . childNodes = new NodeList ( ) ;
node . ownerDocument = this ;
node . nodeName = qualifiedName ;
node . tagName = qualifiedName ;
node . namespaceURI = namespaceURI ;
if ( pl . length == 2 ) {
node . prefix = pl [ 0 ] ;
node . localName = pl [ 1 ] ;
} else {
//el.prefix = null;
node . localName = qualifiedName ;
}
attrs . _ownerElement = node ;
return node ;
} ,
// Introduced in DOM Level 2:
createAttributeNS : function ( namespaceURI , qualifiedName ) {
var node = new Attr ( ) ;
var pl = qualifiedName . split ( ':' ) ;
node . ownerDocument = this ;
node . nodeName = qualifiedName ;
node . name = qualifiedName ;
node . namespaceURI = namespaceURI ;
node . specified = true ;
if ( pl . length == 2 ) {
node . prefix = pl [ 0 ] ;
node . localName = pl [ 1 ] ;
} else {
//el.prefix = null;
node . localName = qualifiedName ;
}
return node ;
}
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
_extends ( Document , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function Element ( ) {
this . _nsMap = { } ;
} Element . prototype = {
nodeType : ELEMENT _NODE ,
hasAttribute : function ( name ) {
return this . getAttributeNode ( name ) != null ;
} ,
getAttribute : function ( name ) {
var attr = this . getAttributeNode ( name ) ;
return attr && attr . value || '' ;
} ,
getAttributeNode : function ( name ) {
return this . attributes . getNamedItem ( name ) ;
} ,
setAttribute : function ( name , value ) {
var attr = this . ownerDocument . createAttribute ( name ) ;
attr . value = attr . nodeValue = "" + value ;
this . setAttributeNode ( attr ) ;
} ,
removeAttribute : function ( name ) {
var attr = this . getAttributeNode ( name ) ;
attr && this . removeAttributeNode ( attr ) ;
} ,
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
//four real opeartion method
appendChild : function ( newChild ) {
if ( newChild . nodeType === DOCUMENT _FRAGMENT _NODE ) {
return this . insertBefore ( newChild , null ) ;
} else {
return _appendSingleChild ( this , newChild ) ;
}
} ,
setAttributeNode : function ( newAttr ) {
return this . attributes . setNamedItem ( newAttr ) ;
} ,
setAttributeNodeNS : function ( newAttr ) {
return this . attributes . setNamedItemNS ( newAttr ) ;
} ,
removeAttributeNode : function ( oldAttr ) {
//console.log(this == oldAttr.ownerElement)
return this . attributes . removeNamedItem ( oldAttr . nodeName ) ;
} ,
//get real attribute name,and remove it by removeAttributeNode
removeAttributeNS : function ( namespaceURI , localName ) {
var old = this . getAttributeNodeNS ( namespaceURI , localName ) ;
old && this . removeAttributeNode ( old ) ;
} ,
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
hasAttributeNS : function ( namespaceURI , localName ) {
return this . getAttributeNodeNS ( namespaceURI , localName ) != null ;
} ,
getAttributeNS : function ( namespaceURI , localName ) {
var attr = this . getAttributeNodeNS ( namespaceURI , localName ) ;
return attr && attr . value || '' ;
} ,
setAttributeNS : function ( namespaceURI , qualifiedName , value ) {
var attr = this . ownerDocument . createAttributeNS ( namespaceURI , qualifiedName ) ;
attr . value = attr . nodeValue = "" + value ;
this . setAttributeNode ( attr ) ;
} ,
getAttributeNodeNS : function ( namespaceURI , localName ) {
return this . attributes . getNamedItemNS ( namespaceURI , localName ) ;
} ,
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
getElementsByTagName : function ( tagName ) {
return new LiveNodeList ( this , function ( base ) {
var ls = [ ] ;
_visitNode ( base , function ( node ) {
if ( node !== base && node . nodeType == ELEMENT _NODE && ( tagName === '*' || node . tagName == tagName ) ) {
ls . push ( node ) ;
}
} ) ;
return ls ;
} ) ;
} ,
getElementsByTagNameNS : function ( namespaceURI , localName ) {
return new LiveNodeList ( this , function ( base ) {
var ls = [ ] ;
_visitNode ( base , function ( node ) {
if ( node !== base && node . nodeType === ELEMENT _NODE && ( namespaceURI === '*' || node . namespaceURI === namespaceURI ) && ( localName === '*' || node . localName == localName ) ) {
ls . push ( node ) ;
}
} ) ;
return ls ;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
} ) ;
}
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
Document . prototype . getElementsByTagName = Element . prototype . getElementsByTagName ;
Document . prototype . getElementsByTagNameNS = Element . prototype . getElementsByTagNameNS ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
_extends ( Element , Node ) ;
function Attr ( ) {
} Attr . prototype . nodeType = ATTRIBUTE _NODE ;
_extends ( Attr , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function CharacterData ( ) {
} CharacterData . prototype = {
data : '' ,
substringData : function ( offset , count ) {
return this . data . substring ( offset , offset + count ) ;
} ,
appendData : function ( text ) {
text = this . data + text ;
this . nodeValue = this . data = text ;
this . length = text . length ;
} ,
insertData : function ( offset , text ) {
this . replaceData ( offset , 0 , text ) ;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
} ,
appendChild : function ( newChild ) {
throw new Error ( ExceptionMessage [ HIERARCHY _REQUEST _ERR ] )
} ,
deleteData : function ( offset , count ) {
this . replaceData ( offset , count , "" ) ;
} ,
replaceData : function ( offset , count , text ) {
var start = this . data . substring ( 0 , offset ) ;
var end = this . data . substring ( offset + count ) ;
text = start + text + end ;
this . nodeValue = this . data = text ;
this . length = text . length ;
}
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
_extends ( CharacterData , Node ) ;
function Text ( ) {
} Text . prototype = {
nodeName : "#text" ,
nodeType : TEXT _NODE ,
splitText : function ( offset ) {
var text = this . data ;
var newText = text . substring ( offset ) ;
text = text . substring ( 0 , offset ) ;
this . data = this . nodeValue = text ;
this . length = text . length ;
var newNode = this . ownerDocument . createTextNode ( newText ) ;
if ( this . parentNode ) {
this . parentNode . insertBefore ( newNode , this . nextSibling ) ;
}
return newNode ;
}
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
_extends ( Text , CharacterData ) ;
function Comment ( ) {
} Comment . prototype = {
nodeName : "#comment" ,
nodeType : COMMENT _NODE
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
_extends ( Comment , CharacterData ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function CDATASection ( ) {
} CDATASection . prototype = {
nodeName : "#cdata-section" ,
nodeType : CDATA _SECTION _NODE
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
_extends ( CDATASection , CharacterData ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function DocumentType ( ) {
} DocumentType . prototype . nodeType = DOCUMENT _TYPE _NODE ;
_extends ( DocumentType , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function Notation ( ) {
} Notation . prototype . nodeType = NOTATION _NODE ;
_extends ( Notation , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function Entity ( ) {
} Entity . prototype . nodeType = ENTITY _NODE ;
_extends ( Entity , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function EntityReference ( ) {
} EntityReference . prototype . nodeType = ENTITY _REFERENCE _NODE ;
_extends ( EntityReference , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function DocumentFragment ( ) {
} DocumentFragment . prototype . nodeName = "#document-fragment" ;
DocumentFragment . prototype . nodeType = DOCUMENT _FRAGMENT _NODE ;
_extends ( DocumentFragment , Node ) ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function ProcessingInstruction ( ) {
}
ProcessingInstruction . prototype . nodeType = PROCESSING _INSTRUCTION _NODE ;
_extends ( ProcessingInstruction , Node ) ;
function XMLSerializer ( ) { }
XMLSerializer . prototype . serializeToString = function ( node , isHtml , nodeFilter ) {
return nodeSerializeToString . call ( node , isHtml , nodeFilter ) ;
2020-10-05 18:43:38 +03:00
} ;
2020-10-15 00:07:38 +03:00
Node . prototype . toString = nodeSerializeToString ;
function nodeSerializeToString ( isHtml , nodeFilter ) {
var buf = [ ] ;
var refNode = this . nodeType == 9 ? this . documentElement : this ;
var prefix = refNode . prefix ;
var uri = refNode . namespaceURI ;
if ( uri && prefix == null ) {
//console.log(prefix)
var prefix = refNode . lookupPrefix ( uri ) ;
if ( prefix == null ) {
//isHTML = true;
var visibleNamespaces = [
{ namespace : uri , prefix : null }
//{namespace:uri,prefix:''}
] ;
}
}
serializeToString ( this , buf , isHtml , nodeFilter , visibleNamespaces ) ;
//console.log('###',this.nodeType,uri,prefix,buf.join(''))
return buf . join ( '' ) ;
}
function needNamespaceDefine ( node , isHTML , visibleNamespaces ) {
var prefix = node . prefix || '' ;
var uri = node . namespaceURI ;
if ( ! prefix && ! uri ) {
return false ;
}
2020-10-21 01:15:56 +03:00
if ( prefix === "xml" && uri === "http://www.w3.org/XML/1998/namespace"
2020-10-15 00:07:38 +03:00
|| uri == 'http://www.w3.org/2000/xmlns/' ) {
return false ;
}
2020-10-21 01:15:56 +03:00
var i = visibleNamespaces . length ;
2020-10-15 00:07:38 +03:00
//console.log('@@@@',node.tagName,prefix,uri,visibleNamespaces)
while ( i -- ) {
var ns = visibleNamespaces [ i ] ;
// get namespace prefix
//console.log(node.nodeType,node.tagName,ns.prefix,prefix)
if ( ns . prefix == prefix ) {
return ns . namespace != uri ;
}
}
//console.log(isHTML,uri,prefix=='')
//if(isHTML && prefix ==null && uri == 'http://www.w3.org/1999/xhtml'){
// return false;
//}
//node.flag = '11111'
//console.error(3,true,node.flag,node.prefix,node.namespaceURI)
return true ;
}
function serializeToString ( node , buf , isHTML , nodeFilter , visibleNamespaces ) {
if ( nodeFilter ) {
node = nodeFilter ( node ) ;
if ( node ) {
if ( typeof node == 'string' ) {
buf . push ( node ) ;
return ;
}
} else {
return ;
}
//buf.sort.apply(attrs, attributeSorter);
}
switch ( node . nodeType ) {
case ELEMENT _NODE :
if ( ! visibleNamespaces ) visibleNamespaces = [ ] ;
var startVisibleNamespaces = visibleNamespaces . length ;
var attrs = node . attributes ;
var len = attrs . length ;
var child = node . firstChild ;
var nodeName = node . tagName ;
2020-10-21 01:15:56 +03:00
isHTML = ( htmlns === node . namespaceURI ) || isHTML ;
2020-10-15 00:07:38 +03:00
buf . push ( '<' , nodeName ) ;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
for ( var i = 0 ; i < len ; i ++ ) {
// add namespaces for attributes
var attr = attrs . item ( i ) ;
if ( attr . prefix == 'xmlns' ) {
visibleNamespaces . push ( { prefix : attr . localName , namespace : attr . value } ) ;
} else if ( attr . nodeName == 'xmlns' ) {
visibleNamespaces . push ( { prefix : '' , namespace : attr . value } ) ;
}
}
for ( var i = 0 ; i < len ; i ++ ) {
var attr = attrs . item ( i ) ;
if ( needNamespaceDefine ( attr , isHTML , visibleNamespaces ) ) {
var prefix = attr . prefix || '' ;
var uri = attr . namespaceURI ;
var ns = prefix ? ' xmlns:' + prefix : " xmlns" ;
buf . push ( ns , '="' , uri , '"' ) ;
visibleNamespaces . push ( { prefix : prefix , namespace : uri } ) ;
}
serializeToString ( attr , buf , isHTML , nodeFilter , visibleNamespaces ) ;
}
2020-10-21 01:15:56 +03:00
// add namespace for current node
2020-10-15 00:07:38 +03:00
if ( needNamespaceDefine ( node , isHTML , visibleNamespaces ) ) {
var prefix = node . prefix || '' ;
var uri = node . namespaceURI ;
var ns = prefix ? ' xmlns:' + prefix : " xmlns" ;
buf . push ( ns , '="' , uri , '"' ) ;
visibleNamespaces . push ( { prefix : prefix , namespace : uri } ) ;
}
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
if ( child || isHTML && ! /^(?:meta|link|img|br|hr|input)$/i . test ( nodeName ) ) {
buf . push ( '>' ) ;
//if is cdata child node
if ( isHTML && /^script$/i . test ( nodeName ) ) {
while ( child ) {
if ( child . data ) {
buf . push ( child . data ) ;
} else {
serializeToString ( child , buf , isHTML , nodeFilter , visibleNamespaces ) ;
}
child = child . nextSibling ;
}
} else
{
while ( child ) {
serializeToString ( child , buf , isHTML , nodeFilter , visibleNamespaces ) ;
child = child . nextSibling ;
}
}
buf . push ( '</' , nodeName , '>' ) ;
} else {
buf . push ( '/>' ) ;
}
// remove added visible namespaces
//visibleNamespaces.length = startVisibleNamespaces;
return ;
case DOCUMENT _NODE :
case DOCUMENT _FRAGMENT _NODE :
var child = node . firstChild ;
while ( child ) {
serializeToString ( child , buf , isHTML , nodeFilter , visibleNamespaces ) ;
child = child . nextSibling ;
}
return ;
case ATTRIBUTE _NODE :
return buf . push ( ' ' , node . name , '="' , node . value . replace ( /[<&"]/g , _xmlEncoder ) , '"' ) ;
case TEXT _NODE :
return buf . push ( node . data . replace ( /[<&]/g , _xmlEncoder ) ) ;
case CDATA _SECTION _NODE :
return buf . push ( '<![CDATA[' , node . data , ']]>' ) ;
case COMMENT _NODE :
return buf . push ( "<!--" , node . data , "-->" ) ;
case DOCUMENT _TYPE _NODE :
var pubid = node . publicId ;
var sysid = node . systemId ;
buf . push ( '<!DOCTYPE ' , node . name ) ;
if ( pubid ) {
buf . push ( ' PUBLIC "' , pubid ) ;
if ( sysid && sysid != '.' ) {
buf . push ( '" "' , sysid ) ;
}
buf . push ( '">' ) ;
} else if ( sysid && sysid != '.' ) {
buf . push ( ' SYSTEM "' , sysid , '">' ) ;
} else {
var sub = node . internalSubset ;
if ( sub ) {
buf . push ( " [" , sub , "]" ) ;
}
buf . push ( ">" ) ;
}
return ;
case PROCESSING _INSTRUCTION _NODE :
return buf . push ( "<?" , node . target , " " , node . data , "?>" ) ;
case ENTITY _REFERENCE _NODE :
return buf . push ( '&' , node . nodeName , ';' ) ;
//case ENTITY_NODE:
//case NOTATION_NODE:
default :
buf . push ( '??' , node . nodeName ) ;
}
}
function importNode ( doc , node , deep ) {
var node2 ;
switch ( node . nodeType ) {
case ELEMENT _NODE :
node2 = node . cloneNode ( false ) ;
node2 . ownerDocument = doc ;
//var attrs = node2.attributes;
//var len = attrs.length;
//for(var i=0;i<len;i++){
//node2.setAttributeNodeNS(importNode(doc,attrs.item(i),deep));
//}
case DOCUMENT _FRAGMENT _NODE :
break ;
case ATTRIBUTE _NODE :
deep = true ;
break ;
//case ENTITY_REFERENCE_NODE:
//case PROCESSING_INSTRUCTION_NODE:
////case TEXT_NODE:
//case CDATA_SECTION_NODE:
//case COMMENT_NODE:
// deep = false;
// break;
//case DOCUMENT_NODE:
//case DOCUMENT_TYPE_NODE:
//cannot be imported.
//case ENTITY_NODE:
//case NOTATION_NODE:
//can not hit in level3
//default:throw e;
}
if ( ! node2 ) {
node2 = node . cloneNode ( false ) ; //false
}
node2 . ownerDocument = doc ;
node2 . parentNode = null ;
if ( deep ) {
var child = node . firstChild ;
while ( child ) {
node2 . appendChild ( importNode ( doc , child , deep ) ) ;
child = child . nextSibling ;
}
}
return node2 ;
}
//
//var _relationMap = {firstChild:1,lastChild:1,previousSibling:1,nextSibling:1,
// attributes:1,childNodes:1,parentNode:1,documentElement:1,doctype,};
function cloneNode ( doc , node , deep ) {
var node2 = new node . constructor ( ) ;
for ( var n in node ) {
var v = node [ n ] ;
if ( typeof v != 'object' ) {
if ( v != node2 [ n ] ) {
node2 [ n ] = v ;
}
}
}
if ( node . childNodes ) {
node2 . childNodes = new NodeList ( ) ;
}
node2 . ownerDocument = doc ;
switch ( node2 . nodeType ) {
case ELEMENT _NODE :
var attrs = node . attributes ;
var attrs2 = node2 . attributes = new NamedNodeMap ( ) ;
var len = attrs . length ;
attrs2 . _ownerElement = node2 ;
for ( var i = 0 ; i < len ; i ++ ) {
node2 . setAttributeNode ( cloneNode ( doc , attrs . item ( i ) , true ) ) ;
}
break ; case ATTRIBUTE _NODE :
deep = true ;
}
if ( deep ) {
var child = node . firstChild ;
while ( child ) {
node2 . appendChild ( cloneNode ( doc , child , deep ) ) ;
child = child . nextSibling ;
}
}
return node2 ;
}
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
function _ _set _ _ ( object , key , value ) {
object [ key ] = value ;
}
//do dynamic
try {
if ( Object . defineProperty ) {
Object . defineProperty ( LiveNodeList . prototype , 'length' , {
get : function ( ) {
_updateLiveList ( this ) ;
return this . $$length ;
}
} ) ;
Object . defineProperty ( Node . prototype , 'textContent' , {
get : function ( ) {
return getTextContent ( this ) ;
} ,
set : function ( data ) {
switch ( this . nodeType ) {
case ELEMENT _NODE :
case DOCUMENT _FRAGMENT _NODE :
while ( this . firstChild ) {
this . removeChild ( this . firstChild ) ;
}
if ( data || String ( data ) ) {
this . appendChild ( this . ownerDocument . createTextNode ( data ) ) ;
}
break ;
default :
//TODO:
this . data = data ;
this . value = data ;
this . nodeValue = data ;
}
}
} ) ;
2020-10-21 01:15:56 +03:00
2020-10-15 00:07:38 +03:00
function getTextContent ( node ) {
switch ( node . nodeType ) {
case ELEMENT _NODE :
case DOCUMENT _FRAGMENT _NODE :
var buf = [ ] ;
node = node . firstChild ;
while ( node ) {
if ( node . nodeType !== 7 && node . nodeType !== 8 ) {
buf . push ( getTextContent ( node ) ) ;
}
node = node . nextSibling ;
}
return buf . join ( '' ) ;
default :
return node . nodeValue ;
}
}
_ _set _ _ = function ( object , key , value ) {
//console.log(value)
object [ '$$' + key ] = value ;
} ;
}
} catch ( e ) { //ie8
}
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
//if(typeof require == 'function'){
var DOMImplementation _1 = DOMImplementation ;
var XMLSerializer _1 = XMLSerializer ;
//}
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
var dom = {
DOMImplementation : DOMImplementation _1 ,
XMLSerializer : XMLSerializer _1
} ;
2020-10-05 18:43:38 +03:00
2020-10-15 00:07:38 +03:00
var domParser = createCommonjsModule ( function ( module , exports ) {
2020-10-21 01:15:56 +03:00
function DOMParser ( options ) {
this . options = options || { locator : { } } ;
}
DOMParser . prototype . parseFromString = function ( source , mimeType ) {
var options = this . options ;
var sax = new XMLReader ( ) ;
var domBuilder = options . domBuilder || new DOMHandler ( ) ; //contentHandler and LexicalHandler
var errorHandler = options . errorHandler ;
var locator = options . locator ;
var defaultNSMap = options . xmlns || { } ;
var entityMap = { 'lt' : '<' , 'gt' : '>' , 'amp' : '&' , 'quot' : '"' , 'apos' : "'" } ;
if ( locator ) {
domBuilder . setDocumentLocator ( locator ) ;
}
sax . errorHandler = buildErrorHandler ( errorHandler , domBuilder , locator ) ;
sax . domBuilder = options . domBuilder || domBuilder ;
if ( /\/x?html?$/ . test ( mimeType ) ) {
entityMap . nbsp = '\xa0' ;
entityMap . copy = '\xa9' ;
defaultNSMap [ '' ] = 'http://www.w3.org/1999/xhtml' ;
}
defaultNSMap . xml = defaultNSMap . xml || 'http://www.w3.org/XML/1998/namespace' ;
if ( source ) {
sax . parse ( source , defaultNSMap , entityMap ) ;
} else {
sax . errorHandler . error ( "invalid doc source" ) ;
}
return domBuilder . doc ;
} ;
function buildErrorHandler ( errorImpl , domBuilder , locator ) {
if ( ! errorImpl ) {
if ( domBuilder instanceof DOMHandler ) {
return domBuilder ;
}
errorImpl = domBuilder ;
}
var errorHandler = { } ;
var isCallback = errorImpl instanceof Function ;
locator = locator || { } ;
function build ( key ) {
var fn = errorImpl [ key ] ;
if ( ! fn && isCallback ) {
fn = errorImpl . length == 2 ? function ( msg ) { errorImpl ( key , msg ) ; } : errorImpl ;
}
errorHandler [ key ] = fn && function ( msg ) {
fn ( '[xmldom ' + key + ']\t' + msg + _locator ( locator ) ) ;
} || function ( ) { } ;
}
build ( 'warning' ) ;
build ( 'error' ) ;
build ( 'fatalError' ) ;
return errorHandler ;
}
//console.log('#\n\n\n\n\n\n\n####')
/ * *
* + ContentHandler + ErrorHandler
* + LexicalHandler + EntityResolver2
* - DeclHandler - DTDHandler
*
* DefaultHandler : EntityResolver , DTDHandler , ContentHandler , ErrorHandler
* DefaultHandler2 : DefaultHandler , LexicalHandler , DeclHandler , EntityResolver2
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html
* /
function DOMHandler ( ) {
this . cdata = false ;
}
function position ( locator , node ) {
node . lineNumber = locator . lineNumber ;
node . columnNumber = locator . columnNumber ;
}
/ * *
* @ see org . xml . sax . ContentHandler # startDocument
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html
* /
DOMHandler . prototype = {
startDocument : function ( ) {
this . doc = new DOMImplementation ( ) . createDocument ( null , null , null ) ;
if ( this . locator ) {
this . doc . documentURI = this . locator . systemId ;
}
} ,
startElement : function ( namespaceURI , localName , qName , attrs ) {
var doc = this . doc ;
var el = doc . createElementNS ( namespaceURI , qName || localName ) ;
var len = attrs . length ;
appendElement ( this , el ) ;
this . currentElement = el ;
this . locator && position ( this . locator , el ) ;
for ( var i = 0 ; i < len ; i ++ ) {
var namespaceURI = attrs . getURI ( i ) ;
var value = attrs . getValue ( i ) ;
var qName = attrs . getQName ( i ) ;
var attr = doc . createAttributeNS ( namespaceURI , qName ) ;
this . locator && position ( attrs . getLocator ( i ) , attr ) ;
attr . value = attr . nodeValue = value ;
el . setAttributeNode ( attr ) ;
}
} ,
endElement : function ( namespaceURI , localName , qName ) {
var current = this . currentElement ;
var tagName = current . tagName ;
this . currentElement = current . parentNode ;
} ,
startPrefixMapping : function ( prefix , uri ) {
} ,
endPrefixMapping : function ( prefix ) {
} ,
processingInstruction : function ( target , data ) {
var ins = this . doc . createProcessingInstruction ( target , data ) ;
this . locator && position ( this . locator , ins ) ;
appendElement ( this , ins ) ;
} ,
ignorableWhitespace : function ( ch , start , length ) {
} ,
characters : function ( chars , start , length ) {
chars = _toString . apply ( this , arguments ) ;
//console.log(chars)
if ( chars ) {
if ( this . cdata ) {
var charNode = this . doc . createCDATASection ( chars ) ;
} else {
var charNode = this . doc . createTextNode ( chars ) ;
}
if ( this . currentElement ) {
this . currentElement . appendChild ( charNode ) ;
} else if ( /^\s*$/ . test ( chars ) ) {
this . doc . appendChild ( charNode ) ;
//process xml
}
this . locator && position ( this . locator , charNode ) ;
}
} ,
skippedEntity : function ( name ) {
} ,
endDocument : function ( ) {
this . doc . normalize ( ) ;
} ,
setDocumentLocator : function ( locator ) {
if ( this . locator = locator ) { // && !('lineNumber' in locator)){
locator . lineNumber = 0 ;
}
} ,
//LexicalHandler
comment : function ( chars , start , length ) {
chars = _toString . apply ( this , arguments ) ;
var comm = this . doc . createComment ( chars ) ;
this . locator && position ( this . locator , comm ) ;
appendElement ( this , comm ) ;
} ,
startCDATA : function ( ) {
//used in characters() methods
this . cdata = true ;
} ,
endCDATA : function ( ) {
this . cdata = false ;
} ,
startDTD : function ( name , publicId , systemId ) {
var impl = this . doc . implementation ;
if ( impl && impl . createDocumentType ) {
var dt = impl . createDocumentType ( name , publicId , systemId ) ;
this . locator && position ( this . locator , dt ) ;
appendElement ( this , dt ) ;
}
} ,
/ * *
* @ see org . xml . sax . ErrorHandler
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html
* /
warning : function ( error ) {
console . warn ( '[xmldom warning]\t' + error , _locator ( this . locator ) ) ;
} ,
error : function ( error ) {
console . error ( '[xmldom error]\t' + error , _locator ( this . locator ) ) ;
} ,
fatalError : function ( error ) {
console . error ( '[xmldom fatalError]\t' + error , _locator ( this . locator ) ) ;
throw error ;
}
} ;
function _locator ( l ) {
if ( l ) {
return '\n@' + ( l . systemId || '' ) + '#[line:' + l . lineNumber + ',col:' + l . columnNumber + ']'
}
}
function _toString ( chars , start , length ) {
if ( typeof chars == 'string' ) {
return chars . substr ( start , length )
} else { //java sax connect width xmldom on rhino(what about: "? && !(chars instanceof String)")
if ( chars . length >= start + length || start ) {
return new java . lang . String ( chars , start , length ) + '' ;
}
return chars ;
}
}
/ *
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html
* used method of org . xml . sax . ext . LexicalHandler :
* # comment ( chars , start , length )
* # startCDATA ( )
* # endCDATA ( )
* # startDTD ( name , publicId , systemId )
*
*
* IGNORED method of org . xml . sax . ext . LexicalHandler :
* # endDTD ( )
* # startEntity ( name )
* # endEntity ( name )
*
*
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html
* IGNORED method of org . xml . sax . ext . DeclHandler
* # attributeDecl ( eName , aName , type , mode , value )
* # elementDecl ( name , model )
* # externalEntityDecl ( name , publicId , systemId )
* # internalEntityDecl ( name , value )
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html
* IGNORED method of org . xml . sax . EntityResolver2
* # resolveEntity ( String name , String publicId , String baseURI , String systemId )
* # resolveEntity ( publicId , systemId )
* # getExternalSubset ( name , baseURI )
* @ link http : //www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html
* IGNORED method of org . xml . sax . DTDHandler
* # notationDecl ( name , publicId , systemId ) { } ;
* # unparsedEntityDecl ( name , publicId , systemId , notationName ) { } ;
* /
"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl" . replace ( /\w+/g , function ( key ) {
DOMHandler . prototype [ key ] = function ( ) { return null } ;
} ) ;
/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */
function appendElement ( hander , node ) {
if ( ! hander . currentElement ) {
hander . doc . appendChild ( node ) ;
} else {
hander . currentElement . appendChild ( node ) ;
}
} //appendChild and setAttributeNS are preformance key
//if(typeof require == 'function'){
var XMLReader = sax . XMLReader ;
var DOMImplementation = exports . DOMImplementation = dom . DOMImplementation ;
exports . XMLSerializer = dom . XMLSerializer ;
exports . DOMParser = DOMParser ;
2020-10-15 00:07:38 +03:00
//}
} ) ;
2020-10-05 18:43:38 +03:00
var videojsHttpStreaming _min = createCommonjsModule ( function ( module , exports ) {
2020-11-04 09:44:18 +03:00
/*! @name @videojs/http-streaming @version 2.2.4 @license Apache-2.0 */
! function ( e , t ) { t ( exports , document _1 , window _1 , core , domParser ) ; } ( commonjsGlobal , ( function ( e , t , i , n , r ) { t = t && Object . prototype . hasOwnProperty . call ( t , "default" ) ? t . default : t , i = i && Object . prototype . hasOwnProperty . call ( i , "default" ) ? i . default : i , n = n && Object . prototype . hasOwnProperty . call ( n , "default" ) ? n . default : n ; var a = function ( e ) { if ( void 0 === e ) throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; return e } , s = function ( e , t ) { e . prototype = Object . create ( t . prototype ) , e . prototype . constructor = e , e . _ _proto _ _ = t ; } ; function o ( e ) { return e && e . _ _esModule && Object . prototype . hasOwnProperty . call ( e , "default" ) ? e . default : e } function u ( e , t ) { return e ( t = { exports : { } } , t . exports ) , t . exports } function d ( e ) { return e && "object" == typeof e && "default" in e ? e : { default : e } } var l = d ( u ( ( function ( e , t ) { var i , n , r , a , s ; i = /^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/\?#]*\/)*.*?)??(;.*?)?(\?.*?)?(#.*?)?$/ , n = /^([^\/?#]*)(.*)$/ , r = /(?:\/|^)\.(?=\/)/g , a = /(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g , s = { buildAbsoluteURL : function ( e , t , i ) { if ( i = i || { } , e = e . trim ( ) , ! ( t = t . trim ( ) ) ) { if ( ! i . alwaysNormalize ) return e ; var r = s . parseURL ( e ) ; if ( ! r ) throw new Error ( "Error trying to parse base URL." ) ; return r . path = s . normalizePath ( r . path ) , s . buildURLFromParts ( r ) } var a = s . parseURL ( t ) ; if ( ! a ) throw new Error ( "Error trying to parse relative URL." ) ; if ( a . scheme ) return i . alwaysNormalize ? ( a . path = s . normalizePath ( a . path ) , s . buildURLFromParts ( a ) ) : t ; var o = s . parseURL ( e ) ; if ( ! o ) throw new Error ( "Error trying to parse base URL." ) ; if ( ! o . netLoc && o . path && "/" !== o . path [ 0 ] ) { var u = n . exec ( o . path ) ; o . netLoc = u [ 1 ] , o . path = u [ 2 ] ; } o . netLoc && ! o . path && ( o . path = "/" ) ; var d = { scheme : o . scheme , netLoc : a . netLoc , path : null , params : a . params , query : a . query , fragment : a . fragment } ; if ( ! a . netLoc && ( d . netLoc = o . netLoc , "/" !== a . path [ 0 ] ) ) if ( a . path ) { var l = o . path , c = l . substring ( 0 , l . lastIndexOf ( "/" ) + 1 ) + a . path ; d . path = s . normalizePath ( c ) ; } else d . path = o . path , a . params || ( d . params = o . params , a . query || ( d . query = o . query ) ) ; return null === d . path && ( d . path = i . alwaysNormalize ? s . normalizePath ( a . path ) : a . path ) , s . buildURLFromParts ( d ) } , parseURL : function ( e ) { var t = i . exec ( e ) ; return t ? { scheme : t [ 1 ] || "" , netLoc : t [ 2 ] || "" , path : t [ 3 ] || "" , params : t [ 4 ] || "" , query : t [ 5 ] || "" , fragment : t [ 6 ] || "" } : null } , normalizePath : function ( e ) { for ( e = e . split ( "" ) . reverse ( ) . join ( "" ) . replace ( r , "" ) ; e . length !== ( e = e . replace ( a , "" ) ) . length ; ) ; return e . split ( "" ) . reverse ( ) . join ( "" ) } , buildURLFromParts : function ( e ) { return e . scheme + e . netLoc + e . path + e . params + e . query + e . fragment } } , e . exports = s ; } ) ) ) , c = d ( i ) , h = function ( e , t ) { return /^[a-z]+:/i . test ( t ) ? t : ( /\/\//i . test ( e ) || ( e = l . default . buildAbsoluteURL ( c . default . location && c . default . location . href || "" , e ) ) , l . default . buildAbsoluteURL ( e , t ) ) } , m = h , f = function ( e , t , i ) { return e && i && i . responseURL && t !== i . responseURL ? i . responseURL : t } , p = function ( ) { function e ( ) { this . listeners = { } ; } var t = e . prototype ; return t . on = function ( e , t ) { this . listeners [ e ] || ( this . listeners [ e ] = [ ] ) , this . listeners [ e ] . push ( t ) ; } , t . off = function ( e , t ) { if ( ! this . listeners [ e ] ) return ! 1 ; var i = this . listeners [ e ] . indexOf ( t ) ; return this . listeners [ e ] = this . listeners [ e ] . slice ( 0 ) , this . listeners [ e ] . splice ( i , 1 ) , i > - 1 } , t . trigger = function ( e ) { var t = this . listeners [ e ] ; if ( t ) if ( 2 === arguments . length ) for ( var i = t . length , n = 0 ; n < i ; ++ n ) t [ n ] . call ( this , arguments [ 1 ] ) ; else for ( var r = Array . prototype . slice . call ( arguments , 1 ) , a = t . length , s = 0 ; s < a ; ++ s ) t [ s ] . apply ( this , r ) ; } , t . dispose = function ( ) { this . listeners = { } ; } , t . pipe = function ( e ) { this . on ( "data" , ( function ( t ) { e . push ( t ) ; } ) ) ; } , e } ( ) , g = u ( ( function ( e ) { function t ( ) { return e . exports = t = Object . assign || function ( e ) { for ( var t = 1 ; t < arguments . length ; t ++ ) { var i = arguments [ t ] ; for ( var n in i ) Object . prototype . hasOwnProperty . call ( i , n ) && ( e [ n ] = i [ n ] ) ; } return e } , t . apply ( this , arguments ) } e . exports = t ; } ) ) ; function y ( e ) { return e && "object" == typeof e && "default" in e ? e : { default : e } } var v = y ( i ) , _ = function ( e ) { for ( var t , i = ( t = e , v . default . atob ? v . default . atob ( t ) : Buffer . from ( t , "base64" ) . toString ( "binary" ) ) , n = new Uint8Array ( i . length ) , r = 0 ; r < i . length ; r ++ ) n [ r ] = i . charCodeAt ( r ) ; return n } , b = function ( e ) { function t ( ) { var t ; return ( t = e . call ( this ) || this ) . buffer = "" , t } return s ( t , e ) , t . prototype . push = function ( e ) { var t ; for ( this . buffer += e , t = this . buffer . indexOf ( "\n" ) ; t > - 1 ; t = this . buffer . indexOf ( "\n" )
/*! @name @videojs/http-streaming @version 2.2.4 @license Apache-2.0 */ ! function ( ) { var e = function ( ) { this . init = function ( ) { var e = { } ; this . on = function ( t , i ) { e [ t ] || ( e [ t ] = [ ] ) , e [ t ] = e [ t ] . concat ( i ) ; } , this . off = function ( t , i ) { var n ; return ! ! e [ t ] && ( n = e [ t ] . indexOf ( i ) , e [ t ] = e [ t ] . slice ( ) , e [ t ] . splice ( n , 1 ) , n > - 1 ) } , this . trigger = function ( t ) { var i , n , r , a ; if ( i = e [ t ] ) if ( 2 === arguments . length ) for ( r = i . length , n = 0 ; n < r ; ++ n ) i [ n ] . call ( this , arguments [ 1 ] ) ; else { for ( a = [ ] , n = arguments . length , n = 1 ; n < arguments . length ; ++ n ) a . push ( arguments [ n ] ) ; for ( r = i . length , n = 0 ; n < r ; ++ n ) i [ n ] . apply ( this , a ) ; } } , this . dispose = function ( ) { e = { } ; } ; } ; } ; e . prototype . pipe = function ( e ) { return this . on ( "data" , ( function ( t ) { e . push ( t ) ; } ) ) , this . on ( "done" , ( function ( t ) { e . flush ( t ) ; } ) ) , this . on ( "partialdone" , ( function ( t ) { e . partialFlush ( t ) ; } ) ) , this . on ( "endedtimeline" , ( function ( t ) { e . endTimeline ( t ) ; } ) ) , this . on ( "reset" , ( function ( t ) { e . reset ( t ) ; } ) ) , e } , e . prototype . push = function ( e ) { this . trigger ( "data" , e ) ; } , e . prototype . flush = function ( e ) { this . trigger ( "done" , e ) ; } , e . prototype . partialFlush = function ( e ) { this . trigger ( "partialdone" , e ) ; } , e . prototype . endTimeline = function ( e ) { this . trigger ( "endedtimeline" , e ) ; } , e . prototype . reset = function ( e ) { this . trigger ( "reset" , e ) ; } ; var t , n , r , a , s , o , u , d , l , c , h , m , f , p , g , y , v , _ , b , T , S , I , L , A , k , E , w , O , U , C , P , D , x , R , M , F , B , N , q , V , H = e , j = Math . pow ( 2 , 32 ) - 1 ; ! function ( ) { var e ; if ( I = { avc1 : [ ] , avcC : [ ] , btrt : [ ] , dinf : [ ] , dref : [ ] , esds : [ ] , ftyp : [ ] , hdlr : [ ] , mdat : [ ] , mdhd : [ ] , mdia : [ ] , mfhd : [ ] , minf : [ ] , moof : [ ] , moov : [ ] , mp4a : [ ] , mvex : [ ] , mvhd : [ ] , pasp : [ ] , sdtp : [ ] , smhd : [ ] , stbl : [ ] , stco : [ ] , stsc : [ ] , stsd : [ ] , stsz : [ ] , stts : [ ] , styp : [ ] , tfdt : [ ] , tfhd : [ ] , traf : [ ] , trak : [ ] , trun : [ ] , trex : [ ] , tkhd : [ ] , vmhd : [ ] } , "undefined" != typeof Uint8Array ) { for ( e in I ) I . hasOwnProperty ( e ) && ( I [ e ] = [ e . charCodeAt ( 0 ) , e . charCodeAt ( 1 ) , e . charCodeAt ( 2 ) , e . charCodeAt ( 3 ) ] ) ; L = new Uint8Array ( [ "i" . charCodeAt ( 0 ) , "s" . charCodeAt ( 0 ) , "o" . charCodeAt ( 0 ) , "m" . charCodeAt ( 0 ) ] ) , k = new Uint8Array ( [ "a" . charCodeAt ( 0 ) , "v" . charCodeAt ( 0 ) , "c" . charCodeAt ( 0 ) , "1" . charCodeAt ( 0 ) ] ) , A = new Uint8Array ( [ 0 , 0 , 0 , 1 ] ) , E = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 118 , 105 , 100 , 101 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 86 , 105 , 100 , 101 , 111 , 72 , 97 , 110 , 100 , 108 , 101 , 114 , 0 ] ) , w = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 115 , 111 , 117 , 110 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 83 , 111 , 117 , 110 , 100 , 72 , 97 , 110 , 100 , 108 , 101 , 114 , 0 ] ) , O = { video : E , audio : w } , P = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 12 , 117 , 114 , 108 , 32 , 0 , 0 , 0 , 1 ] ) , C = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) , D = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) , x = D , R = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) , M = D , U = new Uint8Array ( [ 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ] ) ; } } ( ) , t = function ( e ) { var t , i , n = [ ] , r = 0 ; for ( t = 1 ; t < arguments . length ; t ++ ) n . push ( arguments [ t ] ) ; for ( t = n . length ; t -- ; ) r += n [ t ] . byteLength ; for ( i = new Uint8Array ( r + 8 ) , new DataView ( i . buffer , i . byteOffset , i . byteLength ) . setUint32 ( 0 , i . byteLength ) , i . set ( e , 4 ) , t = 0 , r = 8 ; t < n . length ; t ++ ) i . set ( n [ t ] , r ) , r += n [ t ] . byteLength ; return i } , n = function ( ) { return t ( I . dinf , t ( I . dref , P ) ) } , r = function ( e ) { return t ( I . esds , new Uint8Array ( [ 0 , 0 , 0 , 0 , 3 , 25 , 0 , 0 , 0 , 4 , 17 , 64 , 21 , 0 , 6 , 0 , 0 , 0 , 218 , 192 , 0 , 0 , 218 , 192 , 5 , 2 , e . audioobjecttype << 3 | e . samplingfrequencyindex >>> 1 , e . samplingfrequencyindex << 7 | e . channelcount << 3 , 6 , 1 , 2 ] ) ) } , g = function ( e ) { return t ( I . hdlr , O [ e ] ) } , p = function ( e ) { var i = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 2 , 0 , 0 , 0 , 3 , 0 , 1 , 95 , 144 , e . duration >>> 24 & 255 , e . duration >>> 16 & 255 , e . duration >>> 8 & 255 , 255 & e . duration , 85 , 196 , 0 , 0 ] ) ; return e . samplerate && ( i [ 12 ] = e . samplerate >>> 24 & 255 , i [ 13 ] = e . samplerate >>> 16 & 255 , i [ 14 ] = e . samplerate >>> 8 & 255 , i [ 15 ] = 255 & e . samplerate ) , t ( I . mdhd , i ) } , f = function ( e ) { return t ( I . mdia , p ( e ) , g ( e . type ) , o ( e ) ) } , s = function ( e ) { return t ( I . mfhd , new Uint8Array ( [ 0 , 0 , 0 , 0 , ( 4278190080 & e ) >> 24 , ( 16711680 & e ) >> 16 , ( 65280 & e ) >> 8 , 255 & e ] ) ) } , o = function ( e ) { return t ( I . minf , "video" === e . type ? t ( I . vmhd , U ) : t ( I . smhd , C ) , n ( ) , v ( e ) ) } , u = function ( e , i ) { for ( var n = [ ] , r = i . length ; r -- ; ) n [ r ] = b ( i [ r ] ) ; return t . apply ( null , [ I . moof , s ( e ) ] . concat ( n ) ) } , d = function ( e ) { for ( var i = e . length , n = [ ] ; i -- ; ) n [ i ] = h ( e [ i ] ) ; return t . apply ( null , [ I . moov , c ( 4294967295 ) ] . concat ( n ) . concat ( l ( e ) ) ) } , l = function ( e ) { for ( var i = e . length , n = [ ] ; i -- ; ) n [ i ] = T ( e [ i ] ) ; return t . apply ( null , [ I . mvex ] . concat ( n ) ) } , c = function ( e ) { var i = new Uint8Array ( [ 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 2 , 0 , 1 , 95 , 144 , ( 4278190080 & e ) >> 24 , ( 16711680 & e ) >> 16 , ( 65280 & e ) >> 8 , 255 & e , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 1 , 0 , 0 , 0 , 0 , 0 , 0 , 0 ,
/*! @name @videojs/http-streaming @version 2.2.4 @license Apache-2.0 */ ! function ( ) { function e ( e , t ) { for ( var i = 0 ; i < t . length ; i ++ ) { var n = t [ i ] ; n . enumerable = n . enumerable || ! 1 , n . configurable = ! 0 , "value" in n && ( n . writable = ! 0 ) , Object . defineProperty ( e , n . key , n ) ; } } var t = function ( ) { function e ( ) { this . listeners = { } ; } var t = e . prototype ; return t . on = function ( e , t ) { this . listeners [ e ] || ( this . listeners [ e ] = [ ] ) , this . listeners [ e ] . push ( t ) ; } , t . off = function ( e , t ) { if ( ! this . listeners [ e ] ) return ! 1 ; var i = this . listeners [ e ] . indexOf ( t ) ; return this . listeners [ e ] = this . listeners [ e ] . slice ( 0 ) , this . listeners [ e ] . splice ( i , 1 ) , i > - 1 } , t . trigger = function ( e ) { var t = this . listeners [ e ] ; if ( t ) if ( 2 === arguments . length ) for ( var i = t . length , n = 0 ; n < i ; ++ n ) t [ n ] . call ( this , arguments [ 1 ] ) ; else for ( var r = Array . prototype . slice . call ( arguments , 1 ) , a = t . length , s = 0 ; s < a ; ++ s ) t [ s ] . apply ( this , r ) ; } , t . dispose = function ( ) { this . listeners = { } ; } , t . pipe = function ( e ) { this . on ( "data" , ( function ( t ) { e . push ( t ) ; } ) ) ; } , e } ( ) , n = null , r = function ( ) { function e ( e ) { var t , i , r ; n || ( n = function ( ) { var e , t , i , n , r , a , s , o , u = [ [ [ ] , [ ] , [ ] , [ ] , [ ] ] , [ [ ] , [ ] , [ ] , [ ] , [ ] ] ] , d = u [ 0 ] , l = u [ 1 ] , c = d [ 4 ] , h = l [ 4 ] , m = [ ] , f = [ ] ; for ( e = 0 ; e < 256 ; e ++ ) f [ ( m [ e ] = e << 1 ^ 283 * ( e >> 7 ) ) ^ e ] = e ; for ( t = i = 0 ; ! c [ t ] ; t ^= n || 1 , i = f [ i ] || 1 ) for ( a = ( a = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4 ) >> 8 ^ 255 & a ^ 99 , c [ t ] = a , h [ a ] = t , o = 16843009 * m [ r = m [ n = m [ t ] ] ] ^ 65537 * r ^ 257 * n ^ 16843008 * t , s = 257 * m [ a ] ^ 16843008 * a , e = 0 ; e < 4 ; e ++ ) d [ e ] [ t ] = s = s << 24 ^ s >>> 8 , l [ e ] [ a ] = o = o << 24 ^ o >>> 8 ; for ( e = 0 ; e < 5 ; e ++ ) d [ e ] = d [ e ] . slice ( 0 ) , l [ e ] = l [ e ] . slice ( 0 ) ; return u } ( ) ) , this . _tables = [ [ n [ 0 ] [ 0 ] . slice ( ) , n [ 0 ] [ 1 ] . slice ( ) , n [ 0 ] [ 2 ] . slice ( ) , n [ 0 ] [ 3 ] . slice ( ) , n [ 0 ] [ 4 ] . slice ( ) ] , [ n [ 1 ] [ 0 ] . slice ( ) , n [ 1 ] [ 1 ] . slice ( ) , n [ 1 ] [ 2 ] . slice ( ) , n [ 1 ] [ 3 ] . slice ( ) , n [ 1 ] [ 4 ] . slice ( ) ] ] ; var a = this . _tables [ 0 ] [ 4 ] , s = this . _tables [ 1 ] , o = e . length , u = 1 ; if ( 4 !== o && 6 !== o && 8 !== o ) throw new Error ( "Invalid aes key size" ) ; var d = e . slice ( 0 ) , l = [ ] ; for ( this . _key = [ d , l ] , t = o ; t < 4 * o + 28 ; t ++ ) r = d [ t - 1 ] , ( t % o == 0 || 8 === o && t % o == 4 ) && ( r = a [ r >>> 24 ] << 24 ^ a [ r >> 16 & 255 ] << 16 ^ a [ r >> 8 & 255 ] << 8 ^ a [ 255 & r ] , t % o == 0 && ( r = r << 8 ^ r >>> 24 ^ u << 24 , u = u << 1 ^ 283 * ( u >> 7 ) ) ) , d [ t ] = d [ t - o ] ^ r ; for ( i = 0 ; t ; i ++ , t -- ) r = d [ 3 & i ? t : t - 4 ] , l [ i ] = t <= 4 || i < 4 ? r : s [ 0 ] [ a [ r >>> 24 ] ] ^ s [ 1 ] [ a [ r >> 16 & 255 ] ] ^ s [ 2 ] [ a [ r >> 8 & 255 ] ] ^ s [ 3 ] [ a [ 255 & r ] ] ; } return e . prototype . decrypt = function ( e , t , i , n , r , a ) { var s , o , u , d , l = this . _key [ 1 ] , c = e ^ l [ 0 ] , h = n ^ l [ 1 ] , m = i ^ l [ 2 ] , f = t ^ l [ 3 ] , p = l . length / 4 - 2 , g = 4 , y = this . _tables [ 1 ] , v = y [ 0 ] , _ = y [ 1 ] , b = y [ 2 ] , T = y [ 3 ] , S = y [ 4 ] ; for ( d = 0 ; d < p ; d ++ ) s = v [ c >>> 24 ] ^ _ [ h >> 16 & 255 ] ^ b [ m >> 8 & 255 ] ^ T [ 255 & f ] ^ l [ g ] , o = v [ h >>> 24 ] ^ _ [ m >> 16 & 255 ] ^ b [ f >> 8 & 255 ] ^ T [ 255 & c ] ^ l [ g + 1 ] , u = v [ m >>> 24 ] ^ _ [ f >> 16 & 255 ] ^ b [ c >> 8 & 255 ] ^ T [ 255 & h ] ^ l [ g + 2 ] , f = v [ f >>> 24 ] ^ _ [ c >> 16 & 255 ] ^ b [ h >> 8 & 255 ] ^ T [ 255 & m ] ^ l [ g + 3 ] , g += 4 , c = s , h = o , m = u ; for ( d = 0 ; d < 4 ; d ++ ) r [ ( 3 & - d ) + a ] = S [ c >>> 24 ] << 24 ^ S [ h >> 16 & 255 ] << 16 ^ S [ m >> 8 & 255 ] << 8 ^ S [ 255 & f ] ^ l [ g ++ ] , s = c , c = h , h = m , m = f , f = s ; } , e } ( ) , a = function ( e ) { function i ( ) { var i ; return ( i = e . call ( this , t ) || this ) . jobs = [ ] , i . delay = 1 , i . timeout _ = null , i } var n , r ; r = e , ( n = i ) . prototype = Object . create ( r . prototype ) , n . prototype . constructor = n , n . _ _proto _ _ = r ; var a = i . prototype ; return a . processJob _ = function ( ) { this . jobs . shift ( ) ( ) , this . jobs . length ? this . timeout _ = setTimeout ( this . processJob _ . bind ( this ) , this . delay ) : this . timeout _ = null ; } , a . push = function ( e ) { this . jobs . push ( e ) , this . timeout _ || ( this . timeout _ = setTimeout ( this . processJob _ . bind ( this ) , this . delay ) ) ; } , i } ( t ) , s = function ( e ) { return e << 24 | ( 65280 & e ) << 8 | ( 16711680 & e ) >> 8 | e >>> 24 } , o = function ( ) { function t ( e , i , n , r ) { var o = t . STEP , u = new Int32Array ( e . buffer ) , d = new Uint8Array ( e . byteLength ) , l = 0 ; for ( this . asyncStream _ = new a , this . asyncStream _ . push ( this . decryptChunk _ ( u . subarray ( l , l + o ) , i , n , d ) ) , l = o ; l < u . length ; l += o ) n = new Uint32Array ( [ s ( u [ l - 4 ] ) , s ( u [ l - 3 ] ) , s ( u [ l - 2 ] ) , s ( u [ l - 1 ] ) ] ) , this . asyncStream _ . push ( this . decryptChunk _ ( u . subarray ( l , l + o ) , i , n , d ) ) ; this . asyncStream _ . push ( ( function ( ) {
2020-10-05 18:43:38 +03:00
/*! @name pkcs7 @version 1.0.4 @license Apache-2.0 */
var e ;
2020-11-04 09:44:18 +03:00
/*! @name aes-decrypter @version 3.1.0 @license Apache-2.0 */ r ( null , ( e = d ) . subarray ( 0 , e . byteLength - e [ e . byteLength - 1 ] ) ) ; } ) ) ; } return t . prototype . decryptChunk _ = function ( e , t , i , n ) { return function ( ) { var a = function ( e , t , i ) { var n , a , o , u , d , l , c , h , m , f = new Int32Array ( e . buffer , e . byteOffset , e . byteLength >> 2 ) , p = new r ( Array . prototype . slice . call ( t ) ) , g = new Uint8Array ( e . byteLength ) , y = new Int32Array ( g . buffer ) ; for ( n = i [ 0 ] , a = i [ 1 ] , o = i [ 2 ] , u = i [ 3 ] , m = 0 ; m < f . length ; m += 4 ) d = s ( f [ m ] ) , l = s ( f [ m + 1 ] ) , c = s ( f [ m + 2 ] ) , h = s ( f [ m + 3 ] ) , p . decrypt ( d , l , c , h , y , m ) , y [ m ] = s ( y [ m ] ^ n ) , y [ m + 1 ] = s ( y [ m + 1 ] ^ a ) , y [ m + 2 ] = s ( y [ m + 2 ] ^ o ) , y [ m + 3 ] = s ( y [ m + 3 ] ^ u ) , n = d , a = l , o = c , u = h ; return g } ( e , t , i ) ; n . set ( a , e . byteOffset ) ; } } , i = t , o = [ { key : "STEP" , get : function ( ) { return 32e3 } } ] , ( n = null ) && e ( i . prototype , n ) , o && e ( i , o ) , t ; var i , n , o ; } ( ) ; new function ( e ) { e . onmessage = function ( t ) { var i = t . data , n = new Uint8Array ( i . encrypted . bytes , i . encrypted . byteOffset , i . encrypted . byteLength ) , r = new Uint32Array ( i . key . bytes , i . key . byteOffset , i . key . byteLength / 4 ) , a = new Uint32Array ( i . iv . bytes , i . iv . byteOffset , i . iv . byteLength / 4 ) ; new o ( n , r , a , ( function ( t , n ) { var r , a ; e . postMessage ( ( r = { source : i . source , decrypted : n } , a = { } , Object . keys ( r ) . forEach ( ( function ( e ) { var t = r [ e ] ; ArrayBuffer . isView ( t ) ? a [ e ] = { bytes : t . buffer , byteOffset : t . byteOffset , byteLength : t . byteLength } : a [ e ] = t ; } ) ) , a ) , [ n . buffer ] ) ; } ) ) ; } ; } ( i ) ; } ( ) ; } ) ) , ln = function ( e ) { var t = e . default ? "main" : "alternative" ; return e . characteristics && e . characteristics . indexOf ( "public.accessibility.describes-video" ) >= 0 && ( t = "main-desc" ) , t } , cn = function ( e , t ) { e . abort ( ) , e . pause ( ) , t && t . activePlaylistLoader && ( t . activePlaylistLoader . pause ( ) , t . activePlaylistLoader = null ) ; } , hn = function ( e , t ) { t . activePlaylistLoader = e , e . load ( ) ; } , mn = { AUDIO : function ( e , t ) { return function ( ) { var i = t . segmentLoaders [ e ] , r = t . mediaTypes [ e ] , a = t . blacklistCurrentPlaylist ; cn ( i , r ) ; var s = r . activeTrack ( ) , o = r . activeGroup ( ) , u = ( o . filter ( ( function ( e ) { return e . default } ) ) [ 0 ] || o [ 0 ] ) . id , d = r . tracks [ u ] ; if ( s !== d ) { for ( var l in n . log . warn ( "Problem encountered loading the alternate audio track.Switching back to default." ) , r . tracks ) r . tracks [ l ] . enabled = r . tracks [ l ] === d ; r . onTrackChanged ( ) ; } else a ( { message : "Problem encountered loading the default audio track." } ) ; } } , SUBTITLES : function ( e , t ) { return function ( ) { var i = t . segmentLoaders [ e ] , r = t . mediaTypes [ e ] ; n . log . warn ( "Problem encountered loading the subtitle track.Disabling subtitle track." ) , cn ( i , r ) ; var a = r . activeTrack ( ) ; a && ( a . mode = "disabled" ) , r . onTrackChanged ( ) ; } } } , fn = { AUDIO : function ( e , t , i ) { if ( t ) { var n = i . tech , r = i . requestOptions , a = i . segmentLoaders [ e ] ; t . on ( "loadedmetadata" , ( function ( ) { var e = t . media ( ) ; a . playlist ( e , r ) , ( ! n . paused ( ) || e . endList && "none" !== n . preload ( ) ) && a . load ( ) ; } ) ) , t . on ( "loadedplaylist" , ( function ( ) { a . playlist ( t . media ( ) , r ) , n . paused ( ) || a . load ( ) ; } ) ) , t . on ( "error" , mn [ e ] ( e , i ) ) ; } } , SUBTITLES : function ( e , t , i ) { var n = i . tech , r = i . requestOptions , a = i . segmentLoaders [ e ] , s = i . mediaTypes [ e ] ; t . on ( "loadedmetadata" , ( function ( ) { var e = t . media ( ) ; a . playlist ( e , r ) , a . track ( s . activeTrack ( ) ) , ( ! n . paused ( ) || e . endList && "none" !== n . preload ( ) ) && a . load ( ) ; } ) ) , t . on ( "loadedplaylist" , ( function ( ) { a . playlist ( t . media ( ) , r ) , n . paused ( ) || a . load ( ) ; } ) ) , t . on ( "error" , mn [ e ] ( e , i ) ) ; } } , pn = { AUDIO : function ( e , t ) { var i = t . vhs , r = t . sourceType , a = t . segmentLoaders [ e ] , s = t . requestOptions , o = t . master , u = o . mediaGroups , d = o . playlists , l = t . mediaTypes [ e ] , c = l . groups , h = l . tracks , m = t . masterPlaylistLoader ; u [ e ] && 0 !== Object . keys ( u [ e ] ) . length || ( u [ e ] = { main : { default : { default : ! 0 } } } ) ; var f = function ( a ) { c [ a ] || ( c [ a ] = [ ] ) ; var o = d . filter ( ( function ( t ) { return t . attributes [ e ] === a } ) ) , l = function ( d ) { var l = u [ e ] [ a ] [ d ] ; o . filter ( ( function ( e ) { return e . resolvedUri === l . resolvedUri } ) ) . length && delete l . resolvedUri ; var f ; if ( f = "vhs-json" === r && l . playlists ? new R ( l . playlists [ 0 ] , i , s ) : l . resolvedUri ? new R ( l . resolvedUri , i , s ) : l . playlists && "dash" === r ? new dt ( l . playlists [ 0 ] , i , s , m ) : null , l = n . mergeOptions ( { id : d , playlistLoader : f } , l ) , fn [ e ] ( e , l . playlistLoader , t ) , c [ a ] . push ( l ) , void 0 === h [ d ] ) { var p = new n . AudioTrack ( { id : d , kind : ln ( l ) , enabled : ! 1 , language : l . language , default : l . default , label : d } ) ; h [ d ] = p ; } } ; for ( var f in u [ e ] [ a ] ) l ( f ) ; } ; for ( var p in u [ e ] ) f ( p ) ; a . on ( "error" , mn [ e ] ( e , t ) ) ; } , SUBTITLES : function ( e , t ) { var i = t . tech , r = t . vhs , a = t . sourceType , s = t . segmentLoaders [ e ] , o = t . requestOptions , u = t . ma
2020-10-05 18:43:38 +03:00
} ) ;
var videojsHttpStreaming _min$1 = /*@__PURE__*/ getDefaultExportFromCjs ( videojsHttpStreaming _min ) ;
export default videojsHttpStreaming _min$1 ;