UNPKG

fast-xml-parser

Version:

Validate XML, Parse XML, Build XML without C/C++ based libraries

2 lines 26.9 kB
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.XMLParser=e():t.XMLParser=e()}(this,()=>(()=>{"use strict";var t={d:(e,r)=>{for(var n in r)t.o(r,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:r[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{default:()=>et});var r={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(t,e){return e},attributeValueProcessor:function(t,e){return e},stopNodes:[],alwaysCreateTextNode:!1,isArray:function(){return!1},commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(t,e,r){return t},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0};function n(t){return"boolean"==typeof t?{enabled:t,maxEntitySize:1e4,maxExpansionDepth:10,maxTotalExpansions:1e3,maxExpandedLength:1e5,allowedTags:null,tagFilter:null}:"object"==typeof t&&null!==t?{enabled:!1!==t.enabled,maxEntitySize:null!=(e=t.maxEntitySize)?e:1e4,maxExpansionDepth:null!=(r=t.maxExpansionDepth)?r:10,maxTotalExpansions:null!=(i=t.maxTotalExpansions)?i:1e3,maxExpandedLength:null!=(a=t.maxExpandedLength)?a:1e5,allowedTags:null!=(s=t.allowedTags)?s:null,tagFilter:null!=(o=t.tagFilter)?o:null}:n(!0);var e,r,i,a,s,o}var i=function(t){var e=Object.assign({},r,t);return e.processEntities=n(e.processEntities),e},a=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",s=new RegExp("^["+a+"]["+a+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$");function o(t,e){for(var r=[],n=e.exec(t);n;){var i=[];i.startIndex=e.lastIndex-n[0].length;for(var a=n.length,s=0;s<a;s++)i.push(n[s]);r.push(i),n=e.exec(t)}return r}var l,u=function(t){return!(null==s.exec(t))};l="function"!=typeof Symbol?"@@xmlMetadata":Symbol("XML Node Metadata");var d=function(){function t(t){this.tagname=t,this.child=[],this[":@"]=Object.create(null)}var e=t.prototype;return e.add=function(t,e){var r;"__proto__"===t&&(t="#__proto__"),this.child.push(((r={})[t]=e,r))},e.addChild=function(t,e){var r,n;"__proto__"===t.tagname&&(t.tagname="#__proto__"),t[":@"]&&Object.keys(t[":@"]).length>0?this.child.push(((r={})[t.tagname]=t.child,r[":@"]=t[":@"],r)):this.child.push(((n={})[t.tagname]=t.child,n)),void 0!==e&&(this.child[this.child.length-1][l]={startIndex:e})},t.getMetaDataSymbol=function(){return l},t}(),f=function(){function t(t){this.suppressValidationErr=!t,this.options=t}var e=t.prototype;return e.readDocType=function(t,e){var r=Object.create(null);if("O"!==t[e+3]||"C"!==t[e+4]||"T"!==t[e+5]||"Y"!==t[e+6]||"P"!==t[e+7]||"E"!==t[e+8])throw new Error("Invalid Tag instead of DOCTYPE");e+=9;for(var n=1,i=!1,a=!1;e<t.length;e++)if("<"!==t[e]||a)if(">"===t[e]){if(a?"-"===t[e-1]&&"-"===t[e-2]&&(a=!1,n--):n--,0===n)break}else"["===t[e]?i=!0:t[e];else{if(i&&p(t,"!ENTITY",e)){e+=7;var s=void 0,o=void 0,l=this.readEntityExp(t,e+1,this.suppressValidationErr);if(s=l[0],o=l[1],e=l[2],-1===o.indexOf("&")){var u=s.replace(/[.\-+*:]/g,"\\.");r[s]={regx:RegExp("&"+u+";","g"),val:o}}}else if(i&&p(t,"!ELEMENT",e))e+=8,e=this.readElementExp(t,e+1).index;else if(i&&p(t,"!ATTLIST",e))e+=8;else if(i&&p(t,"!NOTATION",e))e+=9,e=this.readNotationExp(t,e+1,this.suppressValidationErr).index;else{if(!p(t,"!--",e))throw new Error("Invalid DOCTYPE");a=!0}n++}if(0!==n)throw new Error("Unclosed DOCTYPE");return{entities:r,i:e}},e.readEntityExp=function(t,e){e=h(t,e);for(var r="";e<t.length&&!/\s/.test(t[e])&&'"'!==t[e]&&"'"!==t[e];)r+=t[e],e++;if(g(r),e=h(t,e),!this.suppressValidationErr){if("SYSTEM"===t.substring(e,e+6).toUpperCase())throw new Error("External entities are not supported");if("%"===t[e])throw new Error("Parameter entities are not supported")}var n,i=this.readIdentifierVal(t,e,"entity");if(e=i[0],n=i[1],!1!==this.options.enabled&&this.options.maxEntitySize&&n.length>this.options.maxEntitySize)throw new Error('Entity "'+r+'" size ('+n.length+") exceeds maximum allowed size ("+this.options.maxEntitySize+")");return[r,n,--e]},e.readNotationExp=function(t,e){e=h(t,e);for(var r="";e<t.length&&!/\s/.test(t[e]);)r+=t[e],e++;!this.suppressValidationErr&&g(r),e=h(t,e);var n=t.substring(e,e+6).toUpperCase();if(!this.suppressValidationErr&&"SYSTEM"!==n&&"PUBLIC"!==n)throw new Error('Expected SYSTEM or PUBLIC, found "'+n+'"');e+=n.length,e=h(t,e);var i=null,a=null;if("PUBLIC"===n){var s=this.readIdentifierVal(t,e,"publicIdentifier");if(e=s[0],i=s[1],'"'===t[e=h(t,e)]||"'"===t[e]){var o=this.readIdentifierVal(t,e,"systemIdentifier");e=o[0],a=o[1]}}else if("SYSTEM"===n){var l=this.readIdentifierVal(t,e,"systemIdentifier");if(e=l[0],a=l[1],!this.suppressValidationErr&&!a)throw new Error("Missing mandatory system identifier for SYSTEM notation")}return{notationName:r,publicIdentifier:i,systemIdentifier:a,index:--e}},e.readIdentifierVal=function(t,e,r){var n="",i=t[e];if('"'!==i&&"'"!==i)throw new Error('Expected quoted string, found "'+i+'"');for(e++;e<t.length&&t[e]!==i;)n+=t[e],e++;if(t[e]!==i)throw new Error("Unterminated "+r+" value");return[++e,n]},e.readElementExp=function(t,e){e=h(t,e);for(var r="";e<t.length&&!/\s/.test(t[e]);)r+=t[e],e++;if(!this.suppressValidationErr&&!u(r))throw new Error('Invalid element name: "'+r+'"');var n="";if("E"===t[e=h(t,e)]&&p(t,"MPTY",e))e+=4;else if("A"===t[e]&&p(t,"NY",e))e+=2;else if("("===t[e]){for(e++;e<t.length&&")"!==t[e];)n+=t[e],e++;if(")"!==t[e])throw new Error("Unterminated content model")}else if(!this.suppressValidationErr)throw new Error('Invalid Element Expression, found "'+t[e]+'"');return{elementName:r,contentModel:n.trim(),index:e}},e.readAttlistExp=function(t,e){e=h(t,e);for(var r="";e<t.length&&!/\s/.test(t[e]);)r+=t[e],e++;g(r),e=h(t,e);for(var n="";e<t.length&&!/\s/.test(t[e]);)n+=t[e],e++;if(!g(n))throw new Error('Invalid attribute name: "'+n+'"');e=h(t,e);var i="";if("NOTATION"===t.substring(e,e+8).toUpperCase()){if(i="NOTATION","("!==t[e=h(t,e+=8)])throw new Error("Expected '(', found \""+t[e]+'"');e++;for(var a=[];e<t.length&&")"!==t[e];){for(var s="";e<t.length&&"|"!==t[e]&&")"!==t[e];)s+=t[e],e++;if(!g(s=s.trim()))throw new Error('Invalid notation name: "'+s+'"');a.push(s),"|"===t[e]&&(e++,e=h(t,e))}if(")"!==t[e])throw new Error("Unterminated list of notations");e++,i+=" ("+a.join("|")+")"}else{for(;e<t.length&&!/\s/.test(t[e]);)i+=t[e],e++;if(!this.suppressValidationErr&&!["CDATA","ID","IDREF","IDREFS","ENTITY","ENTITIES","NMTOKEN","NMTOKENS"].includes(i.toUpperCase()))throw new Error('Invalid attribute type: "'+i+'"')}e=h(t,e);var o="";if("#REQUIRED"===t.substring(e,e+8).toUpperCase())o="#REQUIRED",e+=8;else if("#IMPLIED"===t.substring(e,e+7).toUpperCase())o="#IMPLIED",e+=7;else{var l=this.readIdentifierVal(t,e,"ATTLIST");e=l[0],o=l[1]}return{elementName:r,attributeName:n,attributeType:i,defaultValue:o,index:e}},t}(),h=function(t,e){for(;e<t.length&&/\s/.test(t[e]);)e++;return e};function p(t,e,r){for(var n=0;n<e.length;n++)if(e[n]!==t[r+n+1])return!1;return!0}function g(t){if(u(t))return t;throw new Error("Invalid entity name "+t)}const c=/^[-+]?0x[a-fA-F0-9]+$/,v=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,m={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};const x=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function E(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=Array(e);r<e;r++)n[r]=t[r];return n}var b=function(t){var e;if(this.options=t,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"¢"},pound:{regex:/&(pound|#163);/g,val:"£"},yen:{regex:/&(yen|#165);/g,val:"¥"},euro:{regex:/&(euro|#8364);/g,val:"€"},copyright:{regex:/&(copy|#169);/g,val:"©"},reg:{regex:/&(reg|#174);/g,val:"®"},inr:{regex:/&(inr|#8377);/g,val:"₹"},num_dec:{regex:/&#([0-9]{1,7});/g,val:function(t,e){return _(e,10,"&#")}},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:function(t,e){return _(e,16,"&#x")}}},this.addExternalEntities=N,this.parseXml=O,this.parseTextData=y,this.resolveNameSpace=T,this.buildAttributesMap=I,this.isItStopNode=C,this.replaceEntitiesValue=A,this.readStopNodeData=F,this.saveTextToParentTag=P,this.addChild=S,this.ignoreAttributesFn="function"==typeof(e=this.options.ignoreAttributes)?e:Array.isArray(e)?function(t){for(var r,n=function(t,e){var r="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(r)return(r=r.call(t)).next.bind(r);if(Array.isArray(t)||(r=function(t,e){if(t){if("string"==typeof t)return E(t,e);var r={}.toString.call(t).slice(8,-1);return"Object"===r&&t.constructor&&(r=t.constructor.name),"Map"===r||"Set"===r?Array.from(t):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?E(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){r&&(t=r);var n=0;return function(){return n>=t.length?{done:!0}:{done:!1,value:t[n++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(e);!(r=n()).done;){var i=r.value;if("string"==typeof i&&t===i)return!0;if(i instanceof RegExp&&i.test(t))return!0}}:function(){return!1},this.entityExpansionCount=0,this.currentExpandedLength=0,this.options.stopNodes&&this.options.stopNodes.length>0){this.stopNodesExact=new Set,this.stopNodesWildcard=new Set;for(var r=0;r<this.options.stopNodes.length;r++){var n=this.options.stopNodes[r];"string"==typeof n&&(n.startsWith("*.")?this.stopNodesWildcard.add(n.substring(2)):this.stopNodesExact.add(n))}}};function N(t){for(var e=Object.keys(t),r=0;r<e.length;r++){var n=e[r],i=n.replace(/[.\-+*:]/g,"\\.");this.lastEntities[n]={regex:new RegExp("&"+i+";","g"),val:t[n]}}}function y(t,e,r,n,i,a,s){if(void 0!==t&&(this.options.trimValues&&!n&&(t=t.trim()),t.length>0)){s||(t=this.replaceEntitiesValue(t,e,r));var o=this.options.tagValueProcessor(e,t,r,i,a);return null==o?t:typeof o!=typeof t||o!==t?o:this.options.trimValues||t.trim()===t?V(t,this.options.parseTagValue,this.options.numberParseOptions):t}}function T(t){if(this.options.removeNSPrefix){var e=t.split(":"),r="/"===t.charAt(0)?"/":"";if("xmlns"===e[0])return"";2===e.length&&(t=r+e[1])}return t}var w=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function I(t,e,r){if(!0!==this.options.ignoreAttributes&&"string"==typeof t){for(var n=o(t,w),i=n.length,a={},s=0;s<i;s++){var l=this.resolveNameSpace(n[s][1]);if(!this.ignoreAttributesFn(l,e)){var u=n[s][4],d=this.options.attributeNamePrefix+l;if(l.length)if(this.options.transformAttributeName&&(d=this.options.transformAttributeName(d)),"__proto__"===d&&(d="#__proto__"),void 0!==u){this.options.trimValues&&(u=u.trim()),u=this.replaceEntitiesValue(u,r,e);var f=this.options.attributeValueProcessor(l,u,e);a[d]=null==f?u:typeof f!=typeof u||f!==u?f:V(u,this.options.parseAttributeValue,this.options.numberParseOptions)}else this.options.allowBooleanAttributes&&(a[d]=!0)}}if(!Object.keys(a).length)return;if(this.options.attributesGroupName){var h={};return h[this.options.attributesGroupName]=a,h}return a}}var O=function(t){t=t.replace(/\r\n?/g,"\n");var e=new d("!xml"),r=e,n="",i="";this.entityExpansionCount=0,this.currentExpandedLength=0;for(var a=new f(this.options.processEntities),s=0;s<t.length;s++)if("<"===t[s])if("/"===t[s+1]){var o=D(t,">",s,"Closing Tag is not closed."),l=t.substring(s+2,o).trim();if(this.options.removeNSPrefix){var u=l.indexOf(":");-1!==u&&(l=l.substr(u+1))}this.options.transformTagName&&(l=this.options.transformTagName(l)),r&&(n=this.saveTextToParentTag(n,r,i));var h=i.substring(i.lastIndexOf(".")+1);if(l&&-1!==this.options.unpairedTags.indexOf(l))throw new Error("Unpaired tag can not be used as closing tag: </"+l+">");var p=0;h&&-1!==this.options.unpairedTags.indexOf(h)?(p=i.lastIndexOf(".",i.lastIndexOf(".")-1),this.tagsNodeStack.pop()):p=i.lastIndexOf("."),i=i.substring(0,p),r=this.tagsNodeStack.pop(),n="",s=o}else if("?"===t[s+1]){var g=M(t,s,!1,"?>");if(!g)throw new Error("Pi Tag is not closed.");if(n=this.saveTextToParentTag(n,r,i),this.options.ignoreDeclaration&&"?xml"===g.tagName||this.options.ignorePiTags);else{var c=new d(g.tagName);c.add(this.options.textNodeName,""),g.tagName!==g.tagExp&&g.attrExpPresent&&(c[":@"]=this.buildAttributesMap(g.tagExp,i,g.tagName)),this.addChild(r,c,i,s)}s=g.closeIndex+1}else if("!--"===t.substr(s+1,3)){var v=D(t,"--\x3e",s+4,"Comment is not closed.");if(this.options.commentPropName){var m,x=t.substring(s+4,v-2);n=this.saveTextToParentTag(n,r,i),r.add(this.options.commentPropName,[(m={},m[this.options.textNodeName]=x,m)])}s=v}else if("!D"===t.substr(s+1,2)){var E=a.readDocType(t,s);this.docTypeEntities=E.entities,s=E.i}else if("!["===t.substr(s+1,2)){var b=D(t,"]]>",s,"CDATA is not closed.")-2,N=t.substring(s+9,b);n=this.saveTextToParentTag(n,r,i);var y,T=this.parseTextData(N,r.tagname,i,!0,!1,!0,!0);null==T&&(T=""),this.options.cdataPropName?r.add(this.options.cdataPropName,[(y={},y[this.options.textNodeName]=N,y)]):r.add(this.options.textNodeName,T),s=b+2}else{var w=M(t,s,this.options.removeNSPrefix),I=w.tagName,O=w.rawTagName,S=w.tagExp,A=w.attrExpPresent,P=w.closeIndex;if(this.options.transformTagName){var C=this.options.transformTagName(I);S===I&&(S=C),I=C}if(this.options.strictReservedNames&&(I===this.options.commentPropName||I===this.options.cdataPropName))throw new Error("Invalid tag name: "+I);r&&n&&"!xml"!==r.tagname&&(n=this.saveTextToParentTag(n,r,i,!1));var F=r;F&&-1!==this.options.unpairedTags.indexOf(F.tagname)&&(r=this.tagsNodeStack.pop(),i=i.substring(0,i.lastIndexOf("."))),I!==e.tagname&&(i+=i?"."+I:I);var V=s;if(this.isItStopNode(this.stopNodesExact,this.stopNodesWildcard,i,I)){var _="";if(S.length>0&&S.lastIndexOf("/")===S.length-1)"/"===I[I.length-1]?(I=I.substr(0,I.length-1),i=i.substr(0,i.length-1),S=I):S=S.substr(0,S.length-1),s=w.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(I))s=w.closeIndex;else{var j=this.readStopNodeData(t,O,P+1);if(!j)throw new Error("Unexpected end of "+O);s=j.i,_=j.tagContent}var k=new d(I);I!==S&&A&&(k[":@"]=this.buildAttributesMap(S,i,I)),_&&(_=this.parseTextData(_,I,i,!0,A,!0,!0)),i=i.substr(0,i.lastIndexOf(".")),k.add(this.options.textNodeName,_),this.addChild(r,k,i,V)}else{if(S.length>0&&S.lastIndexOf("/")===S.length-1){if("/"===I[I.length-1]?(I=I.substr(0,I.length-1),i=i.substr(0,i.length-1),S=I):S=S.substr(0,S.length-1),this.options.transformTagName){var L=this.options.transformTagName(I);S===I&&(S=L),I=L}var U=new d(I);I!==S&&A&&(U[":@"]=this.buildAttributesMap(S,i,I)),this.addChild(r,U,i,V),i=i.substr(0,i.lastIndexOf("."))}else{if(-1!==this.options.unpairedTags.indexOf(I)){var R=new d(I);I!==S&&A&&(R[":@"]=this.buildAttributesMap(S,i)),this.addChild(r,R,i,V),i=i.substr(0,i.lastIndexOf(".")),s=w.closeIndex;continue}var Y=new d(I);if(this.tagsNodeStack.length>this.options.maxNestedTags)throw new Error("Maximum nested tags exceeded");this.tagsNodeStack.push(r),I!==S&&A&&(Y[":@"]=this.buildAttributesMap(S,i,I)),this.addChild(r,Y,i,V),r=Y}n="",s=P}}else n+=t[s];return e.child};function S(t,e,r,n){this.options.captureMetaData||(n=void 0);var i=this.options.updateTag(e.tagname,r,e[":@"]);!1===i||("string"==typeof i?(e.tagname=i,t.addChild(e,n)):t.addChild(e,n))}var A=function(t,e,r){if(-1===t.indexOf("&"))return t;var n=this.options.processEntities;if(!n.enabled)return t;if(n.allowedTags&&!n.allowedTags.includes(e))return t;if(n.tagFilter&&!n.tagFilter(e,r))return t;for(var i in this.docTypeEntities){var a=this.docTypeEntities[i],s=t.match(a.regx);if(s){if(this.entityExpansionCount+=s.length,n.maxTotalExpansions&&this.entityExpansionCount>n.maxTotalExpansions)throw new Error("Entity expansion limit exceeded: "+this.entityExpansionCount+" > "+n.maxTotalExpansions);var o=t.length;if(t=t.replace(a.regx,a.val),n.maxExpandedLength&&(this.currentExpandedLength+=t.length-o,this.currentExpandedLength>n.maxExpandedLength))throw new Error("Total expanded content size exceeded: "+this.currentExpandedLength+" > "+n.maxExpandedLength)}}if(-1===t.indexOf("&"))return t;for(var l in this.lastEntities){var u=this.lastEntities[l];t=t.replace(u.regex,u.val)}if(-1===t.indexOf("&"))return t;if(this.options.htmlEntities)for(var d in this.htmlEntities){var f=this.htmlEntities[d];t=t.replace(f.regex,f.val)}return t.replace(this.ampEntity.regex,this.ampEntity.val)};function P(t,e,r,n){return t&&(void 0===n&&(n=0===e.child.length),void 0!==(t=this.parseTextData(t,e.tagname,r,!1,!!e[":@"]&&0!==Object.keys(e[":@"]).length,n))&&""!==t&&e.add(this.options.textNodeName,t),t=""),t}function C(t,e,r,n){return!(!e||!e.has(n))||!(!t||!t.has(r))}function D(t,e,r,n){var i=t.indexOf(e,r);if(-1===i)throw new Error(n);return i+e.length-1}function M(t,e,r,n){void 0===n&&(n=">");var i=function(t,e,r){var n;void 0===r&&(r=">");for(var i="",a=e;a<t.length;a++){var s=t[a];if(n)s===n&&(n="");else if('"'===s||"'"===s)n=s;else if(s===r[0]){if(!r[1])return{data:i,index:a};if(t[a+1]===r[1])return{data:i,index:a}}else"\t"===s&&(s=" ");i+=s}}(t,e+1,n);if(i){var a=i.data,s=i.index,o=a.search(/\s/),l=a,u=!0;-1!==o&&(l=a.substring(0,o),a=a.substring(o+1).trimStart());var d=l;if(r){var f=l.indexOf(":");-1!==f&&(u=(l=l.substr(f+1))!==i.data.substr(f+1))}return{tagName:l,tagExp:a,closeIndex:s,attrExpPresent:u,rawTagName:d}}}function F(t,e,r){for(var n=r,i=1;r<t.length;r++)if("<"===t[r])if("/"===t[r+1]){var a=D(t,">",r,e+" is not closed");if(t.substring(r+2,a).trim()===e&&0===--i)return{tagContent:t.substring(n,r),i:a};r=a}else if("?"===t[r+1])r=D(t,"?>",r+1,"StopNode is not closed.");else if("!--"===t.substr(r+1,3))r=D(t,"--\x3e",r+3,"StopNode is not closed.");else if("!["===t.substr(r+1,2))r=D(t,"]]>",r,"StopNode is not closed.")-2;else{var s=M(t,r,">");s&&((s&&s.tagName)===e&&"/"!==s.tagExp[s.tagExp.length-1]&&i++,r=s.closeIndex)}}function V(t,e,r){if(e&&"string"==typeof t){var n=t.trim();return"true"===n||"false"!==n&&function(t,e={}){if(e=Object.assign({},m,e),!t||"string"!=typeof t)return t;let r=t.trim();if(void 0!==e.skipLike&&e.skipLike.test(r))return t;if("0"===t)return 0;if(e.hex&&c.test(r))return function(t){if(parseInt)return parseInt(t,16);if(Number.parseInt)return Number.parseInt(t,16);if(window&&window.parseInt)return window.parseInt(t,16);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}(r);if(r.includes("e")||r.includes("E"))return function(t,e,r){if(!r.eNotation)return t;const n=e.match(x);if(n){let i=n[1]||"";const a=-1===n[3].indexOf("e")?"E":"e",s=n[2],o=i?t[s.length+1]===a:t[s.length]===a;return s.length>1&&o?t:1!==s.length||!n[3].startsWith(`.${a}`)&&n[3][0]!==a?r.leadingZeros&&!o?(e=(n[1]||"")+n[3],Number(e)):t:Number(e)}return t}(t,r,e);{const i=v.exec(r);if(i){const a=i[1]||"",s=i[2];let o=(n=i[3])&&-1!==n.indexOf(".")?("."===(n=n.replace(/0+$/,""))?n="0":"."===n[0]?n="0"+n:"."===n[n.length-1]&&(n=n.substring(0,n.length-1)),n):n;const l=a?"."===t[s.length+1]:"."===t[s.length];if(!e.leadingZeros&&(s.length>1||1===s.length&&!l))return t;{const n=Number(r),i=String(n);if(0===n)return n;if(-1!==i.search(/[eE]/))return e.eNotation?n:t;if(-1!==r.indexOf("."))return"0"===i||i===o||i===`${a}${o}`?n:t;let l=s?o:r;return s?l===i||a+l===i?n:t:l===i||l===a+i?n:t}}return t}var n}(t,r)}return void 0!==t?t:""}function _(t,e,r){var n=Number.parseInt(t,e);return n>=0&&n<=1114111?String.fromCodePoint(n):r+t+";"}var j=d.getMetaDataSymbol();function k(t,e){return L(t,e)}function L(t,e,r){for(var n,i={},a=0;a<t.length;a++){var s,o=t[a],l=U(o);if(s=void 0===r?l:r+"."+l,l===e.textNodeName)void 0===n?n=o[l]:n+=""+o[l];else{if(void 0===l)continue;if(o[l]){var u=L(o[l],e,s),d=Y(u,e);o[":@"]?R(u,o[":@"],s,e):1!==Object.keys(u).length||void 0===u[e.textNodeName]||e.alwaysCreateTextNode?0===Object.keys(u).length&&(e.alwaysCreateTextNode?u[e.textNodeName]="":u=""):u=u[e.textNodeName],void 0!==o[j]&&"object"==typeof u&&null!==u&&(u[j]=o[j]),void 0!==i[l]&&Object.prototype.hasOwnProperty.call(i,l)?(Array.isArray(i[l])||(i[l]=[i[l]]),i[l].push(u)):e.isArray(l,s,d)?i[l]=[u]:i[l]=u}}}return"string"==typeof n?n.length>0&&(i[e.textNodeName]=n):void 0!==n&&(i[e.textNodeName]=n),i}function U(t){for(var e=Object.keys(t),r=0;r<e.length;r++){var n=e[r];if(":@"!==n)return n}}function R(t,e,r,n){if(e)for(var i=Object.keys(e),a=i.length,s=0;s<a;s++){var o=i[s];n.isArray(o,r+"."+o,!0,!0)?t[o]=[e[o]]:t[o]=e[o]}}function Y(t,e){var r=e.textNodeName,n=Object.keys(t).length;return 0===n||!(1!==n||!t[r]&&"boolean"!=typeof t[r]&&0!==t[r])}var X={allowBooleanAttributes:!1,unpairedTags:[]};function z(t){return" "===t||"\t"===t||"\n"===t||"\r"===t}function B(t,e){for(var r=e;e<t.length;e++)if("?"!=t[e]&&" "!=t[e]);else{var n=t.substr(r,e-r);if(e>5&&"xml"===n)return K("InvalidXml","XML declaration allowed only at the start of the document.",H(t,e));if("?"==t[e]&&">"==t[e+1]){e++;break}}return e}function $(t,e){if(t.length>e+5&&"-"===t[e+1]&&"-"===t[e+2]){for(e+=3;e<t.length;e++)if("-"===t[e]&&"-"===t[e+1]&&">"===t[e+2]){e+=2;break}}else if(t.length>e+8&&"D"===t[e+1]&&"O"===t[e+2]&&"C"===t[e+3]&&"T"===t[e+4]&&"Y"===t[e+5]&&"P"===t[e+6]&&"E"===t[e+7]){var r=1;for(e+=8;e<t.length;e++)if("<"===t[e])r++;else if(">"===t[e]&&0===--r)break}else if(t.length>e+9&&"["===t[e+1]&&"C"===t[e+2]&&"D"===t[e+3]&&"A"===t[e+4]&&"T"===t[e+5]&&"A"===t[e+6]&&"["===t[e+7])for(e+=8;e<t.length;e++)if("]"===t[e]&&"]"===t[e+1]&&">"===t[e+2]){e+=2;break}return e}function W(t,e){for(var r="",n="",i=!1;e<t.length;e++){if('"'===t[e]||"'"===t[e])""===n?n=t[e]:n!==t[e]||(n="");else if(">"===t[e]&&""===n){i=!0;break}r+=t[e]}return""===n&&{value:r,index:e,tagClosed:i}}var Z=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function q(t,e){for(var r=o(t,Z),n={},i=0;i<r.length;i++){if(0===r[i][1].length)return K("InvalidAttr","Attribute '"+r[i][2]+"' has no space in starting.",tt(r[i]));if(void 0!==r[i][3]&&void 0===r[i][4])return K("InvalidAttr","Attribute '"+r[i][2]+"' is without value.",tt(r[i]));if(void 0===r[i][3]&&!e.allowBooleanAttributes)return K("InvalidAttr","boolean attribute '"+r[i][2]+"' is not allowed.",tt(r[i]));var a=r[i][2];if(!Q(a))return K("InvalidAttr","Attribute '"+a+"' is an invalid name.",tt(r[i]));if(Object.prototype.hasOwnProperty.call(n,a))return K("InvalidAttr","Attribute '"+a+"' is repeated.",tt(r[i]));n[a]=1}return!0}function G(t,e){if(";"===t[++e])return-1;if("#"===t[e])return function(t,e){var r=/\d/;for("x"===t[e]&&(e++,r=/[\da-fA-F]/);e<t.length;e++){if(";"===t[e])return e;if(!t[e].match(r))break}return-1}(t,++e);for(var r=0;e<t.length;e++,r++)if(!(t[e].match(/\w/)&&r<20)){if(";"===t[e])break;return-1}return e}function K(t,e,r){return{err:{code:t,msg:e,line:r.line||r,col:r.col}}}function Q(t){return u(t)}function J(t){return u(t)}function H(t,e){var r=t.substring(0,e).split(/\r?\n/);return{line:r.length,col:r[r.length-1].length+1}}function tt(t){return t.startIndex+t[1].length}var et=function(){function t(t){this.externalEntities={},this.options=i(t)}var e=t.prototype;return e.parse=function(t,e){if("string"!=typeof t&&t.toString)t=t.toString();else if("string"!=typeof t)throw new Error("XML data is accepted in String or Bytes[] form.");if(e){!0===e&&(e={});var r=function(t,e){e=Object.assign({},X,e);var r=[],n=!1,i=!1;"\ufeff"===t[0]&&(t=t.substr(1));for(var a=0;a<t.length;a++)if("<"===t[a]&&"?"===t[a+1]){if((a=B(t,a+=2)).err)return a}else{if("<"!==t[a]){if(z(t[a]))continue;return K("InvalidChar","char '"+t[a]+"' is not expected.",H(t,a))}var s=a;if("!"===t[++a]){a=$(t,a);continue}var o=!1;"/"===t[a]&&(o=!0,a++);for(var l="";a<t.length&&">"!==t[a]&&" "!==t[a]&&"\t"!==t[a]&&"\n"!==t[a]&&"\r"!==t[a];a++)l+=t[a];if("/"===(l=l.trim())[l.length-1]&&(l=l.substring(0,l.length-1),a--),!J(l))return K("InvalidTag",0===l.trim().length?"Invalid space after '<'.":"Tag '"+l+"' is an invalid name.",H(t,a));var u=W(t,a);if(!1===u)return K("InvalidAttr","Attributes for '"+l+"' have open quote.",H(t,a));var d=u.value;if(a=u.index,"/"===d[d.length-1]){var f=a-d.length,h=q(d=d.substring(0,d.length-1),e);if(!0!==h)return K(h.err.code,h.err.msg,H(t,f+h.err.line));n=!0}else if(o){if(!u.tagClosed)return K("InvalidTag","Closing tag '"+l+"' doesn't have proper closing.",H(t,a));if(d.trim().length>0)return K("InvalidTag","Closing tag '"+l+"' can't have attributes or invalid starting.",H(t,s));if(0===r.length)return K("InvalidTag","Closing tag '"+l+"' has not been opened.",H(t,s));var p=r.pop();if(l!==p.tagName){var g=H(t,p.tagStartPos);return K("InvalidTag","Expected closing tag '"+p.tagName+"' (opened in line "+g.line+", col "+g.col+") instead of closing tag '"+l+"'.",H(t,s))}0==r.length&&(i=!0)}else{var c=q(d,e);if(!0!==c)return K(c.err.code,c.err.msg,H(t,a-d.length+c.err.line));if(!0===i)return K("InvalidXml","Multiple possible root nodes found.",H(t,a));-1!==e.unpairedTags.indexOf(l)||r.push({tagName:l,tagStartPos:s}),n=!0}for(a++;a<t.length;a++)if("<"===t[a]){if("!"===t[a+1]){a=$(t,++a);continue}if("?"!==t[a+1])break;if((a=B(t,++a)).err)return a}else if("&"===t[a]){var v=G(t,a);if(-1==v)return K("InvalidChar","char '&' is not expected.",H(t,a));a=v}else if(!0===i&&!z(t[a]))return K("InvalidXml","Extra text at the end",H(t,a));"<"===t[a]&&a--}return n?1==r.length?K("InvalidTag","Unclosed tag '"+r[0].tagName+"'.",H(t,r[0].tagStartPos)):!(r.length>0)||K("InvalidXml","Invalid '"+JSON.stringify(r.map(function(t){return t.tagName}),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):K("InvalidXml","Start tag expected.",1)}(t,e);if(!0!==r)throw Error(r.err.msg+":"+r.err.line+":"+r.err.col)}var n=new b(this.options);n.addExternalEntities(this.externalEntities);var i=n.parseXml(t);return this.options.preserveOrder||void 0===i?i:k(i,this.options)},e.addEntity=function(t,e){if(-1!==e.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==t.indexOf("&")||-1!==t.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for '&#xD;'");if("&"===e)throw new Error("An entity with value '&' is not permitted");this.externalEntities[t]=e},t.getMetaDataSymbol=function(){return d.getMetaDataSymbol()},t}();return e})()); //# sourceMappingURL=fxparser.min.js.map